
/* WARNING: Function: __x86.get_pc_thunk.bp replaced with injection: get_pc_thunk.bp */

int __regparm3 moveToChild(BtCursor *pCur,u32 newPgno)

{
  u16 uVar1;
  BtShared *pBVar2;
  u8 *puVar3;
  char cVar4;
  int iVar5;
  int iVar6;
  MemPage *pPage;
  u8 uVar7;
  int in_GS_OFFSET;
  DbPage *pDbPage;
  int local_20;
  
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  cVar4 = pCur->iPage;
  if ('\x12' < cVar4) {
    iVar6 = 0xb;
    sqlite3_log(0xb,"%s at line %d of [%.10s]","database corruption",0x109db,
                "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");
    goto LAB_0007ab14;
  }
  uVar1 = pCur->ix;
  pCur->curFlags = pCur->curFlags & 0xf9;
  (pCur->info).nSize = 0;
  pBVar2 = pCur->pBt;
  pCur->aiIdx[cVar4] = uVar1;
  pCur->apPage[cVar4] = pCur->pPage;
  pCur->ix = 0;
  pCur->iPage = cVar4 + '\x01';
  if (pBVar2->nPage < newPgno) {
    iVar6 = 0xb;
    sqlite3_log(0xb,"%s at line %d of [%.10s]","database corruption",0xfea1,
                "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");
  }
  else {
    iVar5 = (*pBVar2->pPager->xGet)(pBVar2->pPager,newPgno,&pDbPage,(int)pCur->curPagerFlags);
    iVar6 = iVar5;
    if (iVar5 == 0) {
      pPage = (MemPage *)pDbPage->pExtra;
      pCur->pPage = pPage;
      if (pPage->isInit == '\0') {
        if (newPgno != pPage->pgno) {
          puVar3 = (u8 *)pDbPage->pData;
          pPage->pDbPage = pDbPage;
          pPage->pgno = newPgno;
          pPage->aData = puVar3;
          pPage->pBt = pBVar2;
          uVar7 = '\0';
          if (newPgno == 1) {
            uVar7 = 'd';
          }
          pPage->hdrOffset = uVar7;
          pPage = pCur->pPage;
        }
        iVar6 = btreeInitPage(pPage);
        if (iVar6 != 0) {
          if (pCur->pPage != (MemPage *)0x0) {
            sqlite3PagerUnrefNotNull(pCur->pPage->pDbPage);
          }
          goto LAB_0007ab00;
        }
        pPage = pCur->pPage;
      }
      if ((pPage->nCell != 0) && (iVar6 = iVar5, pPage->intKey == pCur->curIntKey))
      goto LAB_0007ab14;
      iVar6 = 0xb;
      sqlite3_log(0xb,"%s at line %d of [%.10s]","database corruption",0xfeb7,
                  "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");
      if (pCur->pPage != (MemPage *)0x0) {
        sqlite3PagerUnrefNotNull(pCur->pPage->pDbPage);
      }
    }
  }
LAB_0007ab00:
  cVar4 = pCur->iPage + -1;
  pCur->iPage = cVar4;
  pCur->pPage = pCur->apPage[cVar4];
LAB_0007ab14:
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return iVar6;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail_local();
}



int FUN_0007a9d0(void)

{
  int *piVar1;
  undefined4 uVar2;
  char cVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  char *pcVar7;
  uint uVar8;
  int unaff_EBP;
  int in_GS_OFFSET;
  undefined8 uVar9;
  int local_24;
  int local_20;
  
  uVar9 = FUN_0003a405();
  uVar8 = (uint)((ulonglong)uVar9 >> 0x20);
  iVar4 = (int)uVar9;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  cVar3 = *(char *)(iVar4 + 0x3c);
  if ('\x12' < cVar3) {
    iVar6 = 0xb;
    FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0x109db,
                 &UNK_000dcb22 + unaff_EBP);
    goto LAB_0007ab14;
  }
  *(byte *)(iVar4 + 1) = *(byte *)(iVar4 + 1) & 0xf9;
  *(undefined2 *)(iVar4 + 0x2e) = 0;
  piVar1 = *(int **)(iVar4 + 0x14);
  *(undefined2 *)(iVar4 + 0x40 + cVar3 * 2) = *(undefined2 *)(iVar4 + 0x3e);
  *(undefined4 *)(iVar4 + 0x70 + cVar3 * 4) = *(undefined4 *)(iVar4 + 0x6c);
  *(undefined2 *)(iVar4 + 0x3e) = 0;
  *(char *)(iVar4 + 0x3c) = cVar3 + '\x01';
  if ((uint)piVar1[0xb] < uVar8) {
    iVar6 = 0xb;
    FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0xfea1,
                 &UNK_000dcb22 + unaff_EBP);
  }
  else {
    iVar5 = (**(code **)(*piVar1 + 200))(*piVar1,uVar8,&local_24,*(undefined1 *)(iVar4 + 2));
    iVar6 = iVar5;
    if (iVar5 == 0) {
      pcVar7 = *(char **)(local_24 + 8);
      *(char **)(iVar4 + 0x6c) = pcVar7;
      if (*pcVar7 == '\0') {
        if (uVar8 != *(uint *)(pcVar7 + 4)) {
          uVar2 = *(undefined4 *)(local_24 + 4);
          *(int *)(pcVar7 + 0x48) = local_24;
          *(uint *)(pcVar7 + 4) = uVar8;
          *(undefined4 *)(pcVar7 + 0x38) = uVar2;
          *(int **)(pcVar7 + 0x34) = piVar1;
          cVar3 = '\0';
          if (uVar8 == 1) {
            cVar3 = 'd';
          }
          pcVar7[9] = cVar3;
        }
        iVar6 = FUN_000777f0();
        if (iVar6 != 0) {
          if (*(int *)(iVar4 + 0x6c) != 0) {
            FUN_0003be70();
          }
          goto LAB_0007ab00;
        }
        pcVar7 = *(char **)(iVar4 + 0x6c);
      }
      if ((*(short *)(pcVar7 + 0x16) != 0) && (iVar6 = iVar5, pcVar7[2] == *(char *)(iVar4 + 0x3d)))
      goto LAB_0007ab14;
      iVar6 = 0xb;
      FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0xfeb7,
                   &UNK_000dcb22 + unaff_EBP);
      if (*(int *)(iVar4 + 0x6c) != 0) {
        FUN_0003be70();
      }
    }
  }
LAB_0007ab00:
  cVar3 = *(char *)(iVar4 + 0x3c) + -1;
  *(char *)(iVar4 + 0x3c) = cVar3;
  *(undefined4 *)(iVar4 + 0x6c) = *(undefined4 *)(iVar4 + 0x70 + cVar3 * 4);
LAB_0007ab14:
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return iVar6;
  }
                    /* WARNING: Subroutine does not return */
  FUN_00153870();
}


PUSH EBP
CALL 0x0003a405
ADD EBP,0x140452
PUSH EDI
PUSH ESI
PUSH EBX
MOV EBX,EAX
SUB ESP,0x2c
MOV EAX,GS:[0x14]
MOV dword ptr [ESP + 0x1c],EAX
XOR EAX,EAX
MOVZX EAX,byte ptr [EBX + 0x3c]
CMP AL,0x12
JG 0x0007ab30
MOVZX EDI,word ptr [EBX + 0x3e]
XOR ECX,ECX
AND byte ptr [EBX + 0x1],0xf9
MOV ESI,EDX
MOV word ptr [EBX + 0x2e],CX
MOVSX ECX,AL
MOV EDX,dword ptr [EBX + 0x14]
ADD EAX,0x1
MOV word ptr [EBX + ECX*0x2 + 0x40],DI
MOV EDI,dword ptr [EBX + 0x6c]
MOV dword ptr [ESP + 0x8],EDX
MOV dword ptr [EBX + ECX*0x4 + 0x70],EDI
XOR EDI,EDI
MOVZX ECX,byte ptr [EBX + 0x2]
MOV word ptr [EBX + 0x3e],DI
MOV byte ptr [EBX + 0x3c],AL
CMP ESI,dword ptr [EDX + 0x2c]
JA 0x0007ab78
MOV EAX,dword ptr [EDX]
PUSH ECX
LEA ECX,[ESP + 0x1c]
PUSH ECX
PUSH ESI
PUSH EAX
CALL dword ptr [EAX + 0xc8]
MOV EDI,EAX
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x0007ab00
MOV EDX,dword ptr [ESP + 0x18]
MOV EAX,dword ptr [EDX + 0x8]
MOV dword ptr [EBX + 0x6c],EAX
MOVZX ECX,byte ptr [EAX]
MOV byte ptr [ESP + 0xf],CL
TEST CL,CL
JNZ 0x0007aaab
CMP ESI,dword ptr [EAX + 0x4]
JZ 0x0007aa9b
MOV ECX,dword ptr [EDX + 0x4]
MOV dword ptr [EAX + 0x48],EDX
CMP ESI,0x1
MOV EDX,dword ptr [ESP + 0x8]
MOV dword ptr [EAX + 0x4],ESI
MOV dword ptr [EAX + 0x38],ECX
MOVZX ECX,byte ptr [ESP + 0xf]
MOV dword ptr [EAX + 0x34],EDX
MOV EDX,0x64
CMOVZ ECX,EDX
MOV byte ptr [EAX + 0x9],CL
MOV EAX,dword ptr [EBX + 0x6c]
CALL 0x000777f0
TEST EAX,EAX
JNZ 0x0007ab60
MOV EAX,dword ptr [EBX + 0x6c]
CMP word ptr [EAX + 0x16],0x0
JZ 0x0007aabb
MOVZX EDX,byte ptr [EBX + 0x3d]
CMP byte ptr [EAX + 0x2],DL
JZ 0x0007ab14
SUB ESP,0xc
LEA EAX,[EBP + 0xfff9c6d0]
MOV EDI,0xb
PUSH EAX
LEA EAX,[EBP + 0xfffa1ace]
PUSH 0xfeb7
PUSH EAX
LEA EAX,[EBP + 0xfffa1a17]
PUSH EAX
PUSH 0xb
CALL 0x000770e0
MOV EAX,dword ptr [EBX + 0x6c]
ADD ESP,0x20
TEST EAX,EAX
JZ 0x0007ab00
MOV EAX,dword ptr [EAX + 0x48]
CALL 0x0003be70
LEA ESI,[ESI]
LEA ESI,[ESI]
MOVZX EAX,byte ptr [EBX + 0x3c]
SUB EAX,0x1
MOV byte ptr [EBX + 0x3c],AL
MOVSX EAX,AL
MOV EAX,dword ptr [EBX + EAX*0x4 + 0x70]
MOV dword ptr [EBX + 0x6c],EAX
MOV ESI,dword ptr [ESP + 0x1c]
XOR ESI,dword ptr GS:[0x14]
MOV EAX,EDI
JNZ 0x0007aba9
ADD ESP,0x2c
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0xc
LEA EAX,[EBP + 0xfff9c6d0]
MOV EDI,0xb
PUSH EAX
LEA EAX,[EBP + 0xfffa1ace]
PUSH 0x109db
PUSH EAX
LEA EAX,[EBP + 0xfffa1a17]
PUSH EAX
PUSH 0xb
CALL 0x000770e0
ADD ESP,0x20
JMP 0x0007ab14
MOV EDX,dword ptr [EBX + 0x6c]
MOV EDI,EAX
TEST EDX,EDX
JZ 0x0007ab00
MOV EAX,dword ptr [EDX + 0x48]
CALL 0x0003be70
JMP 0x0007ab00
SUB ESP,0xc
LEA EAX,[EBP + 0xfff9c6d0]
MOV EDI,0xb
PUSH EAX
LEA EAX,[EBP + 0xfffa1ace]
PUSH 0xfea1
PUSH EAX
LEA EAX,[EBP + 0xfffa1a17]
PUSH EAX
PUSH 0xb
CALL 0x000770e0
ADD ESP,0x20
JMP 0x0007ab00
CALL 0x00153870
(translation_unit "int FUN_0007a9d0(void)\n\n{\n  int *piVar1;\n  undefined4 uVar2;\n  char cVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  char *pcVar7;\n  uint uVar8;\n  int unaff_EBP;\n  int in_GS_OFFSET;\n  undefined8 uVar9;\n  int local_24;\n  int local_20;\n  \n  uVar9 = FUN_0003a405();\n  uVar8 = (uint)((ulonglong)uVar9 >> 0x20);\n  iVar4 = (int)uVar9;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  cVar3 = *(char *)(iVar4 + 0x3c);\n  if ('\x12' < cVar3) {\n    iVar6 = 0xb;\n    FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0x109db,\n                 &UNK_000dcb22 + unaff_EBP);\n    goto LAB_0007ab14;\n  }\n  *(byte *)(iVar4 + 1) = *(byte *)(iVar4 + 1) & 0xf9;\n  *(undefined2 *)(iVar4 + 0x2e) = 0;\n  piVar1 = *(int **)(iVar4 + 0x14);\n  *(undefined2 *)(iVar4 + 0x40 + cVar3 * 2) = *(undefined2 *)(iVar4 + 0x3e);\n  *(undefined4 *)(iVar4 + 0x70 + cVar3 * 4) = *(undefined4 *)(iVar4 + 0x6c);\n  *(undefined2 *)(iVar4 + 0x3e) = 0;\n  *(char *)(iVar4 + 0x3c) = cVar3 + '\x01';\n  if ((uint)piVar1[0xb] < uVar8) {\n    iVar6 = 0xb;\n    FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0xfea1,\n                 &UNK_000dcb22 + unaff_EBP);\n  }\n  else {\n    iVar5 = (**(code **)(*piVar1 + 200))(*piVar1,uVar8,&local_24,*(undefined1 *)(iVar4 + 2));\n    iVar6 = iVar5;\n    if (iVar5 == 0) {\n      pcVar7 = *(char **)(local_24 + 8);\n      *(char **)(iVar4 + 0x6c) = pcVar7;\n      if (*pcVar7 == '\0') {\n        if (uVar8 != *(uint *)(pcVar7 + 4)) {\n          uVar2 = *(undefined4 *)(local_24 + 4);\n          *(int *)(pcVar7 + 0x48) = local_24;\n          *(uint *)(pcVar7 + 4) = uVar8;\n          *(undefined4 *)(pcVar7 + 0x38) = uVar2;\n          *(int **)(pcVar7 + 0x34) = piVar1;\n          cVar3 = '\0';\n          if (uVar8 == 1) {\n            cVar3 = 'd';\n          }\n          pcVar7[9] = cVar3;\n        }\n        iVar6 = FUN_000777f0();\n        if (iVar6 != 0) {\n          if (*(int *)(iVar4 + 0x6c) != 0) {\n            FUN_0003be70();\n          }\n          goto LAB_0007ab00;\n        }\n        pcVar7 = *(char **)(iVar4 + 0x6c);\n      }\n      if ((*(short *)(pcVar7 + 0x16) != 0) && (iVar6 = iVar5, pcVar7[2] == *(char *)(iVar4 + 0x3d)))\n      goto LAB_0007ab14;\n      iVar6 = 0xb;\n      FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0xfeb7,\n                   &UNK_000dcb22 + unaff_EBP);\n      if (*(int *)(iVar4 + 0x6c) != 0) {\n        FUN_0003be70();\n      }\n    }\n  }\nLAB_0007ab00:\n  cVar3 = *(char *)(iVar4 + 0x3c) + -1;\n  *(char *)(iVar4 + 0x3c) = cVar3;\n  *(undefined4 *)(iVar4 + 0x6c) = *(undefined4 *)(iVar4 + 0x70 + cVar3 * 4);\nLAB_0007ab14:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar6;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_00153870();\n}\n\n" (function_definition "int FUN_0007a9d0(void)\n\n{\n  int *piVar1;\n  undefined4 uVar2;\n  char cVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  char *pcVar7;\n  uint uVar8;\n  int unaff_EBP;\n  int in_GS_OFFSET;\n  undefined8 uVar9;\n  int local_24;\n  int local_20;\n  \n  uVar9 = FUN_0003a405();\n  uVar8 = (uint)((ulonglong)uVar9 >> 0x20);\n  iVar4 = (int)uVar9;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  cVar3 = *(char *)(iVar4 + 0x3c);\n  if ('\x12' < cVar3) {\n    iVar6 = 0xb;\n    FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0x109db,\n                 &UNK_000dcb22 + unaff_EBP);\n    goto LAB_0007ab14;\n  }\n  *(byte *)(iVar4 + 1) = *(byte *)(iVar4 + 1) & 0xf9;\n  *(undefined2 *)(iVar4 + 0x2e) = 0;\n  piVar1 = *(int **)(iVar4 + 0x14);\n  *(undefined2 *)(iVar4 + 0x40 + cVar3 * 2) = *(undefined2 *)(iVar4 + 0x3e);\n  *(undefined4 *)(iVar4 + 0x70 + cVar3 * 4) = *(undefined4 *)(iVar4 + 0x6c);\n  *(undefined2 *)(iVar4 + 0x3e) = 0;\n  *(char *)(iVar4 + 0x3c) = cVar3 + '\x01';\n  if ((uint)piVar1[0xb] < uVar8) {\n    iVar6 = 0xb;\n    FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0xfea1,\n                 &UNK_000dcb22 + unaff_EBP);\n  }\n  else {\n    iVar5 = (**(code **)(*piVar1 + 200))(*piVar1,uVar8,&local_24,*(undefined1 *)(iVar4 + 2));\n    iVar6 = iVar5;\n    if (iVar5 == 0) {\n      pcVar7 = *(char **)(local_24 + 8);\n      *(char **)(iVar4 + 0x6c) = pcVar7;\n      if (*pcVar7 == '\0') {\n        if (uVar8 != *(uint *)(pcVar7 + 4)) {\n          uVar2 = *(undefined4 *)(local_24 + 4);\n          *(int *)(pcVar7 + 0x48) = local_24;\n          *(uint *)(pcVar7 + 4) = uVar8;\n          *(undefined4 *)(pcVar7 + 0x38) = uVar2;\n          *(int **)(pcVar7 + 0x34) = piVar1;\n          cVar3 = '\0';\n          if (uVar8 == 1) {\n            cVar3 = 'd';\n          }\n          pcVar7[9] = cVar3;\n        }\n        iVar6 = FUN_000777f0();\n        if (iVar6 != 0) {\n          if (*(int *)(iVar4 + 0x6c) != 0) {\n            FUN_0003be70();\n          }\n          goto LAB_0007ab00;\n        }\n        pcVar7 = *(char **)(iVar4 + 0x6c);\n      }\n      if ((*(short *)(pcVar7 + 0x16) != 0) && (iVar6 = iVar5, pcVar7[2] == *(char *)(iVar4 + 0x3d)))\n      goto LAB_0007ab14;\n      iVar6 = 0xb;\n      FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0xfeb7,\n                   &UNK_000dcb22 + unaff_EBP);\n      if (*(int *)(iVar4 + 0x6c) != 0) {\n        FUN_0003be70();\n      }\n    }\n  }\nLAB_0007ab00:\n  cVar3 = *(char *)(iVar4 + 0x3c) + -1;\n  *(char *)(iVar4 + 0x3c) = cVar3;\n  *(undefined4 *)(iVar4 + 0x6c) = *(undefined4 *)(iVar4 + 0x70 + cVar3 * 4);\nLAB_0007ab14:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar6;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_00153870();\n}" primitive_type (function_declarator "FUN_0007a9d0(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  int *piVar1;\n  undefined4 uVar2;\n  char cVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  char *pcVar7;\n  uint uVar8;\n  int unaff_EBP;\n  int in_GS_OFFSET;\n  undefined8 uVar9;\n  int local_24;\n  int local_20;\n  \n  uVar9 = FUN_0003a405();\n  uVar8 = (uint)((ulonglong)uVar9 >> 0x20);\n  iVar4 = (int)uVar9;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  cVar3 = *(char *)(iVar4 + 0x3c);\n  if ('\x12' < cVar3) {\n    iVar6 = 0xb;\n    FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0x109db,\n                 &UNK_000dcb22 + unaff_EBP);\n    goto LAB_0007ab14;\n  }\n  *(byte *)(iVar4 + 1) = *(byte *)(iVar4 + 1) & 0xf9;\n  *(undefined2 *)(iVar4 + 0x2e) = 0;\n  piVar1 = *(int **)(iVar4 + 0x14);\n  *(undefined2 *)(iVar4 + 0x40 + cVar3 * 2) = *(undefined2 *)(iVar4 + 0x3e);\n  *(undefined4 *)(iVar4 + 0x70 + cVar3 * 4) = *(undefined4 *)(iVar4 + 0x6c);\n  *(undefined2 *)(iVar4 + 0x3e) = 0;\n  *(char *)(iVar4 + 0x3c) = cVar3 + '\x01';\n  if ((uint)piVar1[0xb] < uVar8) {\n    iVar6 = 0xb;\n    FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0xfea1,\n                 &UNK_000dcb22 + unaff_EBP);\n  }\n  else {\n    iVar5 = (**(code **)(*piVar1 + 200))(*piVar1,uVar8,&local_24,*(undefined1 *)(iVar4 + 2));\n    iVar6 = iVar5;\n    if (iVar5 == 0) {\n      pcVar7 = *(char **)(local_24 + 8);\n      *(char **)(iVar4 + 0x6c) = pcVar7;\n      if (*pcVar7 == '\0') {\n        if (uVar8 != *(uint *)(pcVar7 + 4)) {\n          uVar2 = *(undefined4 *)(local_24 + 4);\n          *(int *)(pcVar7 + 0x48) = local_24;\n          *(uint *)(pcVar7 + 4) = uVar8;\n          *(undefined4 *)(pcVar7 + 0x38) = uVar2;\n          *(int **)(pcVar7 + 0x34) = piVar1;\n          cVar3 = '\0';\n          if (uVar8 == 1) {\n            cVar3 = 'd';\n          }\n          pcVar7[9] = cVar3;\n        }\n        iVar6 = FUN_000777f0();\n        if (iVar6 != 0) {\n          if (*(int *)(iVar4 + 0x6c) != 0) {\n            FUN_0003be70();\n          }\n          goto LAB_0007ab00;\n        }\n        pcVar7 = *(char **)(iVar4 + 0x6c);\n      }\n      if ((*(short *)(pcVar7 + 0x16) != 0) && (iVar6 = iVar5, pcVar7[2] == *(char *)(iVar4 + 0x3d)))\n      goto LAB_0007ab14;\n      iVar6 = 0xb;\n      FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0xfeb7,\n                   &UNK_000dcb22 + unaff_EBP);\n      if (*(int *)(iVar4 + 0x6c) != 0) {\n        FUN_0003be70();\n      }\n    }\n  }\nLAB_0007ab00:\n  cVar3 = *(char *)(iVar4 + 0x3c) + -1;\n  *(char *)(iVar4 + 0x3c) = cVar3;\n  *(undefined4 *)(iVar4 + 0x6c) = *(undefined4 *)(iVar4 + 0x70 + cVar3 * 4);\nLAB_0007ab14:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar6;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_00153870();\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "char cVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "int unaff_EBP;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "undefined8 uVar9;" type_identifier identifier ;) (declaration "int local_24;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "uVar9 = FUN_0003a405();" (assignment_expression "uVar9 = FUN_0003a405()" identifier = (call_expression "FUN_0003a405()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar8 = (uint)((ulonglong)uVar9 >> 0x20);" (assignment_expression "uVar8 = (uint)((ulonglong)uVar9 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)uVar9 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)uVar9 >> 0x20)" ( (binary_expression "(ulonglong)uVar9 >> 0x20" (cast_expression "(ulonglong)uVar9" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "iVar4 = (int)uVar9;" (assignment_expression "iVar4 = (int)uVar9" identifier = (cast_expression "(int)uVar9" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "cVar3 = *(char *)(iVar4 + 0x3c);" (assignment_expression "cVar3 = *(char *)(iVar4 + 0x3c)" identifier = (pointer_expression "*(char *)(iVar4 + 0x3c)" * (cast_expression "(char *)(iVar4 + 0x3c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x3c)" ( (binary_expression "iVar4 + 0x3c" identifier + number_literal) ))))) ;) (if_statement "if ('\x12' < cVar3) {\n    iVar6 = 0xb;\n    FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0x109db,\n                 &UNK_000dcb22 + unaff_EBP);\n    goto LAB_0007ab14;\n  }" if (parenthesized_expression "('\x12' < cVar3)" ( (binary_expression "'\x12' < cVar3" (char_literal "'\x12'" ' escape_sequence ') < identifier) )) (compound_statement "{\n    iVar6 = 0xb;\n    FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0x109db,\n                 &UNK_000dcb22 + unaff_EBP);\n    goto LAB_0007ab14;\n  }" { (expression_statement "iVar6 = 0xb;" (assignment_expression "iVar6 = 0xb" identifier = number_literal) ;) (expression_statement "FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0x109db,\n                 &UNK_000dcb22 + unaff_EBP);" (call_expression "FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0x109db,\n                 &UNK_000dcb22 + unaff_EBP)" identifier (argument_list "(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0x109db,\n                 &UNK_000dcb22 + unaff_EBP)" ( number_literal , (binary_expression "&UNK_000e1e69 + unaff_EBP" (pointer_expression "&UNK_000e1e69" & identifier) + identifier) , (binary_expression "&UNK_000e1f20 + unaff_EBP" (pointer_expression "&UNK_000e1f20" & identifier) + identifier) , number_literal , (binary_expression "&UNK_000dcb22 + unaff_EBP" (pointer_expression "&UNK_000dcb22" & identifier) + identifier) ))) ;) (goto_statement "goto LAB_0007ab14;" goto statement_identifier ;) })) (expression_statement "*(byte *)(iVar4 + 1) = *(byte *)(iVar4 + 1) & 0xf9;" (assignment_expression "*(byte *)(iVar4 + 1) = *(byte *)(iVar4 + 1) & 0xf9" (pointer_expression "*(byte *)(iVar4 + 1)" * (cast_expression "(byte *)(iVar4 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 1)" ( (binary_expression "iVar4 + 1" identifier + number_literal) )))) = (binary_expression "*(byte *)(iVar4 + 1) & 0xf9" (pointer_expression "*(byte *)(iVar4 + 1)" * (cast_expression "(byte *)(iVar4 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 1)" ( (binary_expression "iVar4 + 1" identifier + number_literal) )))) & number_literal)) ;) (expression_statement "*(undefined2 *)(iVar4 + 0x2e) = 0;" (assignment_expression "*(undefined2 *)(iVar4 + 0x2e) = 0" (pointer_expression "*(undefined2 *)(iVar4 + 0x2e)" * (cast_expression "(undefined2 *)(iVar4 + 0x2e)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x2e)" ( (binary_expression "iVar4 + 0x2e" identifier + number_literal) )))) = number_literal) ;) (expression_statement "piVar1 = *(int **)(iVar4 + 0x14);" (assignment_expression "piVar1 = *(int **)(iVar4 + 0x14)" identifier = (pointer_expression "*(int **)(iVar4 + 0x14)" * (cast_expression "(int **)(iVar4 + 0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + 0x14)" ( (binary_expression "iVar4 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "*(undefined2 *)(iVar4 + 0x40 + cVar3 * 2) = *(undefined2 *)(iVar4 + 0x3e);" (assignment_expression "*(undefined2 *)(iVar4 + 0x40 + cVar3 * 2) = *(undefined2 *)(iVar4 + 0x3e)" (pointer_expression "*(undefined2 *)(iVar4 + 0x40 + cVar3 * 2)" * (cast_expression "(undefined2 *)(iVar4 + 0x40 + cVar3 * 2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x40 + cVar3 * 2)" ( (binary_expression "iVar4 + 0x40 + cVar3 * 2" (binary_expression "iVar4 + 0x40" identifier + number_literal) + (binary_expression "cVar3 * 2" identifier * number_literal)) )))) = (pointer_expression "*(undefined2 *)(iVar4 + 0x3e)" * (cast_expression "(undefined2 *)(iVar4 + 0x3e)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x3e)" ( (binary_expression "iVar4 + 0x3e" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar4 + 0x70 + cVar3 * 4) = *(undefined4 *)(iVar4 + 0x6c);" (assignment_expression "*(undefined4 *)(iVar4 + 0x70 + cVar3 * 4) = *(undefined4 *)(iVar4 + 0x6c)" (pointer_expression "*(undefined4 *)(iVar4 + 0x70 + cVar3 * 4)" * (cast_expression "(undefined4 *)(iVar4 + 0x70 + cVar3 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x70 + cVar3 * 4)" ( (binary_expression "iVar4 + 0x70 + cVar3 * 4" (binary_expression "iVar4 + 0x70" identifier + number_literal) + (binary_expression "cVar3 * 4" identifier * number_literal)) )))) = (pointer_expression "*(undefined4 *)(iVar4 + 0x6c)" * (cast_expression "(undefined4 *)(iVar4 + 0x6c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x6c)" ( (binary_expression "iVar4 + 0x6c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined2 *)(iVar4 + 0x3e) = 0;" (assignment_expression "*(undefined2 *)(iVar4 + 0x3e) = 0" (pointer_expression "*(undefined2 *)(iVar4 + 0x3e)" * (cast_expression "(undefined2 *)(iVar4 + 0x3e)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x3e)" ( (binary_expression "iVar4 + 0x3e" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(char *)(iVar4 + 0x3c) = cVar3 + '\x01';" (assignment_expression "*(char *)(iVar4 + 0x3c) = cVar3 + '\x01'" (pointer_expression "*(char *)(iVar4 + 0x3c)" * (cast_expression "(char *)(iVar4 + 0x3c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x3c)" ( (binary_expression "iVar4 + 0x3c" identifier + number_literal) )))) = (binary_expression "cVar3 + '\x01'" identifier + (char_literal "'\x01'" ' escape_sequence '))) ;) (if_statement "if ((uint)piVar1[0xb] < uVar8) {\n    iVar6 = 0xb;\n    FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0xfea1,\n                 &UNK_000dcb22 + unaff_EBP);\n  }\n  else {\n    iVar5 = (**(code **)(*piVar1 + 200))(*piVar1,uVar8,&local_24,*(undefined1 *)(iVar4 + 2));\n    iVar6 = iVar5;\n    if (iVar5 == 0) {\n      pcVar7 = *(char **)(local_24 + 8);\n      *(char **)(iVar4 + 0x6c) = pcVar7;\n      if (*pcVar7 == '\0') {\n        if (uVar8 != *(uint *)(pcVar7 + 4)) {\n          uVar2 = *(undefined4 *)(local_24 + 4);\n          *(int *)(pcVar7 + 0x48) = local_24;\n          *(uint *)(pcVar7 + 4) = uVar8;\n          *(undefined4 *)(pcVar7 + 0x38) = uVar2;\n          *(int **)(pcVar7 + 0x34) = piVar1;\n          cVar3 = '\0';\n          if (uVar8 == 1) {\n            cVar3 = 'd';\n          }\n          pcVar7[9] = cVar3;\n        }\n        iVar6 = FUN_000777f0();\n        if (iVar6 != 0) {\n          if (*(int *)(iVar4 + 0x6c) != 0) {\n            FUN_0003be70();\n          }\n          goto LAB_0007ab00;\n        }\n        pcVar7 = *(char **)(iVar4 + 0x6c);\n      }\n      if ((*(short *)(pcVar7 + 0x16) != 0) && (iVar6 = iVar5, pcVar7[2] == *(char *)(iVar4 + 0x3d)))\n      goto LAB_0007ab14;\n      iVar6 = 0xb;\n      FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0xfeb7,\n                   &UNK_000dcb22 + unaff_EBP);\n      if (*(int *)(iVar4 + 0x6c) != 0) {\n        FUN_0003be70();\n      }\n    }\n  }" if (parenthesized_expression "((uint)piVar1[0xb] < uVar8)" ( (binary_expression "(uint)piVar1[0xb] < uVar8" (cast_expression "(uint)piVar1[0xb]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "piVar1[0xb]" identifier [ number_literal ])) < identifier) )) (compound_statement "{\n    iVar6 = 0xb;\n    FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0xfea1,\n                 &UNK_000dcb22 + unaff_EBP);\n  }" { (expression_statement "iVar6 = 0xb;" (assignment_expression "iVar6 = 0xb" identifier = number_literal) ;) (expression_statement "FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0xfea1,\n                 &UNK_000dcb22 + unaff_EBP);" (call_expression "FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0xfea1,\n                 &UNK_000dcb22 + unaff_EBP)" identifier (argument_list "(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0xfea1,\n                 &UNK_000dcb22 + unaff_EBP)" ( number_literal , (binary_expression "&UNK_000e1e69 + unaff_EBP" (pointer_expression "&UNK_000e1e69" & identifier) + identifier) , (binary_expression "&UNK_000e1f20 + unaff_EBP" (pointer_expression "&UNK_000e1f20" & identifier) + identifier) , number_literal , (binary_expression "&UNK_000dcb22 + unaff_EBP" (pointer_expression "&UNK_000dcb22" & identifier) + identifier) ))) ;) }) (else_clause "else {\n    iVar5 = (**(code **)(*piVar1 + 200))(*piVar1,uVar8,&local_24,*(undefined1 *)(iVar4 + 2));\n    iVar6 = iVar5;\n    if (iVar5 == 0) {\n      pcVar7 = *(char **)(local_24 + 8);\n      *(char **)(iVar4 + 0x6c) = pcVar7;\n      if (*pcVar7 == '\0') {\n        if (uVar8 != *(uint *)(pcVar7 + 4)) {\n          uVar2 = *(undefined4 *)(local_24 + 4);\n          *(int *)(pcVar7 + 0x48) = local_24;\n          *(uint *)(pcVar7 + 4) = uVar8;\n          *(undefined4 *)(pcVar7 + 0x38) = uVar2;\n          *(int **)(pcVar7 + 0x34) = piVar1;\n          cVar3 = '\0';\n          if (uVar8 == 1) {\n            cVar3 = 'd';\n          }\n          pcVar7[9] = cVar3;\n        }\n        iVar6 = FUN_000777f0();\n        if (iVar6 != 0) {\n          if (*(int *)(iVar4 + 0x6c) != 0) {\n            FUN_0003be70();\n          }\n          goto LAB_0007ab00;\n        }\n        pcVar7 = *(char **)(iVar4 + 0x6c);\n      }\n      if ((*(short *)(pcVar7 + 0x16) != 0) && (iVar6 = iVar5, pcVar7[2] == *(char *)(iVar4 + 0x3d)))\n      goto LAB_0007ab14;\n      iVar6 = 0xb;\n      FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0xfeb7,\n                   &UNK_000dcb22 + unaff_EBP);\n      if (*(int *)(iVar4 + 0x6c) != 0) {\n        FUN_0003be70();\n      }\n    }\n  }" else (compound_statement "{\n    iVar5 = (**(code **)(*piVar1 + 200))(*piVar1,uVar8,&local_24,*(undefined1 *)(iVar4 + 2));\n    iVar6 = iVar5;\n    if (iVar5 == 0) {\n      pcVar7 = *(char **)(local_24 + 8);\n      *(char **)(iVar4 + 0x6c) = pcVar7;\n      if (*pcVar7 == '\0') {\n        if (uVar8 != *(uint *)(pcVar7 + 4)) {\n          uVar2 = *(undefined4 *)(local_24 + 4);\n          *(int *)(pcVar7 + 0x48) = local_24;\n          *(uint *)(pcVar7 + 4) = uVar8;\n          *(undefined4 *)(pcVar7 + 0x38) = uVar2;\n          *(int **)(pcVar7 + 0x34) = piVar1;\n          cVar3 = '\0';\n          if (uVar8 == 1) {\n            cVar3 = 'd';\n          }\n          pcVar7[9] = cVar3;\n        }\n        iVar6 = FUN_000777f0();\n        if (iVar6 != 0) {\n          if (*(int *)(iVar4 + 0x6c) != 0) {\n            FUN_0003be70();\n          }\n          goto LAB_0007ab00;\n        }\n        pcVar7 = *(char **)(iVar4 + 0x6c);\n      }\n      if ((*(short *)(pcVar7 + 0x16) != 0) && (iVar6 = iVar5, pcVar7[2] == *(char *)(iVar4 + 0x3d)))\n      goto LAB_0007ab14;\n      iVar6 = 0xb;\n      FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0xfeb7,\n                   &UNK_000dcb22 + unaff_EBP);\n      if (*(int *)(iVar4 + 0x6c) != 0) {\n        FUN_0003be70();\n      }\n    }\n  }" { (expression_statement "iVar5 = (**(code **)(*piVar1 + 200))(*piVar1,uVar8,&local_24,*(undefined1 *)(iVar4 + 2));" (assignment_expression "iVar5 = (**(code **)(*piVar1 + 200))(*piVar1,uVar8,&local_24,*(undefined1 *)(iVar4 + 2))" identifier = (call_expression "(**(code **)(*piVar1 + 200))(*piVar1,uVar8,&local_24,*(undefined1 *)(iVar4 + 2))" (parenthesized_expression "(**(code **)(*piVar1 + 200))" ( (pointer_expression "**(code **)(*piVar1 + 200)" * (pointer_expression "*(code **)(*piVar1 + 200)" * (cast_expression "(code **)(*piVar1 + 200)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar1 + 200)" ( (binary_expression "*piVar1 + 200" (pointer_expression "*piVar1" * identifier) + number_literal) ))))) )) (argument_list "(*piVar1,uVar8,&local_24,*(undefined1 *)(iVar4 + 2))" ( (pointer_expression "*piVar1" * identifier) , identifier , (pointer_expression "&local_24" & identifier) , (pointer_expression "*(undefined1 *)(iVar4 + 2)" * (cast_expression "(undefined1 *)(iVar4 + 2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 2)" ( (binary_expression "iVar4 + 2" identifier + number_literal) )))) )))) ;) (expression_statement "iVar6 = iVar5;" (assignment_expression "iVar6 = iVar5" identifier = identifier) ;) (if_statement "if (iVar5 == 0) {\n      pcVar7 = *(char **)(local_24 + 8);\n      *(char **)(iVar4 + 0x6c) = pcVar7;\n      if (*pcVar7 == '\0') {\n        if (uVar8 != *(uint *)(pcVar7 + 4)) {\n          uVar2 = *(undefined4 *)(local_24 + 4);\n          *(int *)(pcVar7 + 0x48) = local_24;\n          *(uint *)(pcVar7 + 4) = uVar8;\n          *(undefined4 *)(pcVar7 + 0x38) = uVar2;\n          *(int **)(pcVar7 + 0x34) = piVar1;\n          cVar3 = '\0';\n          if (uVar8 == 1) {\n            cVar3 = 'd';\n          }\n          pcVar7[9] = cVar3;\n        }\n        iVar6 = FUN_000777f0();\n        if (iVar6 != 0) {\n          if (*(int *)(iVar4 + 0x6c) != 0) {\n            FUN_0003be70();\n          }\n          goto LAB_0007ab00;\n        }\n        pcVar7 = *(char **)(iVar4 + 0x6c);\n      }\n      if ((*(short *)(pcVar7 + 0x16) != 0) && (iVar6 = iVar5, pcVar7[2] == *(char *)(iVar4 + 0x3d)))\n      goto LAB_0007ab14;\n      iVar6 = 0xb;\n      FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0xfeb7,\n                   &UNK_000dcb22 + unaff_EBP);\n      if (*(int *)(iVar4 + 0x6c) != 0) {\n        FUN_0003be70();\n      }\n    }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n      pcVar7 = *(char **)(local_24 + 8);\n      *(char **)(iVar4 + 0x6c) = pcVar7;\n      if (*pcVar7 == '\0') {\n        if (uVar8 != *(uint *)(pcVar7 + 4)) {\n          uVar2 = *(undefined4 *)(local_24 + 4);\n          *(int *)(pcVar7 + 0x48) = local_24;\n          *(uint *)(pcVar7 + 4) = uVar8;\n          *(undefined4 *)(pcVar7 + 0x38) = uVar2;\n          *(int **)(pcVar7 + 0x34) = piVar1;\n          cVar3 = '\0';\n          if (uVar8 == 1) {\n            cVar3 = 'd';\n          }\n          pcVar7[9] = cVar3;\n        }\n        iVar6 = FUN_000777f0();\n        if (iVar6 != 0) {\n          if (*(int *)(iVar4 + 0x6c) != 0) {\n            FUN_0003be70();\n          }\n          goto LAB_0007ab00;\n        }\n        pcVar7 = *(char **)(iVar4 + 0x6c);\n      }\n      if ((*(short *)(pcVar7 + 0x16) != 0) && (iVar6 = iVar5, pcVar7[2] == *(char *)(iVar4 + 0x3d)))\n      goto LAB_0007ab14;\n      iVar6 = 0xb;\n      FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0xfeb7,\n                   &UNK_000dcb22 + unaff_EBP);\n      if (*(int *)(iVar4 + 0x6c) != 0) {\n        FUN_0003be70();\n      }\n    }" { (expression_statement "pcVar7 = *(char **)(local_24 + 8);" (assignment_expression "pcVar7 = *(char **)(local_24 + 8)" identifier = (pointer_expression "*(char **)(local_24 + 8)" * (cast_expression "(char **)(local_24 + 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_24 + 8)" ( (binary_expression "local_24 + 8" identifier + number_literal) ))))) ;) (expression_statement "*(char **)(iVar4 + 0x6c) = pcVar7;" (assignment_expression "*(char **)(iVar4 + 0x6c) = pcVar7" (pointer_expression "*(char **)(iVar4 + 0x6c)" * (cast_expression "(char **)(iVar4 + 0x6c)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + 0x6c)" ( (binary_expression "iVar4 + 0x6c" identifier + number_literal) )))) = identifier) ;) (if_statement "if (*pcVar7 == '\0') {\n        if (uVar8 != *(uint *)(pcVar7 + 4)) {\n          uVar2 = *(undefined4 *)(local_24 + 4);\n          *(int *)(pcVar7 + 0x48) = local_24;\n          *(uint *)(pcVar7 + 4) = uVar8;\n          *(undefined4 *)(pcVar7 + 0x38) = uVar2;\n          *(int **)(pcVar7 + 0x34) = piVar1;\n          cVar3 = '\0';\n          if (uVar8 == 1) {\n            cVar3 = 'd';\n          }\n          pcVar7[9] = cVar3;\n        }\n        iVar6 = FUN_000777f0();\n        if (iVar6 != 0) {\n          if (*(int *)(iVar4 + 0x6c) != 0) {\n            FUN_0003be70();\n          }\n          goto LAB_0007ab00;\n        }\n        pcVar7 = *(char **)(iVar4 + 0x6c);\n      }" if (parenthesized_expression "(*pcVar7 == '\0')" ( (binary_expression "*pcVar7 == '\0'" (pointer_expression "*pcVar7" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        if (uVar8 != *(uint *)(pcVar7 + 4)) {\n          uVar2 = *(undefined4 *)(local_24 + 4);\n          *(int *)(pcVar7 + 0x48) = local_24;\n          *(uint *)(pcVar7 + 4) = uVar8;\n          *(undefined4 *)(pcVar7 + 0x38) = uVar2;\n          *(int **)(pcVar7 + 0x34) = piVar1;\n          cVar3 = '\0';\n          if (uVar8 == 1) {\n            cVar3 = 'd';\n          }\n          pcVar7[9] = cVar3;\n        }\n        iVar6 = FUN_000777f0();\n        if (iVar6 != 0) {\n          if (*(int *)(iVar4 + 0x6c) != 0) {\n            FUN_0003be70();\n          }\n          goto LAB_0007ab00;\n        }\n        pcVar7 = *(char **)(iVar4 + 0x6c);\n      }" { (if_statement "if (uVar8 != *(uint *)(pcVar7 + 4)) {\n          uVar2 = *(undefined4 *)(local_24 + 4);\n          *(int *)(pcVar7 + 0x48) = local_24;\n          *(uint *)(pcVar7 + 4) = uVar8;\n          *(undefined4 *)(pcVar7 + 0x38) = uVar2;\n          *(int **)(pcVar7 + 0x34) = piVar1;\n          cVar3 = '\0';\n          if (uVar8 == 1) {\n            cVar3 = 'd';\n          }\n          pcVar7[9] = cVar3;\n        }" if (parenthesized_expression "(uVar8 != *(uint *)(pcVar7 + 4))" ( (binary_expression "uVar8 != *(uint *)(pcVar7 + 4)" identifier != (pointer_expression "*(uint *)(pcVar7 + 4)" * (cast_expression "(uint *)(pcVar7 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar7 + 4)" ( (binary_expression "pcVar7 + 4" identifier + number_literal) ))))) )) (compound_statement "{\n          uVar2 = *(undefined4 *)(local_24 + 4);\n          *(int *)(pcVar7 + 0x48) = local_24;\n          *(uint *)(pcVar7 + 4) = uVar8;\n          *(undefined4 *)(pcVar7 + 0x38) = uVar2;\n          *(int **)(pcVar7 + 0x34) = piVar1;\n          cVar3 = '\0';\n          if (uVar8 == 1) {\n            cVar3 = 'd';\n          }\n          pcVar7[9] = cVar3;\n        }" { (expression_statement "uVar2 = *(undefined4 *)(local_24 + 4);" (assignment_expression "uVar2 = *(undefined4 *)(local_24 + 4)" identifier = (pointer_expression "*(undefined4 *)(local_24 + 4)" * (cast_expression "(undefined4 *)(local_24 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_24 + 4)" ( (binary_expression "local_24 + 4" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(pcVar7 + 0x48) = local_24;" (assignment_expression "*(int *)(pcVar7 + 0x48) = local_24" (pointer_expression "*(int *)(pcVar7 + 0x48)" * (cast_expression "(int *)(pcVar7 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar7 + 0x48)" ( (binary_expression "pcVar7 + 0x48" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(pcVar7 + 4) = uVar8;" (assignment_expression "*(uint *)(pcVar7 + 4) = uVar8" (pointer_expression "*(uint *)(pcVar7 + 4)" * (cast_expression "(uint *)(pcVar7 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar7 + 4)" ( (binary_expression "pcVar7 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(pcVar7 + 0x38) = uVar2;" (assignment_expression "*(undefined4 *)(pcVar7 + 0x38) = uVar2" (pointer_expression "*(undefined4 *)(pcVar7 + 0x38)" * (cast_expression "(undefined4 *)(pcVar7 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar7 + 0x38)" ( (binary_expression "pcVar7 + 0x38" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(pcVar7 + 0x34) = piVar1;" (assignment_expression "*(int **)(pcVar7 + 0x34) = piVar1" (pointer_expression "*(int **)(pcVar7 + 0x34)" * (cast_expression "(int **)(pcVar7 + 0x34)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar7 + 0x34)" ( (binary_expression "pcVar7 + 0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "cVar3 = '\0';" (assignment_expression "cVar3 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (uVar8 == 1) {\n            cVar3 = 'd';\n          }" if (parenthesized_expression "(uVar8 == 1)" ( (binary_expression "uVar8 == 1" identifier == number_literal) )) (compound_statement "{\n            cVar3 = 'd';\n          }" { (expression_statement "cVar3 = 'd';" (assignment_expression "cVar3 = 'd'" identifier = (char_literal "'d'" ' character ')) ;) })) (expression_statement "pcVar7[9] = cVar3;" (assignment_expression "pcVar7[9] = cVar3" (subscript_expression "pcVar7[9]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "iVar6 = FUN_000777f0();" (assignment_expression "iVar6 = FUN_000777f0()" identifier = (call_expression "FUN_000777f0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar6 != 0) {\n          if (*(int *)(iVar4 + 0x6c) != 0) {\n            FUN_0003be70();\n          }\n          goto LAB_0007ab00;\n        }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n          if (*(int *)(iVar4 + 0x6c) != 0) {\n            FUN_0003be70();\n          }\n          goto LAB_0007ab00;\n        }" { (if_statement "if (*(int *)(iVar4 + 0x6c) != 0) {\n            FUN_0003be70();\n          }" if (parenthesized_expression "(*(int *)(iVar4 + 0x6c) != 0)" ( (binary_expression "*(int *)(iVar4 + 0x6c) != 0" (pointer_expression "*(int *)(iVar4 + 0x6c)" * (cast_expression "(int *)(iVar4 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x6c)" ( (binary_expression "iVar4 + 0x6c" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n            FUN_0003be70();\n          }" { (expression_statement "FUN_0003be70();" (call_expression "FUN_0003be70()" identifier (argument_list "()" ( ))) ;) })) (goto_statement "goto LAB_0007ab00;" goto statement_identifier ;) })) (expression_statement "pcVar7 = *(char **)(iVar4 + 0x6c);" (assignment_expression "pcVar7 = *(char **)(iVar4 + 0x6c)" identifier = (pointer_expression "*(char **)(iVar4 + 0x6c)" * (cast_expression "(char **)(iVar4 + 0x6c)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + 0x6c)" ( (binary_expression "iVar4 + 0x6c" identifier + number_literal) ))))) ;) })) (if_statement "if ((*(short *)(pcVar7 + 0x16) != 0) && (iVar6 = iVar5, pcVar7[2] == *(char *)(iVar4 + 0x3d)))\n      goto LAB_0007ab14;" if (parenthesized_expression "((*(short *)(pcVar7 + 0x16) != 0) && (iVar6 = iVar5, pcVar7[2] == *(char *)(iVar4 + 0x3d)))" ( (binary_expression "(*(short *)(pcVar7 + 0x16) != 0) && (iVar6 = iVar5, pcVar7[2] == *(char *)(iVar4 + 0x3d))" (parenthesized_expression "(*(short *)(pcVar7 + 0x16) != 0)" ( (binary_expression "*(short *)(pcVar7 + 0x16) != 0" (pointer_expression "*(short *)(pcVar7 + 0x16)" * (cast_expression "(short *)(pcVar7 + 0x16)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar7 + 0x16)" ( (binary_expression "pcVar7 + 0x16" identifier + number_literal) )))) != number_literal) )) && (parenthesized_expression "(iVar6 = iVar5, pcVar7[2] == *(char *)(iVar4 + 0x3d))" ( (comma_expression "iVar6 = iVar5, pcVar7[2] == *(char *)(iVar4 + 0x3d)" (assignment_expression "iVar6 = iVar5" identifier = identifier) , (binary_expression "pcVar7[2] == *(char *)(iVar4 + 0x3d)" (subscript_expression "pcVar7[2]" identifier [ number_literal ]) == (pointer_expression "*(char *)(iVar4 + 0x3d)" * (cast_expression "(char *)(iVar4 + 0x3d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x3d)" ( (binary_expression "iVar4 + 0x3d" identifier + number_literal) )))))) ))) )) (goto_statement "goto LAB_0007ab14;" goto statement_identifier ;)) (expression_statement "iVar6 = 0xb;" (assignment_expression "iVar6 = 0xb" identifier = number_literal) ;) (expression_statement "FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0xfeb7,\n                   &UNK_000dcb22 + unaff_EBP);" (call_expression "FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0xfeb7,\n                   &UNK_000dcb22 + unaff_EBP)" identifier (argument_list "(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0xfeb7,\n                   &UNK_000dcb22 + unaff_EBP)" ( number_literal , (binary_expression "&UNK_000e1e69 + unaff_EBP" (pointer_expression "&UNK_000e1e69" & identifier) + identifier) , (binary_expression "&UNK_000e1f20 + unaff_EBP" (pointer_expression "&UNK_000e1f20" & identifier) + identifier) , number_literal , (binary_expression "&UNK_000dcb22 + unaff_EBP" (pointer_expression "&UNK_000dcb22" & identifier) + identifier) ))) ;) (if_statement "if (*(int *)(iVar4 + 0x6c) != 0) {\n        FUN_0003be70();\n      }" if (parenthesized_expression "(*(int *)(iVar4 + 0x6c) != 0)" ( (binary_expression "*(int *)(iVar4 + 0x6c) != 0" (pointer_expression "*(int *)(iVar4 + 0x6c)" * (cast_expression "(int *)(iVar4 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x6c)" ( (binary_expression "iVar4 + 0x6c" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n        FUN_0003be70();\n      }" { (expression_statement "FUN_0003be70();" (call_expression "FUN_0003be70()" identifier (argument_list "()" ( ))) ;) })) })) }))) (labeled_statement "LAB_0007ab00:\n  cVar3 = *(char *)(iVar4 + 0x3c) + -1;" statement_identifier : (expression_statement "cVar3 = *(char *)(iVar4 + 0x3c) + -1;" (assignment_expression "cVar3 = *(char *)(iVar4 + 0x3c) + -1" identifier = (binary_expression "*(char *)(iVar4 + 0x3c) + -1" (pointer_expression "*(char *)(iVar4 + 0x3c)" * (cast_expression "(char *)(iVar4 + 0x3c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x3c)" ( (binary_expression "iVar4 + 0x3c" identifier + number_literal) )))) + number_literal)) ;)) (expression_statement "*(char *)(iVar4 + 0x3c) = cVar3;" (assignment_expression "*(char *)(iVar4 + 0x3c) = cVar3" (pointer_expression "*(char *)(iVar4 + 0x3c)" * (cast_expression "(char *)(iVar4 + 0x3c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x3c)" ( (binary_expression "iVar4 + 0x3c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(iVar4 + 0x6c) = *(undefined4 *)(iVar4 + 0x70 + cVar3 * 4);" (assignment_expression "*(undefined4 *)(iVar4 + 0x6c) = *(undefined4 *)(iVar4 + 0x70 + cVar3 * 4)" (pointer_expression "*(undefined4 *)(iVar4 + 0x6c)" * (cast_expression "(undefined4 *)(iVar4 + 0x6c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x6c)" ( (binary_expression "iVar4 + 0x6c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(iVar4 + 0x70 + cVar3 * 4)" * (cast_expression "(undefined4 *)(iVar4 + 0x70 + cVar3 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x70 + cVar3 * 4)" ( (binary_expression "iVar4 + 0x70 + cVar3 * 4" (binary_expression "iVar4 + 0x70" identifier + number_literal) + (binary_expression "cVar3 * 4" identifier * number_literal)) ))))) ;) (labeled_statement "LAB_0007ab14:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar6;\n  }" statement_identifier : (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar6;\n  }" if (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return iVar6;\n  }" { (return_statement "return iVar6;" return identifier ;) }))) comment (expression_statement "FUN_00153870();" (call_expression "FUN_00153870()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bp replaced with injection: get_pc_thunk.bp */\n\nint __regparm3 moveToChild(BtCursor *pCur,u32 newPgno)\n\n{\n  u16 uVar1;\n  BtShared *pBVar2;\n  u8 *puVar3;\n  char cVar4;\n  int iVar5;\n  int iVar6;\n  MemPage *pPage;\n  u8 uVar7;\n  int in_GS_OFFSET;\n  DbPage *pDbPage;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  cVar4 = pCur->iPage;\n  if ('\x12' < cVar4) {\n    iVar6 = 0xb;\n    sqlite3_log(0xb,"%s at line %d of [%.10s]","database corruption",0x109db,\n                "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");\n    goto LAB_0007ab14;\n  }\n  uVar1 = pCur->ix;\n  pCur->curFlags = pCur->curFlags & 0xf9;\n  (pCur->info).nSize = 0;\n  pBVar2 = pCur->pBt;\n  pCur->aiIdx[cVar4] = uVar1;\n  pCur->apPage[cVar4] = pCur->pPage;\n  pCur->ix = 0;\n  pCur->iPage = cVar4 + '\x01';\n  if (pBVar2->nPage < newPgno) {\n    iVar6 = 0xb;\n    sqlite3_log(0xb,"%s at line %d of [%.10s]","database corruption",0xfea1,\n                "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");\n  }\n  else {\n    iVar5 = (*pBVar2->pPager->xGet)(pBVar2->pPager,newPgno,&pDbPage,(int)pCur->curPagerFlags);\n    iVar6 = iVar5;\n    if (iVar5 == 0) {\n      pPage = (MemPage *)pDbPage->pExtra;\n      pCur->pPage = pPage;\n      if (pPage->isInit == '\0') {\n        if (newPgno != pPage->pgno) {\n          puVar3 = (u8 *)pDbPage->pData;\n          pPage->pDbPage = pDbPage;\n          pPage->pgno = newPgno;\n          pPage->aData = puVar3;\n          pPage->pBt = pBVar2;\n          uVar7 = '\0';\n          if (newPgno == 1) {\n            uVar7 = 'd';\n          }\n          pPage->hdrOffset = uVar7;\n          pPage = pCur->pPage;\n        }\n        iVar6 = btreeInitPage(pPage);\n        if (iVar6 != 0) {\n          if (pCur->pPage != (MemPage *)0x0) {\n            sqlite3PagerUnrefNotNull(pCur->pPage->pDbPage);\n          }\n          goto LAB_0007ab00;\n        }\n        pPage = pCur->pPage;\n      }\n      if ((pPage->nCell != 0) && (iVar6 = iVar5, pPage->intKey == pCur->curIntKey))\n      goto LAB_0007ab14;\n      iVar6 = 0xb;\n      sqlite3_log(0xb,"%s at line %d of [%.10s]","database corruption",0xfeb7,\n                  "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");\n      if (pCur->pPage != (MemPage *)0x0) {\n        sqlite3PagerUnrefNotNull(pCur->pPage->pDbPage);\n      }\n    }\n  }\nLAB_0007ab00:\n  cVar4 = pCur->iPage + -1;\n  pCur->iPage = cVar4;\n  pCur->pPage = pCur->apPage[cVar4];\nLAB_0007ab14:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar6;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}\n\n" comment (function_definition "int __regparm3 moveToChild(BtCursor *pCur,u32 newPgno)\n\n{\n  u16 uVar1;\n  BtShared *pBVar2;\n  u8 *puVar3;\n  char cVar4;\n  int iVar5;\n  int iVar6;\n  MemPage *pPage;\n  u8 uVar7;\n  int in_GS_OFFSET;\n  DbPage *pDbPage;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  cVar4 = pCur->iPage;\n  if ('\x12' < cVar4) {\n    iVar6 = 0xb;\n    sqlite3_log(0xb,"%s at line %d of [%.10s]","database corruption",0x109db,\n                "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");\n    goto LAB_0007ab14;\n  }\n  uVar1 = pCur->ix;\n  pCur->curFlags = pCur->curFlags & 0xf9;\n  (pCur->info).nSize = 0;\n  pBVar2 = pCur->pBt;\n  pCur->aiIdx[cVar4] = uVar1;\n  pCur->apPage[cVar4] = pCur->pPage;\n  pCur->ix = 0;\n  pCur->iPage = cVar4 + '\x01';\n  if (pBVar2->nPage < newPgno) {\n    iVar6 = 0xb;\n    sqlite3_log(0xb,"%s at line %d of [%.10s]","database corruption",0xfea1,\n                "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");\n  }\n  else {\n    iVar5 = (*pBVar2->pPager->xGet)(pBVar2->pPager,newPgno,&pDbPage,(int)pCur->curPagerFlags);\n    iVar6 = iVar5;\n    if (iVar5 == 0) {\n      pPage = (MemPage *)pDbPage->pExtra;\n      pCur->pPage = pPage;\n      if (pPage->isInit == '\0') {\n        if (newPgno != pPage->pgno) {\n          puVar3 = (u8 *)pDbPage->pData;\n          pPage->pDbPage = pDbPage;\n          pPage->pgno = newPgno;\n          pPage->aData = puVar3;\n          pPage->pBt = pBVar2;\n          uVar7 = '\0';\n          if (newPgno == 1) {\n            uVar7 = 'd';\n          }\n          pPage->hdrOffset = uVar7;\n          pPage = pCur->pPage;\n        }\n        iVar6 = btreeInitPage(pPage);\n        if (iVar6 != 0) {\n          if (pCur->pPage != (MemPage *)0x0) {\n            sqlite3PagerUnrefNotNull(pCur->pPage->pDbPage);\n          }\n          goto LAB_0007ab00;\n        }\n        pPage = pCur->pPage;\n      }\n      if ((pPage->nCell != 0) && (iVar6 = iVar5, pPage->intKey == pCur->curIntKey))\n      goto LAB_0007ab14;\n      iVar6 = 0xb;\n      sqlite3_log(0xb,"%s at line %d of [%.10s]","database corruption",0xfeb7,\n                  "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");\n      if (pCur->pPage != (MemPage *)0x0) {\n        sqlite3PagerUnrefNotNull(pCur->pPage->pDbPage);\n      }\n    }\n  }\nLAB_0007ab00:\n  cVar4 = pCur->iPage + -1;\n  pCur->iPage = cVar4;\n  pCur->pPage = pCur->apPage[cVar4];\nLAB_0007ab14:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar6;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "moveToChild(BtCursor *pCur,u32 newPgno)" identifier (parameter_list "(BtCursor *pCur,u32 newPgno)" ( (parameter_declaration "BtCursor *pCur" type_identifier (pointer_declarator "*pCur" * identifier)) , (parameter_declaration "u32 newPgno" type_identifier identifier) ))) (compound_statement "{\n  u16 uVar1;\n  BtShared *pBVar2;\n  u8 *puVar3;\n  char cVar4;\n  int iVar5;\n  int iVar6;\n  MemPage *pPage;\n  u8 uVar7;\n  int in_GS_OFFSET;\n  DbPage *pDbPage;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  cVar4 = pCur->iPage;\n  if ('\x12' < cVar4) {\n    iVar6 = 0xb;\n    sqlite3_log(0xb,"%s at line %d of [%.10s]","database corruption",0x109db,\n                "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");\n    goto LAB_0007ab14;\n  }\n  uVar1 = pCur->ix;\n  pCur->curFlags = pCur->curFlags & 0xf9;\n  (pCur->info).nSize = 0;\n  pBVar2 = pCur->pBt;\n  pCur->aiIdx[cVar4] = uVar1;\n  pCur->apPage[cVar4] = pCur->pPage;\n  pCur->ix = 0;\n  pCur->iPage = cVar4 + '\x01';\n  if (pBVar2->nPage < newPgno) {\n    iVar6 = 0xb;\n    sqlite3_log(0xb,"%s at line %d of [%.10s]","database corruption",0xfea1,\n                "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");\n  }\n  else {\n    iVar5 = (*pBVar2->pPager->xGet)(pBVar2->pPager,newPgno,&pDbPage,(int)pCur->curPagerFlags);\n    iVar6 = iVar5;\n    if (iVar5 == 0) {\n      pPage = (MemPage *)pDbPage->pExtra;\n      pCur->pPage = pPage;\n      if (pPage->isInit == '\0') {\n        if (newPgno != pPage->pgno) {\n          puVar3 = (u8 *)pDbPage->pData;\n          pPage->pDbPage = pDbPage;\n          pPage->pgno = newPgno;\n          pPage->aData = puVar3;\n          pPage->pBt = pBVar2;\n          uVar7 = '\0';\n          if (newPgno == 1) {\n            uVar7 = 'd';\n          }\n          pPage->hdrOffset = uVar7;\n          pPage = pCur->pPage;\n        }\n        iVar6 = btreeInitPage(pPage);\n        if (iVar6 != 0) {\n          if (pCur->pPage != (MemPage *)0x0) {\n            sqlite3PagerUnrefNotNull(pCur->pPage->pDbPage);\n          }\n          goto LAB_0007ab00;\n        }\n        pPage = pCur->pPage;\n      }\n      if ((pPage->nCell != 0) && (iVar6 = iVar5, pPage->intKey == pCur->curIntKey))\n      goto LAB_0007ab14;\n      iVar6 = 0xb;\n      sqlite3_log(0xb,"%s at line %d of [%.10s]","database corruption",0xfeb7,\n                  "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");\n      if (pCur->pPage != (MemPage *)0x0) {\n        sqlite3PagerUnrefNotNull(pCur->pPage->pDbPage);\n      }\n    }\n  }\nLAB_0007ab00:\n  cVar4 = pCur->iPage + -1;\n  pCur->iPage = cVar4;\n  pCur->pPage = pCur->apPage[cVar4];\nLAB_0007ab14:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar6;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}" { (declaration "u16 uVar1;" type_identifier identifier ;) (declaration "BtShared *pBVar2;" type_identifier (pointer_declarator "*pBVar2" * identifier) ;) (declaration "u8 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "char cVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "MemPage *pPage;" type_identifier (pointer_declarator "*pPage" * identifier) ;) (declaration "u8 uVar7;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "DbPage *pDbPage;" type_identifier (pointer_declarator "*pDbPage" * identifier) ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "cVar4 = pCur->iPage;" (assignment_expression "cVar4 = pCur->iPage" identifier = (field_expression "pCur->iPage" identifier -> field_identifier)) ;) (if_statement "if ('\x12' < cVar4) {\n    iVar6 = 0xb;\n    sqlite3_log(0xb,"%s at line %d of [%.10s]","database corruption",0x109db,\n                "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");\n    goto LAB_0007ab14;\n  }" if (parenthesized_expression "('\x12' < cVar4)" ( (binary_expression "'\x12' < cVar4" (char_literal "'\x12'" ' escape_sequence ') < identifier) )) (compound_statement "{\n    iVar6 = 0xb;\n    sqlite3_log(0xb,"%s at line %d of [%.10s]","database corruption",0x109db,\n                "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");\n    goto LAB_0007ab14;\n  }" { (expression_statement "iVar6 = 0xb;" (assignment_expression "iVar6 = 0xb" identifier = number_literal) ;) (expression_statement "sqlite3_log(0xb,"%s at line %d of [%.10s]","database corruption",0x109db,\n                "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");" (call_expression "sqlite3_log(0xb,"%s at line %d of [%.10s]","database corruption",0x109db,\n                "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1")" identifier (argument_list "(0xb,"%s at line %d of [%.10s]","database corruption",0x109db,\n                "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1")" ( number_literal , (string_literal ""%s at line %d of [%.10s]"" " string_content ") , (string_literal ""database corruption"" " string_content ") , number_literal , (string_literal ""bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1"" " string_content ") ))) ;) (goto_statement "goto LAB_0007ab14;" goto statement_identifier ;) })) (expression_statement "uVar1 = pCur->ix;" (assignment_expression "uVar1 = pCur->ix" identifier = (field_expression "pCur->ix" identifier -> field_identifier)) ;) (expression_statement "pCur->curFlags = pCur->curFlags & 0xf9;" (assignment_expression "pCur->curFlags = pCur->curFlags & 0xf9" (field_expression "pCur->curFlags" identifier -> field_identifier) = (binary_expression "pCur->curFlags & 0xf9" (field_expression "pCur->curFlags" identifier -> field_identifier) & number_literal)) ;) (expression_statement "(pCur->info).nSize = 0;" (assignment_expression "(pCur->info).nSize = 0" (field_expression "(pCur->info).nSize" (parenthesized_expression "(pCur->info)" ( (field_expression "pCur->info" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "pBVar2 = pCur->pBt;" (assignment_expression "pBVar2 = pCur->pBt" identifier = (field_expression "pCur->pBt" identifier -> field_identifier)) ;) (expression_statement "pCur->aiIdx[cVar4] = uVar1;" (assignment_expression "pCur->aiIdx[cVar4] = uVar1" (subscript_expression "pCur->aiIdx[cVar4]" (field_expression "pCur->aiIdx" identifier -> field_identifier) [ identifier ]) = identifier) ;) (expression_statement "pCur->apPage[cVar4] = pCur->pPage;" (assignment_expression "pCur->apPage[cVar4] = pCur->pPage" (subscript_expression "pCur->apPage[cVar4]" (field_expression "pCur->apPage" identifier -> field_identifier) [ identifier ]) = (field_expression "pCur->pPage" identifier -> field_identifier)) ;) (expression_statement "pCur->ix = 0;" (assignment_expression "pCur->ix = 0" (field_expression "pCur->ix" identifier -> field_identifier) = number_literal) ;) (expression_statement "pCur->iPage = cVar4 + '\x01';" (assignment_expression "pCur->iPage = cVar4 + '\x01'" (field_expression "pCur->iPage" identifier -> field_identifier) = (binary_expression "cVar4 + '\x01'" identifier + (char_literal "'\x01'" ' escape_sequence '))) ;) (if_statement "if (pBVar2->nPage < newPgno) {\n    iVar6 = 0xb;\n    sqlite3_log(0xb,"%s at line %d of [%.10s]","database corruption",0xfea1,\n                "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");\n  }\n  else {\n    iVar5 = (*pBVar2->pPager->xGet)(pBVar2->pPager,newPgno,&pDbPage,(int)pCur->curPagerFlags);\n    iVar6 = iVar5;\n    if (iVar5 == 0) {\n      pPage = (MemPage *)pDbPage->pExtra;\n      pCur->pPage = pPage;\n      if (pPage->isInit == '\0') {\n        if (newPgno != pPage->pgno) {\n          puVar3 = (u8 *)pDbPage->pData;\n          pPage->pDbPage = pDbPage;\n          pPage->pgno = newPgno;\n          pPage->aData = puVar3;\n          pPage->pBt = pBVar2;\n          uVar7 = '\0';\n          if (newPgno == 1) {\n            uVar7 = 'd';\n          }\n          pPage->hdrOffset = uVar7;\n          pPage = pCur->pPage;\n        }\n        iVar6 = btreeInitPage(pPage);\n        if (iVar6 != 0) {\n          if (pCur->pPage != (MemPage *)0x0) {\n            sqlite3PagerUnrefNotNull(pCur->pPage->pDbPage);\n          }\n          goto LAB_0007ab00;\n        }\n        pPage = pCur->pPage;\n      }\n      if ((pPage->nCell != 0) && (iVar6 = iVar5, pPage->intKey == pCur->curIntKey))\n      goto LAB_0007ab14;\n      iVar6 = 0xb;\n      sqlite3_log(0xb,"%s at line %d of [%.10s]","database corruption",0xfeb7,\n                  "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");\n      if (pCur->pPage != (MemPage *)0x0) {\n        sqlite3PagerUnrefNotNull(pCur->pPage->pDbPage);\n      }\n    }\n  }" if (parenthesized_expression "(pBVar2->nPage < newPgno)" ( (binary_expression "pBVar2->nPage < newPgno" (field_expression "pBVar2->nPage" identifier -> field_identifier) < identifier) )) (compound_statement "{\n    iVar6 = 0xb;\n    sqlite3_log(0xb,"%s at line %d of [%.10s]","database corruption",0xfea1,\n                "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");\n  }" { (expression_statement "iVar6 = 0xb;" (assignment_expression "iVar6 = 0xb" identifier = number_literal) ;) (expression_statement "sqlite3_log(0xb,"%s at line %d of [%.10s]","database corruption",0xfea1,\n                "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");" (call_expression "sqlite3_log(0xb,"%s at line %d of [%.10s]","database corruption",0xfea1,\n                "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1")" identifier (argument_list "(0xb,"%s at line %d of [%.10s]","database corruption",0xfea1,\n                "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1")" ( number_literal , (string_literal ""%s at line %d of [%.10s]"" " string_content ") , (string_literal ""database corruption"" " string_content ") , number_literal , (string_literal ""bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1"" " string_content ") ))) ;) }) (else_clause "else {\n    iVar5 = (*pBVar2->pPager->xGet)(pBVar2->pPager,newPgno,&pDbPage,(int)pCur->curPagerFlags);\n    iVar6 = iVar5;\n    if (iVar5 == 0) {\n      pPage = (MemPage *)pDbPage->pExtra;\n      pCur->pPage = pPage;\n      if (pPage->isInit == '\0') {\n        if (newPgno != pPage->pgno) {\n          puVar3 = (u8 *)pDbPage->pData;\n          pPage->pDbPage = pDbPage;\n          pPage->pgno = newPgno;\n          pPage->aData = puVar3;\n          pPage->pBt = pBVar2;\n          uVar7 = '\0';\n          if (newPgno == 1) {\n            uVar7 = 'd';\n          }\n          pPage->hdrOffset = uVar7;\n          pPage = pCur->pPage;\n        }\n        iVar6 = btreeInitPage(pPage);\n        if (iVar6 != 0) {\n          if (pCur->pPage != (MemPage *)0x0) {\n            sqlite3PagerUnrefNotNull(pCur->pPage->pDbPage);\n          }\n          goto LAB_0007ab00;\n        }\n        pPage = pCur->pPage;\n      }\n      if ((pPage->nCell != 0) && (iVar6 = iVar5, pPage->intKey == pCur->curIntKey))\n      goto LAB_0007ab14;\n      iVar6 = 0xb;\n      sqlite3_log(0xb,"%s at line %d of [%.10s]","database corruption",0xfeb7,\n                  "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");\n      if (pCur->pPage != (MemPage *)0x0) {\n        sqlite3PagerUnrefNotNull(pCur->pPage->pDbPage);\n      }\n    }\n  }" else (compound_statement "{\n    iVar5 = (*pBVar2->pPager->xGet)(pBVar2->pPager,newPgno,&pDbPage,(int)pCur->curPagerFlags);\n    iVar6 = iVar5;\n    if (iVar5 == 0) {\n      pPage = (MemPage *)pDbPage->pExtra;\n      pCur->pPage = pPage;\n      if (pPage->isInit == '\0') {\n        if (newPgno != pPage->pgno) {\n          puVar3 = (u8 *)pDbPage->pData;\n          pPage->pDbPage = pDbPage;\n          pPage->pgno = newPgno;\n          pPage->aData = puVar3;\n          pPage->pBt = pBVar2;\n          uVar7 = '\0';\n          if (newPgno == 1) {\n            uVar7 = 'd';\n          }\n          pPage->hdrOffset = uVar7;\n          pPage = pCur->pPage;\n        }\n        iVar6 = btreeInitPage(pPage);\n        if (iVar6 != 0) {\n          if (pCur->pPage != (MemPage *)0x0) {\n            sqlite3PagerUnrefNotNull(pCur->pPage->pDbPage);\n          }\n          goto LAB_0007ab00;\n        }\n        pPage = pCur->pPage;\n      }\n      if ((pPage->nCell != 0) && (iVar6 = iVar5, pPage->intKey == pCur->curIntKey))\n      goto LAB_0007ab14;\n      iVar6 = 0xb;\n      sqlite3_log(0xb,"%s at line %d of [%.10s]","database corruption",0xfeb7,\n                  "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");\n      if (pCur->pPage != (MemPage *)0x0) {\n        sqlite3PagerUnrefNotNull(pCur->pPage->pDbPage);\n      }\n    }\n  }" { (expression_statement "iVar5 = (*pBVar2->pPager->xGet)(pBVar2->pPager,newPgno,&pDbPage,(int)pCur->curPagerFlags);" (assignment_expression "iVar5 = (*pBVar2->pPager->xGet)(pBVar2->pPager,newPgno,&pDbPage,(int)pCur->curPagerFlags)" identifier = (call_expression "(*pBVar2->pPager->xGet)(pBVar2->pPager,newPgno,&pDbPage,(int)pCur->curPagerFlags)" (parenthesized_expression "(*pBVar2->pPager->xGet)" ( (pointer_expression "*pBVar2->pPager->xGet" * (field_expression "pBVar2->pPager->xGet" (field_expression "pBVar2->pPager" identifier -> field_identifier) -> field_identifier)) )) (argument_list "(pBVar2->pPager,newPgno,&pDbPage,(int)pCur->curPagerFlags)" ( (field_expression "pBVar2->pPager" identifier -> field_identifier) , identifier , (pointer_expression "&pDbPage" & identifier) , (cast_expression "(int)pCur->curPagerFlags" ( (type_descriptor "int" primitive_type) ) (field_expression "pCur->curPagerFlags" identifier -> field_identifier)) )))) ;) (expression_statement "iVar6 = iVar5;" (assignment_expression "iVar6 = iVar5" identifier = identifier) ;) (if_statement "if (iVar5 == 0) {\n      pPage = (MemPage *)pDbPage->pExtra;\n      pCur->pPage = pPage;\n      if (pPage->isInit == '\0') {\n        if (newPgno != pPage->pgno) {\n          puVar3 = (u8 *)pDbPage->pData;\n          pPage->pDbPage = pDbPage;\n          pPage->pgno = newPgno;\n          pPage->aData = puVar3;\n          pPage->pBt = pBVar2;\n          uVar7 = '\0';\n          if (newPgno == 1) {\n            uVar7 = 'd';\n          }\n          pPage->hdrOffset = uVar7;\n          pPage = pCur->pPage;\n        }\n        iVar6 = btreeInitPage(pPage);\n        if (iVar6 != 0) {\n          if (pCur->pPage != (MemPage *)0x0) {\n            sqlite3PagerUnrefNotNull(pCur->pPage->pDbPage);\n          }\n          goto LAB_0007ab00;\n        }\n        pPage = pCur->pPage;\n      }\n      if ((pPage->nCell != 0) && (iVar6 = iVar5, pPage->intKey == pCur->curIntKey))\n      goto LAB_0007ab14;\n      iVar6 = 0xb;\n      sqlite3_log(0xb,"%s at line %d of [%.10s]","database corruption",0xfeb7,\n                  "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");\n      if (pCur->pPage != (MemPage *)0x0) {\n        sqlite3PagerUnrefNotNull(pCur->pPage->pDbPage);\n      }\n    }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n      pPage = (MemPage *)pDbPage->pExtra;\n      pCur->pPage = pPage;\n      if (pPage->isInit == '\0') {\n        if (newPgno != pPage->pgno) {\n          puVar3 = (u8 *)pDbPage->pData;\n          pPage->pDbPage = pDbPage;\n          pPage->pgno = newPgno;\n          pPage->aData = puVar3;\n          pPage->pBt = pBVar2;\n          uVar7 = '\0';\n          if (newPgno == 1) {\n            uVar7 = 'd';\n          }\n          pPage->hdrOffset = uVar7;\n          pPage = pCur->pPage;\n        }\n        iVar6 = btreeInitPage(pPage);\n        if (iVar6 != 0) {\n          if (pCur->pPage != (MemPage *)0x0) {\n            sqlite3PagerUnrefNotNull(pCur->pPage->pDbPage);\n          }\n          goto LAB_0007ab00;\n        }\n        pPage = pCur->pPage;\n      }\n      if ((pPage->nCell != 0) && (iVar6 = iVar5, pPage->intKey == pCur->curIntKey))\n      goto LAB_0007ab14;\n      iVar6 = 0xb;\n      sqlite3_log(0xb,"%s at line %d of [%.10s]","database corruption",0xfeb7,\n                  "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");\n      if (pCur->pPage != (MemPage *)0x0) {\n        sqlite3PagerUnrefNotNull(pCur->pPage->pDbPage);\n      }\n    }" { (expression_statement "pPage = (MemPage *)pDbPage->pExtra;" (assignment_expression "pPage = (MemPage *)pDbPage->pExtra" identifier = (cast_expression "(MemPage *)pDbPage->pExtra" ( (type_descriptor "MemPage *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pDbPage->pExtra" identifier -> field_identifier))) ;) (expression_statement "pCur->pPage = pPage;" (assignment_expression "pCur->pPage = pPage" (field_expression "pCur->pPage" identifier -> field_identifier) = identifier) ;) (if_statement "if (pPage->isInit == '\0') {\n        if (newPgno != pPage->pgno) {\n          puVar3 = (u8 *)pDbPage->pData;\n          pPage->pDbPage = pDbPage;\n          pPage->pgno = newPgno;\n          pPage->aData = puVar3;\n          pPage->pBt = pBVar2;\n          uVar7 = '\0';\n          if (newPgno == 1) {\n            uVar7 = 'd';\n          }\n          pPage->hdrOffset = uVar7;\n          pPage = pCur->pPage;\n        }\n        iVar6 = btreeInitPage(pPage);\n        if (iVar6 != 0) {\n          if (pCur->pPage != (MemPage *)0x0) {\n            sqlite3PagerUnrefNotNull(pCur->pPage->pDbPage);\n          }\n          goto LAB_0007ab00;\n        }\n        pPage = pCur->pPage;\n      }" if (parenthesized_expression "(pPage->isInit == '\0')" ( (binary_expression "pPage->isInit == '\0'" (field_expression "pPage->isInit" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        if (newPgno != pPage->pgno) {\n          puVar3 = (u8 *)pDbPage->pData;\n          pPage->pDbPage = pDbPage;\n          pPage->pgno = newPgno;\n          pPage->aData = puVar3;\n          pPage->pBt = pBVar2;\n          uVar7 = '\0';\n          if (newPgno == 1) {\n            uVar7 = 'd';\n          }\n          pPage->hdrOffset = uVar7;\n          pPage = pCur->pPage;\n        }\n        iVar6 = btreeInitPage(pPage);\n        if (iVar6 != 0) {\n          if (pCur->pPage != (MemPage *)0x0) {\n            sqlite3PagerUnrefNotNull(pCur->pPage->pDbPage);\n          }\n          goto LAB_0007ab00;\n        }\n        pPage = pCur->pPage;\n      }" { (if_statement "if (newPgno != pPage->pgno) {\n          puVar3 = (u8 *)pDbPage->pData;\n          pPage->pDbPage = pDbPage;\n          pPage->pgno = newPgno;\n          pPage->aData = puVar3;\n          pPage->pBt = pBVar2;\n          uVar7 = '\0';\n          if (newPgno == 1) {\n            uVar7 = 'd';\n          }\n          pPage->hdrOffset = uVar7;\n          pPage = pCur->pPage;\n        }" if (parenthesized_expression "(newPgno != pPage->pgno)" ( (binary_expression "newPgno != pPage->pgno" identifier != (field_expression "pPage->pgno" identifier -> field_identifier)) )) (compound_statement "{\n          puVar3 = (u8 *)pDbPage->pData;\n          pPage->pDbPage = pDbPage;\n          pPage->pgno = newPgno;\n          pPage->aData = puVar3;\n          pPage->pBt = pBVar2;\n          uVar7 = '\0';\n          if (newPgno == 1) {\n            uVar7 = 'd';\n          }\n          pPage->hdrOffset = uVar7;\n          pPage = pCur->pPage;\n        }" { (expression_statement "puVar3 = (u8 *)pDbPage->pData;" (assignment_expression "puVar3 = (u8 *)pDbPage->pData" identifier = (cast_expression "(u8 *)pDbPage->pData" ( (type_descriptor "u8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pDbPage->pData" identifier -> field_identifier))) ;) (expression_statement "pPage->pDbPage = pDbPage;" (assignment_expression "pPage->pDbPage = pDbPage" (field_expression "pPage->pDbPage" identifier -> field_identifier) = identifier) ;) (expression_statement "pPage->pgno = newPgno;" (assignment_expression "pPage->pgno = newPgno" (field_expression "pPage->pgno" identifier -> field_identifier) = identifier) ;) (expression_statement "pPage->aData = puVar3;" (assignment_expression "pPage->aData = puVar3" (field_expression "pPage->aData" identifier -> field_identifier) = identifier) ;) (expression_statement "pPage->pBt = pBVar2;" (assignment_expression "pPage->pBt = pBVar2" (field_expression "pPage->pBt" identifier -> field_identifier) = identifier) ;) (expression_statement "uVar7 = '\0';" (assignment_expression "uVar7 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (newPgno == 1) {\n            uVar7 = 'd';\n          }" if (parenthesized_expression "(newPgno == 1)" ( (binary_expression "newPgno == 1" identifier == number_literal) )) (compound_statement "{\n            uVar7 = 'd';\n          }" { (expression_statement "uVar7 = 'd';" (assignment_expression "uVar7 = 'd'" identifier = (char_literal "'d'" ' character ')) ;) })) (expression_statement "pPage->hdrOffset = uVar7;" (assignment_expression "pPage->hdrOffset = uVar7" (field_expression "pPage->hdrOffset" identifier -> field_identifier) = identifier) ;) (expression_statement "pPage = pCur->pPage;" (assignment_expression "pPage = pCur->pPage" identifier = (field_expression "pCur->pPage" identifier -> field_identifier)) ;) })) (expression_statement "iVar6 = btreeInitPage(pPage);" (assignment_expression "iVar6 = btreeInitPage(pPage)" identifier = (call_expression "btreeInitPage(pPage)" identifier (argument_list "(pPage)" ( identifier )))) ;) (if_statement "if (iVar6 != 0) {\n          if (pCur->pPage != (MemPage *)0x0) {\n            sqlite3PagerUnrefNotNull(pCur->pPage->pDbPage);\n          }\n          goto LAB_0007ab00;\n        }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n          if (pCur->pPage != (MemPage *)0x0) {\n            sqlite3PagerUnrefNotNull(pCur->pPage->pDbPage);\n          }\n          goto LAB_0007ab00;\n        }" { (if_statement "if (pCur->pPage != (MemPage *)0x0) {\n            sqlite3PagerUnrefNotNull(pCur->pPage->pDbPage);\n          }" if (parenthesized_expression "(pCur->pPage != (MemPage *)0x0)" ( (binary_expression "pCur->pPage != (MemPage *)0x0" (field_expression "pCur->pPage" identifier -> field_identifier) != (cast_expression "(MemPage *)0x0" ( (type_descriptor "MemPage *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            sqlite3PagerUnrefNotNull(pCur->pPage->pDbPage);\n          }" { (expression_statement "sqlite3PagerUnrefNotNull(pCur->pPage->pDbPage);" (call_expression "sqlite3PagerUnrefNotNull(pCur->pPage->pDbPage)" identifier (argument_list "(pCur->pPage->pDbPage)" ( (field_expression "pCur->pPage->pDbPage" (field_expression "pCur->pPage" identifier -> field_identifier) -> field_identifier) ))) ;) })) (goto_statement "goto LAB_0007ab00;" goto statement_identifier ;) })) (expression_statement "pPage = pCur->pPage;" (assignment_expression "pPage = pCur->pPage" identifier = (field_expression "pCur->pPage" identifier -> field_identifier)) ;) })) (if_statement "if ((pPage->nCell != 0) && (iVar6 = iVar5, pPage->intKey == pCur->curIntKey))\n      goto LAB_0007ab14;" if (parenthesized_expression "((pPage->nCell != 0) && (iVar6 = iVar5, pPage->intKey == pCur->curIntKey))" ( (binary_expression "(pPage->nCell != 0) && (iVar6 = iVar5, pPage->intKey == pCur->curIntKey)" (parenthesized_expression "(pPage->nCell != 0)" ( (binary_expression "pPage->nCell != 0" (field_expression "pPage->nCell" identifier -> field_identifier) != number_literal) )) && (parenthesized_expression "(iVar6 = iVar5, pPage->intKey == pCur->curIntKey)" ( (comma_expression "iVar6 = iVar5, pPage->intKey == pCur->curIntKey" (assignment_expression "iVar6 = iVar5" identifier = identifier) , (binary_expression "pPage->intKey == pCur->curIntKey" (field_expression "pPage->intKey" identifier -> field_identifier) == (field_expression "pCur->curIntKey" identifier -> field_identifier))) ))) )) (goto_statement "goto LAB_0007ab14;" goto statement_identifier ;)) (expression_statement "iVar6 = 0xb;" (assignment_expression "iVar6 = 0xb" identifier = number_literal) ;) (expression_statement "sqlite3_log(0xb,"%s at line %d of [%.10s]","database corruption",0xfeb7,\n                  "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");" (call_expression "sqlite3_log(0xb,"%s at line %d of [%.10s]","database corruption",0xfeb7,\n                  "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1")" identifier (argument_list "(0xb,"%s at line %d of [%.10s]","database corruption",0xfeb7,\n                  "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1")" ( number_literal , (string_literal ""%s at line %d of [%.10s]"" " string_content ") , (string_literal ""database corruption"" " string_content ") , number_literal , (string_literal ""bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1"" " string_content ") ))) ;) (if_statement "if (pCur->pPage != (MemPage *)0x0) {\n        sqlite3PagerUnrefNotNull(pCur->pPage->pDbPage);\n      }" if (parenthesized_expression "(pCur->pPage != (MemPage *)0x0)" ( (binary_expression "pCur->pPage != (MemPage *)0x0" (field_expression "pCur->pPage" identifier -> field_identifier) != (cast_expression "(MemPage *)0x0" ( (type_descriptor "MemPage *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        sqlite3PagerUnrefNotNull(pCur->pPage->pDbPage);\n      }" { (expression_statement "sqlite3PagerUnrefNotNull(pCur->pPage->pDbPage);" (call_expression "sqlite3PagerUnrefNotNull(pCur->pPage->pDbPage)" identifier (argument_list "(pCur->pPage->pDbPage)" ( (field_expression "pCur->pPage->pDbPage" (field_expression "pCur->pPage" identifier -> field_identifier) -> field_identifier) ))) ;) })) })) }))) (labeled_statement "LAB_0007ab00:\n  cVar4 = pCur->iPage + -1;" statement_identifier : (expression_statement "cVar4 = pCur->iPage + -1;" (assignment_expression "cVar4 = pCur->iPage + -1" identifier = (binary_expression "pCur->iPage + -1" (field_expression "pCur->iPage" identifier -> field_identifier) + number_literal)) ;)) (expression_statement "pCur->iPage = cVar4;" (assignment_expression "pCur->iPage = cVar4" (field_expression "pCur->iPage" identifier -> field_identifier) = identifier) ;) (expression_statement "pCur->pPage = pCur->apPage[cVar4];" (assignment_expression "pCur->pPage = pCur->apPage[cVar4]" (field_expression "pCur->pPage" identifier -> field_identifier) = (subscript_expression "pCur->apPage[cVar4]" (field_expression "pCur->apPage" identifier -> field_identifier) [ identifier ])) ;) (labeled_statement "LAB_0007ab14:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar6;\n  }" statement_identifier : (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar6;\n  }" if (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return iVar6;\n  }" { (return_statement "return iVar6;" return identifier ;) }))) comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "int FUN_0007a9d0(void)\n\n{\n  int *piVar1;\n  undefined4 uVar2;\n  char cVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  char *pcVar7;\n  uint uVar8;\n  int unaff_EBP;\n  int in_GS_OFFSET;\n  undefined8 uVar9;\n  int local_24;\n  int local_20;\n  \n  uVar9 = FUN_0003a405();\n  uVar8 = (uint)((ulonglong)uVar9 >> 0x20);\n  iVar4 = (int)uVar9;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  cVar3 = *(char *)(iVar4 + 0x3c);\n  if ('\x12' < cVar3) {\n    iVar6 = 0xb;\n    FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0x109db,\n                 &UNK_000dcb22 + unaff_EBP);\n    goto LAB_0007ab14;\n  }\n  *(byte *)(iVar4 + 1) = *(byte *)(iVar4 + 1) & 0xf9;\n  *(undefined2 *)(iVar4 + 0x2e) = 0;\n  piVar1 = *(int **)(iVar4 + 0x14);\n  *(undefined2 *)(iVar4 + 0x40 + cVar3 * 2) = *(undefined2 *)(iVar4 + 0x3e);\n  *(undefined4 *)(iVar4 + 0x70 + cVar3 * 4) = *(undefined4 *)(iVar4 + 0x6c);\n  *(undefined2 *)(iVar4 + 0x3e) = 0;\n  *(char *)(iVar4 + 0x3c) = cVar3 + '\x01';\n  if ((uint)piVar1[0xb] < uVar8) {\n    iVar6 = 0xb;\n    FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0xfea1,\n                 &UNK_000dcb22 + unaff_EBP);\n  }\n  else {\n    iVar5 = (**(code **)(*piVar1 + 200))(*piVar1,uVar8,&local_24,*(undefined1 *)(iVar4 + 2));\n    iVar6 = iVar5;\n    if (iVar5 == 0) {\n      pcVar7 = *(char **)(local_24 + 8);\n      *(char **)(iVar4 + 0x6c) = pcVar7;\n      if (*pcVar7 == '\0') {\n        if (uVar8 != *(uint *)(pcVar7 + 4)) {\n          uVar2 = *(undefined4 *)(local_24 + 4);\n          *(int *)(pcVar7 + 0x48) = local_24;\n          *(uint *)(pcVar7 + 4) = uVar8;\n          *(undefined4 *)(pcVar7 + 0x38) = uVar2;\n          *(int **)(pcVar7 + 0x34) = piVar1;\n          cVar3 = '\0';\n          if (uVar8 == 1) {\n            cVar3 = 'd';\n          }\n          pcVar7[9] = cVar3;\n        }\n        iVar6 = FUN_000777f0();\n        if (iVar6 != 0) {\n          if (*(int *)(iVar4 + 0x6c) != 0) {\n            FUN_0003be70();\n          }\n          goto LAB_0007ab00;\n        }\n        pcVar7 = *(char **)(iVar4 + 0x6c);\n      }\n      if ((*(short *)(pcVar7 + 0x16) != 0) && (iVar6 = iVar5, pcVar7[2] == *(char *)(iVar4 + 0x3d)))\n      goto LAB_0007ab14;\n      iVar6 = 0xb;\n      FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0xfeb7,\n                   &UNK_000dcb22 + unaff_EBP);\n      if (*(int *)(iVar4 + 0x6c) != 0) {\n        FUN_0003be70();\n      }\n    }\n  }\nLAB_0007ab00:\n  cVar3 = *(char *)(iVar4 + 0x3c) + -1;\n  *(char *)(iVar4 + 0x3c) = cVar3;\n  *(undefined4 *)(iVar4 + 0x6c) = *(undefined4 *)(iVar4 + 0x70 + cVar3 * 4);\nLAB_0007ab14:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar6;\n  }\n                    \n  FUN_00153870();\n}\n\n" (function_definition "int FUN_0007a9d0(void)\n\n{\n  int *piVar1;\n  undefined4 uVar2;\n  char cVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  char *pcVar7;\n  uint uVar8;\n  int unaff_EBP;\n  int in_GS_OFFSET;\n  undefined8 uVar9;\n  int local_24;\n  int local_20;\n  \n  uVar9 = FUN_0003a405();\n  uVar8 = (uint)((ulonglong)uVar9 >> 0x20);\n  iVar4 = (int)uVar9;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  cVar3 = *(char *)(iVar4 + 0x3c);\n  if ('\x12' < cVar3) {\n    iVar6 = 0xb;\n    FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0x109db,\n                 &UNK_000dcb22 + unaff_EBP);\n    goto LAB_0007ab14;\n  }\n  *(byte *)(iVar4 + 1) = *(byte *)(iVar4 + 1) & 0xf9;\n  *(undefined2 *)(iVar4 + 0x2e) = 0;\n  piVar1 = *(int **)(iVar4 + 0x14);\n  *(undefined2 *)(iVar4 + 0x40 + cVar3 * 2) = *(undefined2 *)(iVar4 + 0x3e);\n  *(undefined4 *)(iVar4 + 0x70 + cVar3 * 4) = *(undefined4 *)(iVar4 + 0x6c);\n  *(undefined2 *)(iVar4 + 0x3e) = 0;\n  *(char *)(iVar4 + 0x3c) = cVar3 + '\x01';\n  if ((uint)piVar1[0xb] < uVar8) {\n    iVar6 = 0xb;\n    FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0xfea1,\n                 &UNK_000dcb22 + unaff_EBP);\n  }\n  else {\n    iVar5 = (**(code **)(*piVar1 + 200))(*piVar1,uVar8,&local_24,*(undefined1 *)(iVar4 + 2));\n    iVar6 = iVar5;\n    if (iVar5 == 0) {\n      pcVar7 = *(char **)(local_24 + 8);\n      *(char **)(iVar4 + 0x6c) = pcVar7;\n      if (*pcVar7 == '\0') {\n        if (uVar8 != *(uint *)(pcVar7 + 4)) {\n          uVar2 = *(undefined4 *)(local_24 + 4);\n          *(int *)(pcVar7 + 0x48) = local_24;\n          *(uint *)(pcVar7 + 4) = uVar8;\n          *(undefined4 *)(pcVar7 + 0x38) = uVar2;\n          *(int **)(pcVar7 + 0x34) = piVar1;\n          cVar3 = '\0';\n          if (uVar8 == 1) {\n            cVar3 = 'd';\n          }\n          pcVar7[9] = cVar3;\n        }\n        iVar6 = FUN_000777f0();\n        if (iVar6 != 0) {\n          if (*(int *)(iVar4 + 0x6c) != 0) {\n            FUN_0003be70();\n          }\n          goto LAB_0007ab00;\n        }\n        pcVar7 = *(char **)(iVar4 + 0x6c);\n      }\n      if ((*(short *)(pcVar7 + 0x16) != 0) && (iVar6 = iVar5, pcVar7[2] == *(char *)(iVar4 + 0x3d)))\n      goto LAB_0007ab14;\n      iVar6 = 0xb;\n      FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0xfeb7,\n                   &UNK_000dcb22 + unaff_EBP);\n      if (*(int *)(iVar4 + 0x6c) != 0) {\n        FUN_0003be70();\n      }\n    }\n  }\nLAB_0007ab00:\n  cVar3 = *(char *)(iVar4 + 0x3c) + -1;\n  *(char *)(iVar4 + 0x3c) = cVar3;\n  *(undefined4 *)(iVar4 + 0x6c) = *(undefined4 *)(iVar4 + 0x70 + cVar3 * 4);\nLAB_0007ab14:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar6;\n  }\n                    \n  FUN_00153870();\n}" primitive_type (function_declarator "FUN_0007a9d0(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  int *piVar1;\n  undefined4 uVar2;\n  char cVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  char *pcVar7;\n  uint uVar8;\n  int unaff_EBP;\n  int in_GS_OFFSET;\n  undefined8 uVar9;\n  int local_24;\n  int local_20;\n  \n  uVar9 = FUN_0003a405();\n  uVar8 = (uint)((ulonglong)uVar9 >> 0x20);\n  iVar4 = (int)uVar9;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  cVar3 = *(char *)(iVar4 + 0x3c);\n  if ('\x12' < cVar3) {\n    iVar6 = 0xb;\n    FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0x109db,\n                 &UNK_000dcb22 + unaff_EBP);\n    goto LAB_0007ab14;\n  }\n  *(byte *)(iVar4 + 1) = *(byte *)(iVar4 + 1) & 0xf9;\n  *(undefined2 *)(iVar4 + 0x2e) = 0;\n  piVar1 = *(int **)(iVar4 + 0x14);\n  *(undefined2 *)(iVar4 + 0x40 + cVar3 * 2) = *(undefined2 *)(iVar4 + 0x3e);\n  *(undefined4 *)(iVar4 + 0x70 + cVar3 * 4) = *(undefined4 *)(iVar4 + 0x6c);\n  *(undefined2 *)(iVar4 + 0x3e) = 0;\n  *(char *)(iVar4 + 0x3c) = cVar3 + '\x01';\n  if ((uint)piVar1[0xb] < uVar8) {\n    iVar6 = 0xb;\n    FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0xfea1,\n                 &UNK_000dcb22 + unaff_EBP);\n  }\n  else {\n    iVar5 = (**(code **)(*piVar1 + 200))(*piVar1,uVar8,&local_24,*(undefined1 *)(iVar4 + 2));\n    iVar6 = iVar5;\n    if (iVar5 == 0) {\n      pcVar7 = *(char **)(local_24 + 8);\n      *(char **)(iVar4 + 0x6c) = pcVar7;\n      if (*pcVar7 == '\0') {\n        if (uVar8 != *(uint *)(pcVar7 + 4)) {\n          uVar2 = *(undefined4 *)(local_24 + 4);\n          *(int *)(pcVar7 + 0x48) = local_24;\n          *(uint *)(pcVar7 + 4) = uVar8;\n          *(undefined4 *)(pcVar7 + 0x38) = uVar2;\n          *(int **)(pcVar7 + 0x34) = piVar1;\n          cVar3 = '\0';\n          if (uVar8 == 1) {\n            cVar3 = 'd';\n          }\n          pcVar7[9] = cVar3;\n        }\n        iVar6 = FUN_000777f0();\n        if (iVar6 != 0) {\n          if (*(int *)(iVar4 + 0x6c) != 0) {\n            FUN_0003be70();\n          }\n          goto LAB_0007ab00;\n        }\n        pcVar7 = *(char **)(iVar4 + 0x6c);\n      }\n      if ((*(short *)(pcVar7 + 0x16) != 0) && (iVar6 = iVar5, pcVar7[2] == *(char *)(iVar4 + 0x3d)))\n      goto LAB_0007ab14;\n      iVar6 = 0xb;\n      FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0xfeb7,\n                   &UNK_000dcb22 + unaff_EBP);\n      if (*(int *)(iVar4 + 0x6c) != 0) {\n        FUN_0003be70();\n      }\n    }\n  }\nLAB_0007ab00:\n  cVar3 = *(char *)(iVar4 + 0x3c) + -1;\n  *(char *)(iVar4 + 0x3c) = cVar3;\n  *(undefined4 *)(iVar4 + 0x6c) = *(undefined4 *)(iVar4 + 0x70 + cVar3 * 4);\nLAB_0007ab14:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar6;\n  }\n                    \n  FUN_00153870();\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "char cVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "int unaff_EBP;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "undefined8 uVar9;" type_identifier identifier ;) (declaration "int local_24;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "uVar9 = FUN_0003a405();" (assignment_expression "uVar9 = FUN_0003a405()" identifier = (call_expression "FUN_0003a405()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar8 = (uint)((ulonglong)uVar9 >> 0x20);" (assignment_expression "uVar8 = (uint)((ulonglong)uVar9 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)uVar9 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)uVar9 >> 0x20)" ( (binary_expression "(ulonglong)uVar9 >> 0x20" (cast_expression "(ulonglong)uVar9" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "iVar4 = (int)uVar9;" (assignment_expression "iVar4 = (int)uVar9" identifier = (cast_expression "(int)uVar9" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "cVar3 = *(char *)(iVar4 + 0x3c);" (assignment_expression "cVar3 = *(char *)(iVar4 + 0x3c)" identifier = (pointer_expression "*(char *)(iVar4 + 0x3c)" * (cast_expression "(char *)(iVar4 + 0x3c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x3c)" ( (binary_expression "iVar4 + 0x3c" identifier + number_literal) ))))) ;) (if_statement "if ('\x12' < cVar3) {\n    iVar6 = 0xb;\n    FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0x109db,\n                 &UNK_000dcb22 + unaff_EBP);\n    goto LAB_0007ab14;\n  }" if (parenthesized_expression "('\x12' < cVar3)" ( (binary_expression "'\x12' < cVar3" (char_literal "'\x12'" ' escape_sequence ') < identifier) )) (compound_statement "{\n    iVar6 = 0xb;\n    FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0x109db,\n                 &UNK_000dcb22 + unaff_EBP);\n    goto LAB_0007ab14;\n  }" { (expression_statement "iVar6 = 0xb;" (assignment_expression "iVar6 = 0xb" identifier = number_literal) ;) (expression_statement "FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0x109db,\n                 &UNK_000dcb22 + unaff_EBP);" (call_expression "FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0x109db,\n                 &UNK_000dcb22 + unaff_EBP)" identifier (argument_list "(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0x109db,\n                 &UNK_000dcb22 + unaff_EBP)" ( number_literal , (binary_expression "&UNK_000e1e69 + unaff_EBP" (pointer_expression "&UNK_000e1e69" & identifier) + identifier) , (binary_expression "&UNK_000e1f20 + unaff_EBP" (pointer_expression "&UNK_000e1f20" & identifier) + identifier) , number_literal , (binary_expression "&UNK_000dcb22 + unaff_EBP" (pointer_expression "&UNK_000dcb22" & identifier) + identifier) ))) ;) (goto_statement "goto LAB_0007ab14;" goto statement_identifier ;) })) (expression_statement "*(byte *)(iVar4 + 1) = *(byte *)(iVar4 + 1) & 0xf9;" (assignment_expression "*(byte *)(iVar4 + 1) = *(byte *)(iVar4 + 1) & 0xf9" (pointer_expression "*(byte *)(iVar4 + 1)" * (cast_expression "(byte *)(iVar4 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 1)" ( (binary_expression "iVar4 + 1" identifier + number_literal) )))) = (binary_expression "*(byte *)(iVar4 + 1) & 0xf9" (pointer_expression "*(byte *)(iVar4 + 1)" * (cast_expression "(byte *)(iVar4 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 1)" ( (binary_expression "iVar4 + 1" identifier + number_literal) )))) & number_literal)) ;) (expression_statement "*(undefined2 *)(iVar4 + 0x2e) = 0;" (assignment_expression "*(undefined2 *)(iVar4 + 0x2e) = 0" (pointer_expression "*(undefined2 *)(iVar4 + 0x2e)" * (cast_expression "(undefined2 *)(iVar4 + 0x2e)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x2e)" ( (binary_expression "iVar4 + 0x2e" identifier + number_literal) )))) = number_literal) ;) (expression_statement "piVar1 = *(int **)(iVar4 + 0x14);" (assignment_expression "piVar1 = *(int **)(iVar4 + 0x14)" identifier = (pointer_expression "*(int **)(iVar4 + 0x14)" * (cast_expression "(int **)(iVar4 + 0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + 0x14)" ( (binary_expression "iVar4 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "*(undefined2 *)(iVar4 + 0x40 + cVar3 * 2) = *(undefined2 *)(iVar4 + 0x3e);" (assignment_expression "*(undefined2 *)(iVar4 + 0x40 + cVar3 * 2) = *(undefined2 *)(iVar4 + 0x3e)" (pointer_expression "*(undefined2 *)(iVar4 + 0x40 + cVar3 * 2)" * (cast_expression "(undefined2 *)(iVar4 + 0x40 + cVar3 * 2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x40 + cVar3 * 2)" ( (binary_expression "iVar4 + 0x40 + cVar3 * 2" (binary_expression "iVar4 + 0x40" identifier + number_literal) + (binary_expression "cVar3 * 2" identifier * number_literal)) )))) = (pointer_expression "*(undefined2 *)(iVar4 + 0x3e)" * (cast_expression "(undefined2 *)(iVar4 + 0x3e)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x3e)" ( (binary_expression "iVar4 + 0x3e" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar4 + 0x70 + cVar3 * 4) = *(undefined4 *)(iVar4 + 0x6c);" (assignment_expression "*(undefined4 *)(iVar4 + 0x70 + cVar3 * 4) = *(undefined4 *)(iVar4 + 0x6c)" (pointer_expression "*(undefined4 *)(iVar4 + 0x70 + cVar3 * 4)" * (cast_expression "(undefined4 *)(iVar4 + 0x70 + cVar3 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x70 + cVar3 * 4)" ( (binary_expression "iVar4 + 0x70 + cVar3 * 4" (binary_expression "iVar4 + 0x70" identifier + number_literal) + (binary_expression "cVar3 * 4" identifier * number_literal)) )))) = (pointer_expression "*(undefined4 *)(iVar4 + 0x6c)" * (cast_expression "(undefined4 *)(iVar4 + 0x6c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x6c)" ( (binary_expression "iVar4 + 0x6c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined2 *)(iVar4 + 0x3e) = 0;" (assignment_expression "*(undefined2 *)(iVar4 + 0x3e) = 0" (pointer_expression "*(undefined2 *)(iVar4 + 0x3e)" * (cast_expression "(undefined2 *)(iVar4 + 0x3e)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x3e)" ( (binary_expression "iVar4 + 0x3e" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(char *)(iVar4 + 0x3c) = cVar3 + '\x01';" (assignment_expression "*(char *)(iVar4 + 0x3c) = cVar3 + '\x01'" (pointer_expression "*(char *)(iVar4 + 0x3c)" * (cast_expression "(char *)(iVar4 + 0x3c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x3c)" ( (binary_expression "iVar4 + 0x3c" identifier + number_literal) )))) = (binary_expression "cVar3 + '\x01'" identifier + (char_literal "'\x01'" ' escape_sequence '))) ;) (if_statement "if ((uint)piVar1[0xb] < uVar8) {\n    iVar6 = 0xb;\n    FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0xfea1,\n                 &UNK_000dcb22 + unaff_EBP);\n  }\n  else {\n    iVar5 = (**(code **)(*piVar1 + 200))(*piVar1,uVar8,&local_24,*(undefined1 *)(iVar4 + 2));\n    iVar6 = iVar5;\n    if (iVar5 == 0) {\n      pcVar7 = *(char **)(local_24 + 8);\n      *(char **)(iVar4 + 0x6c) = pcVar7;\n      if (*pcVar7 == '\0') {\n        if (uVar8 != *(uint *)(pcVar7 + 4)) {\n          uVar2 = *(undefined4 *)(local_24 + 4);\n          *(int *)(pcVar7 + 0x48) = local_24;\n          *(uint *)(pcVar7 + 4) = uVar8;\n          *(undefined4 *)(pcVar7 + 0x38) = uVar2;\n          *(int **)(pcVar7 + 0x34) = piVar1;\n          cVar3 = '\0';\n          if (uVar8 == 1) {\n            cVar3 = 'd';\n          }\n          pcVar7[9] = cVar3;\n        }\n        iVar6 = FUN_000777f0();\n        if (iVar6 != 0) {\n          if (*(int *)(iVar4 + 0x6c) != 0) {\n            FUN_0003be70();\n          }\n          goto LAB_0007ab00;\n        }\n        pcVar7 = *(char **)(iVar4 + 0x6c);\n      }\n      if ((*(short *)(pcVar7 + 0x16) != 0) && (iVar6 = iVar5, pcVar7[2] == *(char *)(iVar4 + 0x3d)))\n      goto LAB_0007ab14;\n      iVar6 = 0xb;\n      FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0xfeb7,\n                   &UNK_000dcb22 + unaff_EBP);\n      if (*(int *)(iVar4 + 0x6c) != 0) {\n        FUN_0003be70();\n      }\n    }\n  }" if (parenthesized_expression "((uint)piVar1[0xb] < uVar8)" ( (binary_expression "(uint)piVar1[0xb] < uVar8" (cast_expression "(uint)piVar1[0xb]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "piVar1[0xb]" identifier [ number_literal ])) < identifier) )) (compound_statement "{\n    iVar6 = 0xb;\n    FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0xfea1,\n                 &UNK_000dcb22 + unaff_EBP);\n  }" { (expression_statement "iVar6 = 0xb;" (assignment_expression "iVar6 = 0xb" identifier = number_literal) ;) (expression_statement "FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0xfea1,\n                 &UNK_000dcb22 + unaff_EBP);" (call_expression "FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0xfea1,\n                 &UNK_000dcb22 + unaff_EBP)" identifier (argument_list "(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0xfea1,\n                 &UNK_000dcb22 + unaff_EBP)" ( number_literal , (binary_expression "&UNK_000e1e69 + unaff_EBP" (pointer_expression "&UNK_000e1e69" & identifier) + identifier) , (binary_expression "&UNK_000e1f20 + unaff_EBP" (pointer_expression "&UNK_000e1f20" & identifier) + identifier) , number_literal , (binary_expression "&UNK_000dcb22 + unaff_EBP" (pointer_expression "&UNK_000dcb22" & identifier) + identifier) ))) ;) }) (else_clause "else {\n    iVar5 = (**(code **)(*piVar1 + 200))(*piVar1,uVar8,&local_24,*(undefined1 *)(iVar4 + 2));\n    iVar6 = iVar5;\n    if (iVar5 == 0) {\n      pcVar7 = *(char **)(local_24 + 8);\n      *(char **)(iVar4 + 0x6c) = pcVar7;\n      if (*pcVar7 == '\0') {\n        if (uVar8 != *(uint *)(pcVar7 + 4)) {\n          uVar2 = *(undefined4 *)(local_24 + 4);\n          *(int *)(pcVar7 + 0x48) = local_24;\n          *(uint *)(pcVar7 + 4) = uVar8;\n          *(undefined4 *)(pcVar7 + 0x38) = uVar2;\n          *(int **)(pcVar7 + 0x34) = piVar1;\n          cVar3 = '\0';\n          if (uVar8 == 1) {\n            cVar3 = 'd';\n          }\n          pcVar7[9] = cVar3;\n        }\n        iVar6 = FUN_000777f0();\n        if (iVar6 != 0) {\n          if (*(int *)(iVar4 + 0x6c) != 0) {\n            FUN_0003be70();\n          }\n          goto LAB_0007ab00;\n        }\n        pcVar7 = *(char **)(iVar4 + 0x6c);\n      }\n      if ((*(short *)(pcVar7 + 0x16) != 0) && (iVar6 = iVar5, pcVar7[2] == *(char *)(iVar4 + 0x3d)))\n      goto LAB_0007ab14;\n      iVar6 = 0xb;\n      FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0xfeb7,\n                   &UNK_000dcb22 + unaff_EBP);\n      if (*(int *)(iVar4 + 0x6c) != 0) {\n        FUN_0003be70();\n      }\n    }\n  }" else (compound_statement "{\n    iVar5 = (**(code **)(*piVar1 + 200))(*piVar1,uVar8,&local_24,*(undefined1 *)(iVar4 + 2));\n    iVar6 = iVar5;\n    if (iVar5 == 0) {\n      pcVar7 = *(char **)(local_24 + 8);\n      *(char **)(iVar4 + 0x6c) = pcVar7;\n      if (*pcVar7 == '\0') {\n        if (uVar8 != *(uint *)(pcVar7 + 4)) {\n          uVar2 = *(undefined4 *)(local_24 + 4);\n          *(int *)(pcVar7 + 0x48) = local_24;\n          *(uint *)(pcVar7 + 4) = uVar8;\n          *(undefined4 *)(pcVar7 + 0x38) = uVar2;\n          *(int **)(pcVar7 + 0x34) = piVar1;\n          cVar3 = '\0';\n          if (uVar8 == 1) {\n            cVar3 = 'd';\n          }\n          pcVar7[9] = cVar3;\n        }\n        iVar6 = FUN_000777f0();\n        if (iVar6 != 0) {\n          if (*(int *)(iVar4 + 0x6c) != 0) {\n            FUN_0003be70();\n          }\n          goto LAB_0007ab00;\n        }\n        pcVar7 = *(char **)(iVar4 + 0x6c);\n      }\n      if ((*(short *)(pcVar7 + 0x16) != 0) && (iVar6 = iVar5, pcVar7[2] == *(char *)(iVar4 + 0x3d)))\n      goto LAB_0007ab14;\n      iVar6 = 0xb;\n      FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0xfeb7,\n                   &UNK_000dcb22 + unaff_EBP);\n      if (*(int *)(iVar4 + 0x6c) != 0) {\n        FUN_0003be70();\n      }\n    }\n  }" { (expression_statement "iVar5 = (**(code **)(*piVar1 + 200))(*piVar1,uVar8,&local_24,*(undefined1 *)(iVar4 + 2));" (assignment_expression "iVar5 = (**(code **)(*piVar1 + 200))(*piVar1,uVar8,&local_24,*(undefined1 *)(iVar4 + 2))" identifier = (call_expression "(**(code **)(*piVar1 + 200))(*piVar1,uVar8,&local_24,*(undefined1 *)(iVar4 + 2))" (parenthesized_expression "(**(code **)(*piVar1 + 200))" ( (pointer_expression "**(code **)(*piVar1 + 200)" * (pointer_expression "*(code **)(*piVar1 + 200)" * (cast_expression "(code **)(*piVar1 + 200)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar1 + 200)" ( (binary_expression "*piVar1 + 200" (pointer_expression "*piVar1" * identifier) + number_literal) ))))) )) (argument_list "(*piVar1,uVar8,&local_24,*(undefined1 *)(iVar4 + 2))" ( (pointer_expression "*piVar1" * identifier) , identifier , (pointer_expression "&local_24" & identifier) , (pointer_expression "*(undefined1 *)(iVar4 + 2)" * (cast_expression "(undefined1 *)(iVar4 + 2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 2)" ( (binary_expression "iVar4 + 2" identifier + number_literal) )))) )))) ;) (expression_statement "iVar6 = iVar5;" (assignment_expression "iVar6 = iVar5" identifier = identifier) ;) (if_statement "if (iVar5 == 0) {\n      pcVar7 = *(char **)(local_24 + 8);\n      *(char **)(iVar4 + 0x6c) = pcVar7;\n      if (*pcVar7 == '\0') {\n        if (uVar8 != *(uint *)(pcVar7 + 4)) {\n          uVar2 = *(undefined4 *)(local_24 + 4);\n          *(int *)(pcVar7 + 0x48) = local_24;\n          *(uint *)(pcVar7 + 4) = uVar8;\n          *(undefined4 *)(pcVar7 + 0x38) = uVar2;\n          *(int **)(pcVar7 + 0x34) = piVar1;\n          cVar3 = '\0';\n          if (uVar8 == 1) {\n            cVar3 = 'd';\n          }\n          pcVar7[9] = cVar3;\n        }\n        iVar6 = FUN_000777f0();\n        if (iVar6 != 0) {\n          if (*(int *)(iVar4 + 0x6c) != 0) {\n            FUN_0003be70();\n          }\n          goto LAB_0007ab00;\n        }\n        pcVar7 = *(char **)(iVar4 + 0x6c);\n      }\n      if ((*(short *)(pcVar7 + 0x16) != 0) && (iVar6 = iVar5, pcVar7[2] == *(char *)(iVar4 + 0x3d)))\n      goto LAB_0007ab14;\n      iVar6 = 0xb;\n      FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0xfeb7,\n                   &UNK_000dcb22 + unaff_EBP);\n      if (*(int *)(iVar4 + 0x6c) != 0) {\n        FUN_0003be70();\n      }\n    }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n      pcVar7 = *(char **)(local_24 + 8);\n      *(char **)(iVar4 + 0x6c) = pcVar7;\n      if (*pcVar7 == '\0') {\n        if (uVar8 != *(uint *)(pcVar7 + 4)) {\n          uVar2 = *(undefined4 *)(local_24 + 4);\n          *(int *)(pcVar7 + 0x48) = local_24;\n          *(uint *)(pcVar7 + 4) = uVar8;\n          *(undefined4 *)(pcVar7 + 0x38) = uVar2;\n          *(int **)(pcVar7 + 0x34) = piVar1;\n          cVar3 = '\0';\n          if (uVar8 == 1) {\n            cVar3 = 'd';\n          }\n          pcVar7[9] = cVar3;\n        }\n        iVar6 = FUN_000777f0();\n        if (iVar6 != 0) {\n          if (*(int *)(iVar4 + 0x6c) != 0) {\n            FUN_0003be70();\n          }\n          goto LAB_0007ab00;\n        }\n        pcVar7 = *(char **)(iVar4 + 0x6c);\n      }\n      if ((*(short *)(pcVar7 + 0x16) != 0) && (iVar6 = iVar5, pcVar7[2] == *(char *)(iVar4 + 0x3d)))\n      goto LAB_0007ab14;\n      iVar6 = 0xb;\n      FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0xfeb7,\n                   &UNK_000dcb22 + unaff_EBP);\n      if (*(int *)(iVar4 + 0x6c) != 0) {\n        FUN_0003be70();\n      }\n    }" { (expression_statement "pcVar7 = *(char **)(local_24 + 8);" (assignment_expression "pcVar7 = *(char **)(local_24 + 8)" identifier = (pointer_expression "*(char **)(local_24 + 8)" * (cast_expression "(char **)(local_24 + 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_24 + 8)" ( (binary_expression "local_24 + 8" identifier + number_literal) ))))) ;) (expression_statement "*(char **)(iVar4 + 0x6c) = pcVar7;" (assignment_expression "*(char **)(iVar4 + 0x6c) = pcVar7" (pointer_expression "*(char **)(iVar4 + 0x6c)" * (cast_expression "(char **)(iVar4 + 0x6c)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + 0x6c)" ( (binary_expression "iVar4 + 0x6c" identifier + number_literal) )))) = identifier) ;) (if_statement "if (*pcVar7 == '\0') {\n        if (uVar8 != *(uint *)(pcVar7 + 4)) {\n          uVar2 = *(undefined4 *)(local_24 + 4);\n          *(int *)(pcVar7 + 0x48) = local_24;\n          *(uint *)(pcVar7 + 4) = uVar8;\n          *(undefined4 *)(pcVar7 + 0x38) = uVar2;\n          *(int **)(pcVar7 + 0x34) = piVar1;\n          cVar3 = '\0';\n          if (uVar8 == 1) {\n            cVar3 = 'd';\n          }\n          pcVar7[9] = cVar3;\n        }\n        iVar6 = FUN_000777f0();\n        if (iVar6 != 0) {\n          if (*(int *)(iVar4 + 0x6c) != 0) {\n            FUN_0003be70();\n          }\n          goto LAB_0007ab00;\n        }\n        pcVar7 = *(char **)(iVar4 + 0x6c);\n      }" if (parenthesized_expression "(*pcVar7 == '\0')" ( (binary_expression "*pcVar7 == '\0'" (pointer_expression "*pcVar7" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        if (uVar8 != *(uint *)(pcVar7 + 4)) {\n          uVar2 = *(undefined4 *)(local_24 + 4);\n          *(int *)(pcVar7 + 0x48) = local_24;\n          *(uint *)(pcVar7 + 4) = uVar8;\n          *(undefined4 *)(pcVar7 + 0x38) = uVar2;\n          *(int **)(pcVar7 + 0x34) = piVar1;\n          cVar3 = '\0';\n          if (uVar8 == 1) {\n            cVar3 = 'd';\n          }\n          pcVar7[9] = cVar3;\n        }\n        iVar6 = FUN_000777f0();\n        if (iVar6 != 0) {\n          if (*(int *)(iVar4 + 0x6c) != 0) {\n            FUN_0003be70();\n          }\n          goto LAB_0007ab00;\n        }\n        pcVar7 = *(char **)(iVar4 + 0x6c);\n      }" { (if_statement "if (uVar8 != *(uint *)(pcVar7 + 4)) {\n          uVar2 = *(undefined4 *)(local_24 + 4);\n          *(int *)(pcVar7 + 0x48) = local_24;\n          *(uint *)(pcVar7 + 4) = uVar8;\n          *(undefined4 *)(pcVar7 + 0x38) = uVar2;\n          *(int **)(pcVar7 + 0x34) = piVar1;\n          cVar3 = '\0';\n          if (uVar8 == 1) {\n            cVar3 = 'd';\n          }\n          pcVar7[9] = cVar3;\n        }" if (parenthesized_expression "(uVar8 != *(uint *)(pcVar7 + 4))" ( (binary_expression "uVar8 != *(uint *)(pcVar7 + 4)" identifier != (pointer_expression "*(uint *)(pcVar7 + 4)" * (cast_expression "(uint *)(pcVar7 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar7 + 4)" ( (binary_expression "pcVar7 + 4" identifier + number_literal) ))))) )) (compound_statement "{\n          uVar2 = *(undefined4 *)(local_24 + 4);\n          *(int *)(pcVar7 + 0x48) = local_24;\n          *(uint *)(pcVar7 + 4) = uVar8;\n          *(undefined4 *)(pcVar7 + 0x38) = uVar2;\n          *(int **)(pcVar7 + 0x34) = piVar1;\n          cVar3 = '\0';\n          if (uVar8 == 1) {\n            cVar3 = 'd';\n          }\n          pcVar7[9] = cVar3;\n        }" { (expression_statement "uVar2 = *(undefined4 *)(local_24 + 4);" (assignment_expression "uVar2 = *(undefined4 *)(local_24 + 4)" identifier = (pointer_expression "*(undefined4 *)(local_24 + 4)" * (cast_expression "(undefined4 *)(local_24 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_24 + 4)" ( (binary_expression "local_24 + 4" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(pcVar7 + 0x48) = local_24;" (assignment_expression "*(int *)(pcVar7 + 0x48) = local_24" (pointer_expression "*(int *)(pcVar7 + 0x48)" * (cast_expression "(int *)(pcVar7 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar7 + 0x48)" ( (binary_expression "pcVar7 + 0x48" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(pcVar7 + 4) = uVar8;" (assignment_expression "*(uint *)(pcVar7 + 4) = uVar8" (pointer_expression "*(uint *)(pcVar7 + 4)" * (cast_expression "(uint *)(pcVar7 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar7 + 4)" ( (binary_expression "pcVar7 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(pcVar7 + 0x38) = uVar2;" (assignment_expression "*(undefined4 *)(pcVar7 + 0x38) = uVar2" (pointer_expression "*(undefined4 *)(pcVar7 + 0x38)" * (cast_expression "(undefined4 *)(pcVar7 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar7 + 0x38)" ( (binary_expression "pcVar7 + 0x38" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(pcVar7 + 0x34) = piVar1;" (assignment_expression "*(int **)(pcVar7 + 0x34) = piVar1" (pointer_expression "*(int **)(pcVar7 + 0x34)" * (cast_expression "(int **)(pcVar7 + 0x34)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar7 + 0x34)" ( (binary_expression "pcVar7 + 0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "cVar3 = '\0';" (assignment_expression "cVar3 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (uVar8 == 1) {\n            cVar3 = 'd';\n          }" if (parenthesized_expression "(uVar8 == 1)" ( (binary_expression "uVar8 == 1" identifier == number_literal) )) (compound_statement "{\n            cVar3 = 'd';\n          }" { (expression_statement "cVar3 = 'd';" (assignment_expression "cVar3 = 'd'" identifier = (char_literal "'d'" ' character ')) ;) })) (expression_statement "pcVar7[9] = cVar3;" (assignment_expression "pcVar7[9] = cVar3" (subscript_expression "pcVar7[9]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "iVar6 = FUN_000777f0();" (assignment_expression "iVar6 = FUN_000777f0()" identifier = (call_expression "FUN_000777f0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar6 != 0) {\n          if (*(int *)(iVar4 + 0x6c) != 0) {\n            FUN_0003be70();\n          }\n          goto LAB_0007ab00;\n        }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n          if (*(int *)(iVar4 + 0x6c) != 0) {\n            FUN_0003be70();\n          }\n          goto LAB_0007ab00;\n        }" { (if_statement "if (*(int *)(iVar4 + 0x6c) != 0) {\n            FUN_0003be70();\n          }" if (parenthesized_expression "(*(int *)(iVar4 + 0x6c) != 0)" ( (binary_expression "*(int *)(iVar4 + 0x6c) != 0" (pointer_expression "*(int *)(iVar4 + 0x6c)" * (cast_expression "(int *)(iVar4 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x6c)" ( (binary_expression "iVar4 + 0x6c" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n            FUN_0003be70();\n          }" { (expression_statement "FUN_0003be70();" (call_expression "FUN_0003be70()" identifier (argument_list "()" ( ))) ;) })) (goto_statement "goto LAB_0007ab00;" goto statement_identifier ;) })) (expression_statement "pcVar7 = *(char **)(iVar4 + 0x6c);" (assignment_expression "pcVar7 = *(char **)(iVar4 + 0x6c)" identifier = (pointer_expression "*(char **)(iVar4 + 0x6c)" * (cast_expression "(char **)(iVar4 + 0x6c)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + 0x6c)" ( (binary_expression "iVar4 + 0x6c" identifier + number_literal) ))))) ;) })) (if_statement "if ((*(short *)(pcVar7 + 0x16) != 0) && (iVar6 = iVar5, pcVar7[2] == *(char *)(iVar4 + 0x3d)))\n      goto LAB_0007ab14;" if (parenthesized_expression "((*(short *)(pcVar7 + 0x16) != 0) && (iVar6 = iVar5, pcVar7[2] == *(char *)(iVar4 + 0x3d)))" ( (binary_expression "(*(short *)(pcVar7 + 0x16) != 0) && (iVar6 = iVar5, pcVar7[2] == *(char *)(iVar4 + 0x3d))" (parenthesized_expression "(*(short *)(pcVar7 + 0x16) != 0)" ( (binary_expression "*(short *)(pcVar7 + 0x16) != 0" (pointer_expression "*(short *)(pcVar7 + 0x16)" * (cast_expression "(short *)(pcVar7 + 0x16)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar7 + 0x16)" ( (binary_expression "pcVar7 + 0x16" identifier + number_literal) )))) != number_literal) )) && (parenthesized_expression "(iVar6 = iVar5, pcVar7[2] == *(char *)(iVar4 + 0x3d))" ( (comma_expression "iVar6 = iVar5, pcVar7[2] == *(char *)(iVar4 + 0x3d)" (assignment_expression "iVar6 = iVar5" identifier = identifier) , (binary_expression "pcVar7[2] == *(char *)(iVar4 + 0x3d)" (subscript_expression "pcVar7[2]" identifier [ number_literal ]) == (pointer_expression "*(char *)(iVar4 + 0x3d)" * (cast_expression "(char *)(iVar4 + 0x3d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x3d)" ( (binary_expression "iVar4 + 0x3d" identifier + number_literal) )))))) ))) )) (goto_statement "goto LAB_0007ab14;" goto statement_identifier ;)) (expression_statement "iVar6 = 0xb;" (assignment_expression "iVar6 = 0xb" identifier = number_literal) ;) (expression_statement "FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0xfeb7,\n                   &UNK_000dcb22 + unaff_EBP);" (call_expression "FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0xfeb7,\n                   &UNK_000dcb22 + unaff_EBP)" identifier (argument_list "(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0xfeb7,\n                   &UNK_000dcb22 + unaff_EBP)" ( number_literal , (binary_expression "&UNK_000e1e69 + unaff_EBP" (pointer_expression "&UNK_000e1e69" & identifier) + identifier) , (binary_expression "&UNK_000e1f20 + unaff_EBP" (pointer_expression "&UNK_000e1f20" & identifier) + identifier) , number_literal , (binary_expression "&UNK_000dcb22 + unaff_EBP" (pointer_expression "&UNK_000dcb22" & identifier) + identifier) ))) ;) (if_statement "if (*(int *)(iVar4 + 0x6c) != 0) {\n        FUN_0003be70();\n      }" if (parenthesized_expression "(*(int *)(iVar4 + 0x6c) != 0)" ( (binary_expression "*(int *)(iVar4 + 0x6c) != 0" (pointer_expression "*(int *)(iVar4 + 0x6c)" * (cast_expression "(int *)(iVar4 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x6c)" ( (binary_expression "iVar4 + 0x6c" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n        FUN_0003be70();\n      }" { (expression_statement "FUN_0003be70();" (call_expression "FUN_0003be70()" identifier (argument_list "()" ( ))) ;) })) })) }))) (labeled_statement "LAB_0007ab00:\n  cVar3 = *(char *)(iVar4 + 0x3c) + -1;" statement_identifier : (expression_statement "cVar3 = *(char *)(iVar4 + 0x3c) + -1;" (assignment_expression "cVar3 = *(char *)(iVar4 + 0x3c) + -1" identifier = (binary_expression "*(char *)(iVar4 + 0x3c) + -1" (pointer_expression "*(char *)(iVar4 + 0x3c)" * (cast_expression "(char *)(iVar4 + 0x3c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x3c)" ( (binary_expression "iVar4 + 0x3c" identifier + number_literal) )))) + number_literal)) ;)) (expression_statement "*(char *)(iVar4 + 0x3c) = cVar3;" (assignment_expression "*(char *)(iVar4 + 0x3c) = cVar3" (pointer_expression "*(char *)(iVar4 + 0x3c)" * (cast_expression "(char *)(iVar4 + 0x3c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x3c)" ( (binary_expression "iVar4 + 0x3c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(iVar4 + 0x6c) = *(undefined4 *)(iVar4 + 0x70 + cVar3 * 4);" (assignment_expression "*(undefined4 *)(iVar4 + 0x6c) = *(undefined4 *)(iVar4 + 0x70 + cVar3 * 4)" (pointer_expression "*(undefined4 *)(iVar4 + 0x6c)" * (cast_expression "(undefined4 *)(iVar4 + 0x6c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x6c)" ( (binary_expression "iVar4 + 0x6c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(iVar4 + 0x70 + cVar3 * 4)" * (cast_expression "(undefined4 *)(iVar4 + 0x70 + cVar3 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x70 + cVar3 * 4)" ( (binary_expression "iVar4 + 0x70 + cVar3 * 4" (binary_expression "iVar4 + 0x70" identifier + number_literal) + (binary_expression "cVar3 * 4" identifier * number_literal)) ))))) ;) (labeled_statement "LAB_0007ab14:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar6;\n  }" statement_identifier : (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar6;\n  }" if (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return iVar6;\n  }" { (return_statement "return iVar6;" return identifier ;) }))) (expression_statement "FUN_00153870();" (call_expression "FUN_00153870()" identifier (argument_list "()" ( ))) ;) })))
(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 (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (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) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (char_literal ' escape_sequence ') < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , (binary_expression (pointer_expression & IDENT) + IDENT) , (binary_expression (pointer_expression & IDENT) + IDENT) , LIT , (binary_expression (pointer_expression & IDENT) + IDENT) ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT)) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT)) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + (char_literal ' escape_sequence '))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , (binary_expression (pointer_expression & IDENT) + IDENT) , (binary_expression (pointer_expression & IDENT) + IDENT) , LIT , (binary_expression (pointer_expression & IDENT) + IDENT) ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( (pointer_expression * IDENT) , IDENT , (pointer_expression & IDENT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (char_literal ' character ')) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_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 + LIT) )))) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression (subscript_expression IDENT [ LIT ]) == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , (binary_expression (pointer_expression & IDENT) + IDENT) , (binary_expression (pointer_expression & IDENT) + IDENT) , LIT , (binary_expression (pointer_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 + LIT) )))) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) })) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT)) ))))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (return_statement return IDENT ;) }))) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })))
(function_definition "int FUN_0007a9d0(void)\n\n{\n  int *piVar1;\n  undefined4 uVar2;\n  char cVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  char *pcVar7;\n  uint uVar8;\n  int unaff_EBP;\n  int in_GS_OFFSET;\n  undefined8 uVar9;\n  int local_24;\n  int local_20;\n  \n  uVar9 = FUN_0003a405();\n  uVar8 = (uint)((ulonglong)uVar9 >> 0x20);\n  iVar4 = (int)uVar9;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  cVar3 = *(char *)(iVar4 + 0x3c);\n  if ('\x12' < cVar3) {\n    iVar6 = 0xb;\n    FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0x109db,\n                 &UNK_000dcb22 + unaff_EBP);\n    goto LAB_0007ab14;\n  }\n  *(byte *)(iVar4 + 1) = *(byte *)(iVar4 + 1) & 0xf9;\n  *(undefined2 *)(iVar4 + 0x2e) = 0;\n  piVar1 = *(int **)(iVar4 + 0x14);\n  *(undefined2 *)(iVar4 + 0x40 + cVar3 * 2) = *(undefined2 *)(iVar4 + 0x3e);\n  *(undefined4 *)(iVar4 + 0x70 + cVar3 * 4) = *(undefined4 *)(iVar4 + 0x6c);\n  *(undefined2 *)(iVar4 + 0x3e) = 0;\n  *(char *)(iVar4 + 0x3c) = cVar3 + '\x01';\n  if ((uint)piVar1[0xb] < uVar8) {\n    iVar6 = 0xb;\n    FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0xfea1,\n                 &UNK_000dcb22 + unaff_EBP);\n  }\n  else {\n    iVar5 = (**(code **)(*piVar1 + 200))(*piVar1,uVar8,&local_24,*(undefined1 *)(iVar4 + 2));\n    iVar6 = iVar5;\n    if (iVar5 == 0) {\n      pcVar7 = *(char **)(local_24 + 8);\n      *(char **)(iVar4 + 0x6c) = pcVar7;\n      if (*pcVar7 == '\0') {\n        if (uVar8 != *(uint *)(pcVar7 + 4)) {\n          uVar2 = *(undefined4 *)(local_24 + 4);\n          *(int *)(pcVar7 + 0x48) = local_24;\n          *(uint *)(pcVar7 + 4) = uVar8;\n          *(undefined4 *)(pcVar7 + 0x38) = uVar2;\n          *(int **)(pcVar7 + 0x34) = piVar1;\n          cVar3 = '\0';\n          if (uVar8 == 1) {\n            cVar3 = 'd';\n          }\n          pcVar7[9] = cVar3;\n        }\n        iVar6 = FUN_000777f0();\n        if (iVar6 != 0) {\n          if (*(int *)(iVar4 + 0x6c) != 0) {\n            FUN_0003be70();\n          }\n          goto LAB_0007ab00;\n        }\n        pcVar7 = *(char **)(iVar4 + 0x6c);\n      }\n      if ((*(short *)(pcVar7 + 0x16) != 0) && (iVar6 = iVar5, pcVar7[2] == *(char *)(iVar4 + 0x3d)))\n      goto LAB_0007ab14;\n      iVar6 = 0xb;\n      FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0xfeb7,\n                   &UNK_000dcb22 + unaff_EBP);\n      if (*(int *)(iVar4 + 0x6c) != 0) {\n        FUN_0003be70();\n      }\n    }\n  }\nLAB_0007ab00:\n  cVar3 = *(char *)(iVar4 + 0x3c) + -1;\n  *(char *)(iVar4 + 0x3c) = cVar3;\n  *(undefined4 *)(iVar4 + 0x6c) = *(undefined4 *)(iVar4 + 0x70 + cVar3 * 4);\nLAB_0007ab14:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar6;\n  }\n                    \n  FUN_00153870();\n}" (primitive_type "int") (function_declarator "FUN_0007a9d0(void)" (identifier "FUN_0007a9d0") (parameter_list "(void)" (( "(") (parameter_declaration "void" (primitive_type "void")) () ")"))) (compound_statement "{\n  int *piVar1;\n  undefined4 uVar2;\n  char cVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  char *pcVar7;\n  uint uVar8;\n  int unaff_EBP;\n  int in_GS_OFFSET;\n  undefined8 uVar9;\n  int local_24;\n  int local_20;\n  \n  uVar9 = FUN_0003a405();\n  uVar8 = (uint)((ulonglong)uVar9 >> 0x20);\n  iVar4 = (int)uVar9;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  cVar3 = *(char *)(iVar4 + 0x3c);\n  if ('\x12' < cVar3) {\n    iVar6 = 0xb;\n    FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0x109db,\n                 &UNK_000dcb22 + unaff_EBP);\n    goto LAB_0007ab14;\n  }\n  *(byte *)(iVar4 + 1) = *(byte *)(iVar4 + 1) & 0xf9;\n  *(undefined2 *)(iVar4 + 0x2e) = 0;\n  piVar1 = *(int **)(iVar4 + 0x14);\n  *(undefined2 *)(iVar4 + 0x40 + cVar3 * 2) = *(undefined2 *)(iVar4 + 0x3e);\n  *(undefined4 *)(iVar4 + 0x70 + cVar3 * 4) = *(undefined4 *)(iVar4 + 0x6c);\n  *(undefined2 *)(iVar4 + 0x3e) = 0;\n  *(char *)(iVar4 + 0x3c) = cVar3 + '\x01';\n  if ((uint)piVar1[0xb] < uVar8) {\n    iVar6 = 0xb;\n    FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0xfea1,\n                 &UNK_000dcb22 + unaff_EBP);\n  }\n  else {\n    iVar5 = (**(code **)(*piVar1 + 200))(*piVar1,uVar8,&local_24,*(undefined1 *)(iVar4 + 2));\n    iVar6 = iVar5;\n    if (iVar5 == 0) {\n      pcVar7 = *(char **)(local_24 + 8);\n      *(char **)(iVar4 + 0x6c) = pcVar7;\n      if (*pcVar7 == '\0') {\n        if (uVar8 != *(uint *)(pcVar7 + 4)) {\n          uVar2 = *(undefined4 *)(local_24 + 4);\n          *(int *)(pcVar7 + 0x48) = local_24;\n          *(uint *)(pcVar7 + 4) = uVar8;\n          *(undefined4 *)(pcVar7 + 0x38) = uVar2;\n          *(int **)(pcVar7 + 0x34) = piVar1;\n          cVar3 = '\0';\n          if (uVar8 == 1) {\n            cVar3 = 'd';\n          }\n          pcVar7[9] = cVar3;\n        }\n        iVar6 = FUN_000777f0();\n        if (iVar6 != 0) {\n          if (*(int *)(iVar4 + 0x6c) != 0) {\n            FUN_0003be70();\n          }\n          goto LAB_0007ab00;\n        }\n        pcVar7 = *(char **)(iVar4 + 0x6c);\n      }\n      if ((*(short *)(pcVar7 + 0x16) != 0) && (iVar6 = iVar5, pcVar7[2] == *(char *)(iVar4 + 0x3d)))\n      goto LAB_0007ab14;\n      iVar6 = 0xb;\n      FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0xfeb7,\n                   &UNK_000dcb22 + unaff_EBP);\n      if (*(int *)(iVar4 + 0x6c) != 0) {\n        FUN_0003be70();\n      }\n    }\n  }\nLAB_0007ab00:\n  cVar3 = *(char *)(iVar4 + 0x3c) + -1;\n  *(char *)(iVar4 + 0x3c) = cVar3;\n  *(undefined4 *)(iVar4 + 0x6c) = *(undefined4 *)(iVar4 + 0x70 + cVar3 * 4);\nLAB_0007ab14:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar6;\n  }\n                    \n  FUN_00153870();\n}" ({ "{") (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (identifier "uVar2") (; ";")) (declaration "char cVar3;" (primitive_type "char") (identifier "cVar3") (; ";")) (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 "char *pcVar7;" (primitive_type "char") (pointer_declarator "*pcVar7" (* "*") (identifier "pcVar7")) (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "int unaff_EBP;" (primitive_type "int") (identifier "unaff_EBP") (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "undefined8 uVar9;" (type_identifier "undefined8") (identifier "uVar9") (; ";")) (declaration "int local_24;" (primitive_type "int") (identifier "local_24") (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (expression_statement "uVar9 = FUN_0003a405();" (assignment_expression "uVar9 = FUN_0003a405()" (identifier "uVar9") (= "=") (call_expression "FUN_0003a405()" (identifier "FUN_0003a405") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "uVar8 = (uint)((ulonglong)uVar9 >> 0x20);" (assignment_expression "uVar8 = (uint)((ulonglong)uVar9 >> 0x20)" (identifier "uVar8") (= "=") (call_expression "(uint)((ulonglong)uVar9 >> 0x20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((ulonglong)uVar9 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar9 >> 0x20" (cast_expression "(ulonglong)uVar9" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar9")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "iVar4 = (int)uVar9;" (assignment_expression "iVar4 = (int)uVar9" (identifier "iVar4") (= "=") (cast_expression "(int)uVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar9"))) (; ";")) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (= "=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "cVar3 = *(char *)(iVar4 + 0x3c);" (assignment_expression "cVar3 = *(char *)(iVar4 + 0x3c)" (identifier "cVar3") (= "=") (pointer_expression "*(char *)(iVar4 + 0x3c)" (* "*") (cast_expression "(char *)(iVar4 + 0x3c)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x3c)" (( "(") (binary_expression "iVar4 + 0x3c" (identifier "iVar4") (+ "+") (number_literal "0x3c")) () ")"))))) (; ";")) (if_statement "if ('\x12' < cVar3) {\n    iVar6 = 0xb;\n    FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0x109db,\n                 &UNK_000dcb22 + unaff_EBP);\n    goto LAB_0007ab14;\n  }" (if "if") (parenthesized_expression "('\x12' < cVar3)" (( "(") (binary_expression "'\x12' < cVar3" (char_literal "'\x12'" (' "'") (escape_sequence "\x12") (' "'")) (< "<") (identifier "cVar3")) () ")")) (compound_statement "{\n    iVar6 = 0xb;\n    FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0x109db,\n                 &UNK_000dcb22 + unaff_EBP);\n    goto LAB_0007ab14;\n  }" ({ "{") (expression_statement "iVar6 = 0xb;" (assignment_expression "iVar6 = 0xb" (identifier "iVar6") (= "=") (number_literal "0xb")) (; ";")) (expression_statement "FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0x109db,\n                 &UNK_000dcb22 + unaff_EBP);" (call_expression "FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0x109db,\n                 &UNK_000dcb22 + unaff_EBP)" (identifier "FUN_000770e0") (argument_list "(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0x109db,\n                 &UNK_000dcb22 + unaff_EBP)" (( "(") (number_literal "0xb") (, ",") (binary_expression "&UNK_000e1e69 + unaff_EBP" (pointer_expression "&UNK_000e1e69" (& "&") (identifier "UNK_000e1e69")) (+ "+") (identifier "unaff_EBP")) (, ",") (binary_expression "&UNK_000e1f20 + unaff_EBP" (pointer_expression "&UNK_000e1f20" (& "&") (identifier "UNK_000e1f20")) (+ "+") (identifier "unaff_EBP")) (, ",") (number_literal "0x109db") (, ",") (binary_expression "&UNK_000dcb22 + unaff_EBP" (pointer_expression "&UNK_000dcb22" (& "&") (identifier "UNK_000dcb22")) (+ "+") (identifier "unaff_EBP")) () ")"))) (; ";")) (goto_statement "goto LAB_0007ab14;" (goto "goto") (statement_identifier "LAB_0007ab14") (; ";")) (} "}"))) (expression_statement "*(byte *)(iVar4 + 1) = *(byte *)(iVar4 + 1) & 0xf9;" (assignment_expression "*(byte *)(iVar4 + 1) = *(byte *)(iVar4 + 1) & 0xf9" (pointer_expression "*(byte *)(iVar4 + 1)" (* "*") (cast_expression "(byte *)(iVar4 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 1)" (( "(") (binary_expression "iVar4 + 1" (identifier "iVar4") (+ "+") (number_literal "1")) () ")")))) (= "=") (binary_expression "*(byte *)(iVar4 + 1) & 0xf9" (pointer_expression "*(byte *)(iVar4 + 1)" (* "*") (cast_expression "(byte *)(iVar4 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 1)" (( "(") (binary_expression "iVar4 + 1" (identifier "iVar4") (+ "+") (number_literal "1")) () ")")))) (& "&") (number_literal "0xf9"))) (; ";")) (expression_statement "*(undefined2 *)(iVar4 + 0x2e) = 0;" (assignment_expression "*(undefined2 *)(iVar4 + 0x2e) = 0" (pointer_expression "*(undefined2 *)(iVar4 + 0x2e)" (* "*") (cast_expression "(undefined2 *)(iVar4 + 0x2e)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x2e)" (( "(") (binary_expression "iVar4 + 0x2e" (identifier "iVar4") (+ "+") (number_literal "0x2e")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar1 = *(int **)(iVar4 + 0x14);" (assignment_expression "piVar1 = *(int **)(iVar4 + 0x14)" (identifier "piVar1") (= "=") (pointer_expression "*(int **)(iVar4 + 0x14)" (* "*") (cast_expression "(int **)(iVar4 + 0x14)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar4 + 0x14)" (( "(") (binary_expression "iVar4 + 0x14" (identifier "iVar4") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "*(undefined2 *)(iVar4 + 0x40 + cVar3 * 2) = *(undefined2 *)(iVar4 + 0x3e);" (assignment_expression "*(undefined2 *)(iVar4 + 0x40 + cVar3 * 2) = *(undefined2 *)(iVar4 + 0x3e)" (pointer_expression "*(undefined2 *)(iVar4 + 0x40 + cVar3 * 2)" (* "*") (cast_expression "(undefined2 *)(iVar4 + 0x40 + cVar3 * 2)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x40 + cVar3 * 2)" (( "(") (binary_expression "iVar4 + 0x40 + cVar3 * 2" (binary_expression "iVar4 + 0x40" (identifier "iVar4") (+ "+") (number_literal "0x40")) (+ "+") (binary_expression "cVar3 * 2" (identifier "cVar3") (* "*") (number_literal "2"))) () ")")))) (= "=") (pointer_expression "*(undefined2 *)(iVar4 + 0x3e)" (* "*") (cast_expression "(undefined2 *)(iVar4 + 0x3e)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x3e)" (( "(") (binary_expression "iVar4 + 0x3e" (identifier "iVar4") (+ "+") (number_literal "0x3e")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(iVar4 + 0x70 + cVar3 * 4) = *(undefined4 *)(iVar4 + 0x6c);" (assignment_expression "*(undefined4 *)(iVar4 + 0x70 + cVar3 * 4) = *(undefined4 *)(iVar4 + 0x6c)" (pointer_expression "*(undefined4 *)(iVar4 + 0x70 + cVar3 * 4)" (* "*") (cast_expression "(undefined4 *)(iVar4 + 0x70 + cVar3 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x70 + cVar3 * 4)" (( "(") (binary_expression "iVar4 + 0x70 + cVar3 * 4" (binary_expression "iVar4 + 0x70" (identifier "iVar4") (+ "+") (number_literal "0x70")) (+ "+") (binary_expression "cVar3 * 4" (identifier "cVar3") (* "*") (number_literal "4"))) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(iVar4 + 0x6c)" (* "*") (cast_expression "(undefined4 *)(iVar4 + 0x6c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x6c)" (( "(") (binary_expression "iVar4 + 0x6c" (identifier "iVar4") (+ "+") (number_literal "0x6c")) () ")"))))) (; ";")) (expression_statement "*(undefined2 *)(iVar4 + 0x3e) = 0;" (assignment_expression "*(undefined2 *)(iVar4 + 0x3e) = 0" (pointer_expression "*(undefined2 *)(iVar4 + 0x3e)" (* "*") (cast_expression "(undefined2 *)(iVar4 + 0x3e)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x3e)" (( "(") (binary_expression "iVar4 + 0x3e" (identifier "iVar4") (+ "+") (number_literal "0x3e")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(char *)(iVar4 + 0x3c) = cVar3 + '\x01';" (assignment_expression "*(char *)(iVar4 + 0x3c) = cVar3 + '\x01'" (pointer_expression "*(char *)(iVar4 + 0x3c)" (* "*") (cast_expression "(char *)(iVar4 + 0x3c)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x3c)" (( "(") (binary_expression "iVar4 + 0x3c" (identifier "iVar4") (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (binary_expression "cVar3 + '\x01'" (identifier "cVar3") (+ "+") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'")))) (; ";")) (if_statement "if ((uint)piVar1[0xb] < uVar8) {\n    iVar6 = 0xb;\n    FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0xfea1,\n                 &UNK_000dcb22 + unaff_EBP);\n  }\n  else {\n    iVar5 = (**(code **)(*piVar1 + 200))(*piVar1,uVar8,&local_24,*(undefined1 *)(iVar4 + 2));\n    iVar6 = iVar5;\n    if (iVar5 == 0) {\n      pcVar7 = *(char **)(local_24 + 8);\n      *(char **)(iVar4 + 0x6c) = pcVar7;\n      if (*pcVar7 == '\0') {\n        if (uVar8 != *(uint *)(pcVar7 + 4)) {\n          uVar2 = *(undefined4 *)(local_24 + 4);\n          *(int *)(pcVar7 + 0x48) = local_24;\n          *(uint *)(pcVar7 + 4) = uVar8;\n          *(undefined4 *)(pcVar7 + 0x38) = uVar2;\n          *(int **)(pcVar7 + 0x34) = piVar1;\n          cVar3 = '\0';\n          if (uVar8 == 1) {\n            cVar3 = 'd';\n          }\n          pcVar7[9] = cVar3;\n        }\n        iVar6 = FUN_000777f0();\n        if (iVar6 != 0) {\n          if (*(int *)(iVar4 + 0x6c) != 0) {\n            FUN_0003be70();\n          }\n          goto LAB_0007ab00;\n        }\n        pcVar7 = *(char **)(iVar4 + 0x6c);\n      }\n      if ((*(short *)(pcVar7 + 0x16) != 0) && (iVar6 = iVar5, pcVar7[2] == *(char *)(iVar4 + 0x3d)))\n      goto LAB_0007ab14;\n      iVar6 = 0xb;\n      FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0xfeb7,\n                   &UNK_000dcb22 + unaff_EBP);\n      if (*(int *)(iVar4 + 0x6c) != 0) {\n        FUN_0003be70();\n      }\n    }\n  }" (if "if") (parenthesized_expression "((uint)piVar1[0xb] < uVar8)" (( "(") (binary_expression "(uint)piVar1[0xb] < uVar8" (cast_expression "(uint)piVar1[0xb]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "piVar1[0xb]" (identifier "piVar1") ([ "[") (number_literal "0xb") (] "]"))) (< "<") (identifier "uVar8")) () ")")) (compound_statement "{\n    iVar6 = 0xb;\n    FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0xfea1,\n                 &UNK_000dcb22 + unaff_EBP);\n  }" ({ "{") (expression_statement "iVar6 = 0xb;" (assignment_expression "iVar6 = 0xb" (identifier "iVar6") (= "=") (number_literal "0xb")) (; ";")) (expression_statement "FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0xfea1,\n                 &UNK_000dcb22 + unaff_EBP);" (call_expression "FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0xfea1,\n                 &UNK_000dcb22 + unaff_EBP)" (identifier "FUN_000770e0") (argument_list "(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0xfea1,\n                 &UNK_000dcb22 + unaff_EBP)" (( "(") (number_literal "0xb") (, ",") (binary_expression "&UNK_000e1e69 + unaff_EBP" (pointer_expression "&UNK_000e1e69" (& "&") (identifier "UNK_000e1e69")) (+ "+") (identifier "unaff_EBP")) (, ",") (binary_expression "&UNK_000e1f20 + unaff_EBP" (pointer_expression "&UNK_000e1f20" (& "&") (identifier "UNK_000e1f20")) (+ "+") (identifier "unaff_EBP")) (, ",") (number_literal "0xfea1") (, ",") (binary_expression "&UNK_000dcb22 + unaff_EBP" (pointer_expression "&UNK_000dcb22" (& "&") (identifier "UNK_000dcb22")) (+ "+") (identifier "unaff_EBP")) () ")"))) (; ";")) (} "}")) (else_clause "else {\n    iVar5 = (**(code **)(*piVar1 + 200))(*piVar1,uVar8,&local_24,*(undefined1 *)(iVar4 + 2));\n    iVar6 = iVar5;\n    if (iVar5 == 0) {\n      pcVar7 = *(char **)(local_24 + 8);\n      *(char **)(iVar4 + 0x6c) = pcVar7;\n      if (*pcVar7 == '\0') {\n        if (uVar8 != *(uint *)(pcVar7 + 4)) {\n          uVar2 = *(undefined4 *)(local_24 + 4);\n          *(int *)(pcVar7 + 0x48) = local_24;\n          *(uint *)(pcVar7 + 4) = uVar8;\n          *(undefined4 *)(pcVar7 + 0x38) = uVar2;\n          *(int **)(pcVar7 + 0x34) = piVar1;\n          cVar3 = '\0';\n          if (uVar8 == 1) {\n            cVar3 = 'd';\n          }\n          pcVar7[9] = cVar3;\n        }\n        iVar6 = FUN_000777f0();\n        if (iVar6 != 0) {\n          if (*(int *)(iVar4 + 0x6c) != 0) {\n            FUN_0003be70();\n          }\n          goto LAB_0007ab00;\n        }\n        pcVar7 = *(char **)(iVar4 + 0x6c);\n      }\n      if ((*(short *)(pcVar7 + 0x16) != 0) && (iVar6 = iVar5, pcVar7[2] == *(char *)(iVar4 + 0x3d)))\n      goto LAB_0007ab14;\n      iVar6 = 0xb;\n      FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0xfeb7,\n                   &UNK_000dcb22 + unaff_EBP);\n      if (*(int *)(iVar4 + 0x6c) != 0) {\n        FUN_0003be70();\n      }\n    }\n  }" (else "else") (compound_statement "{\n    iVar5 = (**(code **)(*piVar1 + 200))(*piVar1,uVar8,&local_24,*(undefined1 *)(iVar4 + 2));\n    iVar6 = iVar5;\n    if (iVar5 == 0) {\n      pcVar7 = *(char **)(local_24 + 8);\n      *(char **)(iVar4 + 0x6c) = pcVar7;\n      if (*pcVar7 == '\0') {\n        if (uVar8 != *(uint *)(pcVar7 + 4)) {\n          uVar2 = *(undefined4 *)(local_24 + 4);\n          *(int *)(pcVar7 + 0x48) = local_24;\n          *(uint *)(pcVar7 + 4) = uVar8;\n          *(undefined4 *)(pcVar7 + 0x38) = uVar2;\n          *(int **)(pcVar7 + 0x34) = piVar1;\n          cVar3 = '\0';\n          if (uVar8 == 1) {\n            cVar3 = 'd';\n          }\n          pcVar7[9] = cVar3;\n        }\n        iVar6 = FUN_000777f0();\n        if (iVar6 != 0) {\n          if (*(int *)(iVar4 + 0x6c) != 0) {\n            FUN_0003be70();\n          }\n          goto LAB_0007ab00;\n        }\n        pcVar7 = *(char **)(iVar4 + 0x6c);\n      }\n      if ((*(short *)(pcVar7 + 0x16) != 0) && (iVar6 = iVar5, pcVar7[2] == *(char *)(iVar4 + 0x3d)))\n      goto LAB_0007ab14;\n      iVar6 = 0xb;\n      FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0xfeb7,\n                   &UNK_000dcb22 + unaff_EBP);\n      if (*(int *)(iVar4 + 0x6c) != 0) {\n        FUN_0003be70();\n      }\n    }\n  }" ({ "{") (expression_statement "iVar5 = (**(code **)(*piVar1 + 200))(*piVar1,uVar8,&local_24,*(undefined1 *)(iVar4 + 2));" (assignment_expression "iVar5 = (**(code **)(*piVar1 + 200))(*piVar1,uVar8,&local_24,*(undefined1 *)(iVar4 + 2))" (identifier "iVar5") (= "=") (call_expression "(**(code **)(*piVar1 + 200))(*piVar1,uVar8,&local_24,*(undefined1 *)(iVar4 + 2))" (parenthesized_expression "(**(code **)(*piVar1 + 200))" (( "(") (pointer_expression "**(code **)(*piVar1 + 200)" (* "*") (pointer_expression "*(code **)(*piVar1 + 200)" (* "*") (cast_expression "(code **)(*piVar1 + 200)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar1 + 200)" (( "(") (binary_expression "*piVar1 + 200" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (+ "+") (number_literal "200")) () ")"))))) () ")")) (argument_list "(*piVar1,uVar8,&local_24,*(undefined1 *)(iVar4 + 2))" (( "(") (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (, ",") (identifier "uVar8") (, ",") (pointer_expression "&local_24" (& "&") (identifier "local_24")) (, ",") (pointer_expression "*(undefined1 *)(iVar4 + 2)" (* "*") (cast_expression "(undefined1 *)(iVar4 + 2)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 2)" (( "(") (binary_expression "iVar4 + 2" (identifier "iVar4") (+ "+") (number_literal "2")) () ")")))) () ")")))) (; ";")) (expression_statement "iVar6 = iVar5;" (assignment_expression "iVar6 = iVar5" (identifier "iVar6") (= "=") (identifier "iVar5")) (; ";")) (if_statement "if (iVar5 == 0) {\n      pcVar7 = *(char **)(local_24 + 8);\n      *(char **)(iVar4 + 0x6c) = pcVar7;\n      if (*pcVar7 == '\0') {\n        if (uVar8 != *(uint *)(pcVar7 + 4)) {\n          uVar2 = *(undefined4 *)(local_24 + 4);\n          *(int *)(pcVar7 + 0x48) = local_24;\n          *(uint *)(pcVar7 + 4) = uVar8;\n          *(undefined4 *)(pcVar7 + 0x38) = uVar2;\n          *(int **)(pcVar7 + 0x34) = piVar1;\n          cVar3 = '\0';\n          if (uVar8 == 1) {\n            cVar3 = 'd';\n          }\n          pcVar7[9] = cVar3;\n        }\n        iVar6 = FUN_000777f0();\n        if (iVar6 != 0) {\n          if (*(int *)(iVar4 + 0x6c) != 0) {\n            FUN_0003be70();\n          }\n          goto LAB_0007ab00;\n        }\n        pcVar7 = *(char **)(iVar4 + 0x6c);\n      }\n      if ((*(short *)(pcVar7 + 0x16) != 0) && (iVar6 = iVar5, pcVar7[2] == *(char *)(iVar4 + 0x3d)))\n      goto LAB_0007ab14;\n      iVar6 = 0xb;\n      FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0xfeb7,\n                   &UNK_000dcb22 + unaff_EBP);\n      if (*(int *)(iVar4 + 0x6c) != 0) {\n        FUN_0003be70();\n      }\n    }" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      pcVar7 = *(char **)(local_24 + 8);\n      *(char **)(iVar4 + 0x6c) = pcVar7;\n      if (*pcVar7 == '\0') {\n        if (uVar8 != *(uint *)(pcVar7 + 4)) {\n          uVar2 = *(undefined4 *)(local_24 + 4);\n          *(int *)(pcVar7 + 0x48) = local_24;\n          *(uint *)(pcVar7 + 4) = uVar8;\n          *(undefined4 *)(pcVar7 + 0x38) = uVar2;\n          *(int **)(pcVar7 + 0x34) = piVar1;\n          cVar3 = '\0';\n          if (uVar8 == 1) {\n            cVar3 = 'd';\n          }\n          pcVar7[9] = cVar3;\n        }\n        iVar6 = FUN_000777f0();\n        if (iVar6 != 0) {\n          if (*(int *)(iVar4 + 0x6c) != 0) {\n            FUN_0003be70();\n          }\n          goto LAB_0007ab00;\n        }\n        pcVar7 = *(char **)(iVar4 + 0x6c);\n      }\n      if ((*(short *)(pcVar7 + 0x16) != 0) && (iVar6 = iVar5, pcVar7[2] == *(char *)(iVar4 + 0x3d)))\n      goto LAB_0007ab14;\n      iVar6 = 0xb;\n      FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0xfeb7,\n                   &UNK_000dcb22 + unaff_EBP);\n      if (*(int *)(iVar4 + 0x6c) != 0) {\n        FUN_0003be70();\n      }\n    }" ({ "{") (expression_statement "pcVar7 = *(char **)(local_24 + 8);" (assignment_expression "pcVar7 = *(char **)(local_24 + 8)" (identifier "pcVar7") (= "=") (pointer_expression "*(char **)(local_24 + 8)" (* "*") (cast_expression "(char **)(local_24 + 8)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(local_24 + 8)" (( "(") (binary_expression "local_24 + 8" (identifier "local_24") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "*(char **)(iVar4 + 0x6c) = pcVar7;" (assignment_expression "*(char **)(iVar4 + 0x6c) = pcVar7" (pointer_expression "*(char **)(iVar4 + 0x6c)" (* "*") (cast_expression "(char **)(iVar4 + 0x6c)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar4 + 0x6c)" (( "(") (binary_expression "iVar4 + 0x6c" (identifier "iVar4") (+ "+") (number_literal "0x6c")) () ")")))) (= "=") (identifier "pcVar7")) (; ";")) (if_statement "if (*pcVar7 == '\0') {\n        if (uVar8 != *(uint *)(pcVar7 + 4)) {\n          uVar2 = *(undefined4 *)(local_24 + 4);\n          *(int *)(pcVar7 + 0x48) = local_24;\n          *(uint *)(pcVar7 + 4) = uVar8;\n          *(undefined4 *)(pcVar7 + 0x38) = uVar2;\n          *(int **)(pcVar7 + 0x34) = piVar1;\n          cVar3 = '\0';\n          if (uVar8 == 1) {\n            cVar3 = 'd';\n          }\n          pcVar7[9] = cVar3;\n        }\n        iVar6 = FUN_000777f0();\n        if (iVar6 != 0) {\n          if (*(int *)(iVar4 + 0x6c) != 0) {\n            FUN_0003be70();\n          }\n          goto LAB_0007ab00;\n        }\n        pcVar7 = *(char **)(iVar4 + 0x6c);\n      }" (if "if") (parenthesized_expression "(*pcVar7 == '\0')" (( "(") (binary_expression "*pcVar7 == '\0'" (pointer_expression "*pcVar7" (* "*") (identifier "pcVar7")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        if (uVar8 != *(uint *)(pcVar7 + 4)) {\n          uVar2 = *(undefined4 *)(local_24 + 4);\n          *(int *)(pcVar7 + 0x48) = local_24;\n          *(uint *)(pcVar7 + 4) = uVar8;\n          *(undefined4 *)(pcVar7 + 0x38) = uVar2;\n          *(int **)(pcVar7 + 0x34) = piVar1;\n          cVar3 = '\0';\n          if (uVar8 == 1) {\n            cVar3 = 'd';\n          }\n          pcVar7[9] = cVar3;\n        }\n        iVar6 = FUN_000777f0();\n        if (iVar6 != 0) {\n          if (*(int *)(iVar4 + 0x6c) != 0) {\n            FUN_0003be70();\n          }\n          goto LAB_0007ab00;\n        }\n        pcVar7 = *(char **)(iVar4 + 0x6c);\n      }" ({ "{") (if_statement "if (uVar8 != *(uint *)(pcVar7 + 4)) {\n          uVar2 = *(undefined4 *)(local_24 + 4);\n          *(int *)(pcVar7 + 0x48) = local_24;\n          *(uint *)(pcVar7 + 4) = uVar8;\n          *(undefined4 *)(pcVar7 + 0x38) = uVar2;\n          *(int **)(pcVar7 + 0x34) = piVar1;\n          cVar3 = '\0';\n          if (uVar8 == 1) {\n            cVar3 = 'd';\n          }\n          pcVar7[9] = cVar3;\n        }" (if "if") (parenthesized_expression "(uVar8 != *(uint *)(pcVar7 + 4))" (( "(") (binary_expression "uVar8 != *(uint *)(pcVar7 + 4)" (identifier "uVar8") (!= "!=") (pointer_expression "*(uint *)(pcVar7 + 4)" (* "*") (cast_expression "(uint *)(pcVar7 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar7 + 4)" (( "(") (binary_expression "pcVar7 + 4" (identifier "pcVar7") (+ "+") (number_literal "4")) () ")"))))) () ")")) (compound_statement "{\n          uVar2 = *(undefined4 *)(local_24 + 4);\n          *(int *)(pcVar7 + 0x48) = local_24;\n          *(uint *)(pcVar7 + 4) = uVar8;\n          *(undefined4 *)(pcVar7 + 0x38) = uVar2;\n          *(int **)(pcVar7 + 0x34) = piVar1;\n          cVar3 = '\0';\n          if (uVar8 == 1) {\n            cVar3 = 'd';\n          }\n          pcVar7[9] = cVar3;\n        }" ({ "{") (expression_statement "uVar2 = *(undefined4 *)(local_24 + 4);" (assignment_expression "uVar2 = *(undefined4 *)(local_24 + 4)" (identifier "uVar2") (= "=") (pointer_expression "*(undefined4 *)(local_24 + 4)" (* "*") (cast_expression "(undefined4 *)(local_24 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_24 + 4)" (( "(") (binary_expression "local_24 + 4" (identifier "local_24") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "*(int *)(pcVar7 + 0x48) = local_24;" (assignment_expression "*(int *)(pcVar7 + 0x48) = local_24" (pointer_expression "*(int *)(pcVar7 + 0x48)" (* "*") (cast_expression "(int *)(pcVar7 + 0x48)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar7 + 0x48)" (( "(") (binary_expression "pcVar7 + 0x48" (identifier "pcVar7") (+ "+") (number_literal "0x48")) () ")")))) (= "=") (identifier "local_24")) (; ";")) (expression_statement "*(uint *)(pcVar7 + 4) = uVar8;" (assignment_expression "*(uint *)(pcVar7 + 4) = uVar8" (pointer_expression "*(uint *)(pcVar7 + 4)" (* "*") (cast_expression "(uint *)(pcVar7 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar7 + 4)" (( "(") (binary_expression "pcVar7 + 4" (identifier "pcVar7") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "uVar8")) (; ";")) (expression_statement "*(undefined4 *)(pcVar7 + 0x38) = uVar2;" (assignment_expression "*(undefined4 *)(pcVar7 + 0x38) = uVar2" (pointer_expression "*(undefined4 *)(pcVar7 + 0x38)" (* "*") (cast_expression "(undefined4 *)(pcVar7 + 0x38)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar7 + 0x38)" (( "(") (binary_expression "pcVar7 + 0x38" (identifier "pcVar7") (+ "+") (number_literal "0x38")) () ")")))) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "*(int **)(pcVar7 + 0x34) = piVar1;" (assignment_expression "*(int **)(pcVar7 + 0x34) = piVar1" (pointer_expression "*(int **)(pcVar7 + 0x34)" (* "*") (cast_expression "(int **)(pcVar7 + 0x34)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar7 + 0x34)" (( "(") (binary_expression "pcVar7 + 0x34" (identifier "pcVar7") (+ "+") (number_literal "0x34")) () ")")))) (= "=") (identifier "piVar1")) (; ";")) (expression_statement "cVar3 = '\0';" (assignment_expression "cVar3 = '\0'" (identifier "cVar3") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (if_statement "if (uVar8 == 1) {\n            cVar3 = 'd';\n          }" (if "if") (parenthesized_expression "(uVar8 == 1)" (( "(") (binary_expression "uVar8 == 1" (identifier "uVar8") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n            cVar3 = 'd';\n          }" ({ "{") (expression_statement "cVar3 = 'd';" (assignment_expression "cVar3 = 'd'" (identifier "cVar3") (= "=") (char_literal "'d'" (' "'") (character "d") (' "'"))) (; ";")) (} "}"))) (expression_statement "pcVar7[9] = cVar3;" (assignment_expression "pcVar7[9] = cVar3" (subscript_expression "pcVar7[9]" (identifier "pcVar7") ([ "[") (number_literal "9") (] "]")) (= "=") (identifier "cVar3")) (; ";")) (} "}"))) (expression_statement "iVar6 = FUN_000777f0();" (assignment_expression "iVar6 = FUN_000777f0()" (identifier "iVar6") (= "=") (call_expression "FUN_000777f0()" (identifier "FUN_000777f0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar6 != 0) {\n          if (*(int *)(iVar4 + 0x6c) != 0) {\n            FUN_0003be70();\n          }\n          goto LAB_0007ab00;\n        }" (if "if") (parenthesized_expression "(iVar6 != 0)" (( "(") (binary_expression "iVar6 != 0" (identifier "iVar6") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          if (*(int *)(iVar4 + 0x6c) != 0) {\n            FUN_0003be70();\n          }\n          goto LAB_0007ab00;\n        }" ({ "{") (if_statement "if (*(int *)(iVar4 + 0x6c) != 0) {\n            FUN_0003be70();\n          }" (if "if") (parenthesized_expression "(*(int *)(iVar4 + 0x6c) != 0)" (( "(") (binary_expression "*(int *)(iVar4 + 0x6c) != 0" (pointer_expression "*(int *)(iVar4 + 0x6c)" (* "*") (cast_expression "(int *)(iVar4 + 0x6c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x6c)" (( "(") (binary_expression "iVar4 + 0x6c" (identifier "iVar4") (+ "+") (number_literal "0x6c")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            FUN_0003be70();\n          }" ({ "{") (expression_statement "FUN_0003be70();" (call_expression "FUN_0003be70()" (identifier "FUN_0003be70") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (goto_statement "goto LAB_0007ab00;" (goto "goto") (statement_identifier "LAB_0007ab00") (; ";")) (} "}"))) (expression_statement "pcVar7 = *(char **)(iVar4 + 0x6c);" (assignment_expression "pcVar7 = *(char **)(iVar4 + 0x6c)" (identifier "pcVar7") (= "=") (pointer_expression "*(char **)(iVar4 + 0x6c)" (* "*") (cast_expression "(char **)(iVar4 + 0x6c)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar4 + 0x6c)" (( "(") (binary_expression "iVar4 + 0x6c" (identifier "iVar4") (+ "+") (number_literal "0x6c")) () ")"))))) (; ";")) (} "}"))) (if_statement "if ((*(short *)(pcVar7 + 0x16) != 0) && (iVar6 = iVar5, pcVar7[2] == *(char *)(iVar4 + 0x3d)))\n      goto LAB_0007ab14;" (if "if") (parenthesized_expression "((*(short *)(pcVar7 + 0x16) != 0) && (iVar6 = iVar5, pcVar7[2] == *(char *)(iVar4 + 0x3d)))" (( "(") (binary_expression "(*(short *)(pcVar7 + 0x16) != 0) && (iVar6 = iVar5, pcVar7[2] == *(char *)(iVar4 + 0x3d))" (parenthesized_expression "(*(short *)(pcVar7 + 0x16) != 0)" (( "(") (binary_expression "*(short *)(pcVar7 + 0x16) != 0" (pointer_expression "*(short *)(pcVar7 + 0x16)" (* "*") (cast_expression "(short *)(pcVar7 + 0x16)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar7 + 0x16)" (( "(") (binary_expression "pcVar7 + 0x16" (identifier "pcVar7") (+ "+") (number_literal "0x16")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar6 = iVar5, pcVar7[2] == *(char *)(iVar4 + 0x3d))" (( "(") (comma_expression "iVar6 = iVar5, pcVar7[2] == *(char *)(iVar4 + 0x3d)" (assignment_expression "iVar6 = iVar5" (identifier "iVar6") (= "=") (identifier "iVar5")) (, ",") (binary_expression "pcVar7[2] == *(char *)(iVar4 + 0x3d)" (subscript_expression "pcVar7[2]" (identifier "pcVar7") ([ "[") (number_literal "2") (] "]")) (== "==") (pointer_expression "*(char *)(iVar4 + 0x3d)" (* "*") (cast_expression "(char *)(iVar4 + 0x3d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x3d)" (( "(") (binary_expression "iVar4 + 0x3d" (identifier "iVar4") (+ "+") (number_literal "0x3d")) () ")")))))) () ")"))) () ")")) (goto_statement "goto LAB_0007ab14;" (goto "goto") (statement_identifier "LAB_0007ab14") (; ";"))) (expression_statement "iVar6 = 0xb;" (assignment_expression "iVar6 = 0xb" (identifier "iVar6") (= "=") (number_literal "0xb")) (; ";")) (expression_statement "FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0xfeb7,\n                   &UNK_000dcb22 + unaff_EBP);" (call_expression "FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0xfeb7,\n                   &UNK_000dcb22 + unaff_EBP)" (identifier "FUN_000770e0") (argument_list "(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0xfeb7,\n                   &UNK_000dcb22 + unaff_EBP)" (( "(") (number_literal "0xb") (, ",") (binary_expression "&UNK_000e1e69 + unaff_EBP" (pointer_expression "&UNK_000e1e69" (& "&") (identifier "UNK_000e1e69")) (+ "+") (identifier "unaff_EBP")) (, ",") (binary_expression "&UNK_000e1f20 + unaff_EBP" (pointer_expression "&UNK_000e1f20" (& "&") (identifier "UNK_000e1f20")) (+ "+") (identifier "unaff_EBP")) (, ",") (number_literal "0xfeb7") (, ",") (binary_expression "&UNK_000dcb22 + unaff_EBP" (pointer_expression "&UNK_000dcb22" (& "&") (identifier "UNK_000dcb22")) (+ "+") (identifier "unaff_EBP")) () ")"))) (; ";")) (if_statement "if (*(int *)(iVar4 + 0x6c) != 0) {\n        FUN_0003be70();\n      }" (if "if") (parenthesized_expression "(*(int *)(iVar4 + 0x6c) != 0)" (( "(") (binary_expression "*(int *)(iVar4 + 0x6c) != 0" (pointer_expression "*(int *)(iVar4 + 0x6c)" (* "*") (cast_expression "(int *)(iVar4 + 0x6c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x6c)" (( "(") (binary_expression "iVar4 + 0x6c" (identifier "iVar4") (+ "+") (number_literal "0x6c")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        FUN_0003be70();\n      }" ({ "{") (expression_statement "FUN_0003be70();" (call_expression "FUN_0003be70()" (identifier "FUN_0003be70") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (} "}"))) (} "}")))) (labeled_statement "LAB_0007ab00:\n  cVar3 = *(char *)(iVar4 + 0x3c) + -1;" (statement_identifier "LAB_0007ab00") (: ":") (expression_statement "cVar3 = *(char *)(iVar4 + 0x3c) + -1;" (assignment_expression "cVar3 = *(char *)(iVar4 + 0x3c) + -1" (identifier "cVar3") (= "=") (binary_expression "*(char *)(iVar4 + 0x3c) + -1" (pointer_expression "*(char *)(iVar4 + 0x3c)" (* "*") (cast_expression "(char *)(iVar4 + 0x3c)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x3c)" (( "(") (binary_expression "iVar4 + 0x3c" (identifier "iVar4") (+ "+") (number_literal "0x3c")) () ")")))) (+ "+") (number_literal "-1"))) (; ";"))) (expression_statement "*(char *)(iVar4 + 0x3c) = cVar3;" (assignment_expression "*(char *)(iVar4 + 0x3c) = cVar3" (pointer_expression "*(char *)(iVar4 + 0x3c)" (* "*") (cast_expression "(char *)(iVar4 + 0x3c)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x3c)" (( "(") (binary_expression "iVar4 + 0x3c" (identifier "iVar4") (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (identifier "cVar3")) (; ";")) (expression_statement "*(undefined4 *)(iVar4 + 0x6c) = *(undefined4 *)(iVar4 + 0x70 + cVar3 * 4);" (assignment_expression "*(undefined4 *)(iVar4 + 0x6c) = *(undefined4 *)(iVar4 + 0x70 + cVar3 * 4)" (pointer_expression "*(undefined4 *)(iVar4 + 0x6c)" (* "*") (cast_expression "(undefined4 *)(iVar4 + 0x6c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x6c)" (( "(") (binary_expression "iVar4 + 0x6c" (identifier "iVar4") (+ "+") (number_literal "0x6c")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(iVar4 + 0x70 + cVar3 * 4)" (* "*") (cast_expression "(undefined4 *)(iVar4 + 0x70 + cVar3 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x70 + cVar3 * 4)" (( "(") (binary_expression "iVar4 + 0x70 + cVar3 * 4" (binary_expression "iVar4 + 0x70" (identifier "iVar4") (+ "+") (number_literal "0x70")) (+ "+") (binary_expression "cVar3 * 4" (identifier "cVar3") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (labeled_statement "LAB_0007ab14:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar6;\n  }" (statement_identifier "LAB_0007ab14") (: ":") (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar6;\n  }" (if "if") (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (== "==") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n    return iVar6;\n  }" ({ "{") (return_statement "return iVar6;" (return "return") (identifier "iVar6") (; ";")) (} "}")))) (expression_statement "FUN_00153870();" (call_expression "FUN_00153870()" (identifier "FUN_00153870") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bp replaced with injection: get_pc_thunk.bp */

int __regparm3 function_1(type_1 *pCur,type_2 var_4)

{
  type_3 uVar1;
  type_4 *pBVar2;
  type_5 *puVar3;
  char var_2;
  int var_5;
  int var_7;
  type_6 *pPage;
  type_5 uVar7;
  int var_1;
  type_7 *pDbPage;
  int var_9;
  
  var_9 = *(int *)(var_1 + 0x14);
  var_2 = pCur->iPage;
  if ('\x12' < var_2) {
    var_7 = 0xb;
    var_3(0xb,"%s at line %d of [%.10s]","database corruption",0x109db,
                "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");
    goto LAB_0007ab14;
  }
  uVar1 = pCur->ix;
  pCur->curFlags = pCur->curFlags & 0xf9;
  (pCur->info).nSize = 0;
  pBVar2 = pCur->pBt;
  pCur->aiIdx[var_2] = uVar1;
  pCur->apPage[var_2] = pCur->pPage;
  pCur->ix = 0;
  pCur->iPage = var_2 + '\x01';
  if (pBVar2->nPage < var_4) {
    var_7 = 0xb;
    var_3(0xb,"%s at line %d of [%.10s]","database corruption",0xfea1,
                "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");
  }
  else {
    var_5 = (*pBVar2->pPager->xGet)(pBVar2->pPager,var_4,&pDbPage,(int)pCur->curPagerFlags);
    var_7 = var_5;
    if (var_5 == 0) {
      pPage = (type_6 *)pDbPage->pExtra;
      pCur->pPage = pPage;
      if (pPage->isInit == '\0') {
        if (var_4 != pPage->pgno) {
          puVar3 = (type_5 *)pDbPage->pData;
          pPage->pDbPage = pDbPage;
          pPage->pgno = var_4;
          pPage->aData = puVar3;
          pPage->pBt = pBVar2;
          uVar7 = '\0';
          if (var_4 == 1) {
            uVar7 = 'd';
          }
          pPage->hdrOffset = uVar7;
          pPage = pCur->pPage;
        }
        var_7 = var_6(pPage);
        if (var_7 != 0) {
          if (pCur->pPage != (type_6 *)0x0) {
            var_8(pCur->pPage->pDbPage);
          }
          goto LAB_0007ab00;
        }
        pPage = pCur->pPage;
      }
      if ((pPage->nCell != 0) && (var_7 = var_5, pPage->intKey == pCur->curIntKey))
      goto LAB_0007ab14;
      var_7 = 0xb;
      var_3(0xb,"%s at line %d of [%.10s]","database corruption",0xfeb7,
                  "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");
      if (pCur->pPage != (type_6 *)0x0) {
        var_8(pCur->pPage->pDbPage);
      }
    }
  }
LAB_0007ab00:
  var_2 = pCur->iPage + -1;
  pCur->iPage = var_2;
  pCur->pPage = pCur->apPage[var_2];
LAB_0007ab14:
  if (var_9 == *(int *)(var_1 + 0x14)) {
    return var_7;
  }
                    /* WARNING: Subroutine does not return */
  var_10();
}


(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: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (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: (primitive_type) 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))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (char_literal (escape_sequence)) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier)) (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier)) (number_literal) (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (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: (binary_expression left: (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: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (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: (binary_expression left: (identifier) right: (number_literal)))))) 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))))))) (expression_statement (assignment_expression left: (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: (binary_expression left: (identifier) right: (number_literal)))))) 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))))))) (expression_statement (assignment_expression left: (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: (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: (identifier) right: (char_literal (escape_sequence))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier)) (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier)) (number_literal) (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (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: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (pointer_expression argument: (identifier)) (identifier) (pointer_expression argument: (identifier)) (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))))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (if_statement condition: (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))))))) 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)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_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: (identifier))) (expression_statement (assignment_expression left: (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: (identifier))) (expression_statement (assignment_expression left: (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: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (char_literal (escape_sequence)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (char_literal (character)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))))) (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 (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 (call_expression function: (identifier) arguments: (argument_list))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (binary_expression left: (subscript_expression argument: (identifier) index: (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)))))))))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier)) (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier)) (number_literal) (binary_expression left: (pointer_expression argument: (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: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list)))))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (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))))) (expression_statement (assignment_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: (identifier))) (expression_statement (assignment_expression left: (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: (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: (binary_expression left: (identifier) right: (number_literal)))))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_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))))))) consequence: (compound_statement (return_statement (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))))))

int MASKED(void)

{
  int *piVar1;
  undefined4 uVar2;
  char cVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  char *pcVar7;
  uint uVar8;
  int unaff_EBP;
  int in_GS_OFFSET;
  undefined8 uVar9;
  int local_24;
  int local_20;
  
  uVar9 = FUN_0003a405();
  uVar8 = (uint)((ulonglong)uVar9 >> 0x20);
  iVar4 = (int)uVar9;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  cVar3 = *(char *)(iVar4 + 0x3c);
  if ('\x12' < cVar3) {
    iVar6 = 0xb;
    FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0x109db,
                 &UNK_000dcb22 + unaff_EBP);
    goto LAB_0007ab14;
  }
  *(byte *)(iVar4 + 1) = *(byte *)(iVar4 + 1) & 0xf9;
  *(undefined2 *)(iVar4 + 0x2e) = 0;
  piVar1 = *(int **)(iVar4 + 0x14);
  *(undefined2 *)(iVar4 + 0x40 + cVar3 * 2) = *(undefined2 *)(iVar4 + 0x3e);
  *(undefined4 *)(iVar4 + 0x70 + cVar3 * 4) = *(undefined4 *)(iVar4 + 0x6c);
  *(undefined2 *)(iVar4 + 0x3e) = 0;
  *(char *)(iVar4 + 0x3c) = cVar3 + '\x01';
  if ((uint)piVar1[0xb] < uVar8) {
    iVar6 = 0xb;
    FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0xfea1,
                 &UNK_000dcb22 + unaff_EBP);
  }
  else {
    iVar5 = (**(code **)(*piVar1 + 200))(*piVar1,uVar8,&local_24,*(undefined1 *)(iVar4 + 2));
    iVar6 = iVar5;
    if (iVar5 == 0) {
      pcVar7 = *(char **)(local_24 + 8);
      *(char **)(iVar4 + 0x6c) = pcVar7;
      if (*pcVar7 == '\0') {
        if (uVar8 != *(uint *)(pcVar7 + 4)) {
          uVar2 = *(undefined4 *)(local_24 + 4);
          *(int *)(pcVar7 + 0x48) = local_24;
          *(uint *)(pcVar7 + 4) = uVar8;
          *(undefined4 *)(pcVar7 + 0x38) = uVar2;
          *(int **)(pcVar7 + 0x34) = piVar1;
          cVar3 = '\0';
          if (uVar8 == 1) {
            cVar3 = 'd';
          }
          pcVar7[9] = cVar3;
        }
        iVar6 = FUN_000777f0();
        if (iVar6 != 0) {
          if (*(int *)(iVar4 + 0x6c) != 0) {
            FUN_0003be70();
          }
          goto LAB_0007ab00;
        }
        pcVar7 = *(char **)(iVar4 + 0x6c);
      }
      if ((*(short *)(pcVar7 + 0x16) != 0) && (iVar6 = iVar5, pcVar7[2] == *(char *)(iVar4 + 0x3d)))
      goto LAB_0007ab14;
      iVar6 = 0xb;
      FUN_000770e0(0xb,&UNK_000e1e69 + unaff_EBP,&UNK_000e1f20 + unaff_EBP,0xfeb7,
                   &UNK_000dcb22 + unaff_EBP);
      if (*(int *)(iVar4 + 0x6c) != 0) {
        FUN_0003be70();
      }
    }
  }
LAB_0007ab00:
  cVar3 = *(char *)(iVar4 + 0x3c) + -1;
  *(char *)(iVar4 + 0x3c) = cVar3;
  *(undefined4 *)(iVar4 + 0x6c) = *(undefined4 *)(iVar4 + 0x70 + cVar3 * 4);
LAB_0007ab14:
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return iVar6;
  }
                    /* WARNING: Subroutine does not return */
  FUN_00153870();
}

