
Table * sqlite3FindTable(sqlite3 *db,char *zName,char *zDatabase)

{
  int *piVar1;
  byte bVar2;
  uint uVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  uint uVar7;
  char *zRight;
  byte *zLeft;
  uint uVar8;
  byte *pbVar9;
  uchar *puVar10;
  int unaff_EDI;
  undefined4 *puVar11;
  byte *pbVar12;
  undefined8 uVar13;
  byte *local_34;
  int local_2c;
  uint local_28;
  
  uVar13 = __x86_get_pc_thunk_di();
  local_34 = (byte *)((ulonglong)uVar13 >> 0x20);
  iVar4 = (int)uVar13;
  uVar3 = *(uint *)(iVar4 + 0x14);
  do {
    if (0 < (int)uVar3) {
      local_28 = 0;
      do {
        uVar7 = local_28 ^ 1;
        if (1 < (int)local_28) {
          uVar7 = local_28;
        }
        puVar11 = (undefined4 *)(uVar7 * 0x10 + *(int *)(iVar4 + 0x10));
        if (zLeft == (byte *)0x0) {
LAB_000534a3:
          iVar5 = puVar11[3];
          if (*(int *)(iVar5 + 0x14) == 0) {
            puVar10 = *(uchar **)(iVar5 + 0x10);
            local_2c = *(int *)(iVar5 + 0xc);
          }
          else {
            bVar2 = *local_34;
            uVar7 = 0;
            if (bVar2 != 0) {
              pbVar12 = local_34;
              do {
                pbVar12 = pbVar12 + 1;
                uVar8 = (uint)bVar2;
                bVar2 = *pbVar12;
                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;
              } while (bVar2 != 0);
            }
            piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);
            puVar10 = (uchar *)piVar1[1];
            local_2c = *piVar1;
          }
          if (local_2c != 0) {
            iVar5 = unaff_EDI + 0x116489;
            do {
              pbVar12 = *(byte **)(puVar10 + 0xc);
              bVar2 = *pbVar12;
              pbVar9 = local_34;
              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==
                  *(char *)(iVar5 + (uint)bVar2)) {
                do {
                  if (bVar2 == 0) goto LAB_00053578;
                  pbVar12 = pbVar12 + 1;
                  pbVar9 = pbVar9 + 1;
                  bVar2 = *pbVar12;
                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));
              }
              local_2c = local_2c + -1;
              puVar10 = *(uchar **)puVar10;
            } while (local_2c != 0);
          }
          puVar10 = "" + unaff_EDI + 0xc9;
LAB_00053578:
          if (*(Table **)(puVar10 + 8) != (Table *)0x0) {
            return *(Table **)(puVar10 + 8);
          }
        }
        else {
          pbVar12 = (byte *)*puVar11;
          if (*(char *)(unaff_EDI + 0x116489 + (uint)*zLeft) ==
              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar12)) {
            if (*zLeft != 0) {
              iVar5 = 1;
              do {
                pbVar9 = zLeft + iVar5;
                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=
                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar12[iVar5])) goto LAB_0005341f;
                iVar5 = iVar5 + 1;
              } while (*pbVar9 != 0);
            }
            goto LAB_000534a3;
          }
        }
LAB_0005341f:
        local_28 = local_28 + 1;
      } while (local_28 != uVar3);
    }
    iVar5 = unaff_EDI + 0x116489;
    if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) != 's') {
      return (Table *)0x0;
    }
    if (*local_34 != 0) {
      if (*(char *)(iVar5 + (uint)local_34[1]) != 'q') {
        return (Table *)0x0;
      }
      if (local_34[1] != 0) {
        iVar6 = 2;
        do {
          pbVar12 = local_34 + iVar6;
          if (*(char *)(iVar5 + (uint)*pbVar12) !=
              *(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))) {
            return (Table *)0x0;
          }
          iVar6 = iVar6 + 1;
        } while (*pbVar12 != 0);
      }
    }
    zRight = *(char **)(*(int *)(iVar4 + 0x10) + 0x10);
    if (zLeft != (byte *)0x0) {
      if (zRight == (char *)0x0) {
        return (Table *)0x0;
      }
      zRight = (char *)sqlite3_stricmp((char *)zLeft,zRight);
    }
    if (zRight != (char *)0x0) {
      return (Table *)0x0;
    }
    local_34 = (byte *)(unaff_EDI + 0x10733b);
  } while( true );
}



int FUN_00053350(void)

{
  int *piVar1;
  byte bVar2;
  uint uVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  uint uVar7;
  byte *extraout_ECX;
  uint uVar8;
  byte *pbVar9;
  int unaff_EDI;
  undefined4 *puVar10;
  byte *pbVar11;
  undefined8 uVar12;
  byte *local_34;
  int local_2c;
  uint local_28;
  
  uVar12 = FUN_0003a401();
  local_34 = (byte *)((ulonglong)uVar12 >> 0x20);
  iVar4 = (int)uVar12;
  uVar3 = *(uint *)(iVar4 + 0x14);
  do {
    if (0 < (int)uVar3) {
      local_28 = 0;
      do {
        uVar7 = local_28 ^ 1;
        if (1 < (int)local_28) {
          uVar7 = local_28;
        }
        puVar10 = (undefined4 *)(uVar7 * 0x10 + *(int *)(iVar4 + 0x10));
        if (extraout_ECX == (byte *)0x0) {
LAB_000534a3:
          iVar5 = puVar10[3];
          if (*(int *)(iVar5 + 0x14) == 0) {
            puVar10 = *(undefined4 **)(iVar5 + 0x10);
            local_2c = *(int *)(iVar5 + 0xc);
          }
          else {
            bVar2 = *local_34;
            uVar7 = 0;
            if (bVar2 != 0) {
              pbVar11 = local_34;
              do {
                pbVar11 = pbVar11 + 1;
                uVar8 = (uint)bVar2;
                bVar2 = *pbVar11;
                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;
              } while (bVar2 != 0);
            }
            piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);
            puVar10 = (undefined4 *)piVar1[1];
            local_2c = *piVar1;
          }
          if (local_2c != 0) {
            iVar5 = unaff_EDI + 0x116489;
            do {
              pbVar11 = (byte *)puVar10[3];
              bVar2 = *pbVar11;
              pbVar9 = local_34;
              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==
                  *(char *)(iVar5 + (uint)bVar2)) {
                do {
                  if (bVar2 == 0) goto LAB_00053578;
                  pbVar11 = pbVar11 + 1;
                  pbVar9 = pbVar9 + 1;
                  bVar2 = *pbVar11;
                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));
              }
              local_2c = local_2c + -1;
              puVar10 = (undefined4 *)*puVar10;
            } while (local_2c != 0);
          }
          puVar10 = (undefined4 *)(&UNK_001697a9 + unaff_EDI);
LAB_00053578:
          if (puVar10[2] != 0) {
            return puVar10[2];
          }
        }
        else {
          pbVar11 = (byte *)*puVar10;
          if (*(char *)(unaff_EDI + 0x116489 + (uint)*extraout_ECX) ==
              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar11)) {
            if (*extraout_ECX != 0) {
              iVar5 = 1;
              do {
                pbVar9 = extraout_ECX + iVar5;
                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=
                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])) goto LAB_0005341f;
                iVar5 = iVar5 + 1;
              } while (*pbVar9 != 0);
            }
            goto LAB_000534a3;
          }
        }
LAB_0005341f:
        local_28 = local_28 + 1;
      } while (local_28 != uVar3);
    }
    iVar5 = unaff_EDI + 0x116489;
    if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) != 's') {
      return 0;
    }
    if (*local_34 != 0) {
      if (*(char *)(iVar5 + (uint)local_34[1]) != 'q') {
        return 0;
      }
      if (local_34[1] != 0) {
        iVar6 = 2;
        do {
          pbVar11 = local_34 + iVar6;
          if (*(char *)(iVar5 + (uint)*pbVar11) !=
              *(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))) {
            return 0;
          }
          iVar6 = iVar6 + 1;
        } while (*pbVar11 != 0);
      }
    }
    iVar5 = *(int *)(*(int *)(iVar4 + 0x10) + 0x10);
    if (extraout_ECX != (byte *)0x0) {
      if (iVar5 == 0) {
        return 0;
      }
      iVar5 = FUN_000446c0();
    }
    if (iVar5 != 0) {
      return 0;
    }
    local_34 = (byte *)(unaff_EDI + 0x10733b);
  } while( true );
}


PUSH EBP
PUSH EDI
CALL 0x0003a401
ADD EDI,0x167ad1
PUSH ESI
PUSH EBX
SUB ESP,0x28
MOV dword ptr [ESP + 0x24],EAX
MOV EAX,dword ptr [EAX + 0x14]
MOV dword ptr [ESP + 0x14],EDI
MOV dword ptr [ESP + 0x4],EDX
MOV dword ptr [ESP + 0x18],ECX
MOV dword ptr [ESP + 0x1c],EAX
MOV EDX,dword ptr [ESP + 0x1c]
TEST EDX,EDX
JLE 0x00053432
MOV EAX,dword ptr [ESP + 0x24]
MOV dword ptr [ESP + 0x10],0x0
MOV EAX,dword ptr [EAX + 0x10]
MOV dword ptr [ESP + 0x20],EAX
LEA ESI,[ESI]
NOP
MOV EAX,dword ptr [ESP + 0x10]
MOV ESI,dword ptr [ESP + 0x18]
MOV EDI,EAX
XOR EDI,0x1
CMP EAX,0x2
CMOVGE EDI,EAX
SHL EDI,0x4
ADD EDI,dword ptr [ESP + 0x20]
TEST ESI,ESI
JZ 0x000534a3
MOV EBP,dword ptr [EDI]
MOVZX EBX,byte ptr [ESI]
MOV ESI,dword ptr [ESP + 0x14]
MOVZX EDX,byte ptr [EBP]
LEA ECX,[ESI + 0xfffae9b8]
MOVZX EDX,byte ptr [ESI + EDX*0x1 + 0xfffae9b8]
CMP byte ptr [ESI + EBX*0x1 + 0xfffae9b8],DL
JNZ 0x0005341f
TEST BL,BL
JZ 0x000534a3
MOV dword ptr [ESP],EDI
MOV EAX,0x1
MOV EDI,dword ptr [ESP + 0x18]
JMP 0x0005340b
ADD EAX,0x1
TEST DL,DL
JZ 0x000534a0
MOVZX ESI,byte ptr [EDI + EAX*0x1]
MOVZX EBX,byte ptr [EBP + EAX*0x1]
MOV EDX,ESI
MOVZX EBX,byte ptr [ECX + EBX*0x1]
CMP byte ptr [ECX + ESI*0x1],BL
JZ 0x00053400
ADD dword ptr [ESP + 0x10],0x1
MOV EAX,dword ptr [ESP + 0x10]
CMP EAX,dword ptr [ESP + 0x1c]
JNZ 0x000533a0
MOV EDI,dword ptr [ESP + 0x4]
MOV ESI,dword ptr [ESP + 0x14]
MOVZX EDX,byte ptr [EDI]
LEA ECX,[ESI + 0xfffae9b8]
CMP byte ptr [ESI + EDX*0x1 + 0xfffae9b8],0x73
JNZ 0x00053496
TEST DL,DL
JZ 0x000535a3
MOVZX EDX,byte ptr [EDI + 0x1]
CMP byte ptr [ECX + EDX*0x1],0x71
JNZ 0x00053496
TEST DL,DL
JZ 0x000535a3
MOV EAX,0x2
JMP 0x0005347b
ADD EAX,0x1
TEST DL,DL
JZ 0x000535a3
MOV EBX,dword ptr [ESP + 0x14]
MOVZX ESI,byte ptr [EDI + EAX*0x1]
MOVZX EBX,byte ptr [EAX + EBX*0x1 + 0xfff9f544]
MOV EDX,ESI
MOVZX EBX,byte ptr [ECX + EBX*0x1]
CMP byte ptr [ECX + ESI*0x1],BL
JZ 0x00053470
ADD ESP,0x28
XOR EAX,EAX
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EDI,dword ptr [ESP]
MOV ESI,dword ptr [EDI + 0xc]
MOV EBX,dword ptr [ESI + 0x14]
TEST EBX,EBX
JZ 0x00053598
MOV EAX,dword ptr [ESP + 0x4]
MOVZX EDX,byte ptr [EAX]
LEA EDI,[EAX + 0x1]
XOR EAX,EAX
TEST DL,DL
JZ 0x000534e7
MOV ECX,dword ptr [ESP + 0x14]
LEA ECX,[ECX + 0xfffae9b8]
LEA ESI,[ESI]
NOP
MOVZX EDX,byte ptr [ECX + EDX*0x1]
ADD EDI,0x1
ADD EAX,EDX
MOVZX EDX,byte ptr [EDI + -0x1]
IMUL EAX,EAX,-0x61c8864f
TEST DL,DL
JNZ 0x000534d0
XOR EDX,EDX
DIV dword ptr [ESI + 0x8]
LEA EAX,[EBX + EDX*0x8]
MOV EBX,dword ptr [EAX + 0x4]
MOV EAX,dword ptr [EAX]
TEST EAX,EAX
JZ 0x00053568
MOV EDI,dword ptr [ESP + 0x4]
MOV dword ptr [ESP + 0xc],EAX
MOV ESI,EBX
MOVZX EDX,byte ptr [EDI]
MOV EDI,dword ptr [ESP + 0x14]
MOVZX EDX,byte ptr [EDI + EDX*0x1 + 0xfffae9b8]
LEA ECX,[EDI + 0xfffae9b8]
MOV byte ptr [ESP + 0xb],DL
LEA ESI,[ESI]
NOP
MOV EDI,dword ptr [ESI + 0xc]
MOVZX EAX,byte ptr [ESP + 0xb]
MOVZX EBX,byte ptr [EDI]
CMP AL,byte ptr [ECX + EBX*0x1]
JNZ 0x0005355f
TEST BL,BL
JZ 0x00053590
MOV EDX,dword ptr [ESP + 0x4]
MOV dword ptr [ESP],EDI
JMP 0x00053544
TEST BL,BL
JZ 0x00053590
ADD dword ptr [ESP],0x1
MOV EAX,dword ptr [ESP]
ADD EDX,0x1
MOVZX EDI,byte ptr [EDX]
MOVZX EBP,byte ptr [EAX]
MOVZX EAX,byte ptr [ECX + EDI*0x1]
MOV EBX,EBP
CMP byte ptr [ECX + EBP*0x1],AL
JZ 0x00053540
SUB dword ptr [ESP + 0xc],0x1
MOV ESI,dword ptr [ESI]
JNZ 0x00053520
MOV EAX,dword ptr [ESP + 0x14]
LEA EBX,[EAX + 0x1cd8]
LEA ESI,[ESI]
MOV EDX,dword ptr [EBX + 0x8]
TEST EDX,EDX
JZ 0x0005341f
ADD ESP,0x28
MOV EAX,EDX
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EBX,ESI
JMP 0x00053578
MOV EBX,dword ptr [ESI + 0x10]
MOV EAX,dword ptr [ESI + 0xc]
JMP 0x000534f4
MOV EAX,dword ptr [ESP + 0x24]
MOV EAX,dword ptr [EAX + 0x10]
MOV EDX,dword ptr [EAX + 0x10]
MOV EAX,dword ptr [ESP + 0x18]
TEST EAX,EAX
JZ 0x000535dd
TEST EDX,EDX
JZ 0x00053583
MOV EAX,dword ptr [ESP + 0x18]
CALL 0x000446c0
TEST EAX,EAX
JNZ 0x00053496
MOV EAX,dword ptr [ESP + 0x14]
LEA EAX,[EAX + 0xfff9f86a]
MOV dword ptr [ESP + 0x4],EAX
JMP 0x00053379
TEST EDX,EDX
JNZ 0x00053496
JMP 0x000535ca
(translation_unit "int FUN_00053350(void)\n\n{\n  int *piVar1;\n  byte bVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  byte *extraout_ECX;\n  uint uVar8;\n  byte *pbVar9;\n  int unaff_EDI;\n  undefined4 *puVar10;\n  byte *pbVar11;\n  undefined8 uVar12;\n  byte *local_34;\n  int local_2c;\n  uint local_28;\n  \n  uVar12 = FUN_0003a401();\n  local_34 = (byte *)((ulonglong)uVar12 >> 0x20);\n  iVar4 = (int)uVar12;\n  uVar3 = *(uint *)(iVar4 + 0x14);\n  do {\n    if (0 < (int)uVar3) {\n      local_28 = 0;\n      do {\n        uVar7 = local_28 ^ 1;\n        if (1 < (int)local_28) {\n          uVar7 = local_28;\n        }\n        puVar10 = (undefined4 *)(uVar7 * 0x10 + *(int *)(iVar4 + 0x10));\n        if (extraout_ECX == (byte *)0x0) {\nLAB_000534a3:\n          iVar5 = puVar10[3];\n          if (*(int *)(iVar5 + 0x14) == 0) {\n            puVar10 = *(undefined4 **)(iVar5 + 0x10);\n            local_2c = *(int *)(iVar5 + 0xc);\n          }\n          else {\n            bVar2 = *local_34;\n            uVar7 = 0;\n            if (bVar2 != 0) {\n              pbVar11 = local_34;\n              do {\n                pbVar11 = pbVar11 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar11;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }\n            piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);\n            puVar10 = (undefined4 *)piVar1[1];\n            local_2c = *piVar1;\n          }\n          if (local_2c != 0) {\n            iVar5 = unaff_EDI + 0x116489;\n            do {\n              pbVar11 = (byte *)puVar10[3];\n              bVar2 = *pbVar11;\n              pbVar9 = local_34;\n              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar11;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }\n              local_2c = local_2c + -1;\n              puVar10 = (undefined4 *)*puVar10;\n            } while (local_2c != 0);\n          }\n          puVar10 = (undefined4 *)(&UNK_001697a9 + unaff_EDI);\nLAB_00053578:\n          if (puVar10[2] != 0) {\n            return puVar10[2];\n          }\n        }\n        else {\n          pbVar11 = (byte *)*puVar10;\n          if (*(char *)(unaff_EDI + 0x116489 + (uint)*extraout_ECX) ==\n              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar11)) {\n            if (*extraout_ECX != 0) {\n              iVar5 = 1;\n              do {\n                pbVar9 = extraout_ECX + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }\n            goto LAB_000534a3;\n          }\n        }\nLAB_0005341f:\n        local_28 = local_28 + 1;\n      } while (local_28 != uVar3);\n    }\n    iVar5 = unaff_EDI + 0x116489;\n    if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) != 's') {\n      return 0;\n    }\n    if (*local_34 != 0) {\n      if (*(char *)(iVar5 + (uint)local_34[1]) != 'q') {\n        return 0;\n      }\n      if (local_34[1] != 0) {\n        iVar6 = 2;\n        do {\n          pbVar11 = local_34 + iVar6;\n          if (*(char *)(iVar5 + (uint)*pbVar11) !=\n              *(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))) {\n            return 0;\n          }\n          iVar6 = iVar6 + 1;\n        } while (*pbVar11 != 0);\n      }\n    }\n    iVar5 = *(int *)(*(int *)(iVar4 + 0x10) + 0x10);\n    if (extraout_ECX != (byte *)0x0) {\n      if (iVar5 == 0) {\n        return 0;\n      }\n      iVar5 = FUN_000446c0();\n    }\n    if (iVar5 != 0) {\n      return 0;\n    }\n    local_34 = (byte *)(unaff_EDI + 0x10733b);\n  } while( true );\n}\n\n" (function_definition "int FUN_00053350(void)\n\n{\n  int *piVar1;\n  byte bVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  byte *extraout_ECX;\n  uint uVar8;\n  byte *pbVar9;\n  int unaff_EDI;\n  undefined4 *puVar10;\n  byte *pbVar11;\n  undefined8 uVar12;\n  byte *local_34;\n  int local_2c;\n  uint local_28;\n  \n  uVar12 = FUN_0003a401();\n  local_34 = (byte *)((ulonglong)uVar12 >> 0x20);\n  iVar4 = (int)uVar12;\n  uVar3 = *(uint *)(iVar4 + 0x14);\n  do {\n    if (0 < (int)uVar3) {\n      local_28 = 0;\n      do {\n        uVar7 = local_28 ^ 1;\n        if (1 < (int)local_28) {\n          uVar7 = local_28;\n        }\n        puVar10 = (undefined4 *)(uVar7 * 0x10 + *(int *)(iVar4 + 0x10));\n        if (extraout_ECX == (byte *)0x0) {\nLAB_000534a3:\n          iVar5 = puVar10[3];\n          if (*(int *)(iVar5 + 0x14) == 0) {\n            puVar10 = *(undefined4 **)(iVar5 + 0x10);\n            local_2c = *(int *)(iVar5 + 0xc);\n          }\n          else {\n            bVar2 = *local_34;\n            uVar7 = 0;\n            if (bVar2 != 0) {\n              pbVar11 = local_34;\n              do {\n                pbVar11 = pbVar11 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar11;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }\n            piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);\n            puVar10 = (undefined4 *)piVar1[1];\n            local_2c = *piVar1;\n          }\n          if (local_2c != 0) {\n            iVar5 = unaff_EDI + 0x116489;\n            do {\n              pbVar11 = (byte *)puVar10[3];\n              bVar2 = *pbVar11;\n              pbVar9 = local_34;\n              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar11;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }\n              local_2c = local_2c + -1;\n              puVar10 = (undefined4 *)*puVar10;\n            } while (local_2c != 0);\n          }\n          puVar10 = (undefined4 *)(&UNK_001697a9 + unaff_EDI);\nLAB_00053578:\n          if (puVar10[2] != 0) {\n            return puVar10[2];\n          }\n        }\n        else {\n          pbVar11 = (byte *)*puVar10;\n          if (*(char *)(unaff_EDI + 0x116489 + (uint)*extraout_ECX) ==\n              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar11)) {\n            if (*extraout_ECX != 0) {\n              iVar5 = 1;\n              do {\n                pbVar9 = extraout_ECX + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }\n            goto LAB_000534a3;\n          }\n        }\nLAB_0005341f:\n        local_28 = local_28 + 1;\n      } while (local_28 != uVar3);\n    }\n    iVar5 = unaff_EDI + 0x116489;\n    if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) != 's') {\n      return 0;\n    }\n    if (*local_34 != 0) {\n      if (*(char *)(iVar5 + (uint)local_34[1]) != 'q') {\n        return 0;\n      }\n      if (local_34[1] != 0) {\n        iVar6 = 2;\n        do {\n          pbVar11 = local_34 + iVar6;\n          if (*(char *)(iVar5 + (uint)*pbVar11) !=\n              *(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))) {\n            return 0;\n          }\n          iVar6 = iVar6 + 1;\n        } while (*pbVar11 != 0);\n      }\n    }\n    iVar5 = *(int *)(*(int *)(iVar4 + 0x10) + 0x10);\n    if (extraout_ECX != (byte *)0x0) {\n      if (iVar5 == 0) {\n        return 0;\n      }\n      iVar5 = FUN_000446c0();\n    }\n    if (iVar5 != 0) {\n      return 0;\n    }\n    local_34 = (byte *)(unaff_EDI + 0x10733b);\n  } while( true );\n}" primitive_type (function_declarator "FUN_00053350(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  int *piVar1;\n  byte bVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  byte *extraout_ECX;\n  uint uVar8;\n  byte *pbVar9;\n  int unaff_EDI;\n  undefined4 *puVar10;\n  byte *pbVar11;\n  undefined8 uVar12;\n  byte *local_34;\n  int local_2c;\n  uint local_28;\n  \n  uVar12 = FUN_0003a401();\n  local_34 = (byte *)((ulonglong)uVar12 >> 0x20);\n  iVar4 = (int)uVar12;\n  uVar3 = *(uint *)(iVar4 + 0x14);\n  do {\n    if (0 < (int)uVar3) {\n      local_28 = 0;\n      do {\n        uVar7 = local_28 ^ 1;\n        if (1 < (int)local_28) {\n          uVar7 = local_28;\n        }\n        puVar10 = (undefined4 *)(uVar7 * 0x10 + *(int *)(iVar4 + 0x10));\n        if (extraout_ECX == (byte *)0x0) {\nLAB_000534a3:\n          iVar5 = puVar10[3];\n          if (*(int *)(iVar5 + 0x14) == 0) {\n            puVar10 = *(undefined4 **)(iVar5 + 0x10);\n            local_2c = *(int *)(iVar5 + 0xc);\n          }\n          else {\n            bVar2 = *local_34;\n            uVar7 = 0;\n            if (bVar2 != 0) {\n              pbVar11 = local_34;\n              do {\n                pbVar11 = pbVar11 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar11;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }\n            piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);\n            puVar10 = (undefined4 *)piVar1[1];\n            local_2c = *piVar1;\n          }\n          if (local_2c != 0) {\n            iVar5 = unaff_EDI + 0x116489;\n            do {\n              pbVar11 = (byte *)puVar10[3];\n              bVar2 = *pbVar11;\n              pbVar9 = local_34;\n              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar11;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }\n              local_2c = local_2c + -1;\n              puVar10 = (undefined4 *)*puVar10;\n            } while (local_2c != 0);\n          }\n          puVar10 = (undefined4 *)(&UNK_001697a9 + unaff_EDI);\nLAB_00053578:\n          if (puVar10[2] != 0) {\n            return puVar10[2];\n          }\n        }\n        else {\n          pbVar11 = (byte *)*puVar10;\n          if (*(char *)(unaff_EDI + 0x116489 + (uint)*extraout_ECX) ==\n              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar11)) {\n            if (*extraout_ECX != 0) {\n              iVar5 = 1;\n              do {\n                pbVar9 = extraout_ECX + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }\n            goto LAB_000534a3;\n          }\n        }\nLAB_0005341f:\n        local_28 = local_28 + 1;\n      } while (local_28 != uVar3);\n    }\n    iVar5 = unaff_EDI + 0x116489;\n    if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) != 's') {\n      return 0;\n    }\n    if (*local_34 != 0) {\n      if (*(char *)(iVar5 + (uint)local_34[1]) != 'q') {\n        return 0;\n      }\n      if (local_34[1] != 0) {\n        iVar6 = 2;\n        do {\n          pbVar11 = local_34 + iVar6;\n          if (*(char *)(iVar5 + (uint)*pbVar11) !=\n              *(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))) {\n            return 0;\n          }\n          iVar6 = iVar6 + 1;\n        } while (*pbVar11 != 0);\n      }\n    }\n    iVar5 = *(int *)(*(int *)(iVar4 + 0x10) + 0x10);\n    if (extraout_ECX != (byte *)0x0) {\n      if (iVar5 == 0) {\n        return 0;\n      }\n      iVar5 = FUN_000446c0();\n    }\n    if (iVar5 != 0) {\n      return 0;\n    }\n    local_34 = (byte *)(unaff_EDI + 0x10733b);\n  } while( true );\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "byte *extraout_ECX;" type_identifier (pointer_declarator "*extraout_ECX" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "undefined4 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "undefined8 uVar12;" type_identifier identifier ;) (declaration "byte *local_34;" type_identifier (pointer_declarator "*local_34" * identifier) ;) (declaration "int local_2c;" primitive_type identifier ;) (declaration "uint local_28;" type_identifier identifier ;) (expression_statement "uVar12 = FUN_0003a401();" (assignment_expression "uVar12 = FUN_0003a401()" identifier = (call_expression "FUN_0003a401()" identifier (argument_list "()" ( )))) ;) (expression_statement "local_34 = (byte *)((ulonglong)uVar12 >> 0x20);" (assignment_expression "local_34 = (byte *)((ulonglong)uVar12 >> 0x20)" identifier = (cast_expression "(byte *)((ulonglong)uVar12 >> 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar12 >> 0x20)" ( (binary_expression "(ulonglong)uVar12 >> 0x20" (cast_expression "(ulonglong)uVar12" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "iVar4 = (int)uVar12;" (assignment_expression "iVar4 = (int)uVar12" identifier = (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "uVar3 = *(uint *)(iVar4 + 0x14);" (assignment_expression "uVar3 = *(uint *)(iVar4 + 0x14)" identifier = (pointer_expression "*(uint *)(iVar4 + 0x14)" * (cast_expression "(uint *)(iVar4 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x14)" ( (binary_expression "iVar4 + 0x14" identifier + number_literal) ))))) ;) (do_statement "do {\n    if (0 < (int)uVar3) {\n      local_28 = 0;\n      do {\n        uVar7 = local_28 ^ 1;\n        if (1 < (int)local_28) {\n          uVar7 = local_28;\n        }\n        puVar10 = (undefined4 *)(uVar7 * 0x10 + *(int *)(iVar4 + 0x10));\n        if (extraout_ECX == (byte *)0x0) {\nLAB_000534a3:\n          iVar5 = puVar10[3];\n          if (*(int *)(iVar5 + 0x14) == 0) {\n            puVar10 = *(undefined4 **)(iVar5 + 0x10);\n            local_2c = *(int *)(iVar5 + 0xc);\n          }\n          else {\n            bVar2 = *local_34;\n            uVar7 = 0;\n            if (bVar2 != 0) {\n              pbVar11 = local_34;\n              do {\n                pbVar11 = pbVar11 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar11;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }\n            piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);\n            puVar10 = (undefined4 *)piVar1[1];\n            local_2c = *piVar1;\n          }\n          if (local_2c != 0) {\n            iVar5 = unaff_EDI + 0x116489;\n            do {\n              pbVar11 = (byte *)puVar10[3];\n              bVar2 = *pbVar11;\n              pbVar9 = local_34;\n              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar11;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }\n              local_2c = local_2c + -1;\n              puVar10 = (undefined4 *)*puVar10;\n            } while (local_2c != 0);\n          }\n          puVar10 = (undefined4 *)(&UNK_001697a9 + unaff_EDI);\nLAB_00053578:\n          if (puVar10[2] != 0) {\n            return puVar10[2];\n          }\n        }\n        else {\n          pbVar11 = (byte *)*puVar10;\n          if (*(char *)(unaff_EDI + 0x116489 + (uint)*extraout_ECX) ==\n              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar11)) {\n            if (*extraout_ECX != 0) {\n              iVar5 = 1;\n              do {\n                pbVar9 = extraout_ECX + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }\n            goto LAB_000534a3;\n          }\n        }\nLAB_0005341f:\n        local_28 = local_28 + 1;\n      } while (local_28 != uVar3);\n    }\n    iVar5 = unaff_EDI + 0x116489;\n    if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) != 's') {\n      return 0;\n    }\n    if (*local_34 != 0) {\n      if (*(char *)(iVar5 + (uint)local_34[1]) != 'q') {\n        return 0;\n      }\n      if (local_34[1] != 0) {\n        iVar6 = 2;\n        do {\n          pbVar11 = local_34 + iVar6;\n          if (*(char *)(iVar5 + (uint)*pbVar11) !=\n              *(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))) {\n            return 0;\n          }\n          iVar6 = iVar6 + 1;\n        } while (*pbVar11 != 0);\n      }\n    }\n    iVar5 = *(int *)(*(int *)(iVar4 + 0x10) + 0x10);\n    if (extraout_ECX != (byte *)0x0) {\n      if (iVar5 == 0) {\n        return 0;\n      }\n      iVar5 = FUN_000446c0();\n    }\n    if (iVar5 != 0) {\n      return 0;\n    }\n    local_34 = (byte *)(unaff_EDI + 0x10733b);\n  } while( true );" do (compound_statement "{\n    if (0 < (int)uVar3) {\n      local_28 = 0;\n      do {\n        uVar7 = local_28 ^ 1;\n        if (1 < (int)local_28) {\n          uVar7 = local_28;\n        }\n        puVar10 = (undefined4 *)(uVar7 * 0x10 + *(int *)(iVar4 + 0x10));\n        if (extraout_ECX == (byte *)0x0) {\nLAB_000534a3:\n          iVar5 = puVar10[3];\n          if (*(int *)(iVar5 + 0x14) == 0) {\n            puVar10 = *(undefined4 **)(iVar5 + 0x10);\n            local_2c = *(int *)(iVar5 + 0xc);\n          }\n          else {\n            bVar2 = *local_34;\n            uVar7 = 0;\n            if (bVar2 != 0) {\n              pbVar11 = local_34;\n              do {\n                pbVar11 = pbVar11 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar11;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }\n            piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);\n            puVar10 = (undefined4 *)piVar1[1];\n            local_2c = *piVar1;\n          }\n          if (local_2c != 0) {\n            iVar5 = unaff_EDI + 0x116489;\n            do {\n              pbVar11 = (byte *)puVar10[3];\n              bVar2 = *pbVar11;\n              pbVar9 = local_34;\n              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar11;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }\n              local_2c = local_2c + -1;\n              puVar10 = (undefined4 *)*puVar10;\n            } while (local_2c != 0);\n          }\n          puVar10 = (undefined4 *)(&UNK_001697a9 + unaff_EDI);\nLAB_00053578:\n          if (puVar10[2] != 0) {\n            return puVar10[2];\n          }\n        }\n        else {\n          pbVar11 = (byte *)*puVar10;\n          if (*(char *)(unaff_EDI + 0x116489 + (uint)*extraout_ECX) ==\n              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar11)) {\n            if (*extraout_ECX != 0) {\n              iVar5 = 1;\n              do {\n                pbVar9 = extraout_ECX + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }\n            goto LAB_000534a3;\n          }\n        }\nLAB_0005341f:\n        local_28 = local_28 + 1;\n      } while (local_28 != uVar3);\n    }\n    iVar5 = unaff_EDI + 0x116489;\n    if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) != 's') {\n      return 0;\n    }\n    if (*local_34 != 0) {\n      if (*(char *)(iVar5 + (uint)local_34[1]) != 'q') {\n        return 0;\n      }\n      if (local_34[1] != 0) {\n        iVar6 = 2;\n        do {\n          pbVar11 = local_34 + iVar6;\n          if (*(char *)(iVar5 + (uint)*pbVar11) !=\n              *(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))) {\n            return 0;\n          }\n          iVar6 = iVar6 + 1;\n        } while (*pbVar11 != 0);\n      }\n    }\n    iVar5 = *(int *)(*(int *)(iVar4 + 0x10) + 0x10);\n    if (extraout_ECX != (byte *)0x0) {\n      if (iVar5 == 0) {\n        return 0;\n      }\n      iVar5 = FUN_000446c0();\n    }\n    if (iVar5 != 0) {\n      return 0;\n    }\n    local_34 = (byte *)(unaff_EDI + 0x10733b);\n  }" { (if_statement "if (0 < (int)uVar3) {\n      local_28 = 0;\n      do {\n        uVar7 = local_28 ^ 1;\n        if (1 < (int)local_28) {\n          uVar7 = local_28;\n        }\n        puVar10 = (undefined4 *)(uVar7 * 0x10 + *(int *)(iVar4 + 0x10));\n        if (extraout_ECX == (byte *)0x0) {\nLAB_000534a3:\n          iVar5 = puVar10[3];\n          if (*(int *)(iVar5 + 0x14) == 0) {\n            puVar10 = *(undefined4 **)(iVar5 + 0x10);\n            local_2c = *(int *)(iVar5 + 0xc);\n          }\n          else {\n            bVar2 = *local_34;\n            uVar7 = 0;\n            if (bVar2 != 0) {\n              pbVar11 = local_34;\n              do {\n                pbVar11 = pbVar11 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar11;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }\n            piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);\n            puVar10 = (undefined4 *)piVar1[1];\n            local_2c = *piVar1;\n          }\n          if (local_2c != 0) {\n            iVar5 = unaff_EDI + 0x116489;\n            do {\n              pbVar11 = (byte *)puVar10[3];\n              bVar2 = *pbVar11;\n              pbVar9 = local_34;\n              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar11;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }\n              local_2c = local_2c + -1;\n              puVar10 = (undefined4 *)*puVar10;\n            } while (local_2c != 0);\n          }\n          puVar10 = (undefined4 *)(&UNK_001697a9 + unaff_EDI);\nLAB_00053578:\n          if (puVar10[2] != 0) {\n            return puVar10[2];\n          }\n        }\n        else {\n          pbVar11 = (byte *)*puVar10;\n          if (*(char *)(unaff_EDI + 0x116489 + (uint)*extraout_ECX) ==\n              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar11)) {\n            if (*extraout_ECX != 0) {\n              iVar5 = 1;\n              do {\n                pbVar9 = extraout_ECX + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }\n            goto LAB_000534a3;\n          }\n        }\nLAB_0005341f:\n        local_28 = local_28 + 1;\n      } while (local_28 != uVar3);\n    }" if (parenthesized_expression "(0 < (int)uVar3)" ( (binary_expression "0 < (int)uVar3" number_literal < (cast_expression "(int)uVar3" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      local_28 = 0;\n      do {\n        uVar7 = local_28 ^ 1;\n        if (1 < (int)local_28) {\n          uVar7 = local_28;\n        }\n        puVar10 = (undefined4 *)(uVar7 * 0x10 + *(int *)(iVar4 + 0x10));\n        if (extraout_ECX == (byte *)0x0) {\nLAB_000534a3:\n          iVar5 = puVar10[3];\n          if (*(int *)(iVar5 + 0x14) == 0) {\n            puVar10 = *(undefined4 **)(iVar5 + 0x10);\n            local_2c = *(int *)(iVar5 + 0xc);\n          }\n          else {\n            bVar2 = *local_34;\n            uVar7 = 0;\n            if (bVar2 != 0) {\n              pbVar11 = local_34;\n              do {\n                pbVar11 = pbVar11 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar11;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }\n            piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);\n            puVar10 = (undefined4 *)piVar1[1];\n            local_2c = *piVar1;\n          }\n          if (local_2c != 0) {\n            iVar5 = unaff_EDI + 0x116489;\n            do {\n              pbVar11 = (byte *)puVar10[3];\n              bVar2 = *pbVar11;\n              pbVar9 = local_34;\n              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar11;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }\n              local_2c = local_2c + -1;\n              puVar10 = (undefined4 *)*puVar10;\n            } while (local_2c != 0);\n          }\n          puVar10 = (undefined4 *)(&UNK_001697a9 + unaff_EDI);\nLAB_00053578:\n          if (puVar10[2] != 0) {\n            return puVar10[2];\n          }\n        }\n        else {\n          pbVar11 = (byte *)*puVar10;\n          if (*(char *)(unaff_EDI + 0x116489 + (uint)*extraout_ECX) ==\n              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar11)) {\n            if (*extraout_ECX != 0) {\n              iVar5 = 1;\n              do {\n                pbVar9 = extraout_ECX + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }\n            goto LAB_000534a3;\n          }\n        }\nLAB_0005341f:\n        local_28 = local_28 + 1;\n      } while (local_28 != uVar3);\n    }" { (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" identifier = number_literal) ;) (do_statement "do {\n        uVar7 = local_28 ^ 1;\n        if (1 < (int)local_28) {\n          uVar7 = local_28;\n        }\n        puVar10 = (undefined4 *)(uVar7 * 0x10 + *(int *)(iVar4 + 0x10));\n        if (extraout_ECX == (byte *)0x0) {\nLAB_000534a3:\n          iVar5 = puVar10[3];\n          if (*(int *)(iVar5 + 0x14) == 0) {\n            puVar10 = *(undefined4 **)(iVar5 + 0x10);\n            local_2c = *(int *)(iVar5 + 0xc);\n          }\n          else {\n            bVar2 = *local_34;\n            uVar7 = 0;\n            if (bVar2 != 0) {\n              pbVar11 = local_34;\n              do {\n                pbVar11 = pbVar11 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar11;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }\n            piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);\n            puVar10 = (undefined4 *)piVar1[1];\n            local_2c = *piVar1;\n          }\n          if (local_2c != 0) {\n            iVar5 = unaff_EDI + 0x116489;\n            do {\n              pbVar11 = (byte *)puVar10[3];\n              bVar2 = *pbVar11;\n              pbVar9 = local_34;\n              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar11;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }\n              local_2c = local_2c + -1;\n              puVar10 = (undefined4 *)*puVar10;\n            } while (local_2c != 0);\n          }\n          puVar10 = (undefined4 *)(&UNK_001697a9 + unaff_EDI);\nLAB_00053578:\n          if (puVar10[2] != 0) {\n            return puVar10[2];\n          }\n        }\n        else {\n          pbVar11 = (byte *)*puVar10;\n          if (*(char *)(unaff_EDI + 0x116489 + (uint)*extraout_ECX) ==\n              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar11)) {\n            if (*extraout_ECX != 0) {\n              iVar5 = 1;\n              do {\n                pbVar9 = extraout_ECX + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }\n            goto LAB_000534a3;\n          }\n        }\nLAB_0005341f:\n        local_28 = local_28 + 1;\n      } while (local_28 != uVar3);" do (compound_statement "{\n        uVar7 = local_28 ^ 1;\n        if (1 < (int)local_28) {\n          uVar7 = local_28;\n        }\n        puVar10 = (undefined4 *)(uVar7 * 0x10 + *(int *)(iVar4 + 0x10));\n        if (extraout_ECX == (byte *)0x0) {\nLAB_000534a3:\n          iVar5 = puVar10[3];\n          if (*(int *)(iVar5 + 0x14) == 0) {\n            puVar10 = *(undefined4 **)(iVar5 + 0x10);\n            local_2c = *(int *)(iVar5 + 0xc);\n          }\n          else {\n            bVar2 = *local_34;\n            uVar7 = 0;\n            if (bVar2 != 0) {\n              pbVar11 = local_34;\n              do {\n                pbVar11 = pbVar11 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar11;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }\n            piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);\n            puVar10 = (undefined4 *)piVar1[1];\n            local_2c = *piVar1;\n          }\n          if (local_2c != 0) {\n            iVar5 = unaff_EDI + 0x116489;\n            do {\n              pbVar11 = (byte *)puVar10[3];\n              bVar2 = *pbVar11;\n              pbVar9 = local_34;\n              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar11;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }\n              local_2c = local_2c + -1;\n              puVar10 = (undefined4 *)*puVar10;\n            } while (local_2c != 0);\n          }\n          puVar10 = (undefined4 *)(&UNK_001697a9 + unaff_EDI);\nLAB_00053578:\n          if (puVar10[2] != 0) {\n            return puVar10[2];\n          }\n        }\n        else {\n          pbVar11 = (byte *)*puVar10;\n          if (*(char *)(unaff_EDI + 0x116489 + (uint)*extraout_ECX) ==\n              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar11)) {\n            if (*extraout_ECX != 0) {\n              iVar5 = 1;\n              do {\n                pbVar9 = extraout_ECX + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }\n            goto LAB_000534a3;\n          }\n        }\nLAB_0005341f:\n        local_28 = local_28 + 1;\n      }" { (expression_statement "uVar7 = local_28 ^ 1;" (assignment_expression "uVar7 = local_28 ^ 1" identifier = (binary_expression "local_28 ^ 1" identifier ^ number_literal)) ;) (if_statement "if (1 < (int)local_28) {\n          uVar7 = local_28;\n        }" if (parenthesized_expression "(1 < (int)local_28)" ( (binary_expression "1 < (int)local_28" number_literal < (cast_expression "(int)local_28" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          uVar7 = local_28;\n        }" { (expression_statement "uVar7 = local_28;" (assignment_expression "uVar7 = local_28" identifier = identifier) ;) })) (expression_statement "puVar10 = (undefined4 *)(uVar7 * 0x10 + *(int *)(iVar4 + 0x10));" (assignment_expression "puVar10 = (undefined4 *)(uVar7 * 0x10 + *(int *)(iVar4 + 0x10))" identifier = (cast_expression "(undefined4 *)(uVar7 * 0x10 + *(int *)(iVar4 + 0x10))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar7 * 0x10 + *(int *)(iVar4 + 0x10))" ( (binary_expression "uVar7 * 0x10 + *(int *)(iVar4 + 0x10)" (binary_expression "uVar7 * 0x10" identifier * number_literal) + (pointer_expression "*(int *)(iVar4 + 0x10)" * (cast_expression "(int *)(iVar4 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x10)" ( (binary_expression "iVar4 + 0x10" identifier + number_literal) ))))) )))) ;) (if_statement "if (extraout_ECX == (byte *)0x0) {\nLAB_000534a3:\n          iVar5 = puVar10[3];\n          if (*(int *)(iVar5 + 0x14) == 0) {\n            puVar10 = *(undefined4 **)(iVar5 + 0x10);\n            local_2c = *(int *)(iVar5 + 0xc);\n          }\n          else {\n            bVar2 = *local_34;\n            uVar7 = 0;\n            if (bVar2 != 0) {\n              pbVar11 = local_34;\n              do {\n                pbVar11 = pbVar11 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar11;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }\n            piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);\n            puVar10 = (undefined4 *)piVar1[1];\n            local_2c = *piVar1;\n          }\n          if (local_2c != 0) {\n            iVar5 = unaff_EDI + 0x116489;\n            do {\n              pbVar11 = (byte *)puVar10[3];\n              bVar2 = *pbVar11;\n              pbVar9 = local_34;\n              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar11;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }\n              local_2c = local_2c + -1;\n              puVar10 = (undefined4 *)*puVar10;\n            } while (local_2c != 0);\n          }\n          puVar10 = (undefined4 *)(&UNK_001697a9 + unaff_EDI);\nLAB_00053578:\n          if (puVar10[2] != 0) {\n            return puVar10[2];\n          }\n        }\n        else {\n          pbVar11 = (byte *)*puVar10;\n          if (*(char *)(unaff_EDI + 0x116489 + (uint)*extraout_ECX) ==\n              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar11)) {\n            if (*extraout_ECX != 0) {\n              iVar5 = 1;\n              do {\n                pbVar9 = extraout_ECX + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }\n            goto LAB_000534a3;\n          }\n        }" if (parenthesized_expression "(extraout_ECX == (byte *)0x0)" ( (binary_expression "extraout_ECX == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_000534a3:\n          iVar5 = puVar10[3];\n          if (*(int *)(iVar5 + 0x14) == 0) {\n            puVar10 = *(undefined4 **)(iVar5 + 0x10);\n            local_2c = *(int *)(iVar5 + 0xc);\n          }\n          else {\n            bVar2 = *local_34;\n            uVar7 = 0;\n            if (bVar2 != 0) {\n              pbVar11 = local_34;\n              do {\n                pbVar11 = pbVar11 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar11;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }\n            piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);\n            puVar10 = (undefined4 *)piVar1[1];\n            local_2c = *piVar1;\n          }\n          if (local_2c != 0) {\n            iVar5 = unaff_EDI + 0x116489;\n            do {\n              pbVar11 = (byte *)puVar10[3];\n              bVar2 = *pbVar11;\n              pbVar9 = local_34;\n              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar11;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }\n              local_2c = local_2c + -1;\n              puVar10 = (undefined4 *)*puVar10;\n            } while (local_2c != 0);\n          }\n          puVar10 = (undefined4 *)(&UNK_001697a9 + unaff_EDI);\nLAB_00053578:\n          if (puVar10[2] != 0) {\n            return puVar10[2];\n          }\n        }" { (labeled_statement "LAB_000534a3:\n          iVar5 = puVar10[3];" statement_identifier : (expression_statement "iVar5 = puVar10[3];" (assignment_expression "iVar5 = puVar10[3]" identifier = (subscript_expression "puVar10[3]" identifier [ number_literal ])) ;)) (if_statement "if (*(int *)(iVar5 + 0x14) == 0) {\n            puVar10 = *(undefined4 **)(iVar5 + 0x10);\n            local_2c = *(int *)(iVar5 + 0xc);\n          }\n          else {\n            bVar2 = *local_34;\n            uVar7 = 0;\n            if (bVar2 != 0) {\n              pbVar11 = local_34;\n              do {\n                pbVar11 = pbVar11 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar11;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }\n            piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);\n            puVar10 = (undefined4 *)piVar1[1];\n            local_2c = *piVar1;\n          }" if (parenthesized_expression "(*(int *)(iVar5 + 0x14) == 0)" ( (binary_expression "*(int *)(iVar5 + 0x14) == 0" (pointer_expression "*(int *)(iVar5 + 0x14)" * (cast_expression "(int *)(iVar5 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x14)" ( (binary_expression "iVar5 + 0x14" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n            puVar10 = *(undefined4 **)(iVar5 + 0x10);\n            local_2c = *(int *)(iVar5 + 0xc);\n          }" { (expression_statement "puVar10 = *(undefined4 **)(iVar5 + 0x10);" (assignment_expression "puVar10 = *(undefined4 **)(iVar5 + 0x10)" identifier = (pointer_expression "*(undefined4 **)(iVar5 + 0x10)" * (cast_expression "(undefined4 **)(iVar5 + 0x10)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 0x10)" ( (binary_expression "iVar5 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "local_2c = *(int *)(iVar5 + 0xc);" (assignment_expression "local_2c = *(int *)(iVar5 + 0xc)" identifier = (pointer_expression "*(int *)(iVar5 + 0xc)" * (cast_expression "(int *)(iVar5 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0xc)" ( (binary_expression "iVar5 + 0xc" identifier + number_literal) ))))) ;) }) (else_clause "else {\n            bVar2 = *local_34;\n            uVar7 = 0;\n            if (bVar2 != 0) {\n              pbVar11 = local_34;\n              do {\n                pbVar11 = pbVar11 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar11;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }\n            piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);\n            puVar10 = (undefined4 *)piVar1[1];\n            local_2c = *piVar1;\n          }" else (compound_statement "{\n            bVar2 = *local_34;\n            uVar7 = 0;\n            if (bVar2 != 0) {\n              pbVar11 = local_34;\n              do {\n                pbVar11 = pbVar11 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar11;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }\n            piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);\n            puVar10 = (undefined4 *)piVar1[1];\n            local_2c = *piVar1;\n          }" { (expression_statement "bVar2 = *local_34;" (assignment_expression "bVar2 = *local_34" identifier = (pointer_expression "*local_34" * identifier)) ;) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (if_statement "if (bVar2 != 0) {\n              pbVar11 = local_34;\n              do {\n                pbVar11 = pbVar11 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar11;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }" if (parenthesized_expression "(bVar2 != 0)" ( (binary_expression "bVar2 != 0" identifier != number_literal) )) (compound_statement "{\n              pbVar11 = local_34;\n              do {\n                pbVar11 = pbVar11 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar11;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }" { (expression_statement "pbVar11 = local_34;" (assignment_expression "pbVar11 = local_34" identifier = identifier) ;) (do_statement "do {\n                pbVar11 = pbVar11 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar11;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);" do (compound_statement "{\n                pbVar11 = pbVar11 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar11;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              }" { (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" identifier = (binary_expression "pbVar11 + 1" identifier + number_literal)) ;) (expression_statement "uVar8 = (uint)bVar2;" (assignment_expression "uVar8 = (uint)bVar2" identifier = (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "bVar2 = *pbVar11;" (assignment_expression "bVar2 = *pbVar11" identifier = (pointer_expression "*pbVar11" * identifier)) ;) (expression_statement "uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;" (assignment_expression "uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f" identifier = (binary_expression "(uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f" (parenthesized_expression "(uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8))" ( (binary_expression "uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)" identifier + (pointer_expression "*(byte *)(unaff_EDI + 0x116489 + uVar8)" * (cast_expression "(byte *)(unaff_EDI + 0x116489 + uVar8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x116489 + uVar8)" ( (binary_expression "unaff_EDI + 0x116489 + uVar8" (binary_expression "unaff_EDI + 0x116489" identifier + number_literal) + identifier) ))))) )) * number_literal)) ;) }) while (parenthesized_expression "(bVar2 != 0)" ( (binary_expression "bVar2 != 0" identifier != number_literal) )) ;) })) (expression_statement "piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);" (assignment_expression "piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8)" identifier = (cast_expression "(int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8)" ( (binary_expression "*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8" (pointer_expression "*(int *)(iVar5 + 0x14)" * (cast_expression "(int *)(iVar5 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x14)" ( (binary_expression "iVar5 + 0x14" identifier + number_literal) )))) + (binary_expression "(uVar7 % *(uint *)(iVar5 + 8)) * 8" (parenthesized_expression "(uVar7 % *(uint *)(iVar5 + 8))" ( (binary_expression "uVar7 % *(uint *)(iVar5 + 8)" identifier % (pointer_expression "*(uint *)(iVar5 + 8)" * (cast_expression "(uint *)(iVar5 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 8)" ( (binary_expression "iVar5 + 8" identifier + number_literal) ))))) )) * number_literal)) )))) ;) (expression_statement "puVar10 = (undefined4 *)piVar1[1];" (assignment_expression "puVar10 = (undefined4 *)piVar1[1]" identifier = (cast_expression "(undefined4 *)piVar1[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar1[1]" identifier [ number_literal ]))) ;) (expression_statement "local_2c = *piVar1;" (assignment_expression "local_2c = *piVar1" identifier = (pointer_expression "*piVar1" * identifier)) ;) }))) (if_statement "if (local_2c != 0) {\n            iVar5 = unaff_EDI + 0x116489;\n            do {\n              pbVar11 = (byte *)puVar10[3];\n              bVar2 = *pbVar11;\n              pbVar9 = local_34;\n              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar11;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }\n              local_2c = local_2c + -1;\n              puVar10 = (undefined4 *)*puVar10;\n            } while (local_2c != 0);\n          }" if (parenthesized_expression "(local_2c != 0)" ( (binary_expression "local_2c != 0" identifier != number_literal) )) (compound_statement "{\n            iVar5 = unaff_EDI + 0x116489;\n            do {\n              pbVar11 = (byte *)puVar10[3];\n              bVar2 = *pbVar11;\n              pbVar9 = local_34;\n              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar11;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }\n              local_2c = local_2c + -1;\n              puVar10 = (undefined4 *)*puVar10;\n            } while (local_2c != 0);\n          }" { (expression_statement "iVar5 = unaff_EDI + 0x116489;" (assignment_expression "iVar5 = unaff_EDI + 0x116489" identifier = (binary_expression "unaff_EDI + 0x116489" identifier + number_literal)) ;) (do_statement "do {\n              pbVar11 = (byte *)puVar10[3];\n              bVar2 = *pbVar11;\n              pbVar9 = local_34;\n              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar11;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }\n              local_2c = local_2c + -1;\n              puVar10 = (undefined4 *)*puVar10;\n            } while (local_2c != 0);" do (compound_statement "{\n              pbVar11 = (byte *)puVar10[3];\n              bVar2 = *pbVar11;\n              pbVar9 = local_34;\n              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar11;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }\n              local_2c = local_2c + -1;\n              puVar10 = (undefined4 *)*puVar10;\n            }" { (expression_statement "pbVar11 = (byte *)puVar10[3];" (assignment_expression "pbVar11 = (byte *)puVar10[3]" identifier = (cast_expression "(byte *)puVar10[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar10[3]" identifier [ number_literal ]))) ;) (expression_statement "bVar2 = *pbVar11;" (assignment_expression "bVar2 = *pbVar11" identifier = (pointer_expression "*pbVar11" * identifier)) ;) (expression_statement "pbVar9 = local_34;" (assignment_expression "pbVar9 = local_34" identifier = identifier) ;) (if_statement "if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar11;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }" if (parenthesized_expression "(*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2))" ( (binary_expression "*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)" (pointer_expression "*(char *)(unaff_EDI + 0x116489 + (uint)*local_34)" * (cast_expression "(char *)(unaff_EDI + 0x116489 + (uint)*local_34)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x116489 + (uint)*local_34)" ( (binary_expression "unaff_EDI + 0x116489 + (uint)*local_34" (binary_expression "unaff_EDI + 0x116489" identifier + number_literal) + (binary_expression "(uint)*local_34" (parenthesized_expression "(uint)" ( identifier )) * identifier)) )))) == (pointer_expression "*(char *)(iVar5 + (uint)bVar2)" * (cast_expression "(char *)(iVar5 + (uint)bVar2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + (uint)bVar2)" ( (binary_expression "iVar5 + (uint)bVar2" identifier + (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) ))))) )) (compound_statement "{\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar11;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }" { (do_statement "do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar11;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));" do (compound_statement "{\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar11;\n                }" { (if_statement "if (bVar2 == 0) goto LAB_00053578;" if (parenthesized_expression "(bVar2 == 0)" ( (binary_expression "bVar2 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00053578;" goto statement_identifier ;)) (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" identifier = (binary_expression "pbVar11 + 1" identifier + number_literal)) ;) (expression_statement "pbVar9 = pbVar9 + 1;" (assignment_expression "pbVar9 = pbVar9 + 1" identifier = (binary_expression "pbVar9 + 1" identifier + number_literal)) ;) (expression_statement "bVar2 = *pbVar11;" (assignment_expression "bVar2 = *pbVar11" identifier = (pointer_expression "*pbVar11" * identifier)) ;) }) while (parenthesized_expression "(*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9))" ( (binary_expression "*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9)" (pointer_expression "*(char *)(iVar5 + (uint)bVar2)" * (cast_expression "(char *)(iVar5 + (uint)bVar2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + (uint)bVar2)" ( (binary_expression "iVar5 + (uint)bVar2" identifier + (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) )))) == (pointer_expression "*(char *)(iVar5 + (uint)*pbVar9)" * (cast_expression "(char *)(iVar5 + (uint)*pbVar9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + (uint)*pbVar9)" ( (binary_expression "iVar5 + (uint)*pbVar9" identifier + (binary_expression "(uint)*pbVar9" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ))))) )) ;) })) (expression_statement "local_2c = local_2c + -1;" (assignment_expression "local_2c = local_2c + -1" identifier = (binary_expression "local_2c + -1" identifier + number_literal)) ;) (expression_statement "puVar10 = (undefined4 *)*puVar10;" (assignment_expression "puVar10 = (undefined4 *)*puVar10" identifier = (cast_expression "(undefined4 *)*puVar10" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar10" * identifier))) ;) }) while (parenthesized_expression "(local_2c != 0)" ( (binary_expression "local_2c != 0" identifier != number_literal) )) ;) })) (expression_statement "puVar10 = (undefined4 *)(&UNK_001697a9 + unaff_EDI);" (assignment_expression "puVar10 = (undefined4 *)(&UNK_001697a9 + unaff_EDI)" identifier = (cast_expression "(undefined4 *)(&UNK_001697a9 + unaff_EDI)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&UNK_001697a9 + unaff_EDI)" ( (binary_expression "&UNK_001697a9 + unaff_EDI" (pointer_expression "&UNK_001697a9" & identifier) + identifier) )))) ;) (labeled_statement "LAB_00053578:\n          if (puVar10[2] != 0) {\n            return puVar10[2];\n          }" statement_identifier : (if_statement "if (puVar10[2] != 0) {\n            return puVar10[2];\n          }" if (parenthesized_expression "(puVar10[2] != 0)" ( (binary_expression "puVar10[2] != 0" (subscript_expression "puVar10[2]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n            return puVar10[2];\n          }" { (return_statement "return puVar10[2];" return (subscript_expression "puVar10[2]" identifier [ number_literal ]) ;) }))) }) (else_clause "else {\n          pbVar11 = (byte *)*puVar10;\n          if (*(char *)(unaff_EDI + 0x116489 + (uint)*extraout_ECX) ==\n              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar11)) {\n            if (*extraout_ECX != 0) {\n              iVar5 = 1;\n              do {\n                pbVar9 = extraout_ECX + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }\n            goto LAB_000534a3;\n          }\n        }" else (compound_statement "{\n          pbVar11 = (byte *)*puVar10;\n          if (*(char *)(unaff_EDI + 0x116489 + (uint)*extraout_ECX) ==\n              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar11)) {\n            if (*extraout_ECX != 0) {\n              iVar5 = 1;\n              do {\n                pbVar9 = extraout_ECX + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }\n            goto LAB_000534a3;\n          }\n        }" { (expression_statement "pbVar11 = (byte *)*puVar10;" (assignment_expression "pbVar11 = (byte *)*puVar10" identifier = (cast_expression "(byte *)*puVar10" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar10" * identifier))) ;) (if_statement "if (*(char *)(unaff_EDI + 0x116489 + (uint)*extraout_ECX) ==\n              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar11)) {\n            if (*extraout_ECX != 0) {\n              iVar5 = 1;\n              do {\n                pbVar9 = extraout_ECX + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }\n            goto LAB_000534a3;\n          }" if (parenthesized_expression "(*(char *)(unaff_EDI + 0x116489 + (uint)*extraout_ECX) ==\n              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar11))" ( (binary_expression "*(char *)(unaff_EDI + 0x116489 + (uint)*extraout_ECX) ==\n              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar11)" (pointer_expression "*(char *)(unaff_EDI + 0x116489 + (uint)*extraout_ECX)" * (cast_expression "(char *)(unaff_EDI + 0x116489 + (uint)*extraout_ECX)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x116489 + (uint)*extraout_ECX)" ( (binary_expression "unaff_EDI + 0x116489 + (uint)*extraout_ECX" (binary_expression "unaff_EDI + 0x116489" identifier + number_literal) + (binary_expression "(uint)*extraout_ECX" (parenthesized_expression "(uint)" ( identifier )) * identifier)) )))) == (pointer_expression "*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar11)" * (cast_expression "(char *)(unaff_EDI + 0x116489 + (uint)*pbVar11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x116489 + (uint)*pbVar11)" ( (binary_expression "unaff_EDI + 0x116489 + (uint)*pbVar11" (binary_expression "unaff_EDI + 0x116489" identifier + number_literal) + (binary_expression "(uint)*pbVar11" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ))))) )) (compound_statement "{\n            if (*extraout_ECX != 0) {\n              iVar5 = 1;\n              do {\n                pbVar9 = extraout_ECX + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }\n            goto LAB_000534a3;\n          }" { (if_statement "if (*extraout_ECX != 0) {\n              iVar5 = 1;\n              do {\n                pbVar9 = extraout_ECX + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }" if (parenthesized_expression "(*extraout_ECX != 0)" ( (binary_expression "*extraout_ECX != 0" (pointer_expression "*extraout_ECX" * identifier) != number_literal) )) (compound_statement "{\n              iVar5 = 1;\n              do {\n                pbVar9 = extraout_ECX + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }" { (expression_statement "iVar5 = 1;" (assignment_expression "iVar5 = 1" identifier = number_literal) ;) (do_statement "do {\n                pbVar9 = extraout_ECX + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);" do (compound_statement "{\n                pbVar9 = extraout_ECX + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              }" { (expression_statement "pbVar9 = extraout_ECX + iVar5;" (assignment_expression "pbVar9 = extraout_ECX + iVar5" identifier = (binary_expression "extraout_ECX + iVar5" identifier + identifier)) ;) (if_statement "if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])) goto LAB_0005341f;" if (parenthesized_expression "(*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5]))" ( (binary_expression "*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])" (pointer_expression "*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9)" * (cast_expression "(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x116489 + (uint)*pbVar9)" ( (binary_expression "unaff_EDI + 0x116489 + (uint)*pbVar9" (binary_expression "unaff_EDI + 0x116489" identifier + number_literal) + (binary_expression "(uint)*pbVar9" (parenthesized_expression "(uint)" ( identifier )) * identifier)) )))) != (pointer_expression "*(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])" * (cast_expression "(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])" ( (binary_expression "unaff_EDI + 0x116489 + (uint)pbVar11[iVar5]" (binary_expression "unaff_EDI + 0x116489" identifier + number_literal) + (cast_expression "(uint)pbVar11[iVar5]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar11[iVar5]" identifier [ identifier ]))) ))))) )) (goto_statement "goto LAB_0005341f;" goto statement_identifier ;)) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*pbVar9 != 0)" ( (binary_expression "*pbVar9 != 0" (pointer_expression "*pbVar9" * identifier) != number_literal) )) ;) })) (goto_statement "goto LAB_000534a3;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_0005341f:\n        local_28 = local_28 + 1;" statement_identifier : (expression_statement "local_28 = local_28 + 1;" (assignment_expression "local_28 = local_28 + 1" identifier = (binary_expression "local_28 + 1" identifier + number_literal)) ;)) }) while (parenthesized_expression "(local_28 != uVar3)" ( (binary_expression "local_28 != uVar3" identifier != identifier) )) ;) })) (expression_statement "iVar5 = unaff_EDI + 0x116489;" (assignment_expression "iVar5 = unaff_EDI + 0x116489" identifier = (binary_expression "unaff_EDI + 0x116489" identifier + number_literal)) ;) (if_statement "if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) != 's') {\n      return 0;\n    }" if (parenthesized_expression "(*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) != 's')" ( (binary_expression "*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) != 's'" (pointer_expression "*(char *)(unaff_EDI + 0x116489 + (uint)*local_34)" * (cast_expression "(char *)(unaff_EDI + 0x116489 + (uint)*local_34)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x116489 + (uint)*local_34)" ( (binary_expression "unaff_EDI + 0x116489 + (uint)*local_34" (binary_expression "unaff_EDI + 0x116489" identifier + number_literal) + (binary_expression "(uint)*local_34" (parenthesized_expression "(uint)" ( identifier )) * identifier)) )))) != (char_literal "'s'" ' character ')) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (*local_34 != 0) {\n      if (*(char *)(iVar5 + (uint)local_34[1]) != 'q') {\n        return 0;\n      }\n      if (local_34[1] != 0) {\n        iVar6 = 2;\n        do {\n          pbVar11 = local_34 + iVar6;\n          if (*(char *)(iVar5 + (uint)*pbVar11) !=\n              *(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))) {\n            return 0;\n          }\n          iVar6 = iVar6 + 1;\n        } while (*pbVar11 != 0);\n      }\n    }" if (parenthesized_expression "(*local_34 != 0)" ( (binary_expression "*local_34 != 0" (pointer_expression "*local_34" * identifier) != number_literal) )) (compound_statement "{\n      if (*(char *)(iVar5 + (uint)local_34[1]) != 'q') {\n        return 0;\n      }\n      if (local_34[1] != 0) {\n        iVar6 = 2;\n        do {\n          pbVar11 = local_34 + iVar6;\n          if (*(char *)(iVar5 + (uint)*pbVar11) !=\n              *(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))) {\n            return 0;\n          }\n          iVar6 = iVar6 + 1;\n        } while (*pbVar11 != 0);\n      }\n    }" { (if_statement "if (*(char *)(iVar5 + (uint)local_34[1]) != 'q') {\n        return 0;\n      }" if (parenthesized_expression "(*(char *)(iVar5 + (uint)local_34[1]) != 'q')" ( (binary_expression "*(char *)(iVar5 + (uint)local_34[1]) != 'q'" (pointer_expression "*(char *)(iVar5 + (uint)local_34[1])" * (cast_expression "(char *)(iVar5 + (uint)local_34[1])" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + (uint)local_34[1])" ( (binary_expression "iVar5 + (uint)local_34[1]" identifier + (cast_expression "(uint)local_34[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "local_34[1]" identifier [ number_literal ]))) )))) != (char_literal "'q'" ' character ')) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (local_34[1] != 0) {\n        iVar6 = 2;\n        do {\n          pbVar11 = local_34 + iVar6;\n          if (*(char *)(iVar5 + (uint)*pbVar11) !=\n              *(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))) {\n            return 0;\n          }\n          iVar6 = iVar6 + 1;\n        } while (*pbVar11 != 0);\n      }" if (parenthesized_expression "(local_34[1] != 0)" ( (binary_expression "local_34[1] != 0" (subscript_expression "local_34[1]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n        iVar6 = 2;\n        do {\n          pbVar11 = local_34 + iVar6;\n          if (*(char *)(iVar5 + (uint)*pbVar11) !=\n              *(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))) {\n            return 0;\n          }\n          iVar6 = iVar6 + 1;\n        } while (*pbVar11 != 0);\n      }" { (expression_statement "iVar6 = 2;" (assignment_expression "iVar6 = 2" identifier = number_literal) ;) (do_statement "do {\n          pbVar11 = local_34 + iVar6;\n          if (*(char *)(iVar5 + (uint)*pbVar11) !=\n              *(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))) {\n            return 0;\n          }\n          iVar6 = iVar6 + 1;\n        } while (*pbVar11 != 0);" do (compound_statement "{\n          pbVar11 = local_34 + iVar6;\n          if (*(char *)(iVar5 + (uint)*pbVar11) !=\n              *(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))) {\n            return 0;\n          }\n          iVar6 = iVar6 + 1;\n        }" { (expression_statement "pbVar11 = local_34 + iVar6;" (assignment_expression "pbVar11 = local_34 + iVar6" identifier = (binary_expression "local_34 + iVar6" identifier + identifier)) ;) (if_statement "if (*(char *)(iVar5 + (uint)*pbVar11) !=\n              *(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))) {\n            return 0;\n          }" if (parenthesized_expression "(*(char *)(iVar5 + (uint)*pbVar11) !=\n              *(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015)))" ( (binary_expression "*(char *)(iVar5 + (uint)*pbVar11) !=\n              *(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))" (pointer_expression "*(char *)(iVar5 + (uint)*pbVar11)" * (cast_expression "(char *)(iVar5 + (uint)*pbVar11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + (uint)*pbVar11)" ( (binary_expression "iVar5 + (uint)*pbVar11" identifier + (binary_expression "(uint)*pbVar11" (parenthesized_expression "(uint)" ( identifier )) * identifier)) )))) != (pointer_expression "*(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))" * (cast_expression "(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))" ( (binary_expression "iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015)" identifier + (binary_expression "(uint)*(byte *)(iVar6 + unaff_EDI + 0x107015)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar6 + unaff_EDI + 0x107015)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + unaff_EDI + 0x107015)" ( (binary_expression "iVar6 + unaff_EDI + 0x107015" (binary_expression "iVar6 + unaff_EDI" identifier + identifier) + number_literal) ))))) ))))) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar6 = iVar6 + 1;" (assignment_expression "iVar6 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*pbVar11 != 0)" ( (binary_expression "*pbVar11 != 0" (pointer_expression "*pbVar11" * identifier) != number_literal) )) ;) })) })) (expression_statement "iVar5 = *(int *)(*(int *)(iVar4 + 0x10) + 0x10);" (assignment_expression "iVar5 = *(int *)(*(int *)(iVar4 + 0x10) + 0x10)" identifier = (pointer_expression "*(int *)(*(int *)(iVar4 + 0x10) + 0x10)" * (cast_expression "(int *)(*(int *)(iVar4 + 0x10) + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar4 + 0x10) + 0x10)" ( (binary_expression "*(int *)(iVar4 + 0x10) + 0x10" (pointer_expression "*(int *)(iVar4 + 0x10)" * (cast_expression "(int *)(iVar4 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x10)" ( (binary_expression "iVar4 + 0x10" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (extraout_ECX != (byte *)0x0) {\n      if (iVar5 == 0) {\n        return 0;\n      }\n      iVar5 = FUN_000446c0();\n    }" if (parenthesized_expression "(extraout_ECX != (byte *)0x0)" ( (binary_expression "extraout_ECX != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if (iVar5 == 0) {\n        return 0;\n      }\n      iVar5 = FUN_000446c0();\n    }" { (if_statement "if (iVar5 == 0) {\n        return 0;\n      }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar5 = FUN_000446c0();" (assignment_expression "iVar5 = FUN_000446c0()" identifier = (call_expression "FUN_000446c0()" identifier (argument_list "()" ( )))) ;) })) (if_statement "if (iVar5 != 0) {\n      return 0;\n    }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "local_34 = (byte *)(unaff_EDI + 0x10733b);" (assignment_expression "local_34 = (byte *)(unaff_EDI + 0x10733b)" identifier = (cast_expression "(byte *)(unaff_EDI + 0x10733b)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x10733b)" ( (binary_expression "unaff_EDI + 0x10733b" identifier + number_literal) )))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "Table * sqlite3FindTable(sqlite3 *db,char *zName,char *zDatabase)\n\n{\n  int *piVar1;\n  byte bVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  char *zRight;\n  byte *zLeft;\n  uint uVar8;\n  byte *pbVar9;\n  uchar *puVar10;\n  int unaff_EDI;\n  undefined4 *puVar11;\n  byte *pbVar12;\n  undefined8 uVar13;\n  byte *local_34;\n  int local_2c;\n  uint local_28;\n  \n  uVar13 = __x86_get_pc_thunk_di();\n  local_34 = (byte *)((ulonglong)uVar13 >> 0x20);\n  iVar4 = (int)uVar13;\n  uVar3 = *(uint *)(iVar4 + 0x14);\n  do {\n    if (0 < (int)uVar3) {\n      local_28 = 0;\n      do {\n        uVar7 = local_28 ^ 1;\n        if (1 < (int)local_28) {\n          uVar7 = local_28;\n        }\n        puVar11 = (undefined4 *)(uVar7 * 0x10 + *(int *)(iVar4 + 0x10));\n        if (zLeft == (byte *)0x0) {\nLAB_000534a3:\n          iVar5 = puVar11[3];\n          if (*(int *)(iVar5 + 0x14) == 0) {\n            puVar10 = *(uchar **)(iVar5 + 0x10);\n            local_2c = *(int *)(iVar5 + 0xc);\n          }\n          else {\n            bVar2 = *local_34;\n            uVar7 = 0;\n            if (bVar2 != 0) {\n              pbVar12 = local_34;\n              do {\n                pbVar12 = pbVar12 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar12;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }\n            piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);\n            puVar10 = (uchar *)piVar1[1];\n            local_2c = *piVar1;\n          }\n          if (local_2c != 0) {\n            iVar5 = unaff_EDI + 0x116489;\n            do {\n              pbVar12 = *(byte **)(puVar10 + 0xc);\n              bVar2 = *pbVar12;\n              pbVar9 = local_34;\n              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar12 = pbVar12 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar12;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }\n              local_2c = local_2c + -1;\n              puVar10 = *(uchar **)puVar10;\n            } while (local_2c != 0);\n          }\n          puVar10 = "" + unaff_EDI + 0xc9;\nLAB_00053578:\n          if (*(Table **)(puVar10 + 8) != (Table *)0x0) {\n            return *(Table **)(puVar10 + 8);\n          }\n        }\n        else {\n          pbVar12 = (byte *)*puVar11;\n          if (*(char *)(unaff_EDI + 0x116489 + (uint)*zLeft) ==\n              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar12)) {\n            if (*zLeft != 0) {\n              iVar5 = 1;\n              do {\n                pbVar9 = zLeft + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar12[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }\n            goto LAB_000534a3;\n          }\n        }\nLAB_0005341f:\n        local_28 = local_28 + 1;\n      } while (local_28 != uVar3);\n    }\n    iVar5 = unaff_EDI + 0x116489;\n    if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) != 's') {\n      return (Table *)0x0;\n    }\n    if (*local_34 != 0) {\n      if (*(char *)(iVar5 + (uint)local_34[1]) != 'q') {\n        return (Table *)0x0;\n      }\n      if (local_34[1] != 0) {\n        iVar6 = 2;\n        do {\n          pbVar12 = local_34 + iVar6;\n          if (*(char *)(iVar5 + (uint)*pbVar12) !=\n              *(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))) {\n            return (Table *)0x0;\n          }\n          iVar6 = iVar6 + 1;\n        } while (*pbVar12 != 0);\n      }\n    }\n    zRight = *(char **)(*(int *)(iVar4 + 0x10) + 0x10);\n    if (zLeft != (byte *)0x0) {\n      if (zRight == (char *)0x0) {\n        return (Table *)0x0;\n      }\n      zRight = (char *)sqlite3_stricmp((char *)zLeft,zRight);\n    }\n    if (zRight != (char *)0x0) {\n      return (Table *)0x0;\n    }\n    local_34 = (byte *)(unaff_EDI + 0x10733b);\n  } while( true );\n}\n\n" (function_definition "Table * sqlite3FindTable(sqlite3 *db,char *zName,char *zDatabase)\n\n{\n  int *piVar1;\n  byte bVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  char *zRight;\n  byte *zLeft;\n  uint uVar8;\n  byte *pbVar9;\n  uchar *puVar10;\n  int unaff_EDI;\n  undefined4 *puVar11;\n  byte *pbVar12;\n  undefined8 uVar13;\n  byte *local_34;\n  int local_2c;\n  uint local_28;\n  \n  uVar13 = __x86_get_pc_thunk_di();\n  local_34 = (byte *)((ulonglong)uVar13 >> 0x20);\n  iVar4 = (int)uVar13;\n  uVar3 = *(uint *)(iVar4 + 0x14);\n  do {\n    if (0 < (int)uVar3) {\n      local_28 = 0;\n      do {\n        uVar7 = local_28 ^ 1;\n        if (1 < (int)local_28) {\n          uVar7 = local_28;\n        }\n        puVar11 = (undefined4 *)(uVar7 * 0x10 + *(int *)(iVar4 + 0x10));\n        if (zLeft == (byte *)0x0) {\nLAB_000534a3:\n          iVar5 = puVar11[3];\n          if (*(int *)(iVar5 + 0x14) == 0) {\n            puVar10 = *(uchar **)(iVar5 + 0x10);\n            local_2c = *(int *)(iVar5 + 0xc);\n          }\n          else {\n            bVar2 = *local_34;\n            uVar7 = 0;\n            if (bVar2 != 0) {\n              pbVar12 = local_34;\n              do {\n                pbVar12 = pbVar12 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar12;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }\n            piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);\n            puVar10 = (uchar *)piVar1[1];\n            local_2c = *piVar1;\n          }\n          if (local_2c != 0) {\n            iVar5 = unaff_EDI + 0x116489;\n            do {\n              pbVar12 = *(byte **)(puVar10 + 0xc);\n              bVar2 = *pbVar12;\n              pbVar9 = local_34;\n              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar12 = pbVar12 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar12;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }\n              local_2c = local_2c + -1;\n              puVar10 = *(uchar **)puVar10;\n            } while (local_2c != 0);\n          }\n          puVar10 = "" + unaff_EDI + 0xc9;\nLAB_00053578:\n          if (*(Table **)(puVar10 + 8) != (Table *)0x0) {\n            return *(Table **)(puVar10 + 8);\n          }\n        }\n        else {\n          pbVar12 = (byte *)*puVar11;\n          if (*(char *)(unaff_EDI + 0x116489 + (uint)*zLeft) ==\n              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar12)) {\n            if (*zLeft != 0) {\n              iVar5 = 1;\n              do {\n                pbVar9 = zLeft + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar12[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }\n            goto LAB_000534a3;\n          }\n        }\nLAB_0005341f:\n        local_28 = local_28 + 1;\n      } while (local_28 != uVar3);\n    }\n    iVar5 = unaff_EDI + 0x116489;\n    if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) != 's') {\n      return (Table *)0x0;\n    }\n    if (*local_34 != 0) {\n      if (*(char *)(iVar5 + (uint)local_34[1]) != 'q') {\n        return (Table *)0x0;\n      }\n      if (local_34[1] != 0) {\n        iVar6 = 2;\n        do {\n          pbVar12 = local_34 + iVar6;\n          if (*(char *)(iVar5 + (uint)*pbVar12) !=\n              *(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))) {\n            return (Table *)0x0;\n          }\n          iVar6 = iVar6 + 1;\n        } while (*pbVar12 != 0);\n      }\n    }\n    zRight = *(char **)(*(int *)(iVar4 + 0x10) + 0x10);\n    if (zLeft != (byte *)0x0) {\n      if (zRight == (char *)0x0) {\n        return (Table *)0x0;\n      }\n      zRight = (char *)sqlite3_stricmp((char *)zLeft,zRight);\n    }\n    if (zRight != (char *)0x0) {\n      return (Table *)0x0;\n    }\n    local_34 = (byte *)(unaff_EDI + 0x10733b);\n  } while( true );\n}" type_identifier (pointer_declarator "* sqlite3FindTable(sqlite3 *db,char *zName,char *zDatabase)" * (function_declarator "sqlite3FindTable(sqlite3 *db,char *zName,char *zDatabase)" identifier (parameter_list "(sqlite3 *db,char *zName,char *zDatabase)" ( (parameter_declaration "sqlite3 *db" type_identifier (pointer_declarator "*db" * identifier)) , (parameter_declaration "char *zName" primitive_type (pointer_declarator "*zName" * identifier)) , (parameter_declaration "char *zDatabase" primitive_type (pointer_declarator "*zDatabase" * identifier)) )))) (compound_statement "{\n  int *piVar1;\n  byte bVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  char *zRight;\n  byte *zLeft;\n  uint uVar8;\n  byte *pbVar9;\n  uchar *puVar10;\n  int unaff_EDI;\n  undefined4 *puVar11;\n  byte *pbVar12;\n  undefined8 uVar13;\n  byte *local_34;\n  int local_2c;\n  uint local_28;\n  \n  uVar13 = __x86_get_pc_thunk_di();\n  local_34 = (byte *)((ulonglong)uVar13 >> 0x20);\n  iVar4 = (int)uVar13;\n  uVar3 = *(uint *)(iVar4 + 0x14);\n  do {\n    if (0 < (int)uVar3) {\n      local_28 = 0;\n      do {\n        uVar7 = local_28 ^ 1;\n        if (1 < (int)local_28) {\n          uVar7 = local_28;\n        }\n        puVar11 = (undefined4 *)(uVar7 * 0x10 + *(int *)(iVar4 + 0x10));\n        if (zLeft == (byte *)0x0) {\nLAB_000534a3:\n          iVar5 = puVar11[3];\n          if (*(int *)(iVar5 + 0x14) == 0) {\n            puVar10 = *(uchar **)(iVar5 + 0x10);\n            local_2c = *(int *)(iVar5 + 0xc);\n          }\n          else {\n            bVar2 = *local_34;\n            uVar7 = 0;\n            if (bVar2 != 0) {\n              pbVar12 = local_34;\n              do {\n                pbVar12 = pbVar12 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar12;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }\n            piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);\n            puVar10 = (uchar *)piVar1[1];\n            local_2c = *piVar1;\n          }\n          if (local_2c != 0) {\n            iVar5 = unaff_EDI + 0x116489;\n            do {\n              pbVar12 = *(byte **)(puVar10 + 0xc);\n              bVar2 = *pbVar12;\n              pbVar9 = local_34;\n              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar12 = pbVar12 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar12;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }\n              local_2c = local_2c + -1;\n              puVar10 = *(uchar **)puVar10;\n            } while (local_2c != 0);\n          }\n          puVar10 = "" + unaff_EDI + 0xc9;\nLAB_00053578:\n          if (*(Table **)(puVar10 + 8) != (Table *)0x0) {\n            return *(Table **)(puVar10 + 8);\n          }\n        }\n        else {\n          pbVar12 = (byte *)*puVar11;\n          if (*(char *)(unaff_EDI + 0x116489 + (uint)*zLeft) ==\n              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar12)) {\n            if (*zLeft != 0) {\n              iVar5 = 1;\n              do {\n                pbVar9 = zLeft + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar12[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }\n            goto LAB_000534a3;\n          }\n        }\nLAB_0005341f:\n        local_28 = local_28 + 1;\n      } while (local_28 != uVar3);\n    }\n    iVar5 = unaff_EDI + 0x116489;\n    if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) != 's') {\n      return (Table *)0x0;\n    }\n    if (*local_34 != 0) {\n      if (*(char *)(iVar5 + (uint)local_34[1]) != 'q') {\n        return (Table *)0x0;\n      }\n      if (local_34[1] != 0) {\n        iVar6 = 2;\n        do {\n          pbVar12 = local_34 + iVar6;\n          if (*(char *)(iVar5 + (uint)*pbVar12) !=\n              *(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))) {\n            return (Table *)0x0;\n          }\n          iVar6 = iVar6 + 1;\n        } while (*pbVar12 != 0);\n      }\n    }\n    zRight = *(char **)(*(int *)(iVar4 + 0x10) + 0x10);\n    if (zLeft != (byte *)0x0) {\n      if (zRight == (char *)0x0) {\n        return (Table *)0x0;\n      }\n      zRight = (char *)sqlite3_stricmp((char *)zLeft,zRight);\n    }\n    if (zRight != (char *)0x0) {\n      return (Table *)0x0;\n    }\n    local_34 = (byte *)(unaff_EDI + 0x10733b);\n  } while( true );\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "char *zRight;" primitive_type (pointer_declarator "*zRight" * identifier) ;) (declaration "byte *zLeft;" type_identifier (pointer_declarator "*zLeft" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "uchar *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "undefined4 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "byte *pbVar12;" type_identifier (pointer_declarator "*pbVar12" * identifier) ;) (declaration "undefined8 uVar13;" type_identifier identifier ;) (declaration "byte *local_34;" type_identifier (pointer_declarator "*local_34" * identifier) ;) (declaration "int local_2c;" primitive_type identifier ;) (declaration "uint local_28;" type_identifier identifier ;) (expression_statement "uVar13 = __x86_get_pc_thunk_di();" (assignment_expression "uVar13 = __x86_get_pc_thunk_di()" identifier = (call_expression "__x86_get_pc_thunk_di()" identifier (argument_list "()" ( )))) ;) (expression_statement "local_34 = (byte *)((ulonglong)uVar13 >> 0x20);" (assignment_expression "local_34 = (byte *)((ulonglong)uVar13 >> 0x20)" identifier = (cast_expression "(byte *)((ulonglong)uVar13 >> 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar13 >> 0x20)" ( (binary_expression "(ulonglong)uVar13 >> 0x20" (cast_expression "(ulonglong)uVar13" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "iVar4 = (int)uVar13;" (assignment_expression "iVar4 = (int)uVar13" identifier = (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "uVar3 = *(uint *)(iVar4 + 0x14);" (assignment_expression "uVar3 = *(uint *)(iVar4 + 0x14)" identifier = (pointer_expression "*(uint *)(iVar4 + 0x14)" * (cast_expression "(uint *)(iVar4 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x14)" ( (binary_expression "iVar4 + 0x14" identifier + number_literal) ))))) ;) (do_statement "do {\n    if (0 < (int)uVar3) {\n      local_28 = 0;\n      do {\n        uVar7 = local_28 ^ 1;\n        if (1 < (int)local_28) {\n          uVar7 = local_28;\n        }\n        puVar11 = (undefined4 *)(uVar7 * 0x10 + *(int *)(iVar4 + 0x10));\n        if (zLeft == (byte *)0x0) {\nLAB_000534a3:\n          iVar5 = puVar11[3];\n          if (*(int *)(iVar5 + 0x14) == 0) {\n            puVar10 = *(uchar **)(iVar5 + 0x10);\n            local_2c = *(int *)(iVar5 + 0xc);\n          }\n          else {\n            bVar2 = *local_34;\n            uVar7 = 0;\n            if (bVar2 != 0) {\n              pbVar12 = local_34;\n              do {\n                pbVar12 = pbVar12 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar12;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }\n            piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);\n            puVar10 = (uchar *)piVar1[1];\n            local_2c = *piVar1;\n          }\n          if (local_2c != 0) {\n            iVar5 = unaff_EDI + 0x116489;\n            do {\n              pbVar12 = *(byte **)(puVar10 + 0xc);\n              bVar2 = *pbVar12;\n              pbVar9 = local_34;\n              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar12 = pbVar12 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar12;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }\n              local_2c = local_2c + -1;\n              puVar10 = *(uchar **)puVar10;\n            } while (local_2c != 0);\n          }\n          puVar10 = "" + unaff_EDI + 0xc9;\nLAB_00053578:\n          if (*(Table **)(puVar10 + 8) != (Table *)0x0) {\n            return *(Table **)(puVar10 + 8);\n          }\n        }\n        else {\n          pbVar12 = (byte *)*puVar11;\n          if (*(char *)(unaff_EDI + 0x116489 + (uint)*zLeft) ==\n              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar12)) {\n            if (*zLeft != 0) {\n              iVar5 = 1;\n              do {\n                pbVar9 = zLeft + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar12[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }\n            goto LAB_000534a3;\n          }\n        }\nLAB_0005341f:\n        local_28 = local_28 + 1;\n      } while (local_28 != uVar3);\n    }\n    iVar5 = unaff_EDI + 0x116489;\n    if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) != 's') {\n      return (Table *)0x0;\n    }\n    if (*local_34 != 0) {\n      if (*(char *)(iVar5 + (uint)local_34[1]) != 'q') {\n        return (Table *)0x0;\n      }\n      if (local_34[1] != 0) {\n        iVar6 = 2;\n        do {\n          pbVar12 = local_34 + iVar6;\n          if (*(char *)(iVar5 + (uint)*pbVar12) !=\n              *(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))) {\n            return (Table *)0x0;\n          }\n          iVar6 = iVar6 + 1;\n        } while (*pbVar12 != 0);\n      }\n    }\n    zRight = *(char **)(*(int *)(iVar4 + 0x10) + 0x10);\n    if (zLeft != (byte *)0x0) {\n      if (zRight == (char *)0x0) {\n        return (Table *)0x0;\n      }\n      zRight = (char *)sqlite3_stricmp((char *)zLeft,zRight);\n    }\n    if (zRight != (char *)0x0) {\n      return (Table *)0x0;\n    }\n    local_34 = (byte *)(unaff_EDI + 0x10733b);\n  } while( true );" do (compound_statement "{\n    if (0 < (int)uVar3) {\n      local_28 = 0;\n      do {\n        uVar7 = local_28 ^ 1;\n        if (1 < (int)local_28) {\n          uVar7 = local_28;\n        }\n        puVar11 = (undefined4 *)(uVar7 * 0x10 + *(int *)(iVar4 + 0x10));\n        if (zLeft == (byte *)0x0) {\nLAB_000534a3:\n          iVar5 = puVar11[3];\n          if (*(int *)(iVar5 + 0x14) == 0) {\n            puVar10 = *(uchar **)(iVar5 + 0x10);\n            local_2c = *(int *)(iVar5 + 0xc);\n          }\n          else {\n            bVar2 = *local_34;\n            uVar7 = 0;\n            if (bVar2 != 0) {\n              pbVar12 = local_34;\n              do {\n                pbVar12 = pbVar12 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar12;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }\n            piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);\n            puVar10 = (uchar *)piVar1[1];\n            local_2c = *piVar1;\n          }\n          if (local_2c != 0) {\n            iVar5 = unaff_EDI + 0x116489;\n            do {\n              pbVar12 = *(byte **)(puVar10 + 0xc);\n              bVar2 = *pbVar12;\n              pbVar9 = local_34;\n              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar12 = pbVar12 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar12;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }\n              local_2c = local_2c + -1;\n              puVar10 = *(uchar **)puVar10;\n            } while (local_2c != 0);\n          }\n          puVar10 = "" + unaff_EDI + 0xc9;\nLAB_00053578:\n          if (*(Table **)(puVar10 + 8) != (Table *)0x0) {\n            return *(Table **)(puVar10 + 8);\n          }\n        }\n        else {\n          pbVar12 = (byte *)*puVar11;\n          if (*(char *)(unaff_EDI + 0x116489 + (uint)*zLeft) ==\n              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar12)) {\n            if (*zLeft != 0) {\n              iVar5 = 1;\n              do {\n                pbVar9 = zLeft + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar12[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }\n            goto LAB_000534a3;\n          }\n        }\nLAB_0005341f:\n        local_28 = local_28 + 1;\n      } while (local_28 != uVar3);\n    }\n    iVar5 = unaff_EDI + 0x116489;\n    if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) != 's') {\n      return (Table *)0x0;\n    }\n    if (*local_34 != 0) {\n      if (*(char *)(iVar5 + (uint)local_34[1]) != 'q') {\n        return (Table *)0x0;\n      }\n      if (local_34[1] != 0) {\n        iVar6 = 2;\n        do {\n          pbVar12 = local_34 + iVar6;\n          if (*(char *)(iVar5 + (uint)*pbVar12) !=\n              *(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))) {\n            return (Table *)0x0;\n          }\n          iVar6 = iVar6 + 1;\n        } while (*pbVar12 != 0);\n      }\n    }\n    zRight = *(char **)(*(int *)(iVar4 + 0x10) + 0x10);\n    if (zLeft != (byte *)0x0) {\n      if (zRight == (char *)0x0) {\n        return (Table *)0x0;\n      }\n      zRight = (char *)sqlite3_stricmp((char *)zLeft,zRight);\n    }\n    if (zRight != (char *)0x0) {\n      return (Table *)0x0;\n    }\n    local_34 = (byte *)(unaff_EDI + 0x10733b);\n  }" { (if_statement "if (0 < (int)uVar3) {\n      local_28 = 0;\n      do {\n        uVar7 = local_28 ^ 1;\n        if (1 < (int)local_28) {\n          uVar7 = local_28;\n        }\n        puVar11 = (undefined4 *)(uVar7 * 0x10 + *(int *)(iVar4 + 0x10));\n        if (zLeft == (byte *)0x0) {\nLAB_000534a3:\n          iVar5 = puVar11[3];\n          if (*(int *)(iVar5 + 0x14) == 0) {\n            puVar10 = *(uchar **)(iVar5 + 0x10);\n            local_2c = *(int *)(iVar5 + 0xc);\n          }\n          else {\n            bVar2 = *local_34;\n            uVar7 = 0;\n            if (bVar2 != 0) {\n              pbVar12 = local_34;\n              do {\n                pbVar12 = pbVar12 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar12;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }\n            piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);\n            puVar10 = (uchar *)piVar1[1];\n            local_2c = *piVar1;\n          }\n          if (local_2c != 0) {\n            iVar5 = unaff_EDI + 0x116489;\n            do {\n              pbVar12 = *(byte **)(puVar10 + 0xc);\n              bVar2 = *pbVar12;\n              pbVar9 = local_34;\n              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar12 = pbVar12 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar12;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }\n              local_2c = local_2c + -1;\n              puVar10 = *(uchar **)puVar10;\n            } while (local_2c != 0);\n          }\n          puVar10 = "" + unaff_EDI + 0xc9;\nLAB_00053578:\n          if (*(Table **)(puVar10 + 8) != (Table *)0x0) {\n            return *(Table **)(puVar10 + 8);\n          }\n        }\n        else {\n          pbVar12 = (byte *)*puVar11;\n          if (*(char *)(unaff_EDI + 0x116489 + (uint)*zLeft) ==\n              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar12)) {\n            if (*zLeft != 0) {\n              iVar5 = 1;\n              do {\n                pbVar9 = zLeft + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar12[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }\n            goto LAB_000534a3;\n          }\n        }\nLAB_0005341f:\n        local_28 = local_28 + 1;\n      } while (local_28 != uVar3);\n    }" if (parenthesized_expression "(0 < (int)uVar3)" ( (binary_expression "0 < (int)uVar3" number_literal < (cast_expression "(int)uVar3" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      local_28 = 0;\n      do {\n        uVar7 = local_28 ^ 1;\n        if (1 < (int)local_28) {\n          uVar7 = local_28;\n        }\n        puVar11 = (undefined4 *)(uVar7 * 0x10 + *(int *)(iVar4 + 0x10));\n        if (zLeft == (byte *)0x0) {\nLAB_000534a3:\n          iVar5 = puVar11[3];\n          if (*(int *)(iVar5 + 0x14) == 0) {\n            puVar10 = *(uchar **)(iVar5 + 0x10);\n            local_2c = *(int *)(iVar5 + 0xc);\n          }\n          else {\n            bVar2 = *local_34;\n            uVar7 = 0;\n            if (bVar2 != 0) {\n              pbVar12 = local_34;\n              do {\n                pbVar12 = pbVar12 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar12;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }\n            piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);\n            puVar10 = (uchar *)piVar1[1];\n            local_2c = *piVar1;\n          }\n          if (local_2c != 0) {\n            iVar5 = unaff_EDI + 0x116489;\n            do {\n              pbVar12 = *(byte **)(puVar10 + 0xc);\n              bVar2 = *pbVar12;\n              pbVar9 = local_34;\n              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar12 = pbVar12 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar12;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }\n              local_2c = local_2c + -1;\n              puVar10 = *(uchar **)puVar10;\n            } while (local_2c != 0);\n          }\n          puVar10 = "" + unaff_EDI + 0xc9;\nLAB_00053578:\n          if (*(Table **)(puVar10 + 8) != (Table *)0x0) {\n            return *(Table **)(puVar10 + 8);\n          }\n        }\n        else {\n          pbVar12 = (byte *)*puVar11;\n          if (*(char *)(unaff_EDI + 0x116489 + (uint)*zLeft) ==\n              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar12)) {\n            if (*zLeft != 0) {\n              iVar5 = 1;\n              do {\n                pbVar9 = zLeft + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar12[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }\n            goto LAB_000534a3;\n          }\n        }\nLAB_0005341f:\n        local_28 = local_28 + 1;\n      } while (local_28 != uVar3);\n    }" { (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" identifier = number_literal) ;) (do_statement "do {\n        uVar7 = local_28 ^ 1;\n        if (1 < (int)local_28) {\n          uVar7 = local_28;\n        }\n        puVar11 = (undefined4 *)(uVar7 * 0x10 + *(int *)(iVar4 + 0x10));\n        if (zLeft == (byte *)0x0) {\nLAB_000534a3:\n          iVar5 = puVar11[3];\n          if (*(int *)(iVar5 + 0x14) == 0) {\n            puVar10 = *(uchar **)(iVar5 + 0x10);\n            local_2c = *(int *)(iVar5 + 0xc);\n          }\n          else {\n            bVar2 = *local_34;\n            uVar7 = 0;\n            if (bVar2 != 0) {\n              pbVar12 = local_34;\n              do {\n                pbVar12 = pbVar12 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar12;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }\n            piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);\n            puVar10 = (uchar *)piVar1[1];\n            local_2c = *piVar1;\n          }\n          if (local_2c != 0) {\n            iVar5 = unaff_EDI + 0x116489;\n            do {\n              pbVar12 = *(byte **)(puVar10 + 0xc);\n              bVar2 = *pbVar12;\n              pbVar9 = local_34;\n              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar12 = pbVar12 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar12;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }\n              local_2c = local_2c + -1;\n              puVar10 = *(uchar **)puVar10;\n            } while (local_2c != 0);\n          }\n          puVar10 = "" + unaff_EDI + 0xc9;\nLAB_00053578:\n          if (*(Table **)(puVar10 + 8) != (Table *)0x0) {\n            return *(Table **)(puVar10 + 8);\n          }\n        }\n        else {\n          pbVar12 = (byte *)*puVar11;\n          if (*(char *)(unaff_EDI + 0x116489 + (uint)*zLeft) ==\n              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar12)) {\n            if (*zLeft != 0) {\n              iVar5 = 1;\n              do {\n                pbVar9 = zLeft + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar12[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }\n            goto LAB_000534a3;\n          }\n        }\nLAB_0005341f:\n        local_28 = local_28 + 1;\n      } while (local_28 != uVar3);" do (compound_statement "{\n        uVar7 = local_28 ^ 1;\n        if (1 < (int)local_28) {\n          uVar7 = local_28;\n        }\n        puVar11 = (undefined4 *)(uVar7 * 0x10 + *(int *)(iVar4 + 0x10));\n        if (zLeft == (byte *)0x0) {\nLAB_000534a3:\n          iVar5 = puVar11[3];\n          if (*(int *)(iVar5 + 0x14) == 0) {\n            puVar10 = *(uchar **)(iVar5 + 0x10);\n            local_2c = *(int *)(iVar5 + 0xc);\n          }\n          else {\n            bVar2 = *local_34;\n            uVar7 = 0;\n            if (bVar2 != 0) {\n              pbVar12 = local_34;\n              do {\n                pbVar12 = pbVar12 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar12;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }\n            piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);\n            puVar10 = (uchar *)piVar1[1];\n            local_2c = *piVar1;\n          }\n          if (local_2c != 0) {\n            iVar5 = unaff_EDI + 0x116489;\n            do {\n              pbVar12 = *(byte **)(puVar10 + 0xc);\n              bVar2 = *pbVar12;\n              pbVar9 = local_34;\n              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar12 = pbVar12 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar12;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }\n              local_2c = local_2c + -1;\n              puVar10 = *(uchar **)puVar10;\n            } while (local_2c != 0);\n          }\n          puVar10 = "" + unaff_EDI + 0xc9;\nLAB_00053578:\n          if (*(Table **)(puVar10 + 8) != (Table *)0x0) {\n            return *(Table **)(puVar10 + 8);\n          }\n        }\n        else {\n          pbVar12 = (byte *)*puVar11;\n          if (*(char *)(unaff_EDI + 0x116489 + (uint)*zLeft) ==\n              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar12)) {\n            if (*zLeft != 0) {\n              iVar5 = 1;\n              do {\n                pbVar9 = zLeft + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar12[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }\n            goto LAB_000534a3;\n          }\n        }\nLAB_0005341f:\n        local_28 = local_28 + 1;\n      }" { (expression_statement "uVar7 = local_28 ^ 1;" (assignment_expression "uVar7 = local_28 ^ 1" identifier = (binary_expression "local_28 ^ 1" identifier ^ number_literal)) ;) (if_statement "if (1 < (int)local_28) {\n          uVar7 = local_28;\n        }" if (parenthesized_expression "(1 < (int)local_28)" ( (binary_expression "1 < (int)local_28" number_literal < (cast_expression "(int)local_28" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          uVar7 = local_28;\n        }" { (expression_statement "uVar7 = local_28;" (assignment_expression "uVar7 = local_28" identifier = identifier) ;) })) (expression_statement "puVar11 = (undefined4 *)(uVar7 * 0x10 + *(int *)(iVar4 + 0x10));" (assignment_expression "puVar11 = (undefined4 *)(uVar7 * 0x10 + *(int *)(iVar4 + 0x10))" identifier = (cast_expression "(undefined4 *)(uVar7 * 0x10 + *(int *)(iVar4 + 0x10))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar7 * 0x10 + *(int *)(iVar4 + 0x10))" ( (binary_expression "uVar7 * 0x10 + *(int *)(iVar4 + 0x10)" (binary_expression "uVar7 * 0x10" identifier * number_literal) + (pointer_expression "*(int *)(iVar4 + 0x10)" * (cast_expression "(int *)(iVar4 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x10)" ( (binary_expression "iVar4 + 0x10" identifier + number_literal) ))))) )))) ;) (if_statement "if (zLeft == (byte *)0x0) {\nLAB_000534a3:\n          iVar5 = puVar11[3];\n          if (*(int *)(iVar5 + 0x14) == 0) {\n            puVar10 = *(uchar **)(iVar5 + 0x10);\n            local_2c = *(int *)(iVar5 + 0xc);\n          }\n          else {\n            bVar2 = *local_34;\n            uVar7 = 0;\n            if (bVar2 != 0) {\n              pbVar12 = local_34;\n              do {\n                pbVar12 = pbVar12 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar12;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }\n            piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);\n            puVar10 = (uchar *)piVar1[1];\n            local_2c = *piVar1;\n          }\n          if (local_2c != 0) {\n            iVar5 = unaff_EDI + 0x116489;\n            do {\n              pbVar12 = *(byte **)(puVar10 + 0xc);\n              bVar2 = *pbVar12;\n              pbVar9 = local_34;\n              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar12 = pbVar12 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar12;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }\n              local_2c = local_2c + -1;\n              puVar10 = *(uchar **)puVar10;\n            } while (local_2c != 0);\n          }\n          puVar10 = "" + unaff_EDI + 0xc9;\nLAB_00053578:\n          if (*(Table **)(puVar10 + 8) != (Table *)0x0) {\n            return *(Table **)(puVar10 + 8);\n          }\n        }\n        else {\n          pbVar12 = (byte *)*puVar11;\n          if (*(char *)(unaff_EDI + 0x116489 + (uint)*zLeft) ==\n              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar12)) {\n            if (*zLeft != 0) {\n              iVar5 = 1;\n              do {\n                pbVar9 = zLeft + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar12[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }\n            goto LAB_000534a3;\n          }\n        }" if (parenthesized_expression "(zLeft == (byte *)0x0)" ( (binary_expression "zLeft == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_000534a3:\n          iVar5 = puVar11[3];\n          if (*(int *)(iVar5 + 0x14) == 0) {\n            puVar10 = *(uchar **)(iVar5 + 0x10);\n            local_2c = *(int *)(iVar5 + 0xc);\n          }\n          else {\n            bVar2 = *local_34;\n            uVar7 = 0;\n            if (bVar2 != 0) {\n              pbVar12 = local_34;\n              do {\n                pbVar12 = pbVar12 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar12;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }\n            piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);\n            puVar10 = (uchar *)piVar1[1];\n            local_2c = *piVar1;\n          }\n          if (local_2c != 0) {\n            iVar5 = unaff_EDI + 0x116489;\n            do {\n              pbVar12 = *(byte **)(puVar10 + 0xc);\n              bVar2 = *pbVar12;\n              pbVar9 = local_34;\n              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar12 = pbVar12 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar12;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }\n              local_2c = local_2c + -1;\n              puVar10 = *(uchar **)puVar10;\n            } while (local_2c != 0);\n          }\n          puVar10 = "" + unaff_EDI + 0xc9;\nLAB_00053578:\n          if (*(Table **)(puVar10 + 8) != (Table *)0x0) {\n            return *(Table **)(puVar10 + 8);\n          }\n        }" { (labeled_statement "LAB_000534a3:\n          iVar5 = puVar11[3];" statement_identifier : (expression_statement "iVar5 = puVar11[3];" (assignment_expression "iVar5 = puVar11[3]" identifier = (subscript_expression "puVar11[3]" identifier [ number_literal ])) ;)) (if_statement "if (*(int *)(iVar5 + 0x14) == 0) {\n            puVar10 = *(uchar **)(iVar5 + 0x10);\n            local_2c = *(int *)(iVar5 + 0xc);\n          }\n          else {\n            bVar2 = *local_34;\n            uVar7 = 0;\n            if (bVar2 != 0) {\n              pbVar12 = local_34;\n              do {\n                pbVar12 = pbVar12 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar12;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }\n            piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);\n            puVar10 = (uchar *)piVar1[1];\n            local_2c = *piVar1;\n          }" if (parenthesized_expression "(*(int *)(iVar5 + 0x14) == 0)" ( (binary_expression "*(int *)(iVar5 + 0x14) == 0" (pointer_expression "*(int *)(iVar5 + 0x14)" * (cast_expression "(int *)(iVar5 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x14)" ( (binary_expression "iVar5 + 0x14" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n            puVar10 = *(uchar **)(iVar5 + 0x10);\n            local_2c = *(int *)(iVar5 + 0xc);\n          }" { (expression_statement "puVar10 = *(uchar **)(iVar5 + 0x10);" (assignment_expression "puVar10 = *(uchar **)(iVar5 + 0x10)" identifier = (pointer_expression "*(uchar **)(iVar5 + 0x10)" * (cast_expression "(uchar **)(iVar5 + 0x10)" ( (type_descriptor "uchar **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 0x10)" ( (binary_expression "iVar5 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "local_2c = *(int *)(iVar5 + 0xc);" (assignment_expression "local_2c = *(int *)(iVar5 + 0xc)" identifier = (pointer_expression "*(int *)(iVar5 + 0xc)" * (cast_expression "(int *)(iVar5 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0xc)" ( (binary_expression "iVar5 + 0xc" identifier + number_literal) ))))) ;) }) (else_clause "else {\n            bVar2 = *local_34;\n            uVar7 = 0;\n            if (bVar2 != 0) {\n              pbVar12 = local_34;\n              do {\n                pbVar12 = pbVar12 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar12;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }\n            piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);\n            puVar10 = (uchar *)piVar1[1];\n            local_2c = *piVar1;\n          }" else (compound_statement "{\n            bVar2 = *local_34;\n            uVar7 = 0;\n            if (bVar2 != 0) {\n              pbVar12 = local_34;\n              do {\n                pbVar12 = pbVar12 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar12;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }\n            piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);\n            puVar10 = (uchar *)piVar1[1];\n            local_2c = *piVar1;\n          }" { (expression_statement "bVar2 = *local_34;" (assignment_expression "bVar2 = *local_34" identifier = (pointer_expression "*local_34" * identifier)) ;) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (if_statement "if (bVar2 != 0) {\n              pbVar12 = local_34;\n              do {\n                pbVar12 = pbVar12 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar12;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }" if (parenthesized_expression "(bVar2 != 0)" ( (binary_expression "bVar2 != 0" identifier != number_literal) )) (compound_statement "{\n              pbVar12 = local_34;\n              do {\n                pbVar12 = pbVar12 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar12;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }" { (expression_statement "pbVar12 = local_34;" (assignment_expression "pbVar12 = local_34" identifier = identifier) ;) (do_statement "do {\n                pbVar12 = pbVar12 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar12;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);" do (compound_statement "{\n                pbVar12 = pbVar12 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar12;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              }" { (expression_statement "pbVar12 = pbVar12 + 1;" (assignment_expression "pbVar12 = pbVar12 + 1" identifier = (binary_expression "pbVar12 + 1" identifier + number_literal)) ;) (expression_statement "uVar8 = (uint)bVar2;" (assignment_expression "uVar8 = (uint)bVar2" identifier = (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "bVar2 = *pbVar12;" (assignment_expression "bVar2 = *pbVar12" identifier = (pointer_expression "*pbVar12" * identifier)) ;) (expression_statement "uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;" (assignment_expression "uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f" identifier = (binary_expression "(uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f" (parenthesized_expression "(uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8))" ( (binary_expression "uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)" identifier + (pointer_expression "*(byte *)(unaff_EDI + 0x116489 + uVar8)" * (cast_expression "(byte *)(unaff_EDI + 0x116489 + uVar8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x116489 + uVar8)" ( (binary_expression "unaff_EDI + 0x116489 + uVar8" (binary_expression "unaff_EDI + 0x116489" identifier + number_literal) + identifier) ))))) )) * number_literal)) ;) }) while (parenthesized_expression "(bVar2 != 0)" ( (binary_expression "bVar2 != 0" identifier != number_literal) )) ;) })) (expression_statement "piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);" (assignment_expression "piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8)" identifier = (cast_expression "(int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8)" ( (binary_expression "*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8" (pointer_expression "*(int *)(iVar5 + 0x14)" * (cast_expression "(int *)(iVar5 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x14)" ( (binary_expression "iVar5 + 0x14" identifier + number_literal) )))) + (binary_expression "(uVar7 % *(uint *)(iVar5 + 8)) * 8" (parenthesized_expression "(uVar7 % *(uint *)(iVar5 + 8))" ( (binary_expression "uVar7 % *(uint *)(iVar5 + 8)" identifier % (pointer_expression "*(uint *)(iVar5 + 8)" * (cast_expression "(uint *)(iVar5 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 8)" ( (binary_expression "iVar5 + 8" identifier + number_literal) ))))) )) * number_literal)) )))) ;) (expression_statement "puVar10 = (uchar *)piVar1[1];" (assignment_expression "puVar10 = (uchar *)piVar1[1]" identifier = (cast_expression "(uchar *)piVar1[1]" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar1[1]" identifier [ number_literal ]))) ;) (expression_statement "local_2c = *piVar1;" (assignment_expression "local_2c = *piVar1" identifier = (pointer_expression "*piVar1" * identifier)) ;) }))) (if_statement "if (local_2c != 0) {\n            iVar5 = unaff_EDI + 0x116489;\n            do {\n              pbVar12 = *(byte **)(puVar10 + 0xc);\n              bVar2 = *pbVar12;\n              pbVar9 = local_34;\n              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar12 = pbVar12 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar12;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }\n              local_2c = local_2c + -1;\n              puVar10 = *(uchar **)puVar10;\n            } while (local_2c != 0);\n          }" if (parenthesized_expression "(local_2c != 0)" ( (binary_expression "local_2c != 0" identifier != number_literal) )) (compound_statement "{\n            iVar5 = unaff_EDI + 0x116489;\n            do {\n              pbVar12 = *(byte **)(puVar10 + 0xc);\n              bVar2 = *pbVar12;\n              pbVar9 = local_34;\n              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar12 = pbVar12 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar12;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }\n              local_2c = local_2c + -1;\n              puVar10 = *(uchar **)puVar10;\n            } while (local_2c != 0);\n          }" { (expression_statement "iVar5 = unaff_EDI + 0x116489;" (assignment_expression "iVar5 = unaff_EDI + 0x116489" identifier = (binary_expression "unaff_EDI + 0x116489" identifier + number_literal)) ;) (do_statement "do {\n              pbVar12 = *(byte **)(puVar10 + 0xc);\n              bVar2 = *pbVar12;\n              pbVar9 = local_34;\n              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar12 = pbVar12 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar12;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }\n              local_2c = local_2c + -1;\n              puVar10 = *(uchar **)puVar10;\n            } while (local_2c != 0);" do (compound_statement "{\n              pbVar12 = *(byte **)(puVar10 + 0xc);\n              bVar2 = *pbVar12;\n              pbVar9 = local_34;\n              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar12 = pbVar12 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar12;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }\n              local_2c = local_2c + -1;\n              puVar10 = *(uchar **)puVar10;\n            }" { (expression_statement "pbVar12 = *(byte **)(puVar10 + 0xc);" (assignment_expression "pbVar12 = *(byte **)(puVar10 + 0xc)" identifier = (pointer_expression "*(byte **)(puVar10 + 0xc)" * (cast_expression "(byte **)(puVar10 + 0xc)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0xc)" ( (binary_expression "puVar10 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "bVar2 = *pbVar12;" (assignment_expression "bVar2 = *pbVar12" identifier = (pointer_expression "*pbVar12" * identifier)) ;) (expression_statement "pbVar9 = local_34;" (assignment_expression "pbVar9 = local_34" identifier = identifier) ;) (if_statement "if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar12 = pbVar12 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar12;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }" if (parenthesized_expression "(*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2))" ( (binary_expression "*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)" (pointer_expression "*(char *)(unaff_EDI + 0x116489 + (uint)*local_34)" * (cast_expression "(char *)(unaff_EDI + 0x116489 + (uint)*local_34)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x116489 + (uint)*local_34)" ( (binary_expression "unaff_EDI + 0x116489 + (uint)*local_34" (binary_expression "unaff_EDI + 0x116489" identifier + number_literal) + (binary_expression "(uint)*local_34" (parenthesized_expression "(uint)" ( identifier )) * identifier)) )))) == (pointer_expression "*(char *)(iVar5 + (uint)bVar2)" * (cast_expression "(char *)(iVar5 + (uint)bVar2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + (uint)bVar2)" ( (binary_expression "iVar5 + (uint)bVar2" identifier + (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) ))))) )) (compound_statement "{\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar12 = pbVar12 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar12;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }" { (do_statement "do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar12 = pbVar12 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar12;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));" do (compound_statement "{\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar12 = pbVar12 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar12;\n                }" { (if_statement "if (bVar2 == 0) goto LAB_00053578;" if (parenthesized_expression "(bVar2 == 0)" ( (binary_expression "bVar2 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00053578;" goto statement_identifier ;)) (expression_statement "pbVar12 = pbVar12 + 1;" (assignment_expression "pbVar12 = pbVar12 + 1" identifier = (binary_expression "pbVar12 + 1" identifier + number_literal)) ;) (expression_statement "pbVar9 = pbVar9 + 1;" (assignment_expression "pbVar9 = pbVar9 + 1" identifier = (binary_expression "pbVar9 + 1" identifier + number_literal)) ;) (expression_statement "bVar2 = *pbVar12;" (assignment_expression "bVar2 = *pbVar12" identifier = (pointer_expression "*pbVar12" * identifier)) ;) }) while (parenthesized_expression "(*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9))" ( (binary_expression "*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9)" (pointer_expression "*(char *)(iVar5 + (uint)bVar2)" * (cast_expression "(char *)(iVar5 + (uint)bVar2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + (uint)bVar2)" ( (binary_expression "iVar5 + (uint)bVar2" identifier + (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) )))) == (pointer_expression "*(char *)(iVar5 + (uint)*pbVar9)" * (cast_expression "(char *)(iVar5 + (uint)*pbVar9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + (uint)*pbVar9)" ( (binary_expression "iVar5 + (uint)*pbVar9" identifier + (binary_expression "(uint)*pbVar9" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ))))) )) ;) })) (expression_statement "local_2c = local_2c + -1;" (assignment_expression "local_2c = local_2c + -1" identifier = (binary_expression "local_2c + -1" identifier + number_literal)) ;) (expression_statement "puVar10 = *(uchar **)puVar10;" (assignment_expression "puVar10 = *(uchar **)puVar10" identifier = (pointer_expression "*(uchar **)puVar10" * (cast_expression "(uchar **)puVar10" ( (type_descriptor "uchar **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) }) while (parenthesized_expression "(local_2c != 0)" ( (binary_expression "local_2c != 0" identifier != number_literal) )) ;) })) (expression_statement "puVar10 = "" + unaff_EDI + 0xc9;" (assignment_expression "puVar10 = "" + unaff_EDI + 0xc9" identifier = (binary_expression """ + unaff_EDI + 0xc9" (binary_expression """ + unaff_EDI" (string_literal """" " ") + identifier) + number_literal)) ;) (labeled_statement "LAB_00053578:\n          if (*(Table **)(puVar10 + 8) != (Table *)0x0) {\n            return *(Table **)(puVar10 + 8);\n          }" statement_identifier : (if_statement "if (*(Table **)(puVar10 + 8) != (Table *)0x0) {\n            return *(Table **)(puVar10 + 8);\n          }" if (parenthesized_expression "(*(Table **)(puVar10 + 8) != (Table *)0x0)" ( (binary_expression "*(Table **)(puVar10 + 8) != (Table *)0x0" (pointer_expression "*(Table **)(puVar10 + 8)" * (cast_expression "(Table **)(puVar10 + 8)" ( (type_descriptor "Table **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 8)" ( (binary_expression "puVar10 + 8" identifier + number_literal) )))) != (cast_expression "(Table *)0x0" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            return *(Table **)(puVar10 + 8);\n          }" { (return_statement "return *(Table **)(puVar10 + 8);" return (pointer_expression "*(Table **)(puVar10 + 8)" * (cast_expression "(Table **)(puVar10 + 8)" ( (type_descriptor "Table **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 8)" ( (binary_expression "puVar10 + 8" identifier + number_literal) )))) ;) }))) }) (else_clause "else {\n          pbVar12 = (byte *)*puVar11;\n          if (*(char *)(unaff_EDI + 0x116489 + (uint)*zLeft) ==\n              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar12)) {\n            if (*zLeft != 0) {\n              iVar5 = 1;\n              do {\n                pbVar9 = zLeft + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar12[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }\n            goto LAB_000534a3;\n          }\n        }" else (compound_statement "{\n          pbVar12 = (byte *)*puVar11;\n          if (*(char *)(unaff_EDI + 0x116489 + (uint)*zLeft) ==\n              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar12)) {\n            if (*zLeft != 0) {\n              iVar5 = 1;\n              do {\n                pbVar9 = zLeft + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar12[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }\n            goto LAB_000534a3;\n          }\n        }" { (expression_statement "pbVar12 = (byte *)*puVar11;" (assignment_expression "pbVar12 = (byte *)*puVar11" identifier = (cast_expression "(byte *)*puVar11" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar11" * identifier))) ;) (if_statement "if (*(char *)(unaff_EDI + 0x116489 + (uint)*zLeft) ==\n              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar12)) {\n            if (*zLeft != 0) {\n              iVar5 = 1;\n              do {\n                pbVar9 = zLeft + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar12[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }\n            goto LAB_000534a3;\n          }" if (parenthesized_expression "(*(char *)(unaff_EDI + 0x116489 + (uint)*zLeft) ==\n              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar12))" ( (binary_expression "*(char *)(unaff_EDI + 0x116489 + (uint)*zLeft) ==\n              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar12)" (pointer_expression "*(char *)(unaff_EDI + 0x116489 + (uint)*zLeft)" * (cast_expression "(char *)(unaff_EDI + 0x116489 + (uint)*zLeft)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x116489 + (uint)*zLeft)" ( (binary_expression "unaff_EDI + 0x116489 + (uint)*zLeft" (binary_expression "unaff_EDI + 0x116489" identifier + number_literal) + (binary_expression "(uint)*zLeft" (parenthesized_expression "(uint)" ( identifier )) * identifier)) )))) == (pointer_expression "*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar12)" * (cast_expression "(char *)(unaff_EDI + 0x116489 + (uint)*pbVar12)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x116489 + (uint)*pbVar12)" ( (binary_expression "unaff_EDI + 0x116489 + (uint)*pbVar12" (binary_expression "unaff_EDI + 0x116489" identifier + number_literal) + (binary_expression "(uint)*pbVar12" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ))))) )) (compound_statement "{\n            if (*zLeft != 0) {\n              iVar5 = 1;\n              do {\n                pbVar9 = zLeft + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar12[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }\n            goto LAB_000534a3;\n          }" { (if_statement "if (*zLeft != 0) {\n              iVar5 = 1;\n              do {\n                pbVar9 = zLeft + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar12[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }" if (parenthesized_expression "(*zLeft != 0)" ( (binary_expression "*zLeft != 0" (pointer_expression "*zLeft" * identifier) != number_literal) )) (compound_statement "{\n              iVar5 = 1;\n              do {\n                pbVar9 = zLeft + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar12[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }" { (expression_statement "iVar5 = 1;" (assignment_expression "iVar5 = 1" identifier = number_literal) ;) (do_statement "do {\n                pbVar9 = zLeft + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar12[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);" do (compound_statement "{\n                pbVar9 = zLeft + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar12[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              }" { (expression_statement "pbVar9 = zLeft + iVar5;" (assignment_expression "pbVar9 = zLeft + iVar5" identifier = (binary_expression "zLeft + iVar5" identifier + identifier)) ;) (if_statement "if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar12[iVar5])) goto LAB_0005341f;" if (parenthesized_expression "(*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar12[iVar5]))" ( (binary_expression "*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar12[iVar5])" (pointer_expression "*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9)" * (cast_expression "(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x116489 + (uint)*pbVar9)" ( (binary_expression "unaff_EDI + 0x116489 + (uint)*pbVar9" (binary_expression "unaff_EDI + 0x116489" identifier + number_literal) + (binary_expression "(uint)*pbVar9" (parenthesized_expression "(uint)" ( identifier )) * identifier)) )))) != (pointer_expression "*(char *)(unaff_EDI + 0x116489 + (uint)pbVar12[iVar5])" * (cast_expression "(char *)(unaff_EDI + 0x116489 + (uint)pbVar12[iVar5])" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x116489 + (uint)pbVar12[iVar5])" ( (binary_expression "unaff_EDI + 0x116489 + (uint)pbVar12[iVar5]" (binary_expression "unaff_EDI + 0x116489" identifier + number_literal) + (cast_expression "(uint)pbVar12[iVar5]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar12[iVar5]" identifier [ identifier ]))) ))))) )) (goto_statement "goto LAB_0005341f;" goto statement_identifier ;)) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*pbVar9 != 0)" ( (binary_expression "*pbVar9 != 0" (pointer_expression "*pbVar9" * identifier) != number_literal) )) ;) })) (goto_statement "goto LAB_000534a3;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_0005341f:\n        local_28 = local_28 + 1;" statement_identifier : (expression_statement "local_28 = local_28 + 1;" (assignment_expression "local_28 = local_28 + 1" identifier = (binary_expression "local_28 + 1" identifier + number_literal)) ;)) }) while (parenthesized_expression "(local_28 != uVar3)" ( (binary_expression "local_28 != uVar3" identifier != identifier) )) ;) })) (expression_statement "iVar5 = unaff_EDI + 0x116489;" (assignment_expression "iVar5 = unaff_EDI + 0x116489" identifier = (binary_expression "unaff_EDI + 0x116489" identifier + number_literal)) ;) (if_statement "if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) != 's') {\n      return (Table *)0x0;\n    }" if (parenthesized_expression "(*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) != 's')" ( (binary_expression "*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) != 's'" (pointer_expression "*(char *)(unaff_EDI + 0x116489 + (uint)*local_34)" * (cast_expression "(char *)(unaff_EDI + 0x116489 + (uint)*local_34)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x116489 + (uint)*local_34)" ( (binary_expression "unaff_EDI + 0x116489 + (uint)*local_34" (binary_expression "unaff_EDI + 0x116489" identifier + number_literal) + (binary_expression "(uint)*local_34" (parenthesized_expression "(uint)" ( identifier )) * identifier)) )))) != (char_literal "'s'" ' character ')) )) (compound_statement "{\n      return (Table *)0x0;\n    }" { (return_statement "return (Table *)0x0;" return (cast_expression "(Table *)0x0" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if (*local_34 != 0) {\n      if (*(char *)(iVar5 + (uint)local_34[1]) != 'q') {\n        return (Table *)0x0;\n      }\n      if (local_34[1] != 0) {\n        iVar6 = 2;\n        do {\n          pbVar12 = local_34 + iVar6;\n          if (*(char *)(iVar5 + (uint)*pbVar12) !=\n              *(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))) {\n            return (Table *)0x0;\n          }\n          iVar6 = iVar6 + 1;\n        } while (*pbVar12 != 0);\n      }\n    }" if (parenthesized_expression "(*local_34 != 0)" ( (binary_expression "*local_34 != 0" (pointer_expression "*local_34" * identifier) != number_literal) )) (compound_statement "{\n      if (*(char *)(iVar5 + (uint)local_34[1]) != 'q') {\n        return (Table *)0x0;\n      }\n      if (local_34[1] != 0) {\n        iVar6 = 2;\n        do {\n          pbVar12 = local_34 + iVar6;\n          if (*(char *)(iVar5 + (uint)*pbVar12) !=\n              *(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))) {\n            return (Table *)0x0;\n          }\n          iVar6 = iVar6 + 1;\n        } while (*pbVar12 != 0);\n      }\n    }" { (if_statement "if (*(char *)(iVar5 + (uint)local_34[1]) != 'q') {\n        return (Table *)0x0;\n      }" if (parenthesized_expression "(*(char *)(iVar5 + (uint)local_34[1]) != 'q')" ( (binary_expression "*(char *)(iVar5 + (uint)local_34[1]) != 'q'" (pointer_expression "*(char *)(iVar5 + (uint)local_34[1])" * (cast_expression "(char *)(iVar5 + (uint)local_34[1])" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + (uint)local_34[1])" ( (binary_expression "iVar5 + (uint)local_34[1]" identifier + (cast_expression "(uint)local_34[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "local_34[1]" identifier [ number_literal ]))) )))) != (char_literal "'q'" ' character ')) )) (compound_statement "{\n        return (Table *)0x0;\n      }" { (return_statement "return (Table *)0x0;" return (cast_expression "(Table *)0x0" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if (local_34[1] != 0) {\n        iVar6 = 2;\n        do {\n          pbVar12 = local_34 + iVar6;\n          if (*(char *)(iVar5 + (uint)*pbVar12) !=\n              *(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))) {\n            return (Table *)0x0;\n          }\n          iVar6 = iVar6 + 1;\n        } while (*pbVar12 != 0);\n      }" if (parenthesized_expression "(local_34[1] != 0)" ( (binary_expression "local_34[1] != 0" (subscript_expression "local_34[1]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n        iVar6 = 2;\n        do {\n          pbVar12 = local_34 + iVar6;\n          if (*(char *)(iVar5 + (uint)*pbVar12) !=\n              *(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))) {\n            return (Table *)0x0;\n          }\n          iVar6 = iVar6 + 1;\n        } while (*pbVar12 != 0);\n      }" { (expression_statement "iVar6 = 2;" (assignment_expression "iVar6 = 2" identifier = number_literal) ;) (do_statement "do {\n          pbVar12 = local_34 + iVar6;\n          if (*(char *)(iVar5 + (uint)*pbVar12) !=\n              *(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))) {\n            return (Table *)0x0;\n          }\n          iVar6 = iVar6 + 1;\n        } while (*pbVar12 != 0);" do (compound_statement "{\n          pbVar12 = local_34 + iVar6;\n          if (*(char *)(iVar5 + (uint)*pbVar12) !=\n              *(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))) {\n            return (Table *)0x0;\n          }\n          iVar6 = iVar6 + 1;\n        }" { (expression_statement "pbVar12 = local_34 + iVar6;" (assignment_expression "pbVar12 = local_34 + iVar6" identifier = (binary_expression "local_34 + iVar6" identifier + identifier)) ;) (if_statement "if (*(char *)(iVar5 + (uint)*pbVar12) !=\n              *(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))) {\n            return (Table *)0x0;\n          }" if (parenthesized_expression "(*(char *)(iVar5 + (uint)*pbVar12) !=\n              *(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015)))" ( (binary_expression "*(char *)(iVar5 + (uint)*pbVar12) !=\n              *(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))" (pointer_expression "*(char *)(iVar5 + (uint)*pbVar12)" * (cast_expression "(char *)(iVar5 + (uint)*pbVar12)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + (uint)*pbVar12)" ( (binary_expression "iVar5 + (uint)*pbVar12" identifier + (binary_expression "(uint)*pbVar12" (parenthesized_expression "(uint)" ( identifier )) * identifier)) )))) != (pointer_expression "*(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))" * (cast_expression "(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))" ( (binary_expression "iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015)" identifier + (binary_expression "(uint)*(byte *)(iVar6 + unaff_EDI + 0x107015)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar6 + unaff_EDI + 0x107015)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + unaff_EDI + 0x107015)" ( (binary_expression "iVar6 + unaff_EDI + 0x107015" (binary_expression "iVar6 + unaff_EDI" identifier + identifier) + number_literal) ))))) ))))) )) (compound_statement "{\n            return (Table *)0x0;\n          }" { (return_statement "return (Table *)0x0;" return (cast_expression "(Table *)0x0" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "iVar6 = iVar6 + 1;" (assignment_expression "iVar6 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*pbVar12 != 0)" ( (binary_expression "*pbVar12 != 0" (pointer_expression "*pbVar12" * identifier) != number_literal) )) ;) })) })) (expression_statement "zRight = *(char **)(*(int *)(iVar4 + 0x10) + 0x10);" (assignment_expression "zRight = *(char **)(*(int *)(iVar4 + 0x10) + 0x10)" identifier = (pointer_expression "*(char **)(*(int *)(iVar4 + 0x10) + 0x10)" * (cast_expression "(char **)(*(int *)(iVar4 + 0x10) + 0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(iVar4 + 0x10) + 0x10)" ( (binary_expression "*(int *)(iVar4 + 0x10) + 0x10" (pointer_expression "*(int *)(iVar4 + 0x10)" * (cast_expression "(int *)(iVar4 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x10)" ( (binary_expression "iVar4 + 0x10" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (zLeft != (byte *)0x0) {\n      if (zRight == (char *)0x0) {\n        return (Table *)0x0;\n      }\n      zRight = (char *)sqlite3_stricmp((char *)zLeft,zRight);\n    }" if (parenthesized_expression "(zLeft != (byte *)0x0)" ( (binary_expression "zLeft != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if (zRight == (char *)0x0) {\n        return (Table *)0x0;\n      }\n      zRight = (char *)sqlite3_stricmp((char *)zLeft,zRight);\n    }" { (if_statement "if (zRight == (char *)0x0) {\n        return (Table *)0x0;\n      }" if (parenthesized_expression "(zRight == (char *)0x0)" ( (binary_expression "zRight == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        return (Table *)0x0;\n      }" { (return_statement "return (Table *)0x0;" return (cast_expression "(Table *)0x0" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "zRight = (char *)sqlite3_stricmp((char *)zLeft,zRight);" (assignment_expression "zRight = (char *)sqlite3_stricmp((char *)zLeft,zRight)" identifier = (cast_expression "(char *)sqlite3_stricmp((char *)zLeft,zRight)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3_stricmp((char *)zLeft,zRight)" identifier (argument_list "((char *)zLeft,zRight)" ( (cast_expression "(char *)zLeft" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))))) ;) })) (if_statement "if (zRight != (char *)0x0) {\n      return (Table *)0x0;\n    }" if (parenthesized_expression "(zRight != (char *)0x0)" ( (binary_expression "zRight != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return (Table *)0x0;\n    }" { (return_statement "return (Table *)0x0;" return (cast_expression "(Table *)0x0" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "local_34 = (byte *)(unaff_EDI + 0x10733b);" (assignment_expression "local_34 = (byte *)(unaff_EDI + 0x10733b)" identifier = (cast_expression "(byte *)(unaff_EDI + 0x10733b)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x10733b)" ( (binary_expression "unaff_EDI + 0x10733b" identifier + number_literal) )))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "int FUN_00053350(void)\n\n{\n  int *piVar1;\n  byte bVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  byte *extraout_ECX;\n  uint uVar8;\n  byte *pbVar9;\n  int unaff_EDI;\n  undefined4 *puVar10;\n  byte *pbVar11;\n  undefined8 uVar12;\n  byte *local_34;\n  int local_2c;\n  uint local_28;\n  \n  uVar12 = FUN_0003a401();\n  local_34 = (byte *)((ulonglong)uVar12 >> 0x20);\n  iVar4 = (int)uVar12;\n  uVar3 = *(uint *)(iVar4 + 0x14);\n  do {\n    if (0 < (int)uVar3) {\n      local_28 = 0;\n      do {\n        uVar7 = local_28 ^ 1;\n        if (1 < (int)local_28) {\n          uVar7 = local_28;\n        }\n        puVar10 = (undefined4 *)(uVar7 * 0x10 + *(int *)(iVar4 + 0x10));\n        if (extraout_ECX == (byte *)0x0) {\nLAB_000534a3:\n          iVar5 = puVar10[3];\n          if (*(int *)(iVar5 + 0x14) == 0) {\n            puVar10 = *(undefined4 **)(iVar5 + 0x10);\n            local_2c = *(int *)(iVar5 + 0xc);\n          }\n          else {\n            bVar2 = *local_34;\n            uVar7 = 0;\n            if (bVar2 != 0) {\n              pbVar11 = local_34;\n              do {\n                pbVar11 = pbVar11 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar11;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }\n            piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);\n            puVar10 = (undefined4 *)piVar1[1];\n            local_2c = *piVar1;\n          }\n          if (local_2c != 0) {\n            iVar5 = unaff_EDI + 0x116489;\n            do {\n              pbVar11 = (byte *)puVar10[3];\n              bVar2 = *pbVar11;\n              pbVar9 = local_34;\n              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar11;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }\n              local_2c = local_2c + -1;\n              puVar10 = (undefined4 *)*puVar10;\n            } while (local_2c != 0);\n          }\n          puVar10 = (undefined4 *)(&UNK_001697a9 + unaff_EDI);\nLAB_00053578:\n          if (puVar10[2] != 0) {\n            return puVar10[2];\n          }\n        }\n        else {\n          pbVar11 = (byte *)*puVar10;\n          if (*(char *)(unaff_EDI + 0x116489 + (uint)*extraout_ECX) ==\n              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar11)) {\n            if (*extraout_ECX != 0) {\n              iVar5 = 1;\n              do {\n                pbVar9 = extraout_ECX + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }\n            goto LAB_000534a3;\n          }\n        }\nLAB_0005341f:\n        local_28 = local_28 + 1;\n      } while (local_28 != uVar3);\n    }\n    iVar5 = unaff_EDI + 0x116489;\n    if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) != 's') {\n      return 0;\n    }\n    if (*local_34 != 0) {\n      if (*(char *)(iVar5 + (uint)local_34[1]) != 'q') {\n        return 0;\n      }\n      if (local_34[1] != 0) {\n        iVar6 = 2;\n        do {\n          pbVar11 = local_34 + iVar6;\n          if (*(char *)(iVar5 + (uint)*pbVar11) !=\n              *(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))) {\n            return 0;\n          }\n          iVar6 = iVar6 + 1;\n        } while (*pbVar11 != 0);\n      }\n    }\n    iVar5 = *(int *)(*(int *)(iVar4 + 0x10) + 0x10);\n    if (extraout_ECX != (byte *)0x0) {\n      if (iVar5 == 0) {\n        return 0;\n      }\n      iVar5 = FUN_000446c0();\n    }\n    if (iVar5 != 0) {\n      return 0;\n    }\n    local_34 = (byte *)(unaff_EDI + 0x10733b);\n  } while( true );\n}\n\n" (function_definition "int FUN_00053350(void)\n\n{\n  int *piVar1;\n  byte bVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  byte *extraout_ECX;\n  uint uVar8;\n  byte *pbVar9;\n  int unaff_EDI;\n  undefined4 *puVar10;\n  byte *pbVar11;\n  undefined8 uVar12;\n  byte *local_34;\n  int local_2c;\n  uint local_28;\n  \n  uVar12 = FUN_0003a401();\n  local_34 = (byte *)((ulonglong)uVar12 >> 0x20);\n  iVar4 = (int)uVar12;\n  uVar3 = *(uint *)(iVar4 + 0x14);\n  do {\n    if (0 < (int)uVar3) {\n      local_28 = 0;\n      do {\n        uVar7 = local_28 ^ 1;\n        if (1 < (int)local_28) {\n          uVar7 = local_28;\n        }\n        puVar10 = (undefined4 *)(uVar7 * 0x10 + *(int *)(iVar4 + 0x10));\n        if (extraout_ECX == (byte *)0x0) {\nLAB_000534a3:\n          iVar5 = puVar10[3];\n          if (*(int *)(iVar5 + 0x14) == 0) {\n            puVar10 = *(undefined4 **)(iVar5 + 0x10);\n            local_2c = *(int *)(iVar5 + 0xc);\n          }\n          else {\n            bVar2 = *local_34;\n            uVar7 = 0;\n            if (bVar2 != 0) {\n              pbVar11 = local_34;\n              do {\n                pbVar11 = pbVar11 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar11;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }\n            piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);\n            puVar10 = (undefined4 *)piVar1[1];\n            local_2c = *piVar1;\n          }\n          if (local_2c != 0) {\n            iVar5 = unaff_EDI + 0x116489;\n            do {\n              pbVar11 = (byte *)puVar10[3];\n              bVar2 = *pbVar11;\n              pbVar9 = local_34;\n              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar11;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }\n              local_2c = local_2c + -1;\n              puVar10 = (undefined4 *)*puVar10;\n            } while (local_2c != 0);\n          }\n          puVar10 = (undefined4 *)(&UNK_001697a9 + unaff_EDI);\nLAB_00053578:\n          if (puVar10[2] != 0) {\n            return puVar10[2];\n          }\n        }\n        else {\n          pbVar11 = (byte *)*puVar10;\n          if (*(char *)(unaff_EDI + 0x116489 + (uint)*extraout_ECX) ==\n              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar11)) {\n            if (*extraout_ECX != 0) {\n              iVar5 = 1;\n              do {\n                pbVar9 = extraout_ECX + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }\n            goto LAB_000534a3;\n          }\n        }\nLAB_0005341f:\n        local_28 = local_28 + 1;\n      } while (local_28 != uVar3);\n    }\n    iVar5 = unaff_EDI + 0x116489;\n    if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) != 's') {\n      return 0;\n    }\n    if (*local_34 != 0) {\n      if (*(char *)(iVar5 + (uint)local_34[1]) != 'q') {\n        return 0;\n      }\n      if (local_34[1] != 0) {\n        iVar6 = 2;\n        do {\n          pbVar11 = local_34 + iVar6;\n          if (*(char *)(iVar5 + (uint)*pbVar11) !=\n              *(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))) {\n            return 0;\n          }\n          iVar6 = iVar6 + 1;\n        } while (*pbVar11 != 0);\n      }\n    }\n    iVar5 = *(int *)(*(int *)(iVar4 + 0x10) + 0x10);\n    if (extraout_ECX != (byte *)0x0) {\n      if (iVar5 == 0) {\n        return 0;\n      }\n      iVar5 = FUN_000446c0();\n    }\n    if (iVar5 != 0) {\n      return 0;\n    }\n    local_34 = (byte *)(unaff_EDI + 0x10733b);\n  } while( true );\n}" primitive_type (function_declarator "FUN_00053350(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  int *piVar1;\n  byte bVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  byte *extraout_ECX;\n  uint uVar8;\n  byte *pbVar9;\n  int unaff_EDI;\n  undefined4 *puVar10;\n  byte *pbVar11;\n  undefined8 uVar12;\n  byte *local_34;\n  int local_2c;\n  uint local_28;\n  \n  uVar12 = FUN_0003a401();\n  local_34 = (byte *)((ulonglong)uVar12 >> 0x20);\n  iVar4 = (int)uVar12;\n  uVar3 = *(uint *)(iVar4 + 0x14);\n  do {\n    if (0 < (int)uVar3) {\n      local_28 = 0;\n      do {\n        uVar7 = local_28 ^ 1;\n        if (1 < (int)local_28) {\n          uVar7 = local_28;\n        }\n        puVar10 = (undefined4 *)(uVar7 * 0x10 + *(int *)(iVar4 + 0x10));\n        if (extraout_ECX == (byte *)0x0) {\nLAB_000534a3:\n          iVar5 = puVar10[3];\n          if (*(int *)(iVar5 + 0x14) == 0) {\n            puVar10 = *(undefined4 **)(iVar5 + 0x10);\n            local_2c = *(int *)(iVar5 + 0xc);\n          }\n          else {\n            bVar2 = *local_34;\n            uVar7 = 0;\n            if (bVar2 != 0) {\n              pbVar11 = local_34;\n              do {\n                pbVar11 = pbVar11 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar11;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }\n            piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);\n            puVar10 = (undefined4 *)piVar1[1];\n            local_2c = *piVar1;\n          }\n          if (local_2c != 0) {\n            iVar5 = unaff_EDI + 0x116489;\n            do {\n              pbVar11 = (byte *)puVar10[3];\n              bVar2 = *pbVar11;\n              pbVar9 = local_34;\n              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar11;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }\n              local_2c = local_2c + -1;\n              puVar10 = (undefined4 *)*puVar10;\n            } while (local_2c != 0);\n          }\n          puVar10 = (undefined4 *)(&UNK_001697a9 + unaff_EDI);\nLAB_00053578:\n          if (puVar10[2] != 0) {\n            return puVar10[2];\n          }\n        }\n        else {\n          pbVar11 = (byte *)*puVar10;\n          if (*(char *)(unaff_EDI + 0x116489 + (uint)*extraout_ECX) ==\n              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar11)) {\n            if (*extraout_ECX != 0) {\n              iVar5 = 1;\n              do {\n                pbVar9 = extraout_ECX + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }\n            goto LAB_000534a3;\n          }\n        }\nLAB_0005341f:\n        local_28 = local_28 + 1;\n      } while (local_28 != uVar3);\n    }\n    iVar5 = unaff_EDI + 0x116489;\n    if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) != 's') {\n      return 0;\n    }\n    if (*local_34 != 0) {\n      if (*(char *)(iVar5 + (uint)local_34[1]) != 'q') {\n        return 0;\n      }\n      if (local_34[1] != 0) {\n        iVar6 = 2;\n        do {\n          pbVar11 = local_34 + iVar6;\n          if (*(char *)(iVar5 + (uint)*pbVar11) !=\n              *(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))) {\n            return 0;\n          }\n          iVar6 = iVar6 + 1;\n        } while (*pbVar11 != 0);\n      }\n    }\n    iVar5 = *(int *)(*(int *)(iVar4 + 0x10) + 0x10);\n    if (extraout_ECX != (byte *)0x0) {\n      if (iVar5 == 0) {\n        return 0;\n      }\n      iVar5 = FUN_000446c0();\n    }\n    if (iVar5 != 0) {\n      return 0;\n    }\n    local_34 = (byte *)(unaff_EDI + 0x10733b);\n  } while( true );\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "byte *extraout_ECX;" type_identifier (pointer_declarator "*extraout_ECX" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "undefined4 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "undefined8 uVar12;" type_identifier identifier ;) (declaration "byte *local_34;" type_identifier (pointer_declarator "*local_34" * identifier) ;) (declaration "int local_2c;" primitive_type identifier ;) (declaration "uint local_28;" type_identifier identifier ;) (expression_statement "uVar12 = FUN_0003a401();" (assignment_expression "uVar12 = FUN_0003a401()" identifier = (call_expression "FUN_0003a401()" identifier (argument_list "()" ( )))) ;) (expression_statement "local_34 = (byte *)((ulonglong)uVar12 >> 0x20);" (assignment_expression "local_34 = (byte *)((ulonglong)uVar12 >> 0x20)" identifier = (cast_expression "(byte *)((ulonglong)uVar12 >> 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar12 >> 0x20)" ( (binary_expression "(ulonglong)uVar12 >> 0x20" (cast_expression "(ulonglong)uVar12" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "iVar4 = (int)uVar12;" (assignment_expression "iVar4 = (int)uVar12" identifier = (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "uVar3 = *(uint *)(iVar4 + 0x14);" (assignment_expression "uVar3 = *(uint *)(iVar4 + 0x14)" identifier = (pointer_expression "*(uint *)(iVar4 + 0x14)" * (cast_expression "(uint *)(iVar4 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x14)" ( (binary_expression "iVar4 + 0x14" identifier + number_literal) ))))) ;) (do_statement "do {\n    if (0 < (int)uVar3) {\n      local_28 = 0;\n      do {\n        uVar7 = local_28 ^ 1;\n        if (1 < (int)local_28) {\n          uVar7 = local_28;\n        }\n        puVar10 = (undefined4 *)(uVar7 * 0x10 + *(int *)(iVar4 + 0x10));\n        if (extraout_ECX == (byte *)0x0) {\nLAB_000534a3:\n          iVar5 = puVar10[3];\n          if (*(int *)(iVar5 + 0x14) == 0) {\n            puVar10 = *(undefined4 **)(iVar5 + 0x10);\n            local_2c = *(int *)(iVar5 + 0xc);\n          }\n          else {\n            bVar2 = *local_34;\n            uVar7 = 0;\n            if (bVar2 != 0) {\n              pbVar11 = local_34;\n              do {\n                pbVar11 = pbVar11 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar11;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }\n            piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);\n            puVar10 = (undefined4 *)piVar1[1];\n            local_2c = *piVar1;\n          }\n          if (local_2c != 0) {\n            iVar5 = unaff_EDI + 0x116489;\n            do {\n              pbVar11 = (byte *)puVar10[3];\n              bVar2 = *pbVar11;\n              pbVar9 = local_34;\n              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar11;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }\n              local_2c = local_2c + -1;\n              puVar10 = (undefined4 *)*puVar10;\n            } while (local_2c != 0);\n          }\n          puVar10 = (undefined4 *)(&UNK_001697a9 + unaff_EDI);\nLAB_00053578:\n          if (puVar10[2] != 0) {\n            return puVar10[2];\n          }\n        }\n        else {\n          pbVar11 = (byte *)*puVar10;\n          if (*(char *)(unaff_EDI + 0x116489 + (uint)*extraout_ECX) ==\n              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar11)) {\n            if (*extraout_ECX != 0) {\n              iVar5 = 1;\n              do {\n                pbVar9 = extraout_ECX + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }\n            goto LAB_000534a3;\n          }\n        }\nLAB_0005341f:\n        local_28 = local_28 + 1;\n      } while (local_28 != uVar3);\n    }\n    iVar5 = unaff_EDI + 0x116489;\n    if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) != 's') {\n      return 0;\n    }\n    if (*local_34 != 0) {\n      if (*(char *)(iVar5 + (uint)local_34[1]) != 'q') {\n        return 0;\n      }\n      if (local_34[1] != 0) {\n        iVar6 = 2;\n        do {\n          pbVar11 = local_34 + iVar6;\n          if (*(char *)(iVar5 + (uint)*pbVar11) !=\n              *(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))) {\n            return 0;\n          }\n          iVar6 = iVar6 + 1;\n        } while (*pbVar11 != 0);\n      }\n    }\n    iVar5 = *(int *)(*(int *)(iVar4 + 0x10) + 0x10);\n    if (extraout_ECX != (byte *)0x0) {\n      if (iVar5 == 0) {\n        return 0;\n      }\n      iVar5 = FUN_000446c0();\n    }\n    if (iVar5 != 0) {\n      return 0;\n    }\n    local_34 = (byte *)(unaff_EDI + 0x10733b);\n  } while( true );" do (compound_statement "{\n    if (0 < (int)uVar3) {\n      local_28 = 0;\n      do {\n        uVar7 = local_28 ^ 1;\n        if (1 < (int)local_28) {\n          uVar7 = local_28;\n        }\n        puVar10 = (undefined4 *)(uVar7 * 0x10 + *(int *)(iVar4 + 0x10));\n        if (extraout_ECX == (byte *)0x0) {\nLAB_000534a3:\n          iVar5 = puVar10[3];\n          if (*(int *)(iVar5 + 0x14) == 0) {\n            puVar10 = *(undefined4 **)(iVar5 + 0x10);\n            local_2c = *(int *)(iVar5 + 0xc);\n          }\n          else {\n            bVar2 = *local_34;\n            uVar7 = 0;\n            if (bVar2 != 0) {\n              pbVar11 = local_34;\n              do {\n                pbVar11 = pbVar11 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar11;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }\n            piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);\n            puVar10 = (undefined4 *)piVar1[1];\n            local_2c = *piVar1;\n          }\n          if (local_2c != 0) {\n            iVar5 = unaff_EDI + 0x116489;\n            do {\n              pbVar11 = (byte *)puVar10[3];\n              bVar2 = *pbVar11;\n              pbVar9 = local_34;\n              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar11;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }\n              local_2c = local_2c + -1;\n              puVar10 = (undefined4 *)*puVar10;\n            } while (local_2c != 0);\n          }\n          puVar10 = (undefined4 *)(&UNK_001697a9 + unaff_EDI);\nLAB_00053578:\n          if (puVar10[2] != 0) {\n            return puVar10[2];\n          }\n        }\n        else {\n          pbVar11 = (byte *)*puVar10;\n          if (*(char *)(unaff_EDI + 0x116489 + (uint)*extraout_ECX) ==\n              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar11)) {\n            if (*extraout_ECX != 0) {\n              iVar5 = 1;\n              do {\n                pbVar9 = extraout_ECX + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }\n            goto LAB_000534a3;\n          }\n        }\nLAB_0005341f:\n        local_28 = local_28 + 1;\n      } while (local_28 != uVar3);\n    }\n    iVar5 = unaff_EDI + 0x116489;\n    if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) != 's') {\n      return 0;\n    }\n    if (*local_34 != 0) {\n      if (*(char *)(iVar5 + (uint)local_34[1]) != 'q') {\n        return 0;\n      }\n      if (local_34[1] != 0) {\n        iVar6 = 2;\n        do {\n          pbVar11 = local_34 + iVar6;\n          if (*(char *)(iVar5 + (uint)*pbVar11) !=\n              *(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))) {\n            return 0;\n          }\n          iVar6 = iVar6 + 1;\n        } while (*pbVar11 != 0);\n      }\n    }\n    iVar5 = *(int *)(*(int *)(iVar4 + 0x10) + 0x10);\n    if (extraout_ECX != (byte *)0x0) {\n      if (iVar5 == 0) {\n        return 0;\n      }\n      iVar5 = FUN_000446c0();\n    }\n    if (iVar5 != 0) {\n      return 0;\n    }\n    local_34 = (byte *)(unaff_EDI + 0x10733b);\n  }" { (if_statement "if (0 < (int)uVar3) {\n      local_28 = 0;\n      do {\n        uVar7 = local_28 ^ 1;\n        if (1 < (int)local_28) {\n          uVar7 = local_28;\n        }\n        puVar10 = (undefined4 *)(uVar7 * 0x10 + *(int *)(iVar4 + 0x10));\n        if (extraout_ECX == (byte *)0x0) {\nLAB_000534a3:\n          iVar5 = puVar10[3];\n          if (*(int *)(iVar5 + 0x14) == 0) {\n            puVar10 = *(undefined4 **)(iVar5 + 0x10);\n            local_2c = *(int *)(iVar5 + 0xc);\n          }\n          else {\n            bVar2 = *local_34;\n            uVar7 = 0;\n            if (bVar2 != 0) {\n              pbVar11 = local_34;\n              do {\n                pbVar11 = pbVar11 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar11;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }\n            piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);\n            puVar10 = (undefined4 *)piVar1[1];\n            local_2c = *piVar1;\n          }\n          if (local_2c != 0) {\n            iVar5 = unaff_EDI + 0x116489;\n            do {\n              pbVar11 = (byte *)puVar10[3];\n              bVar2 = *pbVar11;\n              pbVar9 = local_34;\n              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar11;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }\n              local_2c = local_2c + -1;\n              puVar10 = (undefined4 *)*puVar10;\n            } while (local_2c != 0);\n          }\n          puVar10 = (undefined4 *)(&UNK_001697a9 + unaff_EDI);\nLAB_00053578:\n          if (puVar10[2] != 0) {\n            return puVar10[2];\n          }\n        }\n        else {\n          pbVar11 = (byte *)*puVar10;\n          if (*(char *)(unaff_EDI + 0x116489 + (uint)*extraout_ECX) ==\n              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar11)) {\n            if (*extraout_ECX != 0) {\n              iVar5 = 1;\n              do {\n                pbVar9 = extraout_ECX + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }\n            goto LAB_000534a3;\n          }\n        }\nLAB_0005341f:\n        local_28 = local_28 + 1;\n      } while (local_28 != uVar3);\n    }" if (parenthesized_expression "(0 < (int)uVar3)" ( (binary_expression "0 < (int)uVar3" number_literal < (cast_expression "(int)uVar3" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      local_28 = 0;\n      do {\n        uVar7 = local_28 ^ 1;\n        if (1 < (int)local_28) {\n          uVar7 = local_28;\n        }\n        puVar10 = (undefined4 *)(uVar7 * 0x10 + *(int *)(iVar4 + 0x10));\n        if (extraout_ECX == (byte *)0x0) {\nLAB_000534a3:\n          iVar5 = puVar10[3];\n          if (*(int *)(iVar5 + 0x14) == 0) {\n            puVar10 = *(undefined4 **)(iVar5 + 0x10);\n            local_2c = *(int *)(iVar5 + 0xc);\n          }\n          else {\n            bVar2 = *local_34;\n            uVar7 = 0;\n            if (bVar2 != 0) {\n              pbVar11 = local_34;\n              do {\n                pbVar11 = pbVar11 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar11;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }\n            piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);\n            puVar10 = (undefined4 *)piVar1[1];\n            local_2c = *piVar1;\n          }\n          if (local_2c != 0) {\n            iVar5 = unaff_EDI + 0x116489;\n            do {\n              pbVar11 = (byte *)puVar10[3];\n              bVar2 = *pbVar11;\n              pbVar9 = local_34;\n              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar11;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }\n              local_2c = local_2c + -1;\n              puVar10 = (undefined4 *)*puVar10;\n            } while (local_2c != 0);\n          }\n          puVar10 = (undefined4 *)(&UNK_001697a9 + unaff_EDI);\nLAB_00053578:\n          if (puVar10[2] != 0) {\n            return puVar10[2];\n          }\n        }\n        else {\n          pbVar11 = (byte *)*puVar10;\n          if (*(char *)(unaff_EDI + 0x116489 + (uint)*extraout_ECX) ==\n              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar11)) {\n            if (*extraout_ECX != 0) {\n              iVar5 = 1;\n              do {\n                pbVar9 = extraout_ECX + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }\n            goto LAB_000534a3;\n          }\n        }\nLAB_0005341f:\n        local_28 = local_28 + 1;\n      } while (local_28 != uVar3);\n    }" { (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" identifier = number_literal) ;) (do_statement "do {\n        uVar7 = local_28 ^ 1;\n        if (1 < (int)local_28) {\n          uVar7 = local_28;\n        }\n        puVar10 = (undefined4 *)(uVar7 * 0x10 + *(int *)(iVar4 + 0x10));\n        if (extraout_ECX == (byte *)0x0) {\nLAB_000534a3:\n          iVar5 = puVar10[3];\n          if (*(int *)(iVar5 + 0x14) == 0) {\n            puVar10 = *(undefined4 **)(iVar5 + 0x10);\n            local_2c = *(int *)(iVar5 + 0xc);\n          }\n          else {\n            bVar2 = *local_34;\n            uVar7 = 0;\n            if (bVar2 != 0) {\n              pbVar11 = local_34;\n              do {\n                pbVar11 = pbVar11 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar11;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }\n            piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);\n            puVar10 = (undefined4 *)piVar1[1];\n            local_2c = *piVar1;\n          }\n          if (local_2c != 0) {\n            iVar5 = unaff_EDI + 0x116489;\n            do {\n              pbVar11 = (byte *)puVar10[3];\n              bVar2 = *pbVar11;\n              pbVar9 = local_34;\n              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar11;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }\n              local_2c = local_2c + -1;\n              puVar10 = (undefined4 *)*puVar10;\n            } while (local_2c != 0);\n          }\n          puVar10 = (undefined4 *)(&UNK_001697a9 + unaff_EDI);\nLAB_00053578:\n          if (puVar10[2] != 0) {\n            return puVar10[2];\n          }\n        }\n        else {\n          pbVar11 = (byte *)*puVar10;\n          if (*(char *)(unaff_EDI + 0x116489 + (uint)*extraout_ECX) ==\n              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar11)) {\n            if (*extraout_ECX != 0) {\n              iVar5 = 1;\n              do {\n                pbVar9 = extraout_ECX + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }\n            goto LAB_000534a3;\n          }\n        }\nLAB_0005341f:\n        local_28 = local_28 + 1;\n      } while (local_28 != uVar3);" do (compound_statement "{\n        uVar7 = local_28 ^ 1;\n        if (1 < (int)local_28) {\n          uVar7 = local_28;\n        }\n        puVar10 = (undefined4 *)(uVar7 * 0x10 + *(int *)(iVar4 + 0x10));\n        if (extraout_ECX == (byte *)0x0) {\nLAB_000534a3:\n          iVar5 = puVar10[3];\n          if (*(int *)(iVar5 + 0x14) == 0) {\n            puVar10 = *(undefined4 **)(iVar5 + 0x10);\n            local_2c = *(int *)(iVar5 + 0xc);\n          }\n          else {\n            bVar2 = *local_34;\n            uVar7 = 0;\n            if (bVar2 != 0) {\n              pbVar11 = local_34;\n              do {\n                pbVar11 = pbVar11 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar11;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }\n            piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);\n            puVar10 = (undefined4 *)piVar1[1];\n            local_2c = *piVar1;\n          }\n          if (local_2c != 0) {\n            iVar5 = unaff_EDI + 0x116489;\n            do {\n              pbVar11 = (byte *)puVar10[3];\n              bVar2 = *pbVar11;\n              pbVar9 = local_34;\n              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar11;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }\n              local_2c = local_2c + -1;\n              puVar10 = (undefined4 *)*puVar10;\n            } while (local_2c != 0);\n          }\n          puVar10 = (undefined4 *)(&UNK_001697a9 + unaff_EDI);\nLAB_00053578:\n          if (puVar10[2] != 0) {\n            return puVar10[2];\n          }\n        }\n        else {\n          pbVar11 = (byte *)*puVar10;\n          if (*(char *)(unaff_EDI + 0x116489 + (uint)*extraout_ECX) ==\n              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar11)) {\n            if (*extraout_ECX != 0) {\n              iVar5 = 1;\n              do {\n                pbVar9 = extraout_ECX + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }\n            goto LAB_000534a3;\n          }\n        }\nLAB_0005341f:\n        local_28 = local_28 + 1;\n      }" { (expression_statement "uVar7 = local_28 ^ 1;" (assignment_expression "uVar7 = local_28 ^ 1" identifier = (binary_expression "local_28 ^ 1" identifier ^ number_literal)) ;) (if_statement "if (1 < (int)local_28) {\n          uVar7 = local_28;\n        }" if (parenthesized_expression "(1 < (int)local_28)" ( (binary_expression "1 < (int)local_28" number_literal < (cast_expression "(int)local_28" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          uVar7 = local_28;\n        }" { (expression_statement "uVar7 = local_28;" (assignment_expression "uVar7 = local_28" identifier = identifier) ;) })) (expression_statement "puVar10 = (undefined4 *)(uVar7 * 0x10 + *(int *)(iVar4 + 0x10));" (assignment_expression "puVar10 = (undefined4 *)(uVar7 * 0x10 + *(int *)(iVar4 + 0x10))" identifier = (cast_expression "(undefined4 *)(uVar7 * 0x10 + *(int *)(iVar4 + 0x10))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar7 * 0x10 + *(int *)(iVar4 + 0x10))" ( (binary_expression "uVar7 * 0x10 + *(int *)(iVar4 + 0x10)" (binary_expression "uVar7 * 0x10" identifier * number_literal) + (pointer_expression "*(int *)(iVar4 + 0x10)" * (cast_expression "(int *)(iVar4 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x10)" ( (binary_expression "iVar4 + 0x10" identifier + number_literal) ))))) )))) ;) (if_statement "if (extraout_ECX == (byte *)0x0) {\nLAB_000534a3:\n          iVar5 = puVar10[3];\n          if (*(int *)(iVar5 + 0x14) == 0) {\n            puVar10 = *(undefined4 **)(iVar5 + 0x10);\n            local_2c = *(int *)(iVar5 + 0xc);\n          }\n          else {\n            bVar2 = *local_34;\n            uVar7 = 0;\n            if (bVar2 != 0) {\n              pbVar11 = local_34;\n              do {\n                pbVar11 = pbVar11 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar11;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }\n            piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);\n            puVar10 = (undefined4 *)piVar1[1];\n            local_2c = *piVar1;\n          }\n          if (local_2c != 0) {\n            iVar5 = unaff_EDI + 0x116489;\n            do {\n              pbVar11 = (byte *)puVar10[3];\n              bVar2 = *pbVar11;\n              pbVar9 = local_34;\n              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar11;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }\n              local_2c = local_2c + -1;\n              puVar10 = (undefined4 *)*puVar10;\n            } while (local_2c != 0);\n          }\n          puVar10 = (undefined4 *)(&UNK_001697a9 + unaff_EDI);\nLAB_00053578:\n          if (puVar10[2] != 0) {\n            return puVar10[2];\n          }\n        }\n        else {\n          pbVar11 = (byte *)*puVar10;\n          if (*(char *)(unaff_EDI + 0x116489 + (uint)*extraout_ECX) ==\n              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar11)) {\n            if (*extraout_ECX != 0) {\n              iVar5 = 1;\n              do {\n                pbVar9 = extraout_ECX + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }\n            goto LAB_000534a3;\n          }\n        }" if (parenthesized_expression "(extraout_ECX == (byte *)0x0)" ( (binary_expression "extraout_ECX == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_000534a3:\n          iVar5 = puVar10[3];\n          if (*(int *)(iVar5 + 0x14) == 0) {\n            puVar10 = *(undefined4 **)(iVar5 + 0x10);\n            local_2c = *(int *)(iVar5 + 0xc);\n          }\n          else {\n            bVar2 = *local_34;\n            uVar7 = 0;\n            if (bVar2 != 0) {\n              pbVar11 = local_34;\n              do {\n                pbVar11 = pbVar11 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar11;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }\n            piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);\n            puVar10 = (undefined4 *)piVar1[1];\n            local_2c = *piVar1;\n          }\n          if (local_2c != 0) {\n            iVar5 = unaff_EDI + 0x116489;\n            do {\n              pbVar11 = (byte *)puVar10[3];\n              bVar2 = *pbVar11;\n              pbVar9 = local_34;\n              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar11;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }\n              local_2c = local_2c + -1;\n              puVar10 = (undefined4 *)*puVar10;\n            } while (local_2c != 0);\n          }\n          puVar10 = (undefined4 *)(&UNK_001697a9 + unaff_EDI);\nLAB_00053578:\n          if (puVar10[2] != 0) {\n            return puVar10[2];\n          }\n        }" { (labeled_statement "LAB_000534a3:\n          iVar5 = puVar10[3];" statement_identifier : (expression_statement "iVar5 = puVar10[3];" (assignment_expression "iVar5 = puVar10[3]" identifier = (subscript_expression "puVar10[3]" identifier [ number_literal ])) ;)) (if_statement "if (*(int *)(iVar5 + 0x14) == 0) {\n            puVar10 = *(undefined4 **)(iVar5 + 0x10);\n            local_2c = *(int *)(iVar5 + 0xc);\n          }\n          else {\n            bVar2 = *local_34;\n            uVar7 = 0;\n            if (bVar2 != 0) {\n              pbVar11 = local_34;\n              do {\n                pbVar11 = pbVar11 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar11;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }\n            piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);\n            puVar10 = (undefined4 *)piVar1[1];\n            local_2c = *piVar1;\n          }" if (parenthesized_expression "(*(int *)(iVar5 + 0x14) == 0)" ( (binary_expression "*(int *)(iVar5 + 0x14) == 0" (pointer_expression "*(int *)(iVar5 + 0x14)" * (cast_expression "(int *)(iVar5 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x14)" ( (binary_expression "iVar5 + 0x14" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n            puVar10 = *(undefined4 **)(iVar5 + 0x10);\n            local_2c = *(int *)(iVar5 + 0xc);\n          }" { (expression_statement "puVar10 = *(undefined4 **)(iVar5 + 0x10);" (assignment_expression "puVar10 = *(undefined4 **)(iVar5 + 0x10)" identifier = (pointer_expression "*(undefined4 **)(iVar5 + 0x10)" * (cast_expression "(undefined4 **)(iVar5 + 0x10)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 0x10)" ( (binary_expression "iVar5 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "local_2c = *(int *)(iVar5 + 0xc);" (assignment_expression "local_2c = *(int *)(iVar5 + 0xc)" identifier = (pointer_expression "*(int *)(iVar5 + 0xc)" * (cast_expression "(int *)(iVar5 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0xc)" ( (binary_expression "iVar5 + 0xc" identifier + number_literal) ))))) ;) }) (else_clause "else {\n            bVar2 = *local_34;\n            uVar7 = 0;\n            if (bVar2 != 0) {\n              pbVar11 = local_34;\n              do {\n                pbVar11 = pbVar11 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar11;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }\n            piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);\n            puVar10 = (undefined4 *)piVar1[1];\n            local_2c = *piVar1;\n          }" else (compound_statement "{\n            bVar2 = *local_34;\n            uVar7 = 0;\n            if (bVar2 != 0) {\n              pbVar11 = local_34;\n              do {\n                pbVar11 = pbVar11 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar11;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }\n            piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);\n            puVar10 = (undefined4 *)piVar1[1];\n            local_2c = *piVar1;\n          }" { (expression_statement "bVar2 = *local_34;" (assignment_expression "bVar2 = *local_34" identifier = (pointer_expression "*local_34" * identifier)) ;) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (if_statement "if (bVar2 != 0) {\n              pbVar11 = local_34;\n              do {\n                pbVar11 = pbVar11 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar11;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }" if (parenthesized_expression "(bVar2 != 0)" ( (binary_expression "bVar2 != 0" identifier != number_literal) )) (compound_statement "{\n              pbVar11 = local_34;\n              do {\n                pbVar11 = pbVar11 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar11;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }" { (expression_statement "pbVar11 = local_34;" (assignment_expression "pbVar11 = local_34" identifier = identifier) ;) (do_statement "do {\n                pbVar11 = pbVar11 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar11;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);" do (compound_statement "{\n                pbVar11 = pbVar11 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar11;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              }" { (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" identifier = (binary_expression "pbVar11 + 1" identifier + number_literal)) ;) (expression_statement "uVar8 = (uint)bVar2;" (assignment_expression "uVar8 = (uint)bVar2" identifier = (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "bVar2 = *pbVar11;" (assignment_expression "bVar2 = *pbVar11" identifier = (pointer_expression "*pbVar11" * identifier)) ;) (expression_statement "uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;" (assignment_expression "uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f" identifier = (binary_expression "(uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f" (parenthesized_expression "(uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8))" ( (binary_expression "uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)" identifier + (pointer_expression "*(byte *)(unaff_EDI + 0x116489 + uVar8)" * (cast_expression "(byte *)(unaff_EDI + 0x116489 + uVar8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x116489 + uVar8)" ( (binary_expression "unaff_EDI + 0x116489 + uVar8" (binary_expression "unaff_EDI + 0x116489" identifier + number_literal) + identifier) ))))) )) * number_literal)) ;) }) while (parenthesized_expression "(bVar2 != 0)" ( (binary_expression "bVar2 != 0" identifier != number_literal) )) ;) })) (expression_statement "piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);" (assignment_expression "piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8)" identifier = (cast_expression "(int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8)" ( (binary_expression "*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8" (pointer_expression "*(int *)(iVar5 + 0x14)" * (cast_expression "(int *)(iVar5 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x14)" ( (binary_expression "iVar5 + 0x14" identifier + number_literal) )))) + (binary_expression "(uVar7 % *(uint *)(iVar5 + 8)) * 8" (parenthesized_expression "(uVar7 % *(uint *)(iVar5 + 8))" ( (binary_expression "uVar7 % *(uint *)(iVar5 + 8)" identifier % (pointer_expression "*(uint *)(iVar5 + 8)" * (cast_expression "(uint *)(iVar5 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 8)" ( (binary_expression "iVar5 + 8" identifier + number_literal) ))))) )) * number_literal)) )))) ;) (expression_statement "puVar10 = (undefined4 *)piVar1[1];" (assignment_expression "puVar10 = (undefined4 *)piVar1[1]" identifier = (cast_expression "(undefined4 *)piVar1[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar1[1]" identifier [ number_literal ]))) ;) (expression_statement "local_2c = *piVar1;" (assignment_expression "local_2c = *piVar1" identifier = (pointer_expression "*piVar1" * identifier)) ;) }))) (if_statement "if (local_2c != 0) {\n            iVar5 = unaff_EDI + 0x116489;\n            do {\n              pbVar11 = (byte *)puVar10[3];\n              bVar2 = *pbVar11;\n              pbVar9 = local_34;\n              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar11;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }\n              local_2c = local_2c + -1;\n              puVar10 = (undefined4 *)*puVar10;\n            } while (local_2c != 0);\n          }" if (parenthesized_expression "(local_2c != 0)" ( (binary_expression "local_2c != 0" identifier != number_literal) )) (compound_statement "{\n            iVar5 = unaff_EDI + 0x116489;\n            do {\n              pbVar11 = (byte *)puVar10[3];\n              bVar2 = *pbVar11;\n              pbVar9 = local_34;\n              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar11;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }\n              local_2c = local_2c + -1;\n              puVar10 = (undefined4 *)*puVar10;\n            } while (local_2c != 0);\n          }" { (expression_statement "iVar5 = unaff_EDI + 0x116489;" (assignment_expression "iVar5 = unaff_EDI + 0x116489" identifier = (binary_expression "unaff_EDI + 0x116489" identifier + number_literal)) ;) (do_statement "do {\n              pbVar11 = (byte *)puVar10[3];\n              bVar2 = *pbVar11;\n              pbVar9 = local_34;\n              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar11;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }\n              local_2c = local_2c + -1;\n              puVar10 = (undefined4 *)*puVar10;\n            } while (local_2c != 0);" do (compound_statement "{\n              pbVar11 = (byte *)puVar10[3];\n              bVar2 = *pbVar11;\n              pbVar9 = local_34;\n              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar11;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }\n              local_2c = local_2c + -1;\n              puVar10 = (undefined4 *)*puVar10;\n            }" { (expression_statement "pbVar11 = (byte *)puVar10[3];" (assignment_expression "pbVar11 = (byte *)puVar10[3]" identifier = (cast_expression "(byte *)puVar10[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar10[3]" identifier [ number_literal ]))) ;) (expression_statement "bVar2 = *pbVar11;" (assignment_expression "bVar2 = *pbVar11" identifier = (pointer_expression "*pbVar11" * identifier)) ;) (expression_statement "pbVar9 = local_34;" (assignment_expression "pbVar9 = local_34" identifier = identifier) ;) (if_statement "if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar11;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }" if (parenthesized_expression "(*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2))" ( (binary_expression "*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)" (pointer_expression "*(char *)(unaff_EDI + 0x116489 + (uint)*local_34)" * (cast_expression "(char *)(unaff_EDI + 0x116489 + (uint)*local_34)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x116489 + (uint)*local_34)" ( (binary_expression "unaff_EDI + 0x116489 + (uint)*local_34" (binary_expression "unaff_EDI + 0x116489" identifier + number_literal) + (binary_expression "(uint)*local_34" (parenthesized_expression "(uint)" ( identifier )) * identifier)) )))) == (pointer_expression "*(char *)(iVar5 + (uint)bVar2)" * (cast_expression "(char *)(iVar5 + (uint)bVar2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + (uint)bVar2)" ( (binary_expression "iVar5 + (uint)bVar2" identifier + (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) ))))) )) (compound_statement "{\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar11;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }" { (do_statement "do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar11;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));" do (compound_statement "{\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar11;\n                }" { (if_statement "if (bVar2 == 0) goto LAB_00053578;" if (parenthesized_expression "(bVar2 == 0)" ( (binary_expression "bVar2 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00053578;" goto statement_identifier ;)) (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" identifier = (binary_expression "pbVar11 + 1" identifier + number_literal)) ;) (expression_statement "pbVar9 = pbVar9 + 1;" (assignment_expression "pbVar9 = pbVar9 + 1" identifier = (binary_expression "pbVar9 + 1" identifier + number_literal)) ;) (expression_statement "bVar2 = *pbVar11;" (assignment_expression "bVar2 = *pbVar11" identifier = (pointer_expression "*pbVar11" * identifier)) ;) }) while (parenthesized_expression "(*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9))" ( (binary_expression "*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9)" (pointer_expression "*(char *)(iVar5 + (uint)bVar2)" * (cast_expression "(char *)(iVar5 + (uint)bVar2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + (uint)bVar2)" ( (binary_expression "iVar5 + (uint)bVar2" identifier + (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) )))) == (pointer_expression "*(char *)(iVar5 + (uint)*pbVar9)" * (cast_expression "(char *)(iVar5 + (uint)*pbVar9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + (uint)*pbVar9)" ( (binary_expression "iVar5 + (uint)*pbVar9" identifier + (binary_expression "(uint)*pbVar9" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ))))) )) ;) })) (expression_statement "local_2c = local_2c + -1;" (assignment_expression "local_2c = local_2c + -1" identifier = (binary_expression "local_2c + -1" identifier + number_literal)) ;) (expression_statement "puVar10 = (undefined4 *)*puVar10;" (assignment_expression "puVar10 = (undefined4 *)*puVar10" identifier = (cast_expression "(undefined4 *)*puVar10" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar10" * identifier))) ;) }) while (parenthesized_expression "(local_2c != 0)" ( (binary_expression "local_2c != 0" identifier != number_literal) )) ;) })) (expression_statement "puVar10 = (undefined4 *)(&UNK_001697a9 + unaff_EDI);" (assignment_expression "puVar10 = (undefined4 *)(&UNK_001697a9 + unaff_EDI)" identifier = (cast_expression "(undefined4 *)(&UNK_001697a9 + unaff_EDI)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&UNK_001697a9 + unaff_EDI)" ( (binary_expression "&UNK_001697a9 + unaff_EDI" (pointer_expression "&UNK_001697a9" & identifier) + identifier) )))) ;) (labeled_statement "LAB_00053578:\n          if (puVar10[2] != 0) {\n            return puVar10[2];\n          }" statement_identifier : (if_statement "if (puVar10[2] != 0) {\n            return puVar10[2];\n          }" if (parenthesized_expression "(puVar10[2] != 0)" ( (binary_expression "puVar10[2] != 0" (subscript_expression "puVar10[2]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n            return puVar10[2];\n          }" { (return_statement "return puVar10[2];" return (subscript_expression "puVar10[2]" identifier [ number_literal ]) ;) }))) }) (else_clause "else {\n          pbVar11 = (byte *)*puVar10;\n          if (*(char *)(unaff_EDI + 0x116489 + (uint)*extraout_ECX) ==\n              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar11)) {\n            if (*extraout_ECX != 0) {\n              iVar5 = 1;\n              do {\n                pbVar9 = extraout_ECX + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }\n            goto LAB_000534a3;\n          }\n        }" else (compound_statement "{\n          pbVar11 = (byte *)*puVar10;\n          if (*(char *)(unaff_EDI + 0x116489 + (uint)*extraout_ECX) ==\n              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar11)) {\n            if (*extraout_ECX != 0) {\n              iVar5 = 1;\n              do {\n                pbVar9 = extraout_ECX + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }\n            goto LAB_000534a3;\n          }\n        }" { (expression_statement "pbVar11 = (byte *)*puVar10;" (assignment_expression "pbVar11 = (byte *)*puVar10" identifier = (cast_expression "(byte *)*puVar10" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar10" * identifier))) ;) (if_statement "if (*(char *)(unaff_EDI + 0x116489 + (uint)*extraout_ECX) ==\n              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar11)) {\n            if (*extraout_ECX != 0) {\n              iVar5 = 1;\n              do {\n                pbVar9 = extraout_ECX + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }\n            goto LAB_000534a3;\n          }" if (parenthesized_expression "(*(char *)(unaff_EDI + 0x116489 + (uint)*extraout_ECX) ==\n              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar11))" ( (binary_expression "*(char *)(unaff_EDI + 0x116489 + (uint)*extraout_ECX) ==\n              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar11)" (pointer_expression "*(char *)(unaff_EDI + 0x116489 + (uint)*extraout_ECX)" * (cast_expression "(char *)(unaff_EDI + 0x116489 + (uint)*extraout_ECX)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x116489 + (uint)*extraout_ECX)" ( (binary_expression "unaff_EDI + 0x116489 + (uint)*extraout_ECX" (binary_expression "unaff_EDI + 0x116489" identifier + number_literal) + (binary_expression "(uint)*extraout_ECX" (parenthesized_expression "(uint)" ( identifier )) * identifier)) )))) == (pointer_expression "*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar11)" * (cast_expression "(char *)(unaff_EDI + 0x116489 + (uint)*pbVar11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x116489 + (uint)*pbVar11)" ( (binary_expression "unaff_EDI + 0x116489 + (uint)*pbVar11" (binary_expression "unaff_EDI + 0x116489" identifier + number_literal) + (binary_expression "(uint)*pbVar11" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ))))) )) (compound_statement "{\n            if (*extraout_ECX != 0) {\n              iVar5 = 1;\n              do {\n                pbVar9 = extraout_ECX + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }\n            goto LAB_000534a3;\n          }" { (if_statement "if (*extraout_ECX != 0) {\n              iVar5 = 1;\n              do {\n                pbVar9 = extraout_ECX + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }" if (parenthesized_expression "(*extraout_ECX != 0)" ( (binary_expression "*extraout_ECX != 0" (pointer_expression "*extraout_ECX" * identifier) != number_literal) )) (compound_statement "{\n              iVar5 = 1;\n              do {\n                pbVar9 = extraout_ECX + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }" { (expression_statement "iVar5 = 1;" (assignment_expression "iVar5 = 1" identifier = number_literal) ;) (do_statement "do {\n                pbVar9 = extraout_ECX + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);" do (compound_statement "{\n                pbVar9 = extraout_ECX + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              }" { (expression_statement "pbVar9 = extraout_ECX + iVar5;" (assignment_expression "pbVar9 = extraout_ECX + iVar5" identifier = (binary_expression "extraout_ECX + iVar5" identifier + identifier)) ;) (if_statement "if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])) goto LAB_0005341f;" if (parenthesized_expression "(*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5]))" ( (binary_expression "*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])" (pointer_expression "*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9)" * (cast_expression "(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x116489 + (uint)*pbVar9)" ( (binary_expression "unaff_EDI + 0x116489 + (uint)*pbVar9" (binary_expression "unaff_EDI + 0x116489" identifier + number_literal) + (binary_expression "(uint)*pbVar9" (parenthesized_expression "(uint)" ( identifier )) * identifier)) )))) != (pointer_expression "*(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])" * (cast_expression "(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])" ( (binary_expression "unaff_EDI + 0x116489 + (uint)pbVar11[iVar5]" (binary_expression "unaff_EDI + 0x116489" identifier + number_literal) + (cast_expression "(uint)pbVar11[iVar5]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar11[iVar5]" identifier [ identifier ]))) ))))) )) (goto_statement "goto LAB_0005341f;" goto statement_identifier ;)) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*pbVar9 != 0)" ( (binary_expression "*pbVar9 != 0" (pointer_expression "*pbVar9" * identifier) != number_literal) )) ;) })) (goto_statement "goto LAB_000534a3;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_0005341f:\n        local_28 = local_28 + 1;" statement_identifier : (expression_statement "local_28 = local_28 + 1;" (assignment_expression "local_28 = local_28 + 1" identifier = (binary_expression "local_28 + 1" identifier + number_literal)) ;)) }) while (parenthesized_expression "(local_28 != uVar3)" ( (binary_expression "local_28 != uVar3" identifier != identifier) )) ;) })) (expression_statement "iVar5 = unaff_EDI + 0x116489;" (assignment_expression "iVar5 = unaff_EDI + 0x116489" identifier = (binary_expression "unaff_EDI + 0x116489" identifier + number_literal)) ;) (if_statement "if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) != 's') {\n      return 0;\n    }" if (parenthesized_expression "(*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) != 's')" ( (binary_expression "*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) != 's'" (pointer_expression "*(char *)(unaff_EDI + 0x116489 + (uint)*local_34)" * (cast_expression "(char *)(unaff_EDI + 0x116489 + (uint)*local_34)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x116489 + (uint)*local_34)" ( (binary_expression "unaff_EDI + 0x116489 + (uint)*local_34" (binary_expression "unaff_EDI + 0x116489" identifier + number_literal) + (binary_expression "(uint)*local_34" (parenthesized_expression "(uint)" ( identifier )) * identifier)) )))) != (char_literal "'s'" ' character ')) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (*local_34 != 0) {\n      if (*(char *)(iVar5 + (uint)local_34[1]) != 'q') {\n        return 0;\n      }\n      if (local_34[1] != 0) {\n        iVar6 = 2;\n        do {\n          pbVar11 = local_34 + iVar6;\n          if (*(char *)(iVar5 + (uint)*pbVar11) !=\n              *(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))) {\n            return 0;\n          }\n          iVar6 = iVar6 + 1;\n        } while (*pbVar11 != 0);\n      }\n    }" if (parenthesized_expression "(*local_34 != 0)" ( (binary_expression "*local_34 != 0" (pointer_expression "*local_34" * identifier) != number_literal) )) (compound_statement "{\n      if (*(char *)(iVar5 + (uint)local_34[1]) != 'q') {\n        return 0;\n      }\n      if (local_34[1] != 0) {\n        iVar6 = 2;\n        do {\n          pbVar11 = local_34 + iVar6;\n          if (*(char *)(iVar5 + (uint)*pbVar11) !=\n              *(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))) {\n            return 0;\n          }\n          iVar6 = iVar6 + 1;\n        } while (*pbVar11 != 0);\n      }\n    }" { (if_statement "if (*(char *)(iVar5 + (uint)local_34[1]) != 'q') {\n        return 0;\n      }" if (parenthesized_expression "(*(char *)(iVar5 + (uint)local_34[1]) != 'q')" ( (binary_expression "*(char *)(iVar5 + (uint)local_34[1]) != 'q'" (pointer_expression "*(char *)(iVar5 + (uint)local_34[1])" * (cast_expression "(char *)(iVar5 + (uint)local_34[1])" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + (uint)local_34[1])" ( (binary_expression "iVar5 + (uint)local_34[1]" identifier + (cast_expression "(uint)local_34[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "local_34[1]" identifier [ number_literal ]))) )))) != (char_literal "'q'" ' character ')) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (local_34[1] != 0) {\n        iVar6 = 2;\n        do {\n          pbVar11 = local_34 + iVar6;\n          if (*(char *)(iVar5 + (uint)*pbVar11) !=\n              *(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))) {\n            return 0;\n          }\n          iVar6 = iVar6 + 1;\n        } while (*pbVar11 != 0);\n      }" if (parenthesized_expression "(local_34[1] != 0)" ( (binary_expression "local_34[1] != 0" (subscript_expression "local_34[1]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n        iVar6 = 2;\n        do {\n          pbVar11 = local_34 + iVar6;\n          if (*(char *)(iVar5 + (uint)*pbVar11) !=\n              *(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))) {\n            return 0;\n          }\n          iVar6 = iVar6 + 1;\n        } while (*pbVar11 != 0);\n      }" { (expression_statement "iVar6 = 2;" (assignment_expression "iVar6 = 2" identifier = number_literal) ;) (do_statement "do {\n          pbVar11 = local_34 + iVar6;\n          if (*(char *)(iVar5 + (uint)*pbVar11) !=\n              *(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))) {\n            return 0;\n          }\n          iVar6 = iVar6 + 1;\n        } while (*pbVar11 != 0);" do (compound_statement "{\n          pbVar11 = local_34 + iVar6;\n          if (*(char *)(iVar5 + (uint)*pbVar11) !=\n              *(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))) {\n            return 0;\n          }\n          iVar6 = iVar6 + 1;\n        }" { (expression_statement "pbVar11 = local_34 + iVar6;" (assignment_expression "pbVar11 = local_34 + iVar6" identifier = (binary_expression "local_34 + iVar6" identifier + identifier)) ;) (if_statement "if (*(char *)(iVar5 + (uint)*pbVar11) !=\n              *(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))) {\n            return 0;\n          }" if (parenthesized_expression "(*(char *)(iVar5 + (uint)*pbVar11) !=\n              *(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015)))" ( (binary_expression "*(char *)(iVar5 + (uint)*pbVar11) !=\n              *(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))" (pointer_expression "*(char *)(iVar5 + (uint)*pbVar11)" * (cast_expression "(char *)(iVar5 + (uint)*pbVar11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + (uint)*pbVar11)" ( (binary_expression "iVar5 + (uint)*pbVar11" identifier + (binary_expression "(uint)*pbVar11" (parenthesized_expression "(uint)" ( identifier )) * identifier)) )))) != (pointer_expression "*(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))" * (cast_expression "(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))" ( (binary_expression "iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015)" identifier + (binary_expression "(uint)*(byte *)(iVar6 + unaff_EDI + 0x107015)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar6 + unaff_EDI + 0x107015)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + unaff_EDI + 0x107015)" ( (binary_expression "iVar6 + unaff_EDI + 0x107015" (binary_expression "iVar6 + unaff_EDI" identifier + identifier) + number_literal) ))))) ))))) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar6 = iVar6 + 1;" (assignment_expression "iVar6 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*pbVar11 != 0)" ( (binary_expression "*pbVar11 != 0" (pointer_expression "*pbVar11" * identifier) != number_literal) )) ;) })) })) (expression_statement "iVar5 = *(int *)(*(int *)(iVar4 + 0x10) + 0x10);" (assignment_expression "iVar5 = *(int *)(*(int *)(iVar4 + 0x10) + 0x10)" identifier = (pointer_expression "*(int *)(*(int *)(iVar4 + 0x10) + 0x10)" * (cast_expression "(int *)(*(int *)(iVar4 + 0x10) + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar4 + 0x10) + 0x10)" ( (binary_expression "*(int *)(iVar4 + 0x10) + 0x10" (pointer_expression "*(int *)(iVar4 + 0x10)" * (cast_expression "(int *)(iVar4 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x10)" ( (binary_expression "iVar4 + 0x10" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (extraout_ECX != (byte *)0x0) {\n      if (iVar5 == 0) {\n        return 0;\n      }\n      iVar5 = FUN_000446c0();\n    }" if (parenthesized_expression "(extraout_ECX != (byte *)0x0)" ( (binary_expression "extraout_ECX != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if (iVar5 == 0) {\n        return 0;\n      }\n      iVar5 = FUN_000446c0();\n    }" { (if_statement "if (iVar5 == 0) {\n        return 0;\n      }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar5 = FUN_000446c0();" (assignment_expression "iVar5 = FUN_000446c0()" identifier = (call_expression "FUN_000446c0()" identifier (argument_list "()" ( )))) ;) })) (if_statement "if (iVar5 != 0) {\n      return 0;\n    }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "local_34 = (byte *)(unaff_EDI + 0x10733b);" (assignment_expression "local_34 = (byte *)(unaff_EDI + 0x10733b)" identifier = (cast_expression "(byte *)(unaff_EDI + 0x10733b)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x10733b)" ( (binary_expression "unaff_EDI + 0x10733b" identifier + number_literal) )))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT ^ LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) ))))) )) * LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression (parenthesized_expression ( (binary_expression IDENT % (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) )))) == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))))) )) (compound_statement { (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) ))))) )) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + IDENT) )))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (return_statement return (subscript_expression IDENT [ LIT ]) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) )))) == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) ))))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) )))) != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ IDENT ]))) ))))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) ;) })) (goto_statement goto statement_identifier ;) })) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) )))) != (char_literal ' character ')) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )))) != (char_literal ' character ')) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) )))) != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) ))))) ))))) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) ;) })) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) }) while (parenthesized_expression ( BOOL )) ;) })))
(function_definition "int FUN_00053350(void)\n\n{\n  int *piVar1;\n  byte bVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  byte *extraout_ECX;\n  uint uVar8;\n  byte *pbVar9;\n  int unaff_EDI;\n  undefined4 *puVar10;\n  byte *pbVar11;\n  undefined8 uVar12;\n  byte *local_34;\n  int local_2c;\n  uint local_28;\n  \n  uVar12 = FUN_0003a401();\n  local_34 = (byte *)((ulonglong)uVar12 >> 0x20);\n  iVar4 = (int)uVar12;\n  uVar3 = *(uint *)(iVar4 + 0x14);\n  do {\n    if (0 < (int)uVar3) {\n      local_28 = 0;\n      do {\n        uVar7 = local_28 ^ 1;\n        if (1 < (int)local_28) {\n          uVar7 = local_28;\n        }\n        puVar10 = (undefined4 *)(uVar7 * 0x10 + *(int *)(iVar4 + 0x10));\n        if (extraout_ECX == (byte *)0x0) {\nLAB_000534a3:\n          iVar5 = puVar10[3];\n          if (*(int *)(iVar5 + 0x14) == 0) {\n            puVar10 = *(undefined4 **)(iVar5 + 0x10);\n            local_2c = *(int *)(iVar5 + 0xc);\n          }\n          else {\n            bVar2 = *local_34;\n            uVar7 = 0;\n            if (bVar2 != 0) {\n              pbVar11 = local_34;\n              do {\n                pbVar11 = pbVar11 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar11;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }\n            piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);\n            puVar10 = (undefined4 *)piVar1[1];\n            local_2c = *piVar1;\n          }\n          if (local_2c != 0) {\n            iVar5 = unaff_EDI + 0x116489;\n            do {\n              pbVar11 = (byte *)puVar10[3];\n              bVar2 = *pbVar11;\n              pbVar9 = local_34;\n              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar11;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }\n              local_2c = local_2c + -1;\n              puVar10 = (undefined4 *)*puVar10;\n            } while (local_2c != 0);\n          }\n          puVar10 = (undefined4 *)(&UNK_001697a9 + unaff_EDI);\nLAB_00053578:\n          if (puVar10[2] != 0) {\n            return puVar10[2];\n          }\n        }\n        else {\n          pbVar11 = (byte *)*puVar10;\n          if (*(char *)(unaff_EDI + 0x116489 + (uint)*extraout_ECX) ==\n              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar11)) {\n            if (*extraout_ECX != 0) {\n              iVar5 = 1;\n              do {\n                pbVar9 = extraout_ECX + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }\n            goto LAB_000534a3;\n          }\n        }\nLAB_0005341f:\n        local_28 = local_28 + 1;\n      } while (local_28 != uVar3);\n    }\n    iVar5 = unaff_EDI + 0x116489;\n    if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) != 's') {\n      return 0;\n    }\n    if (*local_34 != 0) {\n      if (*(char *)(iVar5 + (uint)local_34[1]) != 'q') {\n        return 0;\n      }\n      if (local_34[1] != 0) {\n        iVar6 = 2;\n        do {\n          pbVar11 = local_34 + iVar6;\n          if (*(char *)(iVar5 + (uint)*pbVar11) !=\n              *(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))) {\n            return 0;\n          }\n          iVar6 = iVar6 + 1;\n        } while (*pbVar11 != 0);\n      }\n    }\n    iVar5 = *(int *)(*(int *)(iVar4 + 0x10) + 0x10);\n    if (extraout_ECX != (byte *)0x0) {\n      if (iVar5 == 0) {\n        return 0;\n      }\n      iVar5 = FUN_000446c0();\n    }\n    if (iVar5 != 0) {\n      return 0;\n    }\n    local_34 = (byte *)(unaff_EDI + 0x10733b);\n  } while( true );\n}" (primitive_type "int") (function_declarator "FUN_00053350(void)" (identifier "FUN_00053350") (parameter_list "(void)" (( "(") (parameter_declaration "void" (primitive_type "void")) () ")"))) (compound_statement "{\n  int *piVar1;\n  byte bVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  byte *extraout_ECX;\n  uint uVar8;\n  byte *pbVar9;\n  int unaff_EDI;\n  undefined4 *puVar10;\n  byte *pbVar11;\n  undefined8 uVar12;\n  byte *local_34;\n  int local_2c;\n  uint local_28;\n  \n  uVar12 = FUN_0003a401();\n  local_34 = (byte *)((ulonglong)uVar12 >> 0x20);\n  iVar4 = (int)uVar12;\n  uVar3 = *(uint *)(iVar4 + 0x14);\n  do {\n    if (0 < (int)uVar3) {\n      local_28 = 0;\n      do {\n        uVar7 = local_28 ^ 1;\n        if (1 < (int)local_28) {\n          uVar7 = local_28;\n        }\n        puVar10 = (undefined4 *)(uVar7 * 0x10 + *(int *)(iVar4 + 0x10));\n        if (extraout_ECX == (byte *)0x0) {\nLAB_000534a3:\n          iVar5 = puVar10[3];\n          if (*(int *)(iVar5 + 0x14) == 0) {\n            puVar10 = *(undefined4 **)(iVar5 + 0x10);\n            local_2c = *(int *)(iVar5 + 0xc);\n          }\n          else {\n            bVar2 = *local_34;\n            uVar7 = 0;\n            if (bVar2 != 0) {\n              pbVar11 = local_34;\n              do {\n                pbVar11 = pbVar11 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar11;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }\n            piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);\n            puVar10 = (undefined4 *)piVar1[1];\n            local_2c = *piVar1;\n          }\n          if (local_2c != 0) {\n            iVar5 = unaff_EDI + 0x116489;\n            do {\n              pbVar11 = (byte *)puVar10[3];\n              bVar2 = *pbVar11;\n              pbVar9 = local_34;\n              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar11;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }\n              local_2c = local_2c + -1;\n              puVar10 = (undefined4 *)*puVar10;\n            } while (local_2c != 0);\n          }\n          puVar10 = (undefined4 *)(&UNK_001697a9 + unaff_EDI);\nLAB_00053578:\n          if (puVar10[2] != 0) {\n            return puVar10[2];\n          }\n        }\n        else {\n          pbVar11 = (byte *)*puVar10;\n          if (*(char *)(unaff_EDI + 0x116489 + (uint)*extraout_ECX) ==\n              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar11)) {\n            if (*extraout_ECX != 0) {\n              iVar5 = 1;\n              do {\n                pbVar9 = extraout_ECX + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }\n            goto LAB_000534a3;\n          }\n        }\nLAB_0005341f:\n        local_28 = local_28 + 1;\n      } while (local_28 != uVar3);\n    }\n    iVar5 = unaff_EDI + 0x116489;\n    if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) != 's') {\n      return 0;\n    }\n    if (*local_34 != 0) {\n      if (*(char *)(iVar5 + (uint)local_34[1]) != 'q') {\n        return 0;\n      }\n      if (local_34[1] != 0) {\n        iVar6 = 2;\n        do {\n          pbVar11 = local_34 + iVar6;\n          if (*(char *)(iVar5 + (uint)*pbVar11) !=\n              *(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))) {\n            return 0;\n          }\n          iVar6 = iVar6 + 1;\n        } while (*pbVar11 != 0);\n      }\n    }\n    iVar5 = *(int *)(*(int *)(iVar4 + 0x10) + 0x10);\n    if (extraout_ECX != (byte *)0x0) {\n      if (iVar5 == 0) {\n        return 0;\n      }\n      iVar5 = FUN_000446c0();\n    }\n    if (iVar5 != 0) {\n      return 0;\n    }\n    local_34 = (byte *)(unaff_EDI + 0x10733b);\n  } while( true );\n}" ({ "{") (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "byte bVar2;" (type_identifier "byte") (identifier "bVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "byte *extraout_ECX;" (type_identifier "byte") (pointer_declarator "*extraout_ECX" (* "*") (identifier "extraout_ECX")) (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "byte *pbVar9;" (type_identifier "byte") (pointer_declarator "*pbVar9" (* "*") (identifier "pbVar9")) (; ";")) (declaration "int unaff_EDI;" (primitive_type "int") (identifier "unaff_EDI") (; ";")) (declaration "undefined4 *puVar10;" (type_identifier "undefined4") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "byte *pbVar11;" (type_identifier "byte") (pointer_declarator "*pbVar11" (* "*") (identifier "pbVar11")) (; ";")) (declaration "undefined8 uVar12;" (type_identifier "undefined8") (identifier "uVar12") (; ";")) (declaration "byte *local_34;" (type_identifier "byte") (pointer_declarator "*local_34" (* "*") (identifier "local_34")) (; ";")) (declaration "int local_2c;" (primitive_type "int") (identifier "local_2c") (; ";")) (declaration "uint local_28;" (type_identifier "uint") (identifier "local_28") (; ";")) (expression_statement "uVar12 = FUN_0003a401();" (assignment_expression "uVar12 = FUN_0003a401()" (identifier "uVar12") (= "=") (call_expression "FUN_0003a401()" (identifier "FUN_0003a401") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "local_34 = (byte *)((ulonglong)uVar12 >> 0x20);" (assignment_expression "local_34 = (byte *)((ulonglong)uVar12 >> 0x20)" (identifier "local_34") (= "=") (cast_expression "(byte *)((ulonglong)uVar12 >> 0x20)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((ulonglong)uVar12 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar12 >> 0x20" (cast_expression "(ulonglong)uVar12" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar12")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "iVar4 = (int)uVar12;" (assignment_expression "iVar4 = (int)uVar12" (identifier "iVar4") (= "=") (cast_expression "(int)uVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar12"))) (; ";")) (expression_statement "uVar3 = *(uint *)(iVar4 + 0x14);" (assignment_expression "uVar3 = *(uint *)(iVar4 + 0x14)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)(iVar4 + 0x14)" (* "*") (cast_expression "(uint *)(iVar4 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x14)" (( "(") (binary_expression "iVar4 + 0x14" (identifier "iVar4") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (do_statement "do {\n    if (0 < (int)uVar3) {\n      local_28 = 0;\n      do {\n        uVar7 = local_28 ^ 1;\n        if (1 < (int)local_28) {\n          uVar7 = local_28;\n        }\n        puVar10 = (undefined4 *)(uVar7 * 0x10 + *(int *)(iVar4 + 0x10));\n        if (extraout_ECX == (byte *)0x0) {\nLAB_000534a3:\n          iVar5 = puVar10[3];\n          if (*(int *)(iVar5 + 0x14) == 0) {\n            puVar10 = *(undefined4 **)(iVar5 + 0x10);\n            local_2c = *(int *)(iVar5 + 0xc);\n          }\n          else {\n            bVar2 = *local_34;\n            uVar7 = 0;\n            if (bVar2 != 0) {\n              pbVar11 = local_34;\n              do {\n                pbVar11 = pbVar11 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar11;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }\n            piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);\n            puVar10 = (undefined4 *)piVar1[1];\n            local_2c = *piVar1;\n          }\n          if (local_2c != 0) {\n            iVar5 = unaff_EDI + 0x116489;\n            do {\n              pbVar11 = (byte *)puVar10[3];\n              bVar2 = *pbVar11;\n              pbVar9 = local_34;\n              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar11;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }\n              local_2c = local_2c + -1;\n              puVar10 = (undefined4 *)*puVar10;\n            } while (local_2c != 0);\n          }\n          puVar10 = (undefined4 *)(&UNK_001697a9 + unaff_EDI);\nLAB_00053578:\n          if (puVar10[2] != 0) {\n            return puVar10[2];\n          }\n        }\n        else {\n          pbVar11 = (byte *)*puVar10;\n          if (*(char *)(unaff_EDI + 0x116489 + (uint)*extraout_ECX) ==\n              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar11)) {\n            if (*extraout_ECX != 0) {\n              iVar5 = 1;\n              do {\n                pbVar9 = extraout_ECX + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }\n            goto LAB_000534a3;\n          }\n        }\nLAB_0005341f:\n        local_28 = local_28 + 1;\n      } while (local_28 != uVar3);\n    }\n    iVar5 = unaff_EDI + 0x116489;\n    if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) != 's') {\n      return 0;\n    }\n    if (*local_34 != 0) {\n      if (*(char *)(iVar5 + (uint)local_34[1]) != 'q') {\n        return 0;\n      }\n      if (local_34[1] != 0) {\n        iVar6 = 2;\n        do {\n          pbVar11 = local_34 + iVar6;\n          if (*(char *)(iVar5 + (uint)*pbVar11) !=\n              *(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))) {\n            return 0;\n          }\n          iVar6 = iVar6 + 1;\n        } while (*pbVar11 != 0);\n      }\n    }\n    iVar5 = *(int *)(*(int *)(iVar4 + 0x10) + 0x10);\n    if (extraout_ECX != (byte *)0x0) {\n      if (iVar5 == 0) {\n        return 0;\n      }\n      iVar5 = FUN_000446c0();\n    }\n    if (iVar5 != 0) {\n      return 0;\n    }\n    local_34 = (byte *)(unaff_EDI + 0x10733b);\n  } while( true );" (do "do") (compound_statement "{\n    if (0 < (int)uVar3) {\n      local_28 = 0;\n      do {\n        uVar7 = local_28 ^ 1;\n        if (1 < (int)local_28) {\n          uVar7 = local_28;\n        }\n        puVar10 = (undefined4 *)(uVar7 * 0x10 + *(int *)(iVar4 + 0x10));\n        if (extraout_ECX == (byte *)0x0) {\nLAB_000534a3:\n          iVar5 = puVar10[3];\n          if (*(int *)(iVar5 + 0x14) == 0) {\n            puVar10 = *(undefined4 **)(iVar5 + 0x10);\n            local_2c = *(int *)(iVar5 + 0xc);\n          }\n          else {\n            bVar2 = *local_34;\n            uVar7 = 0;\n            if (bVar2 != 0) {\n              pbVar11 = local_34;\n              do {\n                pbVar11 = pbVar11 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar11;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }\n            piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);\n            puVar10 = (undefined4 *)piVar1[1];\n            local_2c = *piVar1;\n          }\n          if (local_2c != 0) {\n            iVar5 = unaff_EDI + 0x116489;\n            do {\n              pbVar11 = (byte *)puVar10[3];\n              bVar2 = *pbVar11;\n              pbVar9 = local_34;\n              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar11;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }\n              local_2c = local_2c + -1;\n              puVar10 = (undefined4 *)*puVar10;\n            } while (local_2c != 0);\n          }\n          puVar10 = (undefined4 *)(&UNK_001697a9 + unaff_EDI);\nLAB_00053578:\n          if (puVar10[2] != 0) {\n            return puVar10[2];\n          }\n        }\n        else {\n          pbVar11 = (byte *)*puVar10;\n          if (*(char *)(unaff_EDI + 0x116489 + (uint)*extraout_ECX) ==\n              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar11)) {\n            if (*extraout_ECX != 0) {\n              iVar5 = 1;\n              do {\n                pbVar9 = extraout_ECX + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }\n            goto LAB_000534a3;\n          }\n        }\nLAB_0005341f:\n        local_28 = local_28 + 1;\n      } while (local_28 != uVar3);\n    }\n    iVar5 = unaff_EDI + 0x116489;\n    if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) != 's') {\n      return 0;\n    }\n    if (*local_34 != 0) {\n      if (*(char *)(iVar5 + (uint)local_34[1]) != 'q') {\n        return 0;\n      }\n      if (local_34[1] != 0) {\n        iVar6 = 2;\n        do {\n          pbVar11 = local_34 + iVar6;\n          if (*(char *)(iVar5 + (uint)*pbVar11) !=\n              *(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))) {\n            return 0;\n          }\n          iVar6 = iVar6 + 1;\n        } while (*pbVar11 != 0);\n      }\n    }\n    iVar5 = *(int *)(*(int *)(iVar4 + 0x10) + 0x10);\n    if (extraout_ECX != (byte *)0x0) {\n      if (iVar5 == 0) {\n        return 0;\n      }\n      iVar5 = FUN_000446c0();\n    }\n    if (iVar5 != 0) {\n      return 0;\n    }\n    local_34 = (byte *)(unaff_EDI + 0x10733b);\n  }" ({ "{") (if_statement "if (0 < (int)uVar3) {\n      local_28 = 0;\n      do {\n        uVar7 = local_28 ^ 1;\n        if (1 < (int)local_28) {\n          uVar7 = local_28;\n        }\n        puVar10 = (undefined4 *)(uVar7 * 0x10 + *(int *)(iVar4 + 0x10));\n        if (extraout_ECX == (byte *)0x0) {\nLAB_000534a3:\n          iVar5 = puVar10[3];\n          if (*(int *)(iVar5 + 0x14) == 0) {\n            puVar10 = *(undefined4 **)(iVar5 + 0x10);\n            local_2c = *(int *)(iVar5 + 0xc);\n          }\n          else {\n            bVar2 = *local_34;\n            uVar7 = 0;\n            if (bVar2 != 0) {\n              pbVar11 = local_34;\n              do {\n                pbVar11 = pbVar11 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar11;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }\n            piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);\n            puVar10 = (undefined4 *)piVar1[1];\n            local_2c = *piVar1;\n          }\n          if (local_2c != 0) {\n            iVar5 = unaff_EDI + 0x116489;\n            do {\n              pbVar11 = (byte *)puVar10[3];\n              bVar2 = *pbVar11;\n              pbVar9 = local_34;\n              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar11;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }\n              local_2c = local_2c + -1;\n              puVar10 = (undefined4 *)*puVar10;\n            } while (local_2c != 0);\n          }\n          puVar10 = (undefined4 *)(&UNK_001697a9 + unaff_EDI);\nLAB_00053578:\n          if (puVar10[2] != 0) {\n            return puVar10[2];\n          }\n        }\n        else {\n          pbVar11 = (byte *)*puVar10;\n          if (*(char *)(unaff_EDI + 0x116489 + (uint)*extraout_ECX) ==\n              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar11)) {\n            if (*extraout_ECX != 0) {\n              iVar5 = 1;\n              do {\n                pbVar9 = extraout_ECX + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }\n            goto LAB_000534a3;\n          }\n        }\nLAB_0005341f:\n        local_28 = local_28 + 1;\n      } while (local_28 != uVar3);\n    }" (if "if") (parenthesized_expression "(0 < (int)uVar3)" (( "(") (binary_expression "0 < (int)uVar3" (number_literal "0") (< "<") (cast_expression "(int)uVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar3"))) () ")")) (compound_statement "{\n      local_28 = 0;\n      do {\n        uVar7 = local_28 ^ 1;\n        if (1 < (int)local_28) {\n          uVar7 = local_28;\n        }\n        puVar10 = (undefined4 *)(uVar7 * 0x10 + *(int *)(iVar4 + 0x10));\n        if (extraout_ECX == (byte *)0x0) {\nLAB_000534a3:\n          iVar5 = puVar10[3];\n          if (*(int *)(iVar5 + 0x14) == 0) {\n            puVar10 = *(undefined4 **)(iVar5 + 0x10);\n            local_2c = *(int *)(iVar5 + 0xc);\n          }\n          else {\n            bVar2 = *local_34;\n            uVar7 = 0;\n            if (bVar2 != 0) {\n              pbVar11 = local_34;\n              do {\n                pbVar11 = pbVar11 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar11;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }\n            piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);\n            puVar10 = (undefined4 *)piVar1[1];\n            local_2c = *piVar1;\n          }\n          if (local_2c != 0) {\n            iVar5 = unaff_EDI + 0x116489;\n            do {\n              pbVar11 = (byte *)puVar10[3];\n              bVar2 = *pbVar11;\n              pbVar9 = local_34;\n              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar11;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }\n              local_2c = local_2c + -1;\n              puVar10 = (undefined4 *)*puVar10;\n            } while (local_2c != 0);\n          }\n          puVar10 = (undefined4 *)(&UNK_001697a9 + unaff_EDI);\nLAB_00053578:\n          if (puVar10[2] != 0) {\n            return puVar10[2];\n          }\n        }\n        else {\n          pbVar11 = (byte *)*puVar10;\n          if (*(char *)(unaff_EDI + 0x116489 + (uint)*extraout_ECX) ==\n              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar11)) {\n            if (*extraout_ECX != 0) {\n              iVar5 = 1;\n              do {\n                pbVar9 = extraout_ECX + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }\n            goto LAB_000534a3;\n          }\n        }\nLAB_0005341f:\n        local_28 = local_28 + 1;\n      } while (local_28 != uVar3);\n    }" ({ "{") (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" (identifier "local_28") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        uVar7 = local_28 ^ 1;\n        if (1 < (int)local_28) {\n          uVar7 = local_28;\n        }\n        puVar10 = (undefined4 *)(uVar7 * 0x10 + *(int *)(iVar4 + 0x10));\n        if (extraout_ECX == (byte *)0x0) {\nLAB_000534a3:\n          iVar5 = puVar10[3];\n          if (*(int *)(iVar5 + 0x14) == 0) {\n            puVar10 = *(undefined4 **)(iVar5 + 0x10);\n            local_2c = *(int *)(iVar5 + 0xc);\n          }\n          else {\n            bVar2 = *local_34;\n            uVar7 = 0;\n            if (bVar2 != 0) {\n              pbVar11 = local_34;\n              do {\n                pbVar11 = pbVar11 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar11;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }\n            piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);\n            puVar10 = (undefined4 *)piVar1[1];\n            local_2c = *piVar1;\n          }\n          if (local_2c != 0) {\n            iVar5 = unaff_EDI + 0x116489;\n            do {\n              pbVar11 = (byte *)puVar10[3];\n              bVar2 = *pbVar11;\n              pbVar9 = local_34;\n              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar11;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }\n              local_2c = local_2c + -1;\n              puVar10 = (undefined4 *)*puVar10;\n            } while (local_2c != 0);\n          }\n          puVar10 = (undefined4 *)(&UNK_001697a9 + unaff_EDI);\nLAB_00053578:\n          if (puVar10[2] != 0) {\n            return puVar10[2];\n          }\n        }\n        else {\n          pbVar11 = (byte *)*puVar10;\n          if (*(char *)(unaff_EDI + 0x116489 + (uint)*extraout_ECX) ==\n              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar11)) {\n            if (*extraout_ECX != 0) {\n              iVar5 = 1;\n              do {\n                pbVar9 = extraout_ECX + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }\n            goto LAB_000534a3;\n          }\n        }\nLAB_0005341f:\n        local_28 = local_28 + 1;\n      } while (local_28 != uVar3);" (do "do") (compound_statement "{\n        uVar7 = local_28 ^ 1;\n        if (1 < (int)local_28) {\n          uVar7 = local_28;\n        }\n        puVar10 = (undefined4 *)(uVar7 * 0x10 + *(int *)(iVar4 + 0x10));\n        if (extraout_ECX == (byte *)0x0) {\nLAB_000534a3:\n          iVar5 = puVar10[3];\n          if (*(int *)(iVar5 + 0x14) == 0) {\n            puVar10 = *(undefined4 **)(iVar5 + 0x10);\n            local_2c = *(int *)(iVar5 + 0xc);\n          }\n          else {\n            bVar2 = *local_34;\n            uVar7 = 0;\n            if (bVar2 != 0) {\n              pbVar11 = local_34;\n              do {\n                pbVar11 = pbVar11 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar11;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }\n            piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);\n            puVar10 = (undefined4 *)piVar1[1];\n            local_2c = *piVar1;\n          }\n          if (local_2c != 0) {\n            iVar5 = unaff_EDI + 0x116489;\n            do {\n              pbVar11 = (byte *)puVar10[3];\n              bVar2 = *pbVar11;\n              pbVar9 = local_34;\n              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar11;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }\n              local_2c = local_2c + -1;\n              puVar10 = (undefined4 *)*puVar10;\n            } while (local_2c != 0);\n          }\n          puVar10 = (undefined4 *)(&UNK_001697a9 + unaff_EDI);\nLAB_00053578:\n          if (puVar10[2] != 0) {\n            return puVar10[2];\n          }\n        }\n        else {\n          pbVar11 = (byte *)*puVar10;\n          if (*(char *)(unaff_EDI + 0x116489 + (uint)*extraout_ECX) ==\n              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar11)) {\n            if (*extraout_ECX != 0) {\n              iVar5 = 1;\n              do {\n                pbVar9 = extraout_ECX + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }\n            goto LAB_000534a3;\n          }\n        }\nLAB_0005341f:\n        local_28 = local_28 + 1;\n      }" ({ "{") (expression_statement "uVar7 = local_28 ^ 1;" (assignment_expression "uVar7 = local_28 ^ 1" (identifier "uVar7") (= "=") (binary_expression "local_28 ^ 1" (identifier "local_28") (^ "^") (number_literal "1"))) (; ";")) (if_statement "if (1 < (int)local_28) {\n          uVar7 = local_28;\n        }" (if "if") (parenthesized_expression "(1 < (int)local_28)" (( "(") (binary_expression "1 < (int)local_28" (number_literal "1") (< "<") (cast_expression "(int)local_28" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_28"))) () ")")) (compound_statement "{\n          uVar7 = local_28;\n        }" ({ "{") (expression_statement "uVar7 = local_28;" (assignment_expression "uVar7 = local_28" (identifier "uVar7") (= "=") (identifier "local_28")) (; ";")) (} "}"))) (expression_statement "puVar10 = (undefined4 *)(uVar7 * 0x10 + *(int *)(iVar4 + 0x10));" (assignment_expression "puVar10 = (undefined4 *)(uVar7 * 0x10 + *(int *)(iVar4 + 0x10))" (identifier "puVar10") (= "=") (cast_expression "(undefined4 *)(uVar7 * 0x10 + *(int *)(iVar4 + 0x10))" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar7 * 0x10 + *(int *)(iVar4 + 0x10))" (( "(") (binary_expression "uVar7 * 0x10 + *(int *)(iVar4 + 0x10)" (binary_expression "uVar7 * 0x10" (identifier "uVar7") (* "*") (number_literal "0x10")) (+ "+") (pointer_expression "*(int *)(iVar4 + 0x10)" (* "*") (cast_expression "(int *)(iVar4 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x10)" (( "(") (binary_expression "iVar4 + 0x10" (identifier "iVar4") (+ "+") (number_literal "0x10")) () ")"))))) () ")")))) (; ";")) (if_statement "if (extraout_ECX == (byte *)0x0) {\nLAB_000534a3:\n          iVar5 = puVar10[3];\n          if (*(int *)(iVar5 + 0x14) == 0) {\n            puVar10 = *(undefined4 **)(iVar5 + 0x10);\n            local_2c = *(int *)(iVar5 + 0xc);\n          }\n          else {\n            bVar2 = *local_34;\n            uVar7 = 0;\n            if (bVar2 != 0) {\n              pbVar11 = local_34;\n              do {\n                pbVar11 = pbVar11 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar11;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }\n            piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);\n            puVar10 = (undefined4 *)piVar1[1];\n            local_2c = *piVar1;\n          }\n          if (local_2c != 0) {\n            iVar5 = unaff_EDI + 0x116489;\n            do {\n              pbVar11 = (byte *)puVar10[3];\n              bVar2 = *pbVar11;\n              pbVar9 = local_34;\n              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar11;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }\n              local_2c = local_2c + -1;\n              puVar10 = (undefined4 *)*puVar10;\n            } while (local_2c != 0);\n          }\n          puVar10 = (undefined4 *)(&UNK_001697a9 + unaff_EDI);\nLAB_00053578:\n          if (puVar10[2] != 0) {\n            return puVar10[2];\n          }\n        }\n        else {\n          pbVar11 = (byte *)*puVar10;\n          if (*(char *)(unaff_EDI + 0x116489 + (uint)*extraout_ECX) ==\n              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar11)) {\n            if (*extraout_ECX != 0) {\n              iVar5 = 1;\n              do {\n                pbVar9 = extraout_ECX + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }\n            goto LAB_000534a3;\n          }\n        }" (if "if") (parenthesized_expression "(extraout_ECX == (byte *)0x0)" (( "(") (binary_expression "extraout_ECX == (byte *)0x0" (identifier "extraout_ECX") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\nLAB_000534a3:\n          iVar5 = puVar10[3];\n          if (*(int *)(iVar5 + 0x14) == 0) {\n            puVar10 = *(undefined4 **)(iVar5 + 0x10);\n            local_2c = *(int *)(iVar5 + 0xc);\n          }\n          else {\n            bVar2 = *local_34;\n            uVar7 = 0;\n            if (bVar2 != 0) {\n              pbVar11 = local_34;\n              do {\n                pbVar11 = pbVar11 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar11;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }\n            piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);\n            puVar10 = (undefined4 *)piVar1[1];\n            local_2c = *piVar1;\n          }\n          if (local_2c != 0) {\n            iVar5 = unaff_EDI + 0x116489;\n            do {\n              pbVar11 = (byte *)puVar10[3];\n              bVar2 = *pbVar11;\n              pbVar9 = local_34;\n              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar11;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }\n              local_2c = local_2c + -1;\n              puVar10 = (undefined4 *)*puVar10;\n            } while (local_2c != 0);\n          }\n          puVar10 = (undefined4 *)(&UNK_001697a9 + unaff_EDI);\nLAB_00053578:\n          if (puVar10[2] != 0) {\n            return puVar10[2];\n          }\n        }" ({ "{") (labeled_statement "LAB_000534a3:\n          iVar5 = puVar10[3];" (statement_identifier "LAB_000534a3") (: ":") (expression_statement "iVar5 = puVar10[3];" (assignment_expression "iVar5 = puVar10[3]" (identifier "iVar5") (= "=") (subscript_expression "puVar10[3]" (identifier "puVar10") ([ "[") (number_literal "3") (] "]"))) (; ";"))) (if_statement "if (*(int *)(iVar5 + 0x14) == 0) {\n            puVar10 = *(undefined4 **)(iVar5 + 0x10);\n            local_2c = *(int *)(iVar5 + 0xc);\n          }\n          else {\n            bVar2 = *local_34;\n            uVar7 = 0;\n            if (bVar2 != 0) {\n              pbVar11 = local_34;\n              do {\n                pbVar11 = pbVar11 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar11;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }\n            piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);\n            puVar10 = (undefined4 *)piVar1[1];\n            local_2c = *piVar1;\n          }" (if "if") (parenthesized_expression "(*(int *)(iVar5 + 0x14) == 0)" (( "(") (binary_expression "*(int *)(iVar5 + 0x14) == 0" (pointer_expression "*(int *)(iVar5 + 0x14)" (* "*") (cast_expression "(int *)(iVar5 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x14)" (( "(") (binary_expression "iVar5 + 0x14" (identifier "iVar5") (+ "+") (number_literal "0x14")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            puVar10 = *(undefined4 **)(iVar5 + 0x10);\n            local_2c = *(int *)(iVar5 + 0xc);\n          }" ({ "{") (expression_statement "puVar10 = *(undefined4 **)(iVar5 + 0x10);" (assignment_expression "puVar10 = *(undefined4 **)(iVar5 + 0x10)" (identifier "puVar10") (= "=") (pointer_expression "*(undefined4 **)(iVar5 + 0x10)" (* "*") (cast_expression "(undefined4 **)(iVar5 + 0x10)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar5 + 0x10)" (( "(") (binary_expression "iVar5 + 0x10" (identifier "iVar5") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "local_2c = *(int *)(iVar5 + 0xc);" (assignment_expression "local_2c = *(int *)(iVar5 + 0xc)" (identifier "local_2c") (= "=") (pointer_expression "*(int *)(iVar5 + 0xc)" (* "*") (cast_expression "(int *)(iVar5 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0xc)" (( "(") (binary_expression "iVar5 + 0xc" (identifier "iVar5") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n            bVar2 = *local_34;\n            uVar7 = 0;\n            if (bVar2 != 0) {\n              pbVar11 = local_34;\n              do {\n                pbVar11 = pbVar11 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar11;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }\n            piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);\n            puVar10 = (undefined4 *)piVar1[1];\n            local_2c = *piVar1;\n          }" (else "else") (compound_statement "{\n            bVar2 = *local_34;\n            uVar7 = 0;\n            if (bVar2 != 0) {\n              pbVar11 = local_34;\n              do {\n                pbVar11 = pbVar11 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar11;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }\n            piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);\n            puVar10 = (undefined4 *)piVar1[1];\n            local_2c = *piVar1;\n          }" ({ "{") (expression_statement "bVar2 = *local_34;" (assignment_expression "bVar2 = *local_34" (identifier "bVar2") (= "=") (pointer_expression "*local_34" (* "*") (identifier "local_34"))) (; ";")) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" (identifier "uVar7") (= "=") (number_literal "0")) (; ";")) (if_statement "if (bVar2 != 0) {\n              pbVar11 = local_34;\n              do {\n                pbVar11 = pbVar11 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar11;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }" (if "if") (parenthesized_expression "(bVar2 != 0)" (( "(") (binary_expression "bVar2 != 0" (identifier "bVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              pbVar11 = local_34;\n              do {\n                pbVar11 = pbVar11 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar11;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);\n            }" ({ "{") (expression_statement "pbVar11 = local_34;" (assignment_expression "pbVar11 = local_34" (identifier "pbVar11") (= "=") (identifier "local_34")) (; ";")) (do_statement "do {\n                pbVar11 = pbVar11 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar11;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              } while (bVar2 != 0);" (do "do") (compound_statement "{\n                pbVar11 = pbVar11 + 1;\n                uVar8 = (uint)bVar2;\n                bVar2 = *pbVar11;\n                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;\n              }" ({ "{") (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" (identifier "pbVar11") (= "=") (binary_expression "pbVar11 + 1" (identifier "pbVar11") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar8 = (uint)bVar2;" (assignment_expression "uVar8 = (uint)bVar2" (identifier "uVar8") (= "=") (cast_expression "(uint)bVar2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar2"))) (; ";")) (expression_statement "bVar2 = *pbVar11;" (assignment_expression "bVar2 = *pbVar11" (identifier "bVar2") (= "=") (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11"))) (; ";")) (expression_statement "uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;" (assignment_expression "uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f" (identifier "uVar7") (= "=") (binary_expression "(uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f" (parenthesized_expression "(uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8))" (( "(") (binary_expression "uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)" (identifier "uVar7") (+ "+") (pointer_expression "*(byte *)(unaff_EDI + 0x116489 + uVar8)" (* "*") (cast_expression "(byte *)(unaff_EDI + 0x116489 + uVar8)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x116489 + uVar8)" (( "(") (binary_expression "unaff_EDI + 0x116489 + uVar8" (binary_expression "unaff_EDI + 0x116489" (identifier "unaff_EDI") (+ "+") (number_literal "0x116489")) (+ "+") (identifier "uVar8")) () ")"))))) () ")")) (* "*") (number_literal "-0x61c8864f"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar2 != 0)" (( "(") (binary_expression "bVar2 != 0" (identifier "bVar2") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}"))) (expression_statement "piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);" (assignment_expression "piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8)" (identifier "piVar1") (= "=") (cast_expression "(int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8)" (( "(") (binary_expression "*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8" (pointer_expression "*(int *)(iVar5 + 0x14)" (* "*") (cast_expression "(int *)(iVar5 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x14)" (( "(") (binary_expression "iVar5 + 0x14" (identifier "iVar5") (+ "+") (number_literal "0x14")) () ")")))) (+ "+") (binary_expression "(uVar7 % *(uint *)(iVar5 + 8)) * 8" (parenthesized_expression "(uVar7 % *(uint *)(iVar5 + 8))" (( "(") (binary_expression "uVar7 % *(uint *)(iVar5 + 8)" (identifier "uVar7") (% "%") (pointer_expression "*(uint *)(iVar5 + 8)" (* "*") (cast_expression "(uint *)(iVar5 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 8)" (( "(") (binary_expression "iVar5 + 8" (identifier "iVar5") (+ "+") (number_literal "8")) () ")"))))) () ")")) (* "*") (number_literal "8"))) () ")")))) (; ";")) (expression_statement "puVar10 = (undefined4 *)piVar1[1];" (assignment_expression "puVar10 = (undefined4 *)piVar1[1]" (identifier "puVar10") (= "=") (cast_expression "(undefined4 *)piVar1[1]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar1[1]" (identifier "piVar1") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "local_2c = *piVar1;" (assignment_expression "local_2c = *piVar1" (identifier "local_2c") (= "=") (pointer_expression "*piVar1" (* "*") (identifier "piVar1"))) (; ";")) (} "}")))) (if_statement "if (local_2c != 0) {\n            iVar5 = unaff_EDI + 0x116489;\n            do {\n              pbVar11 = (byte *)puVar10[3];\n              bVar2 = *pbVar11;\n              pbVar9 = local_34;\n              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar11;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }\n              local_2c = local_2c + -1;\n              puVar10 = (undefined4 *)*puVar10;\n            } while (local_2c != 0);\n          }" (if "if") (parenthesized_expression "(local_2c != 0)" (( "(") (binary_expression "local_2c != 0" (identifier "local_2c") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            iVar5 = unaff_EDI + 0x116489;\n            do {\n              pbVar11 = (byte *)puVar10[3];\n              bVar2 = *pbVar11;\n              pbVar9 = local_34;\n              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar11;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }\n              local_2c = local_2c + -1;\n              puVar10 = (undefined4 *)*puVar10;\n            } while (local_2c != 0);\n          }" ({ "{") (expression_statement "iVar5 = unaff_EDI + 0x116489;" (assignment_expression "iVar5 = unaff_EDI + 0x116489" (identifier "iVar5") (= "=") (binary_expression "unaff_EDI + 0x116489" (identifier "unaff_EDI") (+ "+") (number_literal "0x116489"))) (; ";")) (do_statement "do {\n              pbVar11 = (byte *)puVar10[3];\n              bVar2 = *pbVar11;\n              pbVar9 = local_34;\n              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar11;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }\n              local_2c = local_2c + -1;\n              puVar10 = (undefined4 *)*puVar10;\n            } while (local_2c != 0);" (do "do") (compound_statement "{\n              pbVar11 = (byte *)puVar10[3];\n              bVar2 = *pbVar11;\n              pbVar9 = local_34;\n              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar11;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }\n              local_2c = local_2c + -1;\n              puVar10 = (undefined4 *)*puVar10;\n            }" ({ "{") (expression_statement "pbVar11 = (byte *)puVar10[3];" (assignment_expression "pbVar11 = (byte *)puVar10[3]" (identifier "pbVar11") (= "=") (cast_expression "(byte *)puVar10[3]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar10[3]" (identifier "puVar10") ([ "[") (number_literal "3") (] "]")))) (; ";")) (expression_statement "bVar2 = *pbVar11;" (assignment_expression "bVar2 = *pbVar11" (identifier "bVar2") (= "=") (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11"))) (; ";")) (expression_statement "pbVar9 = local_34;" (assignment_expression "pbVar9 = local_34" (identifier "pbVar9") (= "=") (identifier "local_34")) (; ";")) (if_statement "if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)) {\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar11;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }" (if "if") (parenthesized_expression "(*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2))" (( "(") (binary_expression "*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==\n                  *(char *)(iVar5 + (uint)bVar2)" (pointer_expression "*(char *)(unaff_EDI + 0x116489 + (uint)*local_34)" (* "*") (cast_expression "(char *)(unaff_EDI + 0x116489 + (uint)*local_34)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x116489 + (uint)*local_34)" (( "(") (binary_expression "unaff_EDI + 0x116489 + (uint)*local_34" (binary_expression "unaff_EDI + 0x116489" (identifier "unaff_EDI") (+ "+") (number_literal "0x116489")) (+ "+") (binary_expression "(uint)*local_34" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "local_34"))) () ")")))) (== "==") (pointer_expression "*(char *)(iVar5 + (uint)bVar2)" (* "*") (cast_expression "(char *)(iVar5 + (uint)bVar2)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + (uint)bVar2)" (( "(") (binary_expression "iVar5 + (uint)bVar2" (identifier "iVar5") (+ "+") (cast_expression "(uint)bVar2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar2"))) () ")"))))) () ")")) (compound_statement "{\n                do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar11;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));\n              }" ({ "{") (do_statement "do {\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar11;\n                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));" (do "do") (compound_statement "{\n                  if (bVar2 == 0) goto LAB_00053578;\n                  pbVar11 = pbVar11 + 1;\n                  pbVar9 = pbVar9 + 1;\n                  bVar2 = *pbVar11;\n                }" ({ "{") (if_statement "if (bVar2 == 0) goto LAB_00053578;" (if "if") (parenthesized_expression "(bVar2 == 0)" (( "(") (binary_expression "bVar2 == 0" (identifier "bVar2") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00053578;" (goto "goto") (statement_identifier "LAB_00053578") (; ";"))) (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" (identifier "pbVar11") (= "=") (binary_expression "pbVar11 + 1" (identifier "pbVar11") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar9 = pbVar9 + 1;" (assignment_expression "pbVar9 = pbVar9 + 1" (identifier "pbVar9") (= "=") (binary_expression "pbVar9 + 1" (identifier "pbVar9") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar2 = *pbVar11;" (assignment_expression "bVar2 = *pbVar11" (identifier "bVar2") (= "=") (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9))" (( "(") (binary_expression "*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9)" (pointer_expression "*(char *)(iVar5 + (uint)bVar2)" (* "*") (cast_expression "(char *)(iVar5 + (uint)bVar2)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + (uint)bVar2)" (( "(") (binary_expression "iVar5 + (uint)bVar2" (identifier "iVar5") (+ "+") (cast_expression "(uint)bVar2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar2"))) () ")")))) (== "==") (pointer_expression "*(char *)(iVar5 + (uint)*pbVar9)" (* "*") (cast_expression "(char *)(iVar5 + (uint)*pbVar9)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + (uint)*pbVar9)" (( "(") (binary_expression "iVar5 + (uint)*pbVar9" (identifier "iVar5") (+ "+") (binary_expression "(uint)*pbVar9" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar9"))) () ")"))))) () ")")) (; ";")) (} "}"))) (expression_statement "local_2c = local_2c + -1;" (assignment_expression "local_2c = local_2c + -1" (identifier "local_2c") (= "=") (binary_expression "local_2c + -1" (identifier "local_2c") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "puVar10 = (undefined4 *)*puVar10;" (assignment_expression "puVar10 = (undefined4 *)*puVar10" (identifier "puVar10") (= "=") (cast_expression "(undefined4 *)*puVar10" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar10" (* "*") (identifier "puVar10")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_2c != 0)" (( "(") (binary_expression "local_2c != 0" (identifier "local_2c") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}"))) (expression_statement "puVar10 = (undefined4 *)(&UNK_001697a9 + unaff_EDI);" (assignment_expression "puVar10 = (undefined4 *)(&UNK_001697a9 + unaff_EDI)" (identifier "puVar10") (= "=") (cast_expression "(undefined4 *)(&UNK_001697a9 + unaff_EDI)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&UNK_001697a9 + unaff_EDI)" (( "(") (binary_expression "&UNK_001697a9 + unaff_EDI" (pointer_expression "&UNK_001697a9" (& "&") (identifier "UNK_001697a9")) (+ "+") (identifier "unaff_EDI")) () ")")))) (; ";")) (labeled_statement "LAB_00053578:\n          if (puVar10[2] != 0) {\n            return puVar10[2];\n          }" (statement_identifier "LAB_00053578") (: ":") (if_statement "if (puVar10[2] != 0) {\n            return puVar10[2];\n          }" (if "if") (parenthesized_expression "(puVar10[2] != 0)" (( "(") (binary_expression "puVar10[2] != 0" (subscript_expression "puVar10[2]" (identifier "puVar10") ([ "[") (number_literal "2") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            return puVar10[2];\n          }" ({ "{") (return_statement "return puVar10[2];" (return "return") (subscript_expression "puVar10[2]" (identifier "puVar10") ([ "[") (number_literal "2") (] "]")) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n          pbVar11 = (byte *)*puVar10;\n          if (*(char *)(unaff_EDI + 0x116489 + (uint)*extraout_ECX) ==\n              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar11)) {\n            if (*extraout_ECX != 0) {\n              iVar5 = 1;\n              do {\n                pbVar9 = extraout_ECX + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }\n            goto LAB_000534a3;\n          }\n        }" (else "else") (compound_statement "{\n          pbVar11 = (byte *)*puVar10;\n          if (*(char *)(unaff_EDI + 0x116489 + (uint)*extraout_ECX) ==\n              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar11)) {\n            if (*extraout_ECX != 0) {\n              iVar5 = 1;\n              do {\n                pbVar9 = extraout_ECX + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }\n            goto LAB_000534a3;\n          }\n        }" ({ "{") (expression_statement "pbVar11 = (byte *)*puVar10;" (assignment_expression "pbVar11 = (byte *)*puVar10" (identifier "pbVar11") (= "=") (cast_expression "(byte *)*puVar10" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar10" (* "*") (identifier "puVar10")))) (; ";")) (if_statement "if (*(char *)(unaff_EDI + 0x116489 + (uint)*extraout_ECX) ==\n              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar11)) {\n            if (*extraout_ECX != 0) {\n              iVar5 = 1;\n              do {\n                pbVar9 = extraout_ECX + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }\n            goto LAB_000534a3;\n          }" (if "if") (parenthesized_expression "(*(char *)(unaff_EDI + 0x116489 + (uint)*extraout_ECX) ==\n              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar11))" (( "(") (binary_expression "*(char *)(unaff_EDI + 0x116489 + (uint)*extraout_ECX) ==\n              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar11)" (pointer_expression "*(char *)(unaff_EDI + 0x116489 + (uint)*extraout_ECX)" (* "*") (cast_expression "(char *)(unaff_EDI + 0x116489 + (uint)*extraout_ECX)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x116489 + (uint)*extraout_ECX)" (( "(") (binary_expression "unaff_EDI + 0x116489 + (uint)*extraout_ECX" (binary_expression "unaff_EDI + 0x116489" (identifier "unaff_EDI") (+ "+") (number_literal "0x116489")) (+ "+") (binary_expression "(uint)*extraout_ECX" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "extraout_ECX"))) () ")")))) (== "==") (pointer_expression "*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar11)" (* "*") (cast_expression "(char *)(unaff_EDI + 0x116489 + (uint)*pbVar11)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x116489 + (uint)*pbVar11)" (( "(") (binary_expression "unaff_EDI + 0x116489 + (uint)*pbVar11" (binary_expression "unaff_EDI + 0x116489" (identifier "unaff_EDI") (+ "+") (number_literal "0x116489")) (+ "+") (binary_expression "(uint)*pbVar11" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar11"))) () ")"))))) () ")")) (compound_statement "{\n            if (*extraout_ECX != 0) {\n              iVar5 = 1;\n              do {\n                pbVar9 = extraout_ECX + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }\n            goto LAB_000534a3;\n          }" ({ "{") (if_statement "if (*extraout_ECX != 0) {\n              iVar5 = 1;\n              do {\n                pbVar9 = extraout_ECX + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }" (if "if") (parenthesized_expression "(*extraout_ECX != 0)" (( "(") (binary_expression "*extraout_ECX != 0" (pointer_expression "*extraout_ECX" (* "*") (identifier "extraout_ECX")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              iVar5 = 1;\n              do {\n                pbVar9 = extraout_ECX + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);\n            }" ({ "{") (expression_statement "iVar5 = 1;" (assignment_expression "iVar5 = 1" (identifier "iVar5") (= "=") (number_literal "1")) (; ";")) (do_statement "do {\n                pbVar9 = extraout_ECX + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              } while (*pbVar9 != 0);" (do "do") (compound_statement "{\n                pbVar9 = extraout_ECX + iVar5;\n                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])) goto LAB_0005341f;\n                iVar5 = iVar5 + 1;\n              }" ({ "{") (expression_statement "pbVar9 = extraout_ECX + iVar5;" (assignment_expression "pbVar9 = extraout_ECX + iVar5" (identifier "pbVar9") (= "=") (binary_expression "extraout_ECX + iVar5" (identifier "extraout_ECX") (+ "+") (identifier "iVar5"))) (; ";")) (if_statement "if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])) goto LAB_0005341f;" (if "if") (parenthesized_expression "(*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5]))" (( "(") (binary_expression "*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=\n                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])" (pointer_expression "*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9)" (* "*") (cast_expression "(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x116489 + (uint)*pbVar9)" (( "(") (binary_expression "unaff_EDI + 0x116489 + (uint)*pbVar9" (binary_expression "unaff_EDI + 0x116489" (identifier "unaff_EDI") (+ "+") (number_literal "0x116489")) (+ "+") (binary_expression "(uint)*pbVar9" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar9"))) () ")")))) (!= "!=") (pointer_expression "*(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])" (* "*") (cast_expression "(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])" (( "(") (binary_expression "unaff_EDI + 0x116489 + (uint)pbVar11[iVar5]" (binary_expression "unaff_EDI + 0x116489" (identifier "unaff_EDI") (+ "+") (number_literal "0x116489")) (+ "+") (cast_expression "(uint)pbVar11[iVar5]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "pbVar11[iVar5]" (identifier "pbVar11") ([ "[") (identifier "iVar5") (] "]")))) () ")"))))) () ")")) (goto_statement "goto LAB_0005341f;" (goto "goto") (statement_identifier "LAB_0005341f") (; ";"))) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" (identifier "iVar5") (= "=") (binary_expression "iVar5 + 1" (identifier "iVar5") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*pbVar9 != 0)" (( "(") (binary_expression "*pbVar9 != 0" (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9")) (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}"))) (goto_statement "goto LAB_000534a3;" (goto "goto") (statement_identifier "LAB_000534a3") (; ";")) (} "}"))) (} "}")))) (labeled_statement "LAB_0005341f:\n        local_28 = local_28 + 1;" (statement_identifier "LAB_0005341f") (: ":") (expression_statement "local_28 = local_28 + 1;" (assignment_expression "local_28 = local_28 + 1" (identifier "local_28") (= "=") (binary_expression "local_28 + 1" (identifier "local_28") (+ "+") (number_literal "1"))) (; ";"))) (} "}")) (while "while") (parenthesized_expression "(local_28 != uVar3)" (( "(") (binary_expression "local_28 != uVar3" (identifier "local_28") (!= "!=") (identifier "uVar3")) () ")")) (; ";")) (} "}"))) (expression_statement "iVar5 = unaff_EDI + 0x116489;" (assignment_expression "iVar5 = unaff_EDI + 0x116489" (identifier "iVar5") (= "=") (binary_expression "unaff_EDI + 0x116489" (identifier "unaff_EDI") (+ "+") (number_literal "0x116489"))) (; ";")) (if_statement "if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) != 's') {\n      return 0;\n    }" (if "if") (parenthesized_expression "(*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) != 's')" (( "(") (binary_expression "*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) != 's'" (pointer_expression "*(char *)(unaff_EDI + 0x116489 + (uint)*local_34)" (* "*") (cast_expression "(char *)(unaff_EDI + 0x116489 + (uint)*local_34)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x116489 + (uint)*local_34)" (( "(") (binary_expression "unaff_EDI + 0x116489 + (uint)*local_34" (binary_expression "unaff_EDI + 0x116489" (identifier "unaff_EDI") (+ "+") (number_literal "0x116489")) (+ "+") (binary_expression "(uint)*local_34" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "local_34"))) () ")")))) (!= "!=") (char_literal "'s'" (' "'") (character "s") (' "'"))) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if (*local_34 != 0) {\n      if (*(char *)(iVar5 + (uint)local_34[1]) != 'q') {\n        return 0;\n      }\n      if (local_34[1] != 0) {\n        iVar6 = 2;\n        do {\n          pbVar11 = local_34 + iVar6;\n          if (*(char *)(iVar5 + (uint)*pbVar11) !=\n              *(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))) {\n            return 0;\n          }\n          iVar6 = iVar6 + 1;\n        } while (*pbVar11 != 0);\n      }\n    }" (if "if") (parenthesized_expression "(*local_34 != 0)" (( "(") (binary_expression "*local_34 != 0" (pointer_expression "*local_34" (* "*") (identifier "local_34")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      if (*(char *)(iVar5 + (uint)local_34[1]) != 'q') {\n        return 0;\n      }\n      if (local_34[1] != 0) {\n        iVar6 = 2;\n        do {\n          pbVar11 = local_34 + iVar6;\n          if (*(char *)(iVar5 + (uint)*pbVar11) !=\n              *(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))) {\n            return 0;\n          }\n          iVar6 = iVar6 + 1;\n        } while (*pbVar11 != 0);\n      }\n    }" ({ "{") (if_statement "if (*(char *)(iVar5 + (uint)local_34[1]) != 'q') {\n        return 0;\n      }" (if "if") (parenthesized_expression "(*(char *)(iVar5 + (uint)local_34[1]) != 'q')" (( "(") (binary_expression "*(char *)(iVar5 + (uint)local_34[1]) != 'q'" (pointer_expression "*(char *)(iVar5 + (uint)local_34[1])" (* "*") (cast_expression "(char *)(iVar5 + (uint)local_34[1])" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + (uint)local_34[1])" (( "(") (binary_expression "iVar5 + (uint)local_34[1]" (identifier "iVar5") (+ "+") (cast_expression "(uint)local_34[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "local_34[1]" (identifier "local_34") ([ "[") (number_literal "1") (] "]")))) () ")")))) (!= "!=") (char_literal "'q'" (' "'") (character "q") (' "'"))) () ")")) (compound_statement "{\n        return 0;\n      }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if (local_34[1] != 0) {\n        iVar6 = 2;\n        do {\n          pbVar11 = local_34 + iVar6;\n          if (*(char *)(iVar5 + (uint)*pbVar11) !=\n              *(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))) {\n            return 0;\n          }\n          iVar6 = iVar6 + 1;\n        } while (*pbVar11 != 0);\n      }" (if "if") (parenthesized_expression "(local_34[1] != 0)" (( "(") (binary_expression "local_34[1] != 0" (subscript_expression "local_34[1]" (identifier "local_34") ([ "[") (number_literal "1") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        iVar6 = 2;\n        do {\n          pbVar11 = local_34 + iVar6;\n          if (*(char *)(iVar5 + (uint)*pbVar11) !=\n              *(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))) {\n            return 0;\n          }\n          iVar6 = iVar6 + 1;\n        } while (*pbVar11 != 0);\n      }" ({ "{") (expression_statement "iVar6 = 2;" (assignment_expression "iVar6 = 2" (identifier "iVar6") (= "=") (number_literal "2")) (; ";")) (do_statement "do {\n          pbVar11 = local_34 + iVar6;\n          if (*(char *)(iVar5 + (uint)*pbVar11) !=\n              *(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))) {\n            return 0;\n          }\n          iVar6 = iVar6 + 1;\n        } while (*pbVar11 != 0);" (do "do") (compound_statement "{\n          pbVar11 = local_34 + iVar6;\n          if (*(char *)(iVar5 + (uint)*pbVar11) !=\n              *(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))) {\n            return 0;\n          }\n          iVar6 = iVar6 + 1;\n        }" ({ "{") (expression_statement "pbVar11 = local_34 + iVar6;" (assignment_expression "pbVar11 = local_34 + iVar6" (identifier "pbVar11") (= "=") (binary_expression "local_34 + iVar6" (identifier "local_34") (+ "+") (identifier "iVar6"))) (; ";")) (if_statement "if (*(char *)(iVar5 + (uint)*pbVar11) !=\n              *(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))) {\n            return 0;\n          }" (if "if") (parenthesized_expression "(*(char *)(iVar5 + (uint)*pbVar11) !=\n              *(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015)))" (( "(") (binary_expression "*(char *)(iVar5 + (uint)*pbVar11) !=\n              *(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))" (pointer_expression "*(char *)(iVar5 + (uint)*pbVar11)" (* "*") (cast_expression "(char *)(iVar5 + (uint)*pbVar11)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + (uint)*pbVar11)" (( "(") (binary_expression "iVar5 + (uint)*pbVar11" (identifier "iVar5") (+ "+") (binary_expression "(uint)*pbVar11" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar11"))) () ")")))) (!= "!=") (pointer_expression "*(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))" (* "*") (cast_expression "(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))" (( "(") (binary_expression "iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015)" (identifier "iVar5") (+ "+") (binary_expression "(uint)*(byte *)(iVar6 + unaff_EDI + 0x107015)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(iVar6 + unaff_EDI + 0x107015)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + unaff_EDI + 0x107015)" (( "(") (binary_expression "iVar6 + unaff_EDI + 0x107015" (binary_expression "iVar6 + unaff_EDI" (identifier "iVar6") (+ "+") (identifier "unaff_EDI")) (+ "+") (number_literal "0x107015")) () ")"))))) () ")"))))) () ")")) (compound_statement "{\n            return 0;\n          }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "iVar6 = iVar6 + 1;" (assignment_expression "iVar6 = iVar6 + 1" (identifier "iVar6") (= "=") (binary_expression "iVar6 + 1" (identifier "iVar6") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*pbVar11 != 0)" (( "(") (binary_expression "*pbVar11 != 0" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}"))) (} "}"))) (expression_statement "iVar5 = *(int *)(*(int *)(iVar4 + 0x10) + 0x10);" (assignment_expression "iVar5 = *(int *)(*(int *)(iVar4 + 0x10) + 0x10)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(*(int *)(iVar4 + 0x10) + 0x10)" (* "*") (cast_expression "(int *)(*(int *)(iVar4 + 0x10) + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar4 + 0x10) + 0x10)" (( "(") (binary_expression "*(int *)(iVar4 + 0x10) + 0x10" (pointer_expression "*(int *)(iVar4 + 0x10)" (* "*") (cast_expression "(int *)(iVar4 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x10)" (( "(") (binary_expression "iVar4 + 0x10" (identifier "iVar4") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (if_statement "if (extraout_ECX != (byte *)0x0) {\n      if (iVar5 == 0) {\n        return 0;\n      }\n      iVar5 = FUN_000446c0();\n    }" (if "if") (parenthesized_expression "(extraout_ECX != (byte *)0x0)" (( "(") (binary_expression "extraout_ECX != (byte *)0x0" (identifier "extraout_ECX") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      if (iVar5 == 0) {\n        return 0;\n      }\n      iVar5 = FUN_000446c0();\n    }" ({ "{") (if_statement "if (iVar5 == 0) {\n        return 0;\n      }" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        return 0;\n      }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "iVar5 = FUN_000446c0();" (assignment_expression "iVar5 = FUN_000446c0()" (identifier "iVar5") (= "=") (call_expression "FUN_000446c0()" (identifier "FUN_000446c0") (argument_list "()" (( "(") () ")")))) (; ";")) (} "}"))) (if_statement "if (iVar5 != 0) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "local_34 = (byte *)(unaff_EDI + 0x10733b);" (assignment_expression "local_34 = (byte *)(unaff_EDI + 0x10733b)" (identifier "local_34") (= "=") (cast_expression "(byte *)(unaff_EDI + 0x10733b)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x10733b)" (( "(") (binary_expression "unaff_EDI + 0x10733b" (identifier "unaff_EDI") (+ "+") (number_literal "0x10733b")) () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))

type_1 * function_1(type_2 *db,char *zName,char *zDatabase)

{
  int *piVar1;
  type_3 var_7;
  type_4 var_15;
  int var_2;
  int var_6;
  int var_16;
  type_4 var_4;
  char *var_17;
  type_3 *var_5;
  type_4 var_10;
  type_3 *var_14;
  type_5 *var_12;
  int var_9;
  type_6 *puVar11;
  type_3 *var_8;
  type_7 uVar13;
  type_3 *var_13;
  int var_11;
  type_4 var_3;
  
  uVar13 = var_1();
  var_13 = (type_3 *)((type_8)uVar13 >> 0x20);
  var_2 = (int)uVar13;
  var_15 = *(type_4 *)(var_2 + 0x14);
  do {
    if (0 < (int)var_15) {
      var_3 = 0;
      do {
        var_4 = var_3 ^ 1;
        if (1 < (int)var_3) {
          var_4 = var_3;
        }
        puVar11 = (type_6 *)(var_4 * 0x10 + *(int *)(var_2 + 0x10));
        if (var_5 == (type_3 *)0x0) {
LAB_000534a3:
          var_6 = puVar11[3];
          if (*(int *)(var_6 + 0x14) == 0) {
            var_12 = *(type_5 **)(var_6 + 0x10);
            var_11 = *(int *)(var_6 + 0xc);
          }
          else {
            var_7 = *var_13;
            var_4 = 0;
            if (var_7 != 0) {
              var_8 = var_13;
              do {
                var_8 = var_8 + 1;
                var_10 = (type_4)var_7;
                var_7 = *var_8;
                var_4 = (var_4 + *(type_3 *)(var_9 + 0x116489 + var_10)) * -0x61c8864f;
              } while (var_7 != 0);
            }
            piVar1 = (int *)(*(int *)(var_6 + 0x14) + (var_4 % *(type_4 *)(var_6 + 8)) * 8);
            var_12 = (type_5 *)piVar1[1];
            var_11 = *piVar1;
          }
          if (var_11 != 0) {
            var_6 = var_9 + 0x116489;
            do {
              var_8 = *(type_3 **)(var_12 + 0xc);
              var_7 = *var_8;
              var_14 = var_13;
              if (*(char *)(var_9 + 0x116489 + (type_4)*var_13) ==
                  *(char *)(var_6 + (type_4)var_7)) {
                do {
                  if (var_7 == 0) goto LAB_00053578;
                  var_8 = var_8 + 1;
                  var_14 = var_14 + 1;
                  var_7 = *var_8;
                } while (*(char *)(var_6 + (type_4)var_7) == *(char *)(var_6 + (type_4)*var_14));
              }
              var_11 = var_11 + -1;
              var_12 = *(type_5 **)var_12;
            } while (var_11 != 0);
          }
          var_12 = "" + var_9 + 0xc9;
LAB_00053578:
          if (*(type_1 **)(var_12 + 8) != (type_1 *)0x0) {
            return *(type_1 **)(var_12 + 8);
          }
        }
        else {
          var_8 = (type_3 *)*puVar11;
          if (*(char *)(var_9 + 0x116489 + (type_4)*var_5) ==
              *(char *)(var_9 + 0x116489 + (type_4)*var_8)) {
            if (*var_5 != 0) {
              var_6 = 1;
              do {
                var_14 = var_5 + var_6;
                if (*(char *)(var_9 + 0x116489 + (type_4)*var_14) !=
                    *(char *)(var_9 + 0x116489 + (type_4)var_8[var_6])) goto LAB_0005341f;
                var_6 = var_6 + 1;
              } while (*var_14 != 0);
            }
            goto LAB_000534a3;
          }
        }
LAB_0005341f:
        var_3 = var_3 + 1;
      } while (var_3 != var_15);
    }
    var_6 = var_9 + 0x116489;
    if (*(char *)(var_9 + 0x116489 + (type_4)*var_13) != 's') {
      return (type_1 *)0x0;
    }
    if (*var_13 != 0) {
      if (*(char *)(var_6 + (type_4)var_13[1]) != 'q') {
        return (type_1 *)0x0;
      }
      if (var_13[1] != 0) {
        var_16 = 2;
        do {
          var_8 = var_13 + var_16;
          if (*(char *)(var_6 + (type_4)*var_8) !=
              *(char *)(var_6 + (type_4)*(type_3 *)(var_16 + var_9 + 0x107015))) {
            return (type_1 *)0x0;
          }
          var_16 = var_16 + 1;
        } while (*var_8 != 0);
      }
    }
    var_17 = *(char **)(*(int *)(var_2 + 0x10) + 0x10);
    if (var_5 != (type_3 *)0x0) {
      if (var_17 == (char *)0x0) {
        return (type_1 *)0x0;
      }
      var_17 = (char *)var_18((char *)var_5,var_17);
    }
    if (var_17 != (char *)0x0) {
      return (type_1 *)0x0;
    }
    var_13 = (type_3 *)(var_9 + 0x10733b);
  } while( true );
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type)))) body: (compound_statement (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier))))))) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))))))) consequence: (compound_statement (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))))) condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier))))))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier)))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (return_statement (subscript_expression argument: (identifier) index: (number_literal))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)))))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (identifier))))))))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))))) (goto_statement label: (statement_identifier))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)))))) right: (char_literal (character)))) consequence: (compound_statement (return_statement (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))))) right: (char_literal (character)))) consequence: (compound_statement (return_statement (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal))))))))))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) condition: (parenthesized_expression (true))))))

int MASKED(void)

{
  int *piVar1;
  byte bVar2;
  uint uVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  uint uVar7;
  byte *extraout_ECX;
  uint uVar8;
  byte *pbVar9;
  int unaff_EDI;
  undefined4 *puVar10;
  byte *pbVar11;
  undefined8 uVar12;
  byte *local_34;
  int local_2c;
  uint local_28;
  
  uVar12 = FUN_0003a401();
  local_34 = (byte *)((ulonglong)uVar12 >> 0x20);
  iVar4 = (int)uVar12;
  uVar3 = *(uint *)(iVar4 + 0x14);
  do {
    if (0 < (int)uVar3) {
      local_28 = 0;
      do {
        uVar7 = local_28 ^ 1;
        if (1 < (int)local_28) {
          uVar7 = local_28;
        }
        puVar10 = (undefined4 *)(uVar7 * 0x10 + *(int *)(iVar4 + 0x10));
        if (extraout_ECX == (byte *)0x0) {
LAB_000534a3:
          iVar5 = puVar10[3];
          if (*(int *)(iVar5 + 0x14) == 0) {
            puVar10 = *(undefined4 **)(iVar5 + 0x10);
            local_2c = *(int *)(iVar5 + 0xc);
          }
          else {
            bVar2 = *local_34;
            uVar7 = 0;
            if (bVar2 != 0) {
              pbVar11 = local_34;
              do {
                pbVar11 = pbVar11 + 1;
                uVar8 = (uint)bVar2;
                bVar2 = *pbVar11;
                uVar7 = (uVar7 + *(byte *)(unaff_EDI + 0x116489 + uVar8)) * -0x61c8864f;
              } while (bVar2 != 0);
            }
            piVar1 = (int *)(*(int *)(iVar5 + 0x14) + (uVar7 % *(uint *)(iVar5 + 8)) * 8);
            puVar10 = (undefined4 *)piVar1[1];
            local_2c = *piVar1;
          }
          if (local_2c != 0) {
            iVar5 = unaff_EDI + 0x116489;
            do {
              pbVar11 = (byte *)puVar10[3];
              bVar2 = *pbVar11;
              pbVar9 = local_34;
              if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) ==
                  *(char *)(iVar5 + (uint)bVar2)) {
                do {
                  if (bVar2 == 0) goto LAB_00053578;
                  pbVar11 = pbVar11 + 1;
                  pbVar9 = pbVar9 + 1;
                  bVar2 = *pbVar11;
                } while (*(char *)(iVar5 + (uint)bVar2) == *(char *)(iVar5 + (uint)*pbVar9));
              }
              local_2c = local_2c + -1;
              puVar10 = (undefined4 *)*puVar10;
            } while (local_2c != 0);
          }
          puVar10 = (undefined4 *)(&UNK_001697a9 + unaff_EDI);
LAB_00053578:
          if (puVar10[2] != 0) {
            return puVar10[2];
          }
        }
        else {
          pbVar11 = (byte *)*puVar10;
          if (*(char *)(unaff_EDI + 0x116489 + (uint)*extraout_ECX) ==
              *(char *)(unaff_EDI + 0x116489 + (uint)*pbVar11)) {
            if (*extraout_ECX != 0) {
              iVar5 = 1;
              do {
                pbVar9 = extraout_ECX + iVar5;
                if (*(char *)(unaff_EDI + 0x116489 + (uint)*pbVar9) !=
                    *(char *)(unaff_EDI + 0x116489 + (uint)pbVar11[iVar5])) goto LAB_0005341f;
                iVar5 = iVar5 + 1;
              } while (*pbVar9 != 0);
            }
            goto LAB_000534a3;
          }
        }
LAB_0005341f:
        local_28 = local_28 + 1;
      } while (local_28 != uVar3);
    }
    iVar5 = unaff_EDI + 0x116489;
    if (*(char *)(unaff_EDI + 0x116489 + (uint)*local_34) != 's') {
      return 0;
    }
    if (*local_34 != 0) {
      if (*(char *)(iVar5 + (uint)local_34[1]) != 'q') {
        return 0;
      }
      if (local_34[1] != 0) {
        iVar6 = 2;
        do {
          pbVar11 = local_34 + iVar6;
          if (*(char *)(iVar5 + (uint)*pbVar11) !=
              *(char *)(iVar5 + (uint)*(byte *)(iVar6 + unaff_EDI + 0x107015))) {
            return 0;
          }
          iVar6 = iVar6 + 1;
        } while (*pbVar11 != 0);
      }
    }
    iVar5 = *(int *)(*(int *)(iVar4 + 0x10) + 0x10);
    if (extraout_ECX != (byte *)0x0) {
      if (iVar5 == 0) {
        return 0;
      }
      iVar5 = FUN_000446c0();
    }
    if (iVar5 != 0) {
      return 0;
    }
    local_34 = (byte *)(unaff_EDI + 0x10733b);
  } while( true );
}

