
int ptrmapGet(BtShared *pBt,Pgno key,u8 *pEType,Pgno *pPgno)

{
  undefined *puVar1;
  BtShared *pBVar2;
  int iVar3;
  BtShared *pBVar4;
  BtShared *pBt_00;
  PgHdr *pPVar5;
  BtShared *pBVar6;
  byte *pbVar7;
  DbPage **ppDVar8;
  DbPage **pEType_00;
  undefined4 *puVar9;
  uint uVar10;
  undefined4 uVar11;
  u32 uVar12;
  u32 *pgno;
  BtShared *pBt_01;
  int *piVar13;
  undefined *puVar14;
  int iVar15;
  code *pcVar16;
  char cStack_6d;
  DbPage *pDStack_6c;
  BtShared *pBStack_68;
  int iStack_64;
  void *pvStack_5c;
  undefined *puStack_58;
  u8 *puStack_54;
  Pgno *pPStack_50;
  BtShared *pBStack_4c;
  DbPage *pDbPage;
  BtShared *local_1c;
  
  puVar1 = PTR___stack_chk_guard_000f5568;
  local_1c = *(BtShared **)PTR___stack_chk_guard_000f5568;
  if (key < 2) {
    pBVar2 = (BtShared *)0x0;
  }
  else {
    pBVar2 = (BtShared *)
             ptrmapPageno((BtShared *)&pBt->pageSize,(Pgno)&pBt->usableSize,(BtShared *)key);
  }
  puVar9 = (undefined4 *)0x0;
  ppDVar8 = &pDbPage;
  pBVar6 = pBVar2;
  iVar3 = (*pBt->pPager->xGet)(pBt->pPager,(Pgno)pBVar2,ppDVar8,0);
  if (iVar3 == 0) {
    key = key - (int)pBVar2;
    iVar15 = key * 5;
    pBVar6 = (BtShared *)(iVar15 + -5);
    if ((int)pBVar6 < 0) {
      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();
      iVar3 = sqlite3CorruptError(0x1000b);
    }
    else {
      key = (Pgno)pDbPage->pData;
      pbVar7 = (byte *)(key + (int)pBVar6);
      pBVar6 = (BtShared *)(uint)*pbVar7;
      *pEType = *pbVar7;
      if (pPgno != (Pgno *)0x0) {
        key = key + iVar15;
        *pPgno = *(Pgno *)(key - 4);
      }
      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();
      if (4 < (byte)(*pEType - 1)) {
        iVar3 = sqlite3CorruptError(0x10013);
      }
    }
  }
  if (local_1c == *(BtShared **)puVar1) {
    return iVar3;
  }
  pBt_00 = local_1c;
  puVar14 = PTR___stack_chk_fail_000f5540;
  (*(code *)PTR___stack_chk_fail_000f5540)();
  puStack_58 = puVar1;
  piVar13 = *(int **)(puVar14 + 0xb04f4);
  pDStack_6c = (DbPage *)0x0;
  iStack_64 = *piVar13;
  pvStack_5c = (void *)key;
  puStack_54 = pEType;
  pPStack_50 = pPgno;
  pBStack_4c = pBVar2;
  if (pBt_00->autoVacuum == '\0') {
LAB_00045158:
    iVar3 = *(int *)(puVar14 + 0xb0254);
LAB_0004515c:
    uVar11 = 2;
    pEType_00 = &pDStack_6c;
    if (ppDVar8 != (DbPage **)0x0) {
      uVar11 = 0;
    }
    iVar3 = (*(code *)(iVar3 + 0x2070))(pBt_00,pBVar6,pEType_00,uVar11);
    if (iVar3 != 0) {
LAB_00045180:
      pBVar2 = (BtShared *)0x0;
      goto LAB_00045184;
    }
    *puVar9 = (pDStack_6c[1].pDirty)->pPage;
    if (ppDVar8 == (DbPage **)0x0) {
      iVar15 = *(int *)(puVar14 + 0xb0254);
      pPVar5 = pDStack_6c[1].pDirtyNext;
      goto LAB_000451ec;
    }
  }
  else {
    pBt_01 = (BtShared *)&pBt_00->pageSize;
    uVar12 = pBt_00->pageSize;
    pgno = &pBt_00->usableSize;
    uVar10 = *(uint *)(*(int *)(puVar14 + 0xb0248) + 0x4098);
    pBVar2 = pBVar6;
    do {
      do {
        pBVar2 = (BtShared *)((int)&pBVar2->pPager + 1);
        pBVar4 = (BtShared *)0x0;
        if ((BtShared *)0x1 < pBVar2) {
          pBVar4 = (BtShared *)ptrmapPageno(pBt_01,(Pgno)pgno,pBVar2);
        }
      } while (pBVar2 == pBVar4);
      if (uVar12 == 0) {
        trap(7);
      }
    } while ((BtShared *)(uVar10 / uVar12 + 1) == pBVar2);
    if ((BtShared *)pBt_00->nPage < pBVar2) goto LAB_00045158;
    pEType_00 = (DbPage **)&cStack_6d;
    iVar3 = ptrmapGet(pBt_00,(Pgno)pBVar2,(u8 *)pEType_00,(Pgno *)&pBStack_68);
    if (iVar3 != 0) goto LAB_00045180;
    if (cStack_6d != '\x04') goto LAB_00045158;
    iVar3 = *(int *)(puVar14 + 0xb0254);
    if (pBStack_68 != pBVar6) goto LAB_0004515c;
    iVar3 = 0x65;
LAB_00045184:
    *puVar9 = pBVar2;
    if (ppDVar8 == (DbPage **)0x0) {
      iVar15 = *(int *)(puVar14 + 0xb0254);
      if (pDStack_6c == (DbPage *)0x0) goto LAB_00045190;
      pPVar5 = pDStack_6c[1].pDirtyNext;
LAB_000451ec:
      (*(code *)(iVar15 + 0x1a94))(pPVar5);
      goto LAB_00045190;
    }
  }
  *ppDVar8 = pDStack_6c;
LAB_00045190:
  if (iVar3 == 0x65) {
    iVar3 = 0;
  }
  if (iStack_64 == *piVar13) {
    return iVar3;
  }
  pcVar16 = *(code **)(puVar14 + 0xb04cc);
  (*pcVar16)();
  iVar3 = (*(code *)(*(int *)(pcVar16 + 0xb0058) + 0x2070))();
  if (iVar3 != 0) {
    *pEType_00 = (DbPage *)0x0;
    return iVar3;
  }
  if (((*pEType_00)[1].pDirtyNext)->nRef < 2) {
    *(undefined1 *)&(*pEType_00)->pPage = 0;
    return 0;
  }
  (*(code *)(*(int *)(pcVar16 + 0xb0058) + 0x1a94))();
  *pEType_00 = (DbPage *)0x0;
  iVar3 = sqlite3CorruptError(0x104bb);
  return iVar3;
}



int FUN_00044ef0(int *param_1,uint param_2,byte *param_3,undefined4 *param_4)

{
  undefined *puVar1;
  uint uVar2;
  int iVar3;
  uint uVar4;
  uint uVar5;
  byte *pbVar6;
  int *piVar7;
  int *piVar8;
  uint *puVar9;
  uint uVar10;
  undefined4 uVar11;
  uint uVar12;
  int iVar13;
  int iVar14;
  int *piVar15;
  undefined *puVar16;
  code *pcVar17;
  char cStack_6d;
  int iStack_6c;
  uint uStack_68;
  int iStack_64;
  uint uStack_5c;
  undefined *puStack_58;
  byte *pbStack_54;
  undefined4 *puStack_50;
  uint uStack_4c;
  int local_20;
  int local_1c;
  
  puVar1 = PTR___stack_chk_guard_000f5568;
  local_1c = *(int *)PTR___stack_chk_guard_000f5568;
  if (param_2 < 2) {
    uVar2 = 0;
  }
  else {
    uVar2 = FUN_0002d484(param_1 + 9,param_1 + 10,param_2);
  }
  puVar9 = (uint *)0x0;
  piVar7 = &local_20;
  uVar5 = uVar2;
  iVar3 = (**(code **)(*param_1 + 0xcc))(*param_1);
  if (iVar3 == 0) {
    param_2 = param_2 - uVar2;
    iVar14 = param_2 * 5;
    uVar5 = iVar14 - 5;
    if ((int)uVar5 < 0) {
      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();
      iVar3 = FUN_00044904(0x1000b);
    }
    else {
      param_2 = *(uint *)(local_20 + 4);
      pbVar6 = (byte *)(param_2 + uVar5);
      uVar5 = (uint)*pbVar6;
      *param_3 = *pbVar6;
      if (param_4 != (undefined4 *)0x0) {
        param_2 = param_2 + iVar14;
        *param_4 = *(undefined4 *)(param_2 - 4);
      }
      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();
      if (4 < (byte)(*param_3 - 1)) {
        iVar3 = FUN_00044904(0x10013);
      }
    }
  }
  if (local_1c == *(int *)puVar1) {
    return iVar3;
  }
  iVar3 = local_1c;
  puVar16 = PTR___stack_chk_fail_000f5540;
  (*(code *)PTR___stack_chk_fail_000f5540)();
  puStack_58 = puVar1;
  piVar15 = *(int **)(puVar16 + 0xb04f4);
  iStack_6c = 0;
  iStack_64 = *piVar15;
  uStack_5c = param_2;
  pbStack_54 = param_3;
  puStack_50 = param_4;
  uStack_4c = uVar2;
  if (*(char *)(iVar3 + 0x11) == '\0') {
LAB_00045158:
    iVar14 = *(int *)(puVar16 + 0xb0254);
LAB_0004515c:
    uVar11 = 2;
    piVar8 = &iStack_6c;
    if (piVar7 != (int *)0x0) {
      uVar11 = 0;
    }
    iVar14 = (*(code *)(iVar14 + 0x2070))(iVar3,uVar5,piVar8,uVar11);
    if (iVar14 != 0) {
LAB_00045180:
      uVar2 = 0;
      goto LAB_00045184;
    }
    *puVar9 = **(uint **)(iStack_6c + 0x38);
    if (piVar7 == (int *)0x0) {
      iVar3 = *(int *)(puVar16 + 0xb0254);
      uVar11 = *(undefined4 *)(iStack_6c + 0x48);
      goto LAB_000451ec;
    }
  }
  else {
    iVar14 = iVar3 + 0x24;
    uVar12 = *(uint *)(iVar3 + 0x24);
    iVar13 = iVar3 + 0x28;
    uVar10 = *(uint *)(*(int *)(puVar16 + 0xb0248) + 0x4098);
    uVar2 = uVar5;
    do {
      do {
        uVar2 = uVar2 + 1;
        uVar4 = 0;
        if (1 < uVar2) {
          uVar4 = FUN_0002d484(iVar14,iVar13,uVar2);
        }
      } while (uVar2 == uVar4);
      if (uVar12 == 0) {
        trap(7);
      }
    } while (uVar10 / uVar12 + 1 == uVar2);
    if (*(uint *)(iVar3 + 0x30) < uVar2) goto LAB_00045158;
    piVar8 = (int *)&cStack_6d;
    iVar14 = FUN_00044ef0(iVar3,uVar2,piVar8,&uStack_68);
    if (iVar14 != 0) goto LAB_00045180;
    if (cStack_6d != '\x04') goto LAB_00045158;
    iVar14 = *(int *)(puVar16 + 0xb0254);
    if (uStack_68 != uVar5) goto LAB_0004515c;
    iVar14 = 0x65;
LAB_00045184:
    *puVar9 = uVar2;
    if (piVar7 == (int *)0x0) {
      iVar3 = *(int *)(puVar16 + 0xb0254);
      if (iStack_6c == 0) goto LAB_00045190;
      uVar11 = *(undefined4 *)(iStack_6c + 0x48);
LAB_000451ec:
      (*(code *)(iVar3 + 0x1a94))(uVar11);
      goto LAB_00045190;
    }
  }
  *piVar7 = iStack_6c;
LAB_00045190:
  if (iVar14 == 0x65) {
    iVar14 = 0;
  }
  if (iStack_64 == *piVar15) {
    return iVar14;
  }
  pcVar17 = *(code **)(puVar16 + 0xb04cc);
  (*pcVar17)();
  iVar3 = (*(code *)(*(int *)(pcVar17 + 0xb0058) + 0x2070))();
  if (iVar3 != 0) {
    *piVar8 = 0;
    return iVar3;
  }
  if (*(short *)(*(int *)((undefined1 *)*piVar8 + 0x48) + 0x1e) < 2) {
    *(undefined1 *)*piVar8 = 0;
    return 0;
  }
  (*(code *)(*(int *)(pcVar17 + 0xb0058) + 0x1a94))();
  *piVar8 = 0;
  iVar3 = FUN_00044904(0x104bb);
  return iVar3;
}


lui gp,0xc
addiu gp,gp,-0x7c50
addu gp,gp,t9
addiu sp,sp,-0x40
sltiu v0,a1,0x2
or t0,a0,zero
sw s1,0x2c(sp)
lw s1,-0x7d38(gp)
sw gp,0x10(sp)
sw s3,0x34(sp)
or s3,a3,zero
sw s2,0x30(sp)
or s2,a2,zero
sw s0,0x28(sp)
or s0,a1,zero
sw ra,0x3c(sp)
sw s4,0x38(sp)
lw v1,0x0(s1)
sw v1,0x24(sp)
bne v0,zero,0x00045014
_lw t9,-0x7fb4(gp)
addiu a1,a0,0x28
addiu a0,a0,0x24
addiu t9,t9,-0x2b7c
bal 0x0002d484
_or a2,s0,zero
or s4,v0,zero
lw v0,0x0(t0)
or a3,zero,zero
addiu a2,sp,0x20
or a1,s4,zero
lw t9,0xcc(v0)
jalr t9
_or a0,v0,zero
bne v0,zero,0x00044fe8
_lw gp,0x10(sp)
subu s0,s0,s4
sll v1,s0,0x2
addu v1,v1,s0
addiu a1,v1,-0x5
bltz a1,0x00045038
_lw a0,0x20(sp)
lw s0,0x4(a0)
addu a1,s0,a1
lbu a1,0x0(a1)
beq s3,zero,0x00044fbc
_sb a1,0x0(s2)
addu s0,s0,v1
lwl v1,-0x4(s0)
lwr v1,-0x1(s0)
sw v1,0x0(s3)
lw t9,-0x7fd8(gp)
addiu t9,t9,0x1a94
jalr t9
_sw v0,0x1c(sp)
lbu v1,0x0(s2)
lw gp,0x10(sp)
addiu v1,v1,-0x1
andi v1,v1,0xff
sltiu v1,v1,0x5
beq v1,zero,0x0004501c
_lw v0,0x1c(sp)
lw a0,0x24(sp)
lw v1,0x0(s1)
bne a0,v1,0x00045068
_lw ra,0x3c(sp)
lw s4,0x38(sp)
lw s3,0x34(sp)
lw s2,0x30(sp)
lw s1,0x2c(sp)
lw s0,0x28(sp)
jr ra
_addiu sp,sp,0x40
b 0x00044f5c
_or s4,zero,zero
lw t9,-0x7fb8(gp)
lui a0,0x1
addiu t9,t9,0x4904
bal 0x00044904
_addiu a0,a0,0x13
b 0x00044fe8
_lw gp,0x10(sp)
lw t9,-0x7fd8(gp)
addiu t9,t9,0x1a94
jalr t9
_nop
lui a0,0x1
lw gp,0x10(sp)
lw t9,-0x7fb8(gp)
addiu t9,t9,0x4904
bal 0x00044904
_addiu a0,a0,0xb
b 0x00044fe8
_lw gp,0x10(sp)
lw t9,-0x7d60(gp)
jalr t9
_nop
(translation_unit "int FUN_00044ef0(int *param_1,uint param_2,byte *param_3,undefined4 *param_4)\n\n{\n  undefined *puVar1;\n  uint uVar2;\n  int iVar3;\n  uint uVar4;\n  uint uVar5;\n  byte *pbVar6;\n  int *piVar7;\n  int *piVar8;\n  uint *puVar9;\n  uint uVar10;\n  undefined4 uVar11;\n  uint uVar12;\n  int iVar13;\n  int iVar14;\n  int *piVar15;\n  undefined *puVar16;\n  code *pcVar17;\n  char cStack_6d;\n  int iStack_6c;\n  uint uStack_68;\n  int iStack_64;\n  uint uStack_5c;\n  undefined *puStack_58;\n  byte *pbStack_54;\n  undefined4 *puStack_50;\n  uint uStack_4c;\n  int local_20;\n  int local_1c;\n  \n  puVar1 = PTR___stack_chk_guard_000f5568;\n  local_1c = *(int *)PTR___stack_chk_guard_000f5568;\n  if (param_2 < 2) {\n    uVar2 = 0;\n  }\n  else {\n    uVar2 = FUN_0002d484(param_1 + 9,param_1 + 10,param_2);\n  }\n  puVar9 = (uint *)0x0;\n  piVar7 = &local_20;\n  uVar5 = uVar2;\n  iVar3 = (**(code **)(*param_1 + 0xcc))(*param_1);\n  if (iVar3 == 0) {\n    param_2 = param_2 - uVar2;\n    iVar14 = param_2 * 5;\n    uVar5 = iVar14 - 5;\n    if ((int)uVar5 < 0) {\n      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();\n      iVar3 = FUN_00044904(0x1000b);\n    }\n    else {\n      param_2 = *(uint *)(local_20 + 4);\n      pbVar6 = (byte *)(param_2 + uVar5);\n      uVar5 = (uint)*pbVar6;\n      *param_3 = *pbVar6;\n      if (param_4 != (undefined4 *)0x0) {\n        param_2 = param_2 + iVar14;\n        *param_4 = *(undefined4 *)(param_2 - 4);\n      }\n      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();\n      if (4 < (byte)(*param_3 - 1)) {\n        iVar3 = FUN_00044904(0x10013);\n      }\n    }\n  }\n  if (local_1c == *(int *)puVar1) {\n    return iVar3;\n  }\n  iVar3 = local_1c;\n  puVar16 = PTR___stack_chk_fail_000f5540;\n  (*(code *)PTR___stack_chk_fail_000f5540)();\n  puStack_58 = puVar1;\n  piVar15 = *(int **)(puVar16 + 0xb04f4);\n  iStack_6c = 0;\n  iStack_64 = *piVar15;\n  uStack_5c = param_2;\n  pbStack_54 = param_3;\n  puStack_50 = param_4;\n  uStack_4c = uVar2;\n  if (*(char *)(iVar3 + 0x11) == '\0') {\nLAB_00045158:\n    iVar14 = *(int *)(puVar16 + 0xb0254);\nLAB_0004515c:\n    uVar11 = 2;\n    piVar8 = &iStack_6c;\n    if (piVar7 != (int *)0x0) {\n      uVar11 = 0;\n    }\n    iVar14 = (*(code *)(iVar14 + 0x2070))(iVar3,uVar5,piVar8,uVar11);\n    if (iVar14 != 0) {\nLAB_00045180:\n      uVar2 = 0;\n      goto LAB_00045184;\n    }\n    *puVar9 = **(uint **)(iStack_6c + 0x38);\n    if (piVar7 == (int *)0x0) {\n      iVar3 = *(int *)(puVar16 + 0xb0254);\n      uVar11 = *(undefined4 *)(iStack_6c + 0x48);\n      goto LAB_000451ec;\n    }\n  }\n  else {\n    iVar14 = iVar3 + 0x24;\n    uVar12 = *(uint *)(iVar3 + 0x24);\n    iVar13 = iVar3 + 0x28;\n    uVar10 = *(uint *)(*(int *)(puVar16 + 0xb0248) + 0x4098);\n    uVar2 = uVar5;\n    do {\n      do {\n        uVar2 = uVar2 + 1;\n        uVar4 = 0;\n        if (1 < uVar2) {\n          uVar4 = FUN_0002d484(iVar14,iVar13,uVar2);\n        }\n      } while (uVar2 == uVar4);\n      if (uVar12 == 0) {\n        trap(7);\n      }\n    } while (uVar10 / uVar12 + 1 == uVar2);\n    if (*(uint *)(iVar3 + 0x30) < uVar2) goto LAB_00045158;\n    piVar8 = (int *)&cStack_6d;\n    iVar14 = FUN_00044ef0(iVar3,uVar2,piVar8,&uStack_68);\n    if (iVar14 != 0) goto LAB_00045180;\n    if (cStack_6d != '\x04') goto LAB_00045158;\n    iVar14 = *(int *)(puVar16 + 0xb0254);\n    if (uStack_68 != uVar5) goto LAB_0004515c;\n    iVar14 = 0x65;\nLAB_00045184:\n    *puVar9 = uVar2;\n    if (piVar7 == (int *)0x0) {\n      iVar3 = *(int *)(puVar16 + 0xb0254);\n      if (iStack_6c == 0) goto LAB_00045190;\n      uVar11 = *(undefined4 *)(iStack_6c + 0x48);\nLAB_000451ec:\n      (*(code *)(iVar3 + 0x1a94))(uVar11);\n      goto LAB_00045190;\n    }\n  }\n  *piVar7 = iStack_6c;\nLAB_00045190:\n  if (iVar14 == 0x65) {\n    iVar14 = 0;\n  }\n  if (iStack_64 == *piVar15) {\n    return iVar14;\n  }\n  pcVar17 = *(code **)(puVar16 + 0xb04cc);\n  (*pcVar17)();\n  iVar3 = (*(code *)(*(int *)(pcVar17 + 0xb0058) + 0x2070))();\n  if (iVar3 != 0) {\n    *piVar8 = 0;\n    return iVar3;\n  }\n  if (*(short *)(*(int *)((undefined1 *)*piVar8 + 0x48) + 0x1e) < 2) {\n    *(undefined1 *)*piVar8 = 0;\n    return 0;\n  }\n  (*(code *)(*(int *)(pcVar17 + 0xb0058) + 0x1a94))();\n  *piVar8 = 0;\n  iVar3 = FUN_00044904(0x104bb);\n  return iVar3;\n}\n\n" (function_definition "int FUN_00044ef0(int *param_1,uint param_2,byte *param_3,undefined4 *param_4)\n\n{\n  undefined *puVar1;\n  uint uVar2;\n  int iVar3;\n  uint uVar4;\n  uint uVar5;\n  byte *pbVar6;\n  int *piVar7;\n  int *piVar8;\n  uint *puVar9;\n  uint uVar10;\n  undefined4 uVar11;\n  uint uVar12;\n  int iVar13;\n  int iVar14;\n  int *piVar15;\n  undefined *puVar16;\n  code *pcVar17;\n  char cStack_6d;\n  int iStack_6c;\n  uint uStack_68;\n  int iStack_64;\n  uint uStack_5c;\n  undefined *puStack_58;\n  byte *pbStack_54;\n  undefined4 *puStack_50;\n  uint uStack_4c;\n  int local_20;\n  int local_1c;\n  \n  puVar1 = PTR___stack_chk_guard_000f5568;\n  local_1c = *(int *)PTR___stack_chk_guard_000f5568;\n  if (param_2 < 2) {\n    uVar2 = 0;\n  }\n  else {\n    uVar2 = FUN_0002d484(param_1 + 9,param_1 + 10,param_2);\n  }\n  puVar9 = (uint *)0x0;\n  piVar7 = &local_20;\n  uVar5 = uVar2;\n  iVar3 = (**(code **)(*param_1 + 0xcc))(*param_1);\n  if (iVar3 == 0) {\n    param_2 = param_2 - uVar2;\n    iVar14 = param_2 * 5;\n    uVar5 = iVar14 - 5;\n    if ((int)uVar5 < 0) {\n      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();\n      iVar3 = FUN_00044904(0x1000b);\n    }\n    else {\n      param_2 = *(uint *)(local_20 + 4);\n      pbVar6 = (byte *)(param_2 + uVar5);\n      uVar5 = (uint)*pbVar6;\n      *param_3 = *pbVar6;\n      if (param_4 != (undefined4 *)0x0) {\n        param_2 = param_2 + iVar14;\n        *param_4 = *(undefined4 *)(param_2 - 4);\n      }\n      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();\n      if (4 < (byte)(*param_3 - 1)) {\n        iVar3 = FUN_00044904(0x10013);\n      }\n    }\n  }\n  if (local_1c == *(int *)puVar1) {\n    return iVar3;\n  }\n  iVar3 = local_1c;\n  puVar16 = PTR___stack_chk_fail_000f5540;\n  (*(code *)PTR___stack_chk_fail_000f5540)();\n  puStack_58 = puVar1;\n  piVar15 = *(int **)(puVar16 + 0xb04f4);\n  iStack_6c = 0;\n  iStack_64 = *piVar15;\n  uStack_5c = param_2;\n  pbStack_54 = param_3;\n  puStack_50 = param_4;\n  uStack_4c = uVar2;\n  if (*(char *)(iVar3 + 0x11) == '\0') {\nLAB_00045158:\n    iVar14 = *(int *)(puVar16 + 0xb0254);\nLAB_0004515c:\n    uVar11 = 2;\n    piVar8 = &iStack_6c;\n    if (piVar7 != (int *)0x0) {\n      uVar11 = 0;\n    }\n    iVar14 = (*(code *)(iVar14 + 0x2070))(iVar3,uVar5,piVar8,uVar11);\n    if (iVar14 != 0) {\nLAB_00045180:\n      uVar2 = 0;\n      goto LAB_00045184;\n    }\n    *puVar9 = **(uint **)(iStack_6c + 0x38);\n    if (piVar7 == (int *)0x0) {\n      iVar3 = *(int *)(puVar16 + 0xb0254);\n      uVar11 = *(undefined4 *)(iStack_6c + 0x48);\n      goto LAB_000451ec;\n    }\n  }\n  else {\n    iVar14 = iVar3 + 0x24;\n    uVar12 = *(uint *)(iVar3 + 0x24);\n    iVar13 = iVar3 + 0x28;\n    uVar10 = *(uint *)(*(int *)(puVar16 + 0xb0248) + 0x4098);\n    uVar2 = uVar5;\n    do {\n      do {\n        uVar2 = uVar2 + 1;\n        uVar4 = 0;\n        if (1 < uVar2) {\n          uVar4 = FUN_0002d484(iVar14,iVar13,uVar2);\n        }\n      } while (uVar2 == uVar4);\n      if (uVar12 == 0) {\n        trap(7);\n      }\n    } while (uVar10 / uVar12 + 1 == uVar2);\n    if (*(uint *)(iVar3 + 0x30) < uVar2) goto LAB_00045158;\n    piVar8 = (int *)&cStack_6d;\n    iVar14 = FUN_00044ef0(iVar3,uVar2,piVar8,&uStack_68);\n    if (iVar14 != 0) goto LAB_00045180;\n    if (cStack_6d != '\x04') goto LAB_00045158;\n    iVar14 = *(int *)(puVar16 + 0xb0254);\n    if (uStack_68 != uVar5) goto LAB_0004515c;\n    iVar14 = 0x65;\nLAB_00045184:\n    *puVar9 = uVar2;\n    if (piVar7 == (int *)0x0) {\n      iVar3 = *(int *)(puVar16 + 0xb0254);\n      if (iStack_6c == 0) goto LAB_00045190;\n      uVar11 = *(undefined4 *)(iStack_6c + 0x48);\nLAB_000451ec:\n      (*(code *)(iVar3 + 0x1a94))(uVar11);\n      goto LAB_00045190;\n    }\n  }\n  *piVar7 = iStack_6c;\nLAB_00045190:\n  if (iVar14 == 0x65) {\n    iVar14 = 0;\n  }\n  if (iStack_64 == *piVar15) {\n    return iVar14;\n  }\n  pcVar17 = *(code **)(puVar16 + 0xb04cc);\n  (*pcVar17)();\n  iVar3 = (*(code *)(*(int *)(pcVar17 + 0xb0058) + 0x2070))();\n  if (iVar3 != 0) {\n    *piVar8 = 0;\n    return iVar3;\n  }\n  if (*(short *)(*(int *)((undefined1 *)*piVar8 + 0x48) + 0x1e) < 2) {\n    *(undefined1 *)*piVar8 = 0;\n    return 0;\n  }\n  (*(code *)(*(int *)(pcVar17 + 0xb0058) + 0x1a94))();\n  *piVar8 = 0;\n  iVar3 = FUN_00044904(0x104bb);\n  return iVar3;\n}" primitive_type (function_declarator "FUN_00044ef0(int *param_1,uint param_2,byte *param_3,undefined4 *param_4)" identifier (parameter_list "(int *param_1,uint param_2,byte *param_3,undefined4 *param_4)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "byte *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined4 *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) ))) (compound_statement "{\n  undefined *puVar1;\n  uint uVar2;\n  int iVar3;\n  uint uVar4;\n  uint uVar5;\n  byte *pbVar6;\n  int *piVar7;\n  int *piVar8;\n  uint *puVar9;\n  uint uVar10;\n  undefined4 uVar11;\n  uint uVar12;\n  int iVar13;\n  int iVar14;\n  int *piVar15;\n  undefined *puVar16;\n  code *pcVar17;\n  char cStack_6d;\n  int iStack_6c;\n  uint uStack_68;\n  int iStack_64;\n  uint uStack_5c;\n  undefined *puStack_58;\n  byte *pbStack_54;\n  undefined4 *puStack_50;\n  uint uStack_4c;\n  int local_20;\n  int local_1c;\n  \n  puVar1 = PTR___stack_chk_guard_000f5568;\n  local_1c = *(int *)PTR___stack_chk_guard_000f5568;\n  if (param_2 < 2) {\n    uVar2 = 0;\n  }\n  else {\n    uVar2 = FUN_0002d484(param_1 + 9,param_1 + 10,param_2);\n  }\n  puVar9 = (uint *)0x0;\n  piVar7 = &local_20;\n  uVar5 = uVar2;\n  iVar3 = (**(code **)(*param_1 + 0xcc))(*param_1);\n  if (iVar3 == 0) {\n    param_2 = param_2 - uVar2;\n    iVar14 = param_2 * 5;\n    uVar5 = iVar14 - 5;\n    if ((int)uVar5 < 0) {\n      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();\n      iVar3 = FUN_00044904(0x1000b);\n    }\n    else {\n      param_2 = *(uint *)(local_20 + 4);\n      pbVar6 = (byte *)(param_2 + uVar5);\n      uVar5 = (uint)*pbVar6;\n      *param_3 = *pbVar6;\n      if (param_4 != (undefined4 *)0x0) {\n        param_2 = param_2 + iVar14;\n        *param_4 = *(undefined4 *)(param_2 - 4);\n      }\n      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();\n      if (4 < (byte)(*param_3 - 1)) {\n        iVar3 = FUN_00044904(0x10013);\n      }\n    }\n  }\n  if (local_1c == *(int *)puVar1) {\n    return iVar3;\n  }\n  iVar3 = local_1c;\n  puVar16 = PTR___stack_chk_fail_000f5540;\n  (*(code *)PTR___stack_chk_fail_000f5540)();\n  puStack_58 = puVar1;\n  piVar15 = *(int **)(puVar16 + 0xb04f4);\n  iStack_6c = 0;\n  iStack_64 = *piVar15;\n  uStack_5c = param_2;\n  pbStack_54 = param_3;\n  puStack_50 = param_4;\n  uStack_4c = uVar2;\n  if (*(char *)(iVar3 + 0x11) == '\0') {\nLAB_00045158:\n    iVar14 = *(int *)(puVar16 + 0xb0254);\nLAB_0004515c:\n    uVar11 = 2;\n    piVar8 = &iStack_6c;\n    if (piVar7 != (int *)0x0) {\n      uVar11 = 0;\n    }\n    iVar14 = (*(code *)(iVar14 + 0x2070))(iVar3,uVar5,piVar8,uVar11);\n    if (iVar14 != 0) {\nLAB_00045180:\n      uVar2 = 0;\n      goto LAB_00045184;\n    }\n    *puVar9 = **(uint **)(iStack_6c + 0x38);\n    if (piVar7 == (int *)0x0) {\n      iVar3 = *(int *)(puVar16 + 0xb0254);\n      uVar11 = *(undefined4 *)(iStack_6c + 0x48);\n      goto LAB_000451ec;\n    }\n  }\n  else {\n    iVar14 = iVar3 + 0x24;\n    uVar12 = *(uint *)(iVar3 + 0x24);\n    iVar13 = iVar3 + 0x28;\n    uVar10 = *(uint *)(*(int *)(puVar16 + 0xb0248) + 0x4098);\n    uVar2 = uVar5;\n    do {\n      do {\n        uVar2 = uVar2 + 1;\n        uVar4 = 0;\n        if (1 < uVar2) {\n          uVar4 = FUN_0002d484(iVar14,iVar13,uVar2);\n        }\n      } while (uVar2 == uVar4);\n      if (uVar12 == 0) {\n        trap(7);\n      }\n    } while (uVar10 / uVar12 + 1 == uVar2);\n    if (*(uint *)(iVar3 + 0x30) < uVar2) goto LAB_00045158;\n    piVar8 = (int *)&cStack_6d;\n    iVar14 = FUN_00044ef0(iVar3,uVar2,piVar8,&uStack_68);\n    if (iVar14 != 0) goto LAB_00045180;\n    if (cStack_6d != '\x04') goto LAB_00045158;\n    iVar14 = *(int *)(puVar16 + 0xb0254);\n    if (uStack_68 != uVar5) goto LAB_0004515c;\n    iVar14 = 0x65;\nLAB_00045184:\n    *puVar9 = uVar2;\n    if (piVar7 == (int *)0x0) {\n      iVar3 = *(int *)(puVar16 + 0xb0254);\n      if (iStack_6c == 0) goto LAB_00045190;\n      uVar11 = *(undefined4 *)(iStack_6c + 0x48);\nLAB_000451ec:\n      (*(code *)(iVar3 + 0x1a94))(uVar11);\n      goto LAB_00045190;\n    }\n  }\n  *piVar7 = iStack_6c;\nLAB_00045190:\n  if (iVar14 == 0x65) {\n    iVar14 = 0;\n  }\n  if (iStack_64 == *piVar15) {\n    return iVar14;\n  }\n  pcVar17 = *(code **)(puVar16 + 0xb04cc);\n  (*pcVar17)();\n  iVar3 = (*(code *)(*(int *)(pcVar17 + 0xb0058) + 0x2070))();\n  if (iVar3 != 0) {\n    *piVar8 = 0;\n    return iVar3;\n  }\n  if (*(short *)(*(int *)((undefined1 *)*piVar8 + 0x48) + 0x1e) < 2) {\n    *(undefined1 *)*piVar8 = 0;\n    return 0;\n  }\n  (*(code *)(*(int *)(pcVar17 + 0xb0058) + 0x1a94))();\n  *piVar8 = 0;\n  iVar3 = FUN_00044904(0x104bb);\n  return iVar3;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "uint *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "undefined4 uVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "int *piVar15;" primitive_type (pointer_declarator "*piVar15" * identifier) ;) (declaration "undefined *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "code *pcVar17;" type_identifier (pointer_declarator "*pcVar17" * identifier) ;) (declaration "char cStack_6d;" primitive_type identifier ;) (declaration "int iStack_6c;" primitive_type identifier ;) (declaration "uint uStack_68;" type_identifier identifier ;) (declaration "int iStack_64;" primitive_type identifier ;) (declaration "uint uStack_5c;" type_identifier identifier ;) (declaration "undefined *puStack_58;" type_identifier (pointer_declarator "*puStack_58" * identifier) ;) (declaration "byte *pbStack_54;" type_identifier (pointer_declarator "*pbStack_54" * identifier) ;) (declaration "undefined4 *puStack_50;" type_identifier (pointer_declarator "*puStack_50" * identifier) ;) (declaration "uint uStack_4c;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "int local_1c;" primitive_type identifier ;) (expression_statement "puVar1 = PTR___stack_chk_guard_000f5568;" (assignment_expression "puVar1 = PTR___stack_chk_guard_000f5568" identifier = identifier) ;) (expression_statement "local_1c = *(int *)PTR___stack_chk_guard_000f5568;" (assignment_expression "local_1c = *(int *)PTR___stack_chk_guard_000f5568" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_000f5568" * (cast_expression "(int *)PTR___stack_chk_guard_000f5568" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (param_2 < 2) {\n    uVar2 = 0;\n  }\n  else {\n    uVar2 = FUN_0002d484(param_1 + 9,param_1 + 10,param_2);\n  }" if (parenthesized_expression "(param_2 < 2)" ( (binary_expression "param_2 < 2" identifier < number_literal) )) (compound_statement "{\n    uVar2 = 0;\n  }" { (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    uVar2 = FUN_0002d484(param_1 + 9,param_1 + 10,param_2);\n  }" else (compound_statement "{\n    uVar2 = FUN_0002d484(param_1 + 9,param_1 + 10,param_2);\n  }" { (expression_statement "uVar2 = FUN_0002d484(param_1 + 9,param_1 + 10,param_2);" (assignment_expression "uVar2 = FUN_0002d484(param_1 + 9,param_1 + 10,param_2)" identifier = (call_expression "FUN_0002d484(param_1 + 9,param_1 + 10,param_2)" identifier (argument_list "(param_1 + 9,param_1 + 10,param_2)" ( (binary_expression "param_1 + 9" identifier + number_literal) , (binary_expression "param_1 + 10" identifier + number_literal) , identifier )))) ;) }))) (expression_statement "puVar9 = (uint *)0x0;" (assignment_expression "puVar9 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "piVar7 = &local_20;" (assignment_expression "piVar7 = &local_20" identifier = (pointer_expression "&local_20" & identifier)) ;) (expression_statement "uVar5 = uVar2;" (assignment_expression "uVar5 = uVar2" identifier = identifier) ;) (expression_statement "iVar3 = (**(code **)(*param_1 + 0xcc))(*param_1);" (assignment_expression "iVar3 = (**(code **)(*param_1 + 0xcc))(*param_1)" identifier = (call_expression "(**(code **)(*param_1 + 0xcc))(*param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0xcc))" ( (pointer_expression "**(code **)(*param_1 + 0xcc)" * (pointer_expression "*(code **)(*param_1 + 0xcc)" * (cast_expression "(code **)(*param_1 + 0xcc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0xcc)" ( (binary_expression "*param_1 + 0xcc" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(*param_1)" ( (pointer_expression "*param_1" * identifier) )))) ;) (if_statement "if (iVar3 == 0) {\n    param_2 = param_2 - uVar2;\n    iVar14 = param_2 * 5;\n    uVar5 = iVar14 - 5;\n    if ((int)uVar5 < 0) {\n      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();\n      iVar3 = FUN_00044904(0x1000b);\n    }\n    else {\n      param_2 = *(uint *)(local_20 + 4);\n      pbVar6 = (byte *)(param_2 + uVar5);\n      uVar5 = (uint)*pbVar6;\n      *param_3 = *pbVar6;\n      if (param_4 != (undefined4 *)0x0) {\n        param_2 = param_2 + iVar14;\n        *param_4 = *(undefined4 *)(param_2 - 4);\n      }\n      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();\n      if (4 < (byte)(*param_3 - 1)) {\n        iVar3 = FUN_00044904(0x10013);\n      }\n    }\n  }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n    param_2 = param_2 - uVar2;\n    iVar14 = param_2 * 5;\n    uVar5 = iVar14 - 5;\n    if ((int)uVar5 < 0) {\n      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();\n      iVar3 = FUN_00044904(0x1000b);\n    }\n    else {\n      param_2 = *(uint *)(local_20 + 4);\n      pbVar6 = (byte *)(param_2 + uVar5);\n      uVar5 = (uint)*pbVar6;\n      *param_3 = *pbVar6;\n      if (param_4 != (undefined4 *)0x0) {\n        param_2 = param_2 + iVar14;\n        *param_4 = *(undefined4 *)(param_2 - 4);\n      }\n      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();\n      if (4 < (byte)(*param_3 - 1)) {\n        iVar3 = FUN_00044904(0x10013);\n      }\n    }\n  }" { (expression_statement "param_2 = param_2 - uVar2;" (assignment_expression "param_2 = param_2 - uVar2" identifier = (binary_expression "param_2 - uVar2" identifier - identifier)) ;) (expression_statement "iVar14 = param_2 * 5;" (assignment_expression "iVar14 = param_2 * 5" identifier = (binary_expression "param_2 * 5" identifier * number_literal)) ;) (expression_statement "uVar5 = iVar14 - 5;" (assignment_expression "uVar5 = iVar14 - 5" identifier = (binary_expression "iVar14 - 5" identifier - number_literal)) ;) (if_statement "if ((int)uVar5 < 0) {\n      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();\n      iVar3 = FUN_00044904(0x1000b);\n    }\n    else {\n      param_2 = *(uint *)(local_20 + 4);\n      pbVar6 = (byte *)(param_2 + uVar5);\n      uVar5 = (uint)*pbVar6;\n      *param_3 = *pbVar6;\n      if (param_4 != (undefined4 *)0x0) {\n        param_2 = param_2 + iVar14;\n        *param_4 = *(undefined4 *)(param_2 - 4);\n      }\n      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();\n      if (4 < (byte)(*param_3 - 1)) {\n        iVar3 = FUN_00044904(0x10013);\n      }\n    }" if (parenthesized_expression "((int)uVar5 < 0)" ( (binary_expression "(int)uVar5 < 0" (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();\n      iVar3 = FUN_00044904(0x1000b);\n    }" { (expression_statement "(*(code *)(PTR_LAB_000f52c8 + 0x1a94))();" (call_expression "(*(code *)(PTR_LAB_000f52c8 + 0x1a94))()" (parenthesized_expression "(*(code *)(PTR_LAB_000f52c8 + 0x1a94))" ( (pointer_expression "*(code *)(PTR_LAB_000f52c8 + 0x1a94)" * (cast_expression "(code *)(PTR_LAB_000f52c8 + 0x1a94)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52c8 + 0x1a94)" ( (binary_expression "PTR_LAB_000f52c8 + 0x1a94" identifier + number_literal) )))) )) (argument_list "()" ( ))) ;) (expression_statement "iVar3 = FUN_00044904(0x1000b);" (assignment_expression "iVar3 = FUN_00044904(0x1000b)" identifier = (call_expression "FUN_00044904(0x1000b)" identifier (argument_list "(0x1000b)" ( number_literal )))) ;) }) (else_clause "else {\n      param_2 = *(uint *)(local_20 + 4);\n      pbVar6 = (byte *)(param_2 + uVar5);\n      uVar5 = (uint)*pbVar6;\n      *param_3 = *pbVar6;\n      if (param_4 != (undefined4 *)0x0) {\n        param_2 = param_2 + iVar14;\n        *param_4 = *(undefined4 *)(param_2 - 4);\n      }\n      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();\n      if (4 < (byte)(*param_3 - 1)) {\n        iVar3 = FUN_00044904(0x10013);\n      }\n    }" else (compound_statement "{\n      param_2 = *(uint *)(local_20 + 4);\n      pbVar6 = (byte *)(param_2 + uVar5);\n      uVar5 = (uint)*pbVar6;\n      *param_3 = *pbVar6;\n      if (param_4 != (undefined4 *)0x0) {\n        param_2 = param_2 + iVar14;\n        *param_4 = *(undefined4 *)(param_2 - 4);\n      }\n      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();\n      if (4 < (byte)(*param_3 - 1)) {\n        iVar3 = FUN_00044904(0x10013);\n      }\n    }" { (expression_statement "param_2 = *(uint *)(local_20 + 4);" (assignment_expression "param_2 = *(uint *)(local_20 + 4)" identifier = (pointer_expression "*(uint *)(local_20 + 4)" * (cast_expression "(uint *)(local_20 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_20 + 4)" ( (binary_expression "local_20 + 4" identifier + number_literal) ))))) ;) (expression_statement "pbVar6 = (byte *)(param_2 + uVar5);" (assignment_expression "pbVar6 = (byte *)(param_2 + uVar5)" identifier = (cast_expression "(byte *)(param_2 + uVar5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + uVar5)" ( (binary_expression "param_2 + uVar5" identifier + identifier) )))) ;) (expression_statement "uVar5 = (uint)*pbVar6;" (assignment_expression "uVar5 = (uint)*pbVar6" identifier = (binary_expression "(uint)*pbVar6" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "*param_3 = *pbVar6;" (assignment_expression "*param_3 = *pbVar6" (pointer_expression "*param_3" * identifier) = (pointer_expression "*pbVar6" * identifier)) ;) (if_statement "if (param_4 != (undefined4 *)0x0) {\n        param_2 = param_2 + iVar14;\n        *param_4 = *(undefined4 *)(param_2 - 4);\n      }" if (parenthesized_expression "(param_4 != (undefined4 *)0x0)" ( (binary_expression "param_4 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        param_2 = param_2 + iVar14;\n        *param_4 = *(undefined4 *)(param_2 - 4);\n      }" { (expression_statement "param_2 = param_2 + iVar14;" (assignment_expression "param_2 = param_2 + iVar14" identifier = (binary_expression "param_2 + iVar14" identifier + identifier)) ;) (expression_statement "*param_4 = *(undefined4 *)(param_2 - 4);" (assignment_expression "*param_4 = *(undefined4 *)(param_2 - 4)" (pointer_expression "*param_4" * identifier) = (pointer_expression "*(undefined4 *)(param_2 - 4)" * (cast_expression "(undefined4 *)(param_2 - 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 - 4)" ( (binary_expression "param_2 - 4" identifier - number_literal) ))))) ;) })) (expression_statement "(*(code *)(PTR_LAB_000f52c8 + 0x1a94))();" (call_expression "(*(code *)(PTR_LAB_000f52c8 + 0x1a94))()" (parenthesized_expression "(*(code *)(PTR_LAB_000f52c8 + 0x1a94))" ( (pointer_expression "*(code *)(PTR_LAB_000f52c8 + 0x1a94)" * (cast_expression "(code *)(PTR_LAB_000f52c8 + 0x1a94)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52c8 + 0x1a94)" ( (binary_expression "PTR_LAB_000f52c8 + 0x1a94" identifier + number_literal) )))) )) (argument_list "()" ( ))) ;) (if_statement "if (4 < (byte)(*param_3 - 1)) {\n        iVar3 = FUN_00044904(0x10013);\n      }" if (parenthesized_expression "(4 < (byte)(*param_3 - 1))" ( (binary_expression "4 < (byte)(*param_3 - 1)" number_literal < (call_expression "(byte)(*param_3 - 1)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(*param_3 - 1)" ( (binary_expression "*param_3 - 1" (pointer_expression "*param_3" * identifier) - number_literal) )))) )) (compound_statement "{\n        iVar3 = FUN_00044904(0x10013);\n      }" { (expression_statement "iVar3 = FUN_00044904(0x10013);" (assignment_expression "iVar3 = FUN_00044904(0x10013)" identifier = (call_expression "FUN_00044904(0x10013)" identifier (argument_list "(0x10013)" ( number_literal )))) ;) })) }))) })) (if_statement "if (local_1c == *(int *)puVar1) {\n    return iVar3;\n  }" if (parenthesized_expression "(local_1c == *(int *)puVar1)" ( (binary_expression "local_1c == *(int *)puVar1" identifier == (pointer_expression "*(int *)puVar1" * (cast_expression "(int *)puVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return iVar3;\n  }" { (return_statement "return iVar3;" return identifier ;) })) (expression_statement "iVar3 = local_1c;" (assignment_expression "iVar3 = local_1c" identifier = identifier) ;) (expression_statement "puVar16 = PTR___stack_chk_fail_000f5540;" (assignment_expression "puVar16 = PTR___stack_chk_fail_000f5540" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000f5540)();" (call_expression "(*(code *)PTR___stack_chk_fail_000f5540)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000f5540)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000f5540" * (cast_expression "(code *)PTR___stack_chk_fail_000f5540" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puStack_58 = puVar1;" (assignment_expression "puStack_58 = puVar1" identifier = identifier) ;) (expression_statement "piVar15 = *(int **)(puVar16 + 0xb04f4);" (assignment_expression "piVar15 = *(int **)(puVar16 + 0xb04f4)" identifier = (pointer_expression "*(int **)(puVar16 + 0xb04f4)" * (cast_expression "(int **)(puVar16 + 0xb04f4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0xb04f4)" ( (binary_expression "puVar16 + 0xb04f4" identifier + number_literal) ))))) ;) (expression_statement "iStack_6c = 0;" (assignment_expression "iStack_6c = 0" identifier = number_literal) ;) (expression_statement "iStack_64 = *piVar15;" (assignment_expression "iStack_64 = *piVar15" identifier = (pointer_expression "*piVar15" * identifier)) ;) (expression_statement "uStack_5c = param_2;" (assignment_expression "uStack_5c = param_2" identifier = identifier) ;) (expression_statement "pbStack_54 = param_3;" (assignment_expression "pbStack_54 = param_3" identifier = identifier) ;) (expression_statement "puStack_50 = param_4;" (assignment_expression "puStack_50 = param_4" identifier = identifier) ;) (expression_statement "uStack_4c = uVar2;" (assignment_expression "uStack_4c = uVar2" identifier = identifier) ;) (if_statement "if (*(char *)(iVar3 + 0x11) == '\0') {\nLAB_00045158:\n    iVar14 = *(int *)(puVar16 + 0xb0254);\nLAB_0004515c:\n    uVar11 = 2;\n    piVar8 = &iStack_6c;\n    if (piVar7 != (int *)0x0) {\n      uVar11 = 0;\n    }\n    iVar14 = (*(code *)(iVar14 + 0x2070))(iVar3,uVar5,piVar8,uVar11);\n    if (iVar14 != 0) {\nLAB_00045180:\n      uVar2 = 0;\n      goto LAB_00045184;\n    }\n    *puVar9 = **(uint **)(iStack_6c + 0x38);\n    if (piVar7 == (int *)0x0) {\n      iVar3 = *(int *)(puVar16 + 0xb0254);\n      uVar11 = *(undefined4 *)(iStack_6c + 0x48);\n      goto LAB_000451ec;\n    }\n  }\n  else {\n    iVar14 = iVar3 + 0x24;\n    uVar12 = *(uint *)(iVar3 + 0x24);\n    iVar13 = iVar3 + 0x28;\n    uVar10 = *(uint *)(*(int *)(puVar16 + 0xb0248) + 0x4098);\n    uVar2 = uVar5;\n    do {\n      do {\n        uVar2 = uVar2 + 1;\n        uVar4 = 0;\n        if (1 < uVar2) {\n          uVar4 = FUN_0002d484(iVar14,iVar13,uVar2);\n        }\n      } while (uVar2 == uVar4);\n      if (uVar12 == 0) {\n        trap(7);\n      }\n    } while (uVar10 / uVar12 + 1 == uVar2);\n    if (*(uint *)(iVar3 + 0x30) < uVar2) goto LAB_00045158;\n    piVar8 = (int *)&cStack_6d;\n    iVar14 = FUN_00044ef0(iVar3,uVar2,piVar8,&uStack_68);\n    if (iVar14 != 0) goto LAB_00045180;\n    if (cStack_6d != '\x04') goto LAB_00045158;\n    iVar14 = *(int *)(puVar16 + 0xb0254);\n    if (uStack_68 != uVar5) goto LAB_0004515c;\n    iVar14 = 0x65;\nLAB_00045184:\n    *puVar9 = uVar2;\n    if (piVar7 == (int *)0x0) {\n      iVar3 = *(int *)(puVar16 + 0xb0254);\n      if (iStack_6c == 0) goto LAB_00045190;\n      uVar11 = *(undefined4 *)(iStack_6c + 0x48);\nLAB_000451ec:\n      (*(code *)(iVar3 + 0x1a94))(uVar11);\n      goto LAB_00045190;\n    }\n  }" if (parenthesized_expression "(*(char *)(iVar3 + 0x11) == '\0')" ( (binary_expression "*(char *)(iVar3 + 0x11) == '\0'" (pointer_expression "*(char *)(iVar3 + 0x11)" * (cast_expression "(char *)(iVar3 + 0x11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x11)" ( (binary_expression "iVar3 + 0x11" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_00045158:\n    iVar14 = *(int *)(puVar16 + 0xb0254);\nLAB_0004515c:\n    uVar11 = 2;\n    piVar8 = &iStack_6c;\n    if (piVar7 != (int *)0x0) {\n      uVar11 = 0;\n    }\n    iVar14 = (*(code *)(iVar14 + 0x2070))(iVar3,uVar5,piVar8,uVar11);\n    if (iVar14 != 0) {\nLAB_00045180:\n      uVar2 = 0;\n      goto LAB_00045184;\n    }\n    *puVar9 = **(uint **)(iStack_6c + 0x38);\n    if (piVar7 == (int *)0x0) {\n      iVar3 = *(int *)(puVar16 + 0xb0254);\n      uVar11 = *(undefined4 *)(iStack_6c + 0x48);\n      goto LAB_000451ec;\n    }\n  }" { (labeled_statement "LAB_00045158:\n    iVar14 = *(int *)(puVar16 + 0xb0254);" statement_identifier : (expression_statement "iVar14 = *(int *)(puVar16 + 0xb0254);" (assignment_expression "iVar14 = *(int *)(puVar16 + 0xb0254)" identifier = (pointer_expression "*(int *)(puVar16 + 0xb0254)" * (cast_expression "(int *)(puVar16 + 0xb0254)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xb0254)" ( (binary_expression "puVar16 + 0xb0254" identifier + number_literal) ))))) ;)) (labeled_statement "LAB_0004515c:\n    uVar11 = 2;" statement_identifier : (expression_statement "uVar11 = 2;" (assignment_expression "uVar11 = 2" identifier = number_literal) ;)) (expression_statement "piVar8 = &iStack_6c;" (assignment_expression "piVar8 = &iStack_6c" identifier = (pointer_expression "&iStack_6c" & identifier)) ;) (if_statement "if (piVar7 != (int *)0x0) {\n      uVar11 = 0;\n    }" if (parenthesized_expression "(piVar7 != (int *)0x0)" ( (binary_expression "piVar7 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      uVar11 = 0;\n    }" { (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) })) (expression_statement "iVar14 = (*(code *)(iVar14 + 0x2070))(iVar3,uVar5,piVar8,uVar11);" (assignment_expression "iVar14 = (*(code *)(iVar14 + 0x2070))(iVar3,uVar5,piVar8,uVar11)" identifier = (call_expression "(*(code *)(iVar14 + 0x2070))(iVar3,uVar5,piVar8,uVar11)" (parenthesized_expression "(*(code *)(iVar14 + 0x2070))" ( (pointer_expression "*(code *)(iVar14 + 0x2070)" * (cast_expression "(code *)(iVar14 + 0x2070)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x2070)" ( (binary_expression "iVar14 + 0x2070" identifier + number_literal) )))) )) (argument_list "(iVar3,uVar5,piVar8,uVar11)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if (iVar14 != 0) {\nLAB_00045180:\n      uVar2 = 0;\n      goto LAB_00045184;\n    }" if (parenthesized_expression "(iVar14 != 0)" ( (binary_expression "iVar14 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_00045180:\n      uVar2 = 0;\n      goto LAB_00045184;\n    }" { (labeled_statement "LAB_00045180:\n      uVar2 = 0;" statement_identifier : (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;)) (goto_statement "goto LAB_00045184;" goto statement_identifier ;) })) (expression_statement "*puVar9 = **(uint **)(iStack_6c + 0x38);" (assignment_expression "*puVar9 = **(uint **)(iStack_6c + 0x38)" (pointer_expression "*puVar9" * identifier) = (pointer_expression "**(uint **)(iStack_6c + 0x38)" * (pointer_expression "*(uint **)(iStack_6c + 0x38)" * (cast_expression "(uint **)(iStack_6c + 0x38)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iStack_6c + 0x38)" ( (binary_expression "iStack_6c + 0x38" identifier + number_literal) )))))) ;) (if_statement "if (piVar7 == (int *)0x0) {\n      iVar3 = *(int *)(puVar16 + 0xb0254);\n      uVar11 = *(undefined4 *)(iStack_6c + 0x48);\n      goto LAB_000451ec;\n    }" if (parenthesized_expression "(piVar7 == (int *)0x0)" ( (binary_expression "piVar7 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      iVar3 = *(int *)(puVar16 + 0xb0254);\n      uVar11 = *(undefined4 *)(iStack_6c + 0x48);\n      goto LAB_000451ec;\n    }" { (expression_statement "iVar3 = *(int *)(puVar16 + 0xb0254);" (assignment_expression "iVar3 = *(int *)(puVar16 + 0xb0254)" identifier = (pointer_expression "*(int *)(puVar16 + 0xb0254)" * (cast_expression "(int *)(puVar16 + 0xb0254)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xb0254)" ( (binary_expression "puVar16 + 0xb0254" identifier + number_literal) ))))) ;) (expression_statement "uVar11 = *(undefined4 *)(iStack_6c + 0x48);" (assignment_expression "uVar11 = *(undefined4 *)(iStack_6c + 0x48)" identifier = (pointer_expression "*(undefined4 *)(iStack_6c + 0x48)" * (cast_expression "(undefined4 *)(iStack_6c + 0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_6c + 0x48)" ( (binary_expression "iStack_6c + 0x48" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_000451ec;" goto statement_identifier ;) })) }) (else_clause "else {\n    iVar14 = iVar3 + 0x24;\n    uVar12 = *(uint *)(iVar3 + 0x24);\n    iVar13 = iVar3 + 0x28;\n    uVar10 = *(uint *)(*(int *)(puVar16 + 0xb0248) + 0x4098);\n    uVar2 = uVar5;\n    do {\n      do {\n        uVar2 = uVar2 + 1;\n        uVar4 = 0;\n        if (1 < uVar2) {\n          uVar4 = FUN_0002d484(iVar14,iVar13,uVar2);\n        }\n      } while (uVar2 == uVar4);\n      if (uVar12 == 0) {\n        trap(7);\n      }\n    } while (uVar10 / uVar12 + 1 == uVar2);\n    if (*(uint *)(iVar3 + 0x30) < uVar2) goto LAB_00045158;\n    piVar8 = (int *)&cStack_6d;\n    iVar14 = FUN_00044ef0(iVar3,uVar2,piVar8,&uStack_68);\n    if (iVar14 != 0) goto LAB_00045180;\n    if (cStack_6d != '\x04') goto LAB_00045158;\n    iVar14 = *(int *)(puVar16 + 0xb0254);\n    if (uStack_68 != uVar5) goto LAB_0004515c;\n    iVar14 = 0x65;\nLAB_00045184:\n    *puVar9 = uVar2;\n    if (piVar7 == (int *)0x0) {\n      iVar3 = *(int *)(puVar16 + 0xb0254);\n      if (iStack_6c == 0) goto LAB_00045190;\n      uVar11 = *(undefined4 *)(iStack_6c + 0x48);\nLAB_000451ec:\n      (*(code *)(iVar3 + 0x1a94))(uVar11);\n      goto LAB_00045190;\n    }\n  }" else (compound_statement "{\n    iVar14 = iVar3 + 0x24;\n    uVar12 = *(uint *)(iVar3 + 0x24);\n    iVar13 = iVar3 + 0x28;\n    uVar10 = *(uint *)(*(int *)(puVar16 + 0xb0248) + 0x4098);\n    uVar2 = uVar5;\n    do {\n      do {\n        uVar2 = uVar2 + 1;\n        uVar4 = 0;\n        if (1 < uVar2) {\n          uVar4 = FUN_0002d484(iVar14,iVar13,uVar2);\n        }\n      } while (uVar2 == uVar4);\n      if (uVar12 == 0) {\n        trap(7);\n      }\n    } while (uVar10 / uVar12 + 1 == uVar2);\n    if (*(uint *)(iVar3 + 0x30) < uVar2) goto LAB_00045158;\n    piVar8 = (int *)&cStack_6d;\n    iVar14 = FUN_00044ef0(iVar3,uVar2,piVar8,&uStack_68);\n    if (iVar14 != 0) goto LAB_00045180;\n    if (cStack_6d != '\x04') goto LAB_00045158;\n    iVar14 = *(int *)(puVar16 + 0xb0254);\n    if (uStack_68 != uVar5) goto LAB_0004515c;\n    iVar14 = 0x65;\nLAB_00045184:\n    *puVar9 = uVar2;\n    if (piVar7 == (int *)0x0) {\n      iVar3 = *(int *)(puVar16 + 0xb0254);\n      if (iStack_6c == 0) goto LAB_00045190;\n      uVar11 = *(undefined4 *)(iStack_6c + 0x48);\nLAB_000451ec:\n      (*(code *)(iVar3 + 0x1a94))(uVar11);\n      goto LAB_00045190;\n    }\n  }" { (expression_statement "iVar14 = iVar3 + 0x24;" (assignment_expression "iVar14 = iVar3 + 0x24" identifier = (binary_expression "iVar3 + 0x24" identifier + number_literal)) ;) (expression_statement "uVar12 = *(uint *)(iVar3 + 0x24);" (assignment_expression "uVar12 = *(uint *)(iVar3 + 0x24)" identifier = (pointer_expression "*(uint *)(iVar3 + 0x24)" * (cast_expression "(uint *)(iVar3 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x24)" ( (binary_expression "iVar3 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "iVar13 = iVar3 + 0x28;" (assignment_expression "iVar13 = iVar3 + 0x28" identifier = (binary_expression "iVar3 + 0x28" identifier + number_literal)) ;) (expression_statement "uVar10 = *(uint *)(*(int *)(puVar16 + 0xb0248) + 0x4098);" (assignment_expression "uVar10 = *(uint *)(*(int *)(puVar16 + 0xb0248) + 0x4098)" identifier = (pointer_expression "*(uint *)(*(int *)(puVar16 + 0xb0248) + 0x4098)" * (cast_expression "(uint *)(*(int *)(puVar16 + 0xb0248) + 0x4098)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar16 + 0xb0248) + 0x4098)" ( (binary_expression "*(int *)(puVar16 + 0xb0248) + 0x4098" (pointer_expression "*(int *)(puVar16 + 0xb0248)" * (cast_expression "(int *)(puVar16 + 0xb0248)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xb0248)" ( (binary_expression "puVar16 + 0xb0248" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "uVar2 = uVar5;" (assignment_expression "uVar2 = uVar5" identifier = identifier) ;) (do_statement "do {\n      do {\n        uVar2 = uVar2 + 1;\n        uVar4 = 0;\n        if (1 < uVar2) {\n          uVar4 = FUN_0002d484(iVar14,iVar13,uVar2);\n        }\n      } while (uVar2 == uVar4);\n      if (uVar12 == 0) {\n        trap(7);\n      }\n    } while (uVar10 / uVar12 + 1 == uVar2);" do (compound_statement "{\n      do {\n        uVar2 = uVar2 + 1;\n        uVar4 = 0;\n        if (1 < uVar2) {\n          uVar4 = FUN_0002d484(iVar14,iVar13,uVar2);\n        }\n      } while (uVar2 == uVar4);\n      if (uVar12 == 0) {\n        trap(7);\n      }\n    }" { (do_statement "do {\n        uVar2 = uVar2 + 1;\n        uVar4 = 0;\n        if (1 < uVar2) {\n          uVar4 = FUN_0002d484(iVar14,iVar13,uVar2);\n        }\n      } while (uVar2 == uVar4);" do (compound_statement "{\n        uVar2 = uVar2 + 1;\n        uVar4 = 0;\n        if (1 < uVar2) {\n          uVar4 = FUN_0002d484(iVar14,iVar13,uVar2);\n        }\n      }" { (expression_statement "uVar2 = uVar2 + 1;" (assignment_expression "uVar2 = uVar2 + 1" identifier = (binary_expression "uVar2 + 1" identifier + number_literal)) ;) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (if_statement "if (1 < uVar2) {\n          uVar4 = FUN_0002d484(iVar14,iVar13,uVar2);\n        }" if (parenthesized_expression "(1 < uVar2)" ( (binary_expression "1 < uVar2" number_literal < identifier) )) (compound_statement "{\n          uVar4 = FUN_0002d484(iVar14,iVar13,uVar2);\n        }" { (expression_statement "uVar4 = FUN_0002d484(iVar14,iVar13,uVar2);" (assignment_expression "uVar4 = FUN_0002d484(iVar14,iVar13,uVar2)" identifier = (call_expression "FUN_0002d484(iVar14,iVar13,uVar2)" identifier (argument_list "(iVar14,iVar13,uVar2)" ( identifier , identifier , identifier )))) ;) })) }) while (parenthesized_expression "(uVar2 == uVar4)" ( (binary_expression "uVar2 == uVar4" identifier == identifier) )) ;) (if_statement "if (uVar12 == 0) {\n        trap(7);\n      }" if (parenthesized_expression "(uVar12 == 0)" ( (binary_expression "uVar12 == 0" identifier == number_literal) )) (compound_statement "{\n        trap(7);\n      }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) }) while (parenthesized_expression "(uVar10 / uVar12 + 1 == uVar2)" ( (binary_expression "uVar10 / uVar12 + 1 == uVar2" (binary_expression "uVar10 / uVar12 + 1" (binary_expression "uVar10 / uVar12" identifier / identifier) + number_literal) == identifier) )) ;) (if_statement "if (*(uint *)(iVar3 + 0x30) < uVar2) goto LAB_00045158;" if (parenthesized_expression "(*(uint *)(iVar3 + 0x30) < uVar2)" ( (binary_expression "*(uint *)(iVar3 + 0x30) < uVar2" (pointer_expression "*(uint *)(iVar3 + 0x30)" * (cast_expression "(uint *)(iVar3 + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x30)" ( (binary_expression "iVar3 + 0x30" identifier + number_literal) )))) < identifier) )) (goto_statement "goto LAB_00045158;" goto statement_identifier ;)) (expression_statement "piVar8 = (int *)&cStack_6d;" (assignment_expression "piVar8 = (int *)&cStack_6d" identifier = (cast_expression "(int *)&cStack_6d" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&cStack_6d" & identifier))) ;) (expression_statement "iVar14 = FUN_00044ef0(iVar3,uVar2,piVar8,&uStack_68);" (assignment_expression "iVar14 = FUN_00044ef0(iVar3,uVar2,piVar8,&uStack_68)" identifier = (call_expression "FUN_00044ef0(iVar3,uVar2,piVar8,&uStack_68)" identifier (argument_list "(iVar3,uVar2,piVar8,&uStack_68)" ( identifier , identifier , identifier , (pointer_expression "&uStack_68" & identifier) )))) ;) (if_statement "if (iVar14 != 0) goto LAB_00045180;" if (parenthesized_expression "(iVar14 != 0)" ( (binary_expression "iVar14 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00045180;" goto statement_identifier ;)) (if_statement "if (cStack_6d != '\x04') goto LAB_00045158;" if (parenthesized_expression "(cStack_6d != '\x04')" ( (binary_expression "cStack_6d != '\x04'" identifier != (char_literal "'\x04'" ' escape_sequence ')) )) (goto_statement "goto LAB_00045158;" goto statement_identifier ;)) (expression_statement "iVar14 = *(int *)(puVar16 + 0xb0254);" (assignment_expression "iVar14 = *(int *)(puVar16 + 0xb0254)" identifier = (pointer_expression "*(int *)(puVar16 + 0xb0254)" * (cast_expression "(int *)(puVar16 + 0xb0254)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xb0254)" ( (binary_expression "puVar16 + 0xb0254" identifier + number_literal) ))))) ;) (if_statement "if (uStack_68 != uVar5) goto LAB_0004515c;" if (parenthesized_expression "(uStack_68 != uVar5)" ( (binary_expression "uStack_68 != uVar5" identifier != identifier) )) (goto_statement "goto LAB_0004515c;" goto statement_identifier ;)) (expression_statement "iVar14 = 0x65;" (assignment_expression "iVar14 = 0x65" identifier = number_literal) ;) (labeled_statement "LAB_00045184:\n    *puVar9 = uVar2;" statement_identifier : (expression_statement "*puVar9 = uVar2;" (assignment_expression "*puVar9 = uVar2" (pointer_expression "*puVar9" * identifier) = identifier) ;)) (if_statement "if (piVar7 == (int *)0x0) {\n      iVar3 = *(int *)(puVar16 + 0xb0254);\n      if (iStack_6c == 0) goto LAB_00045190;\n      uVar11 = *(undefined4 *)(iStack_6c + 0x48);\nLAB_000451ec:\n      (*(code *)(iVar3 + 0x1a94))(uVar11);\n      goto LAB_00045190;\n    }" if (parenthesized_expression "(piVar7 == (int *)0x0)" ( (binary_expression "piVar7 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      iVar3 = *(int *)(puVar16 + 0xb0254);\n      if (iStack_6c == 0) goto LAB_00045190;\n      uVar11 = *(undefined4 *)(iStack_6c + 0x48);\nLAB_000451ec:\n      (*(code *)(iVar3 + 0x1a94))(uVar11);\n      goto LAB_00045190;\n    }" { (expression_statement "iVar3 = *(int *)(puVar16 + 0xb0254);" (assignment_expression "iVar3 = *(int *)(puVar16 + 0xb0254)" identifier = (pointer_expression "*(int *)(puVar16 + 0xb0254)" * (cast_expression "(int *)(puVar16 + 0xb0254)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xb0254)" ( (binary_expression "puVar16 + 0xb0254" identifier + number_literal) ))))) ;) (if_statement "if (iStack_6c == 0) goto LAB_00045190;" if (parenthesized_expression "(iStack_6c == 0)" ( (binary_expression "iStack_6c == 0" identifier == number_literal) )) (goto_statement "goto LAB_00045190;" goto statement_identifier ;)) (expression_statement "uVar11 = *(undefined4 *)(iStack_6c + 0x48);" (assignment_expression "uVar11 = *(undefined4 *)(iStack_6c + 0x48)" identifier = (pointer_expression "*(undefined4 *)(iStack_6c + 0x48)" * (cast_expression "(undefined4 *)(iStack_6c + 0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_6c + 0x48)" ( (binary_expression "iStack_6c + 0x48" identifier + number_literal) ))))) ;) (labeled_statement "LAB_000451ec:\n      (*(code *)(iVar3 + 0x1a94))(uVar11);" statement_identifier : (expression_statement "(*(code *)(iVar3 + 0x1a94))(uVar11);" (call_expression "(*(code *)(iVar3 + 0x1a94))(uVar11)" (parenthesized_expression "(*(code *)(iVar3 + 0x1a94))" ( (pointer_expression "*(code *)(iVar3 + 0x1a94)" * (cast_expression "(code *)(iVar3 + 0x1a94)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x1a94)" ( (binary_expression "iVar3 + 0x1a94" identifier + number_literal) )))) )) (argument_list "(uVar11)" ( identifier ))) ;)) (goto_statement "goto LAB_00045190;" goto statement_identifier ;) })) }))) (expression_statement "*piVar7 = iStack_6c;" (assignment_expression "*piVar7 = iStack_6c" (pointer_expression "*piVar7" * identifier) = identifier) ;) (labeled_statement "LAB_00045190:\n  if (iVar14 == 0x65) {\n    iVar14 = 0;\n  }" statement_identifier : (if_statement "if (iVar14 == 0x65) {\n    iVar14 = 0;\n  }" if (parenthesized_expression "(iVar14 == 0x65)" ( (binary_expression "iVar14 == 0x65" identifier == number_literal) )) (compound_statement "{\n    iVar14 = 0;\n  }" { (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;) }))) (if_statement "if (iStack_64 == *piVar15) {\n    return iVar14;\n  }" if (parenthesized_expression "(iStack_64 == *piVar15)" ( (binary_expression "iStack_64 == *piVar15" identifier == (pointer_expression "*piVar15" * identifier)) )) (compound_statement "{\n    return iVar14;\n  }" { (return_statement "return iVar14;" return identifier ;) })) (expression_statement "pcVar17 = *(code **)(puVar16 + 0xb04cc);" (assignment_expression "pcVar17 = *(code **)(puVar16 + 0xb04cc)" identifier = (pointer_expression "*(code **)(puVar16 + 0xb04cc)" * (cast_expression "(code **)(puVar16 + 0xb04cc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0xb04cc)" ( (binary_expression "puVar16 + 0xb04cc" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar17)();" (call_expression "(*pcVar17)()" (parenthesized_expression "(*pcVar17)" ( (pointer_expression "*pcVar17" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "iVar3 = (*(code *)(*(int *)(pcVar17 + 0xb0058) + 0x2070))();" (assignment_expression "iVar3 = (*(code *)(*(int *)(pcVar17 + 0xb0058) + 0x2070))()" identifier = (call_expression "(*(code *)(*(int *)(pcVar17 + 0xb0058) + 0x2070))()" (parenthesized_expression "(*(code *)(*(int *)(pcVar17 + 0xb0058) + 0x2070))" ( (pointer_expression "*(code *)(*(int *)(pcVar17 + 0xb0058) + 0x2070)" * (cast_expression "(code *)(*(int *)(pcVar17 + 0xb0058) + 0x2070)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar17 + 0xb0058) + 0x2070)" ( (binary_expression "*(int *)(pcVar17 + 0xb0058) + 0x2070" (pointer_expression "*(int *)(pcVar17 + 0xb0058)" * (cast_expression "(int *)(pcVar17 + 0xb0058)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar17 + 0xb0058)" ( (binary_expression "pcVar17 + 0xb0058" identifier + number_literal) )))) + number_literal) )))) )) (argument_list "()" ( )))) ;) (if_statement "if (iVar3 != 0) {\n    *piVar8 = 0;\n    return iVar3;\n  }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n    *piVar8 = 0;\n    return iVar3;\n  }" { (expression_statement "*piVar8 = 0;" (assignment_expression "*piVar8 = 0" (pointer_expression "*piVar8" * identifier) = number_literal) ;) (return_statement "return iVar3;" return identifier ;) })) (if_statement "if (*(short *)(*(int *)((undefined1 *)*piVar8 + 0x48) + 0x1e) < 2) {\n    *(undefined1 *)*piVar8 = 0;\n    return 0;\n  }" if (parenthesized_expression "(*(short *)(*(int *)((undefined1 *)*piVar8 + 0x48) + 0x1e) < 2)" ( (binary_expression "*(short *)(*(int *)((undefined1 *)*piVar8 + 0x48) + 0x1e) < 2" (pointer_expression "*(short *)(*(int *)((undefined1 *)*piVar8 + 0x48) + 0x1e)" * (cast_expression "(short *)(*(int *)((undefined1 *)*piVar8 + 0x48) + 0x1e)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)((undefined1 *)*piVar8 + 0x48) + 0x1e)" ( (binary_expression "*(int *)((undefined1 *)*piVar8 + 0x48) + 0x1e" (pointer_expression "*(int *)((undefined1 *)*piVar8 + 0x48)" * (cast_expression "(int *)((undefined1 *)*piVar8 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((undefined1 *)*piVar8 + 0x48)" ( (binary_expression "(undefined1 *)*piVar8 + 0x48" (cast_expression "(undefined1 *)*piVar8" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar8" * identifier)) + number_literal) )))) + number_literal) )))) < number_literal) )) (compound_statement "{\n    *(undefined1 *)*piVar8 = 0;\n    return 0;\n  }" { (expression_statement "*(undefined1 *)*piVar8 = 0;" (assignment_expression "*(undefined1 *)*piVar8 = 0" (pointer_expression "*(undefined1 *)*piVar8" * (cast_expression "(undefined1 *)*piVar8" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar8" * identifier))) = number_literal) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "(*(code *)(*(int *)(pcVar17 + 0xb0058) + 0x1a94))();" (call_expression "(*(code *)(*(int *)(pcVar17 + 0xb0058) + 0x1a94))()" (parenthesized_expression "(*(code *)(*(int *)(pcVar17 + 0xb0058) + 0x1a94))" ( (pointer_expression "*(code *)(*(int *)(pcVar17 + 0xb0058) + 0x1a94)" * (cast_expression "(code *)(*(int *)(pcVar17 + 0xb0058) + 0x1a94)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar17 + 0xb0058) + 0x1a94)" ( (binary_expression "*(int *)(pcVar17 + 0xb0058) + 0x1a94" (pointer_expression "*(int *)(pcVar17 + 0xb0058)" * (cast_expression "(int *)(pcVar17 + 0xb0058)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar17 + 0xb0058)" ( (binary_expression "pcVar17 + 0xb0058" identifier + number_literal) )))) + number_literal) )))) )) (argument_list "()" ( ))) ;) (expression_statement "*piVar8 = 0;" (assignment_expression "*piVar8 = 0" (pointer_expression "*piVar8" * identifier) = number_literal) ;) (expression_statement "iVar3 = FUN_00044904(0x104bb);" (assignment_expression "iVar3 = FUN_00044904(0x104bb)" identifier = (call_expression "FUN_00044904(0x104bb)" identifier (argument_list "(0x104bb)" ( number_literal )))) ;) (return_statement "return iVar3;" return identifier ;) })))
(translation_unit "int ptrmapGet(BtShared *pBt,Pgno key,u8 *pEType,Pgno *pPgno)\n\n{\n  undefined *puVar1;\n  BtShared *pBVar2;\n  int iVar3;\n  BtShared *pBVar4;\n  BtShared *pBt_00;\n  PgHdr *pPVar5;\n  BtShared *pBVar6;\n  byte *pbVar7;\n  DbPage **ppDVar8;\n  DbPage **pEType_00;\n  undefined4 *puVar9;\n  uint uVar10;\n  undefined4 uVar11;\n  u32 uVar12;\n  u32 *pgno;\n  BtShared *pBt_01;\n  int *piVar13;\n  undefined *puVar14;\n  int iVar15;\n  code *pcVar16;\n  char cStack_6d;\n  DbPage *pDStack_6c;\n  BtShared *pBStack_68;\n  int iStack_64;\n  void *pvStack_5c;\n  undefined *puStack_58;\n  u8 *puStack_54;\n  Pgno *pPStack_50;\n  BtShared *pBStack_4c;\n  DbPage *pDbPage;\n  BtShared *local_1c;\n  \n  puVar1 = PTR___stack_chk_guard_000f5568;\n  local_1c = *(BtShared **)PTR___stack_chk_guard_000f5568;\n  if (key < 2) {\n    pBVar2 = (BtShared *)0x0;\n  }\n  else {\n    pBVar2 = (BtShared *)\n             ptrmapPageno((BtShared *)&pBt->pageSize,(Pgno)&pBt->usableSize,(BtShared *)key);\n  }\n  puVar9 = (undefined4 *)0x0;\n  ppDVar8 = &pDbPage;\n  pBVar6 = pBVar2;\n  iVar3 = (*pBt->pPager->xGet)(pBt->pPager,(Pgno)pBVar2,ppDVar8,0);\n  if (iVar3 == 0) {\n    key = key - (int)pBVar2;\n    iVar15 = key * 5;\n    pBVar6 = (BtShared *)(iVar15 + -5);\n    if ((int)pBVar6 < 0) {\n      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();\n      iVar3 = sqlite3CorruptError(0x1000b);\n    }\n    else {\n      key = (Pgno)pDbPage->pData;\n      pbVar7 = (byte *)(key + (int)pBVar6);\n      pBVar6 = (BtShared *)(uint)*pbVar7;\n      *pEType = *pbVar7;\n      if (pPgno != (Pgno *)0x0) {\n        key = key + iVar15;\n        *pPgno = *(Pgno *)(key - 4);\n      }\n      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();\n      if (4 < (byte)(*pEType - 1)) {\n        iVar3 = sqlite3CorruptError(0x10013);\n      }\n    }\n  }\n  if (local_1c == *(BtShared **)puVar1) {\n    return iVar3;\n  }\n  pBt_00 = local_1c;\n  puVar14 = PTR___stack_chk_fail_000f5540;\n  (*(code *)PTR___stack_chk_fail_000f5540)();\n  puStack_58 = puVar1;\n  piVar13 = *(int **)(puVar14 + 0xb04f4);\n  pDStack_6c = (DbPage *)0x0;\n  iStack_64 = *piVar13;\n  pvStack_5c = (void *)key;\n  puStack_54 = pEType;\n  pPStack_50 = pPgno;\n  pBStack_4c = pBVar2;\n  if (pBt_00->autoVacuum == '\0') {\nLAB_00045158:\n    iVar3 = *(int *)(puVar14 + 0xb0254);\nLAB_0004515c:\n    uVar11 = 2;\n    pEType_00 = &pDStack_6c;\n    if (ppDVar8 != (DbPage **)0x0) {\n      uVar11 = 0;\n    }\n    iVar3 = (*(code *)(iVar3 + 0x2070))(pBt_00,pBVar6,pEType_00,uVar11);\n    if (iVar3 != 0) {\nLAB_00045180:\n      pBVar2 = (BtShared *)0x0;\n      goto LAB_00045184;\n    }\n    *puVar9 = (pDStack_6c[1].pDirty)->pPage;\n    if (ppDVar8 == (DbPage **)0x0) {\n      iVar15 = *(int *)(puVar14 + 0xb0254);\n      pPVar5 = pDStack_6c[1].pDirtyNext;\n      goto LAB_000451ec;\n    }\n  }\n  else {\n    pBt_01 = (BtShared *)&pBt_00->pageSize;\n    uVar12 = pBt_00->pageSize;\n    pgno = &pBt_00->usableSize;\n    uVar10 = *(uint *)(*(int *)(puVar14 + 0xb0248) + 0x4098);\n    pBVar2 = pBVar6;\n    do {\n      do {\n        pBVar2 = (BtShared *)((int)&pBVar2->pPager + 1);\n        pBVar4 = (BtShared *)0x0;\n        if ((BtShared *)0x1 < pBVar2) {\n          pBVar4 = (BtShared *)ptrmapPageno(pBt_01,(Pgno)pgno,pBVar2);\n        }\n      } while (pBVar2 == pBVar4);\n      if (uVar12 == 0) {\n        trap(7);\n      }\n    } while ((BtShared *)(uVar10 / uVar12 + 1) == pBVar2);\n    if ((BtShared *)pBt_00->nPage < pBVar2) goto LAB_00045158;\n    pEType_00 = (DbPage **)&cStack_6d;\n    iVar3 = ptrmapGet(pBt_00,(Pgno)pBVar2,(u8 *)pEType_00,(Pgno *)&pBStack_68);\n    if (iVar3 != 0) goto LAB_00045180;\n    if (cStack_6d != '\x04') goto LAB_00045158;\n    iVar3 = *(int *)(puVar14 + 0xb0254);\n    if (pBStack_68 != pBVar6) goto LAB_0004515c;\n    iVar3 = 0x65;\nLAB_00045184:\n    *puVar9 = pBVar2;\n    if (ppDVar8 == (DbPage **)0x0) {\n      iVar15 = *(int *)(puVar14 + 0xb0254);\n      if (pDStack_6c == (DbPage *)0x0) goto LAB_00045190;\n      pPVar5 = pDStack_6c[1].pDirtyNext;\nLAB_000451ec:\n      (*(code *)(iVar15 + 0x1a94))(pPVar5);\n      goto LAB_00045190;\n    }\n  }\n  *ppDVar8 = pDStack_6c;\nLAB_00045190:\n  if (iVar3 == 0x65) {\n    iVar3 = 0;\n  }\n  if (iStack_64 == *piVar13) {\n    return iVar3;\n  }\n  pcVar16 = *(code **)(puVar14 + 0xb04cc);\n  (*pcVar16)();\n  iVar3 = (*(code *)(*(int *)(pcVar16 + 0xb0058) + 0x2070))();\n  if (iVar3 != 0) {\n    *pEType_00 = (DbPage *)0x0;\n    return iVar3;\n  }\n  if (((*pEType_00)[1].pDirtyNext)->nRef < 2) {\n    *(undefined1 *)&(*pEType_00)->pPage = 0;\n    return 0;\n  }\n  (*(code *)(*(int *)(pcVar16 + 0xb0058) + 0x1a94))();\n  *pEType_00 = (DbPage *)0x0;\n  iVar3 = sqlite3CorruptError(0x104bb);\n  return iVar3;\n}\n\n" (function_definition "int ptrmapGet(BtShared *pBt,Pgno key,u8 *pEType,Pgno *pPgno)\n\n{\n  undefined *puVar1;\n  BtShared *pBVar2;\n  int iVar3;\n  BtShared *pBVar4;\n  BtShared *pBt_00;\n  PgHdr *pPVar5;\n  BtShared *pBVar6;\n  byte *pbVar7;\n  DbPage **ppDVar8;\n  DbPage **pEType_00;\n  undefined4 *puVar9;\n  uint uVar10;\n  undefined4 uVar11;\n  u32 uVar12;\n  u32 *pgno;\n  BtShared *pBt_01;\n  int *piVar13;\n  undefined *puVar14;\n  int iVar15;\n  code *pcVar16;\n  char cStack_6d;\n  DbPage *pDStack_6c;\n  BtShared *pBStack_68;\n  int iStack_64;\n  void *pvStack_5c;\n  undefined *puStack_58;\n  u8 *puStack_54;\n  Pgno *pPStack_50;\n  BtShared *pBStack_4c;\n  DbPage *pDbPage;\n  BtShared *local_1c;\n  \n  puVar1 = PTR___stack_chk_guard_000f5568;\n  local_1c = *(BtShared **)PTR___stack_chk_guard_000f5568;\n  if (key < 2) {\n    pBVar2 = (BtShared *)0x0;\n  }\n  else {\n    pBVar2 = (BtShared *)\n             ptrmapPageno((BtShared *)&pBt->pageSize,(Pgno)&pBt->usableSize,(BtShared *)key);\n  }\n  puVar9 = (undefined4 *)0x0;\n  ppDVar8 = &pDbPage;\n  pBVar6 = pBVar2;\n  iVar3 = (*pBt->pPager->xGet)(pBt->pPager,(Pgno)pBVar2,ppDVar8,0);\n  if (iVar3 == 0) {\n    key = key - (int)pBVar2;\n    iVar15 = key * 5;\n    pBVar6 = (BtShared *)(iVar15 + -5);\n    if ((int)pBVar6 < 0) {\n      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();\n      iVar3 = sqlite3CorruptError(0x1000b);\n    }\n    else {\n      key = (Pgno)pDbPage->pData;\n      pbVar7 = (byte *)(key + (int)pBVar6);\n      pBVar6 = (BtShared *)(uint)*pbVar7;\n      *pEType = *pbVar7;\n      if (pPgno != (Pgno *)0x0) {\n        key = key + iVar15;\n        *pPgno = *(Pgno *)(key - 4);\n      }\n      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();\n      if (4 < (byte)(*pEType - 1)) {\n        iVar3 = sqlite3CorruptError(0x10013);\n      }\n    }\n  }\n  if (local_1c == *(BtShared **)puVar1) {\n    return iVar3;\n  }\n  pBt_00 = local_1c;\n  puVar14 = PTR___stack_chk_fail_000f5540;\n  (*(code *)PTR___stack_chk_fail_000f5540)();\n  puStack_58 = puVar1;\n  piVar13 = *(int **)(puVar14 + 0xb04f4);\n  pDStack_6c = (DbPage *)0x0;\n  iStack_64 = *piVar13;\n  pvStack_5c = (void *)key;\n  puStack_54 = pEType;\n  pPStack_50 = pPgno;\n  pBStack_4c = pBVar2;\n  if (pBt_00->autoVacuum == '\0') {\nLAB_00045158:\n    iVar3 = *(int *)(puVar14 + 0xb0254);\nLAB_0004515c:\n    uVar11 = 2;\n    pEType_00 = &pDStack_6c;\n    if (ppDVar8 != (DbPage **)0x0) {\n      uVar11 = 0;\n    }\n    iVar3 = (*(code *)(iVar3 + 0x2070))(pBt_00,pBVar6,pEType_00,uVar11);\n    if (iVar3 != 0) {\nLAB_00045180:\n      pBVar2 = (BtShared *)0x0;\n      goto LAB_00045184;\n    }\n    *puVar9 = (pDStack_6c[1].pDirty)->pPage;\n    if (ppDVar8 == (DbPage **)0x0) {\n      iVar15 = *(int *)(puVar14 + 0xb0254);\n      pPVar5 = pDStack_6c[1].pDirtyNext;\n      goto LAB_000451ec;\n    }\n  }\n  else {\n    pBt_01 = (BtShared *)&pBt_00->pageSize;\n    uVar12 = pBt_00->pageSize;\n    pgno = &pBt_00->usableSize;\n    uVar10 = *(uint *)(*(int *)(puVar14 + 0xb0248) + 0x4098);\n    pBVar2 = pBVar6;\n    do {\n      do {\n        pBVar2 = (BtShared *)((int)&pBVar2->pPager + 1);\n        pBVar4 = (BtShared *)0x0;\n        if ((BtShared *)0x1 < pBVar2) {\n          pBVar4 = (BtShared *)ptrmapPageno(pBt_01,(Pgno)pgno,pBVar2);\n        }\n      } while (pBVar2 == pBVar4);\n      if (uVar12 == 0) {\n        trap(7);\n      }\n    } while ((BtShared *)(uVar10 / uVar12 + 1) == pBVar2);\n    if ((BtShared *)pBt_00->nPage < pBVar2) goto LAB_00045158;\n    pEType_00 = (DbPage **)&cStack_6d;\n    iVar3 = ptrmapGet(pBt_00,(Pgno)pBVar2,(u8 *)pEType_00,(Pgno *)&pBStack_68);\n    if (iVar3 != 0) goto LAB_00045180;\n    if (cStack_6d != '\x04') goto LAB_00045158;\n    iVar3 = *(int *)(puVar14 + 0xb0254);\n    if (pBStack_68 != pBVar6) goto LAB_0004515c;\n    iVar3 = 0x65;\nLAB_00045184:\n    *puVar9 = pBVar2;\n    if (ppDVar8 == (DbPage **)0x0) {\n      iVar15 = *(int *)(puVar14 + 0xb0254);\n      if (pDStack_6c == (DbPage *)0x0) goto LAB_00045190;\n      pPVar5 = pDStack_6c[1].pDirtyNext;\nLAB_000451ec:\n      (*(code *)(iVar15 + 0x1a94))(pPVar5);\n      goto LAB_00045190;\n    }\n  }\n  *ppDVar8 = pDStack_6c;\nLAB_00045190:\n  if (iVar3 == 0x65) {\n    iVar3 = 0;\n  }\n  if (iStack_64 == *piVar13) {\n    return iVar3;\n  }\n  pcVar16 = *(code **)(puVar14 + 0xb04cc);\n  (*pcVar16)();\n  iVar3 = (*(code *)(*(int *)(pcVar16 + 0xb0058) + 0x2070))();\n  if (iVar3 != 0) {\n    *pEType_00 = (DbPage *)0x0;\n    return iVar3;\n  }\n  if (((*pEType_00)[1].pDirtyNext)->nRef < 2) {\n    *(undefined1 *)&(*pEType_00)->pPage = 0;\n    return 0;\n  }\n  (*(code *)(*(int *)(pcVar16 + 0xb0058) + 0x1a94))();\n  *pEType_00 = (DbPage *)0x0;\n  iVar3 = sqlite3CorruptError(0x104bb);\n  return iVar3;\n}" primitive_type (function_declarator "ptrmapGet(BtShared *pBt,Pgno key,u8 *pEType,Pgno *pPgno)" identifier (parameter_list "(BtShared *pBt,Pgno key,u8 *pEType,Pgno *pPgno)" ( (parameter_declaration "BtShared *pBt" type_identifier (pointer_declarator "*pBt" * identifier)) , (parameter_declaration "Pgno key" type_identifier identifier) , (parameter_declaration "u8 *pEType" type_identifier (pointer_declarator "*pEType" * identifier)) , (parameter_declaration "Pgno *pPgno" type_identifier (pointer_declarator "*pPgno" * identifier)) ))) (compound_statement "{\n  undefined *puVar1;\n  BtShared *pBVar2;\n  int iVar3;\n  BtShared *pBVar4;\n  BtShared *pBt_00;\n  PgHdr *pPVar5;\n  BtShared *pBVar6;\n  byte *pbVar7;\n  DbPage **ppDVar8;\n  DbPage **pEType_00;\n  undefined4 *puVar9;\n  uint uVar10;\n  undefined4 uVar11;\n  u32 uVar12;\n  u32 *pgno;\n  BtShared *pBt_01;\n  int *piVar13;\n  undefined *puVar14;\n  int iVar15;\n  code *pcVar16;\n  char cStack_6d;\n  DbPage *pDStack_6c;\n  BtShared *pBStack_68;\n  int iStack_64;\n  void *pvStack_5c;\n  undefined *puStack_58;\n  u8 *puStack_54;\n  Pgno *pPStack_50;\n  BtShared *pBStack_4c;\n  DbPage *pDbPage;\n  BtShared *local_1c;\n  \n  puVar1 = PTR___stack_chk_guard_000f5568;\n  local_1c = *(BtShared **)PTR___stack_chk_guard_000f5568;\n  if (key < 2) {\n    pBVar2 = (BtShared *)0x0;\n  }\n  else {\n    pBVar2 = (BtShared *)\n             ptrmapPageno((BtShared *)&pBt->pageSize,(Pgno)&pBt->usableSize,(BtShared *)key);\n  }\n  puVar9 = (undefined4 *)0x0;\n  ppDVar8 = &pDbPage;\n  pBVar6 = pBVar2;\n  iVar3 = (*pBt->pPager->xGet)(pBt->pPager,(Pgno)pBVar2,ppDVar8,0);\n  if (iVar3 == 0) {\n    key = key - (int)pBVar2;\n    iVar15 = key * 5;\n    pBVar6 = (BtShared *)(iVar15 + -5);\n    if ((int)pBVar6 < 0) {\n      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();\n      iVar3 = sqlite3CorruptError(0x1000b);\n    }\n    else {\n      key = (Pgno)pDbPage->pData;\n      pbVar7 = (byte *)(key + (int)pBVar6);\n      pBVar6 = (BtShared *)(uint)*pbVar7;\n      *pEType = *pbVar7;\n      if (pPgno != (Pgno *)0x0) {\n        key = key + iVar15;\n        *pPgno = *(Pgno *)(key - 4);\n      }\n      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();\n      if (4 < (byte)(*pEType - 1)) {\n        iVar3 = sqlite3CorruptError(0x10013);\n      }\n    }\n  }\n  if (local_1c == *(BtShared **)puVar1) {\n    return iVar3;\n  }\n  pBt_00 = local_1c;\n  puVar14 = PTR___stack_chk_fail_000f5540;\n  (*(code *)PTR___stack_chk_fail_000f5540)();\n  puStack_58 = puVar1;\n  piVar13 = *(int **)(puVar14 + 0xb04f4);\n  pDStack_6c = (DbPage *)0x0;\n  iStack_64 = *piVar13;\n  pvStack_5c = (void *)key;\n  puStack_54 = pEType;\n  pPStack_50 = pPgno;\n  pBStack_4c = pBVar2;\n  if (pBt_00->autoVacuum == '\0') {\nLAB_00045158:\n    iVar3 = *(int *)(puVar14 + 0xb0254);\nLAB_0004515c:\n    uVar11 = 2;\n    pEType_00 = &pDStack_6c;\n    if (ppDVar8 != (DbPage **)0x0) {\n      uVar11 = 0;\n    }\n    iVar3 = (*(code *)(iVar3 + 0x2070))(pBt_00,pBVar6,pEType_00,uVar11);\n    if (iVar3 != 0) {\nLAB_00045180:\n      pBVar2 = (BtShared *)0x0;\n      goto LAB_00045184;\n    }\n    *puVar9 = (pDStack_6c[1].pDirty)->pPage;\n    if (ppDVar8 == (DbPage **)0x0) {\n      iVar15 = *(int *)(puVar14 + 0xb0254);\n      pPVar5 = pDStack_6c[1].pDirtyNext;\n      goto LAB_000451ec;\n    }\n  }\n  else {\n    pBt_01 = (BtShared *)&pBt_00->pageSize;\n    uVar12 = pBt_00->pageSize;\n    pgno = &pBt_00->usableSize;\n    uVar10 = *(uint *)(*(int *)(puVar14 + 0xb0248) + 0x4098);\n    pBVar2 = pBVar6;\n    do {\n      do {\n        pBVar2 = (BtShared *)((int)&pBVar2->pPager + 1);\n        pBVar4 = (BtShared *)0x0;\n        if ((BtShared *)0x1 < pBVar2) {\n          pBVar4 = (BtShared *)ptrmapPageno(pBt_01,(Pgno)pgno,pBVar2);\n        }\n      } while (pBVar2 == pBVar4);\n      if (uVar12 == 0) {\n        trap(7);\n      }\n    } while ((BtShared *)(uVar10 / uVar12 + 1) == pBVar2);\n    if ((BtShared *)pBt_00->nPage < pBVar2) goto LAB_00045158;\n    pEType_00 = (DbPage **)&cStack_6d;\n    iVar3 = ptrmapGet(pBt_00,(Pgno)pBVar2,(u8 *)pEType_00,(Pgno *)&pBStack_68);\n    if (iVar3 != 0) goto LAB_00045180;\n    if (cStack_6d != '\x04') goto LAB_00045158;\n    iVar3 = *(int *)(puVar14 + 0xb0254);\n    if (pBStack_68 != pBVar6) goto LAB_0004515c;\n    iVar3 = 0x65;\nLAB_00045184:\n    *puVar9 = pBVar2;\n    if (ppDVar8 == (DbPage **)0x0) {\n      iVar15 = *(int *)(puVar14 + 0xb0254);\n      if (pDStack_6c == (DbPage *)0x0) goto LAB_00045190;\n      pPVar5 = pDStack_6c[1].pDirtyNext;\nLAB_000451ec:\n      (*(code *)(iVar15 + 0x1a94))(pPVar5);\n      goto LAB_00045190;\n    }\n  }\n  *ppDVar8 = pDStack_6c;\nLAB_00045190:\n  if (iVar3 == 0x65) {\n    iVar3 = 0;\n  }\n  if (iStack_64 == *piVar13) {\n    return iVar3;\n  }\n  pcVar16 = *(code **)(puVar14 + 0xb04cc);\n  (*pcVar16)();\n  iVar3 = (*(code *)(*(int *)(pcVar16 + 0xb0058) + 0x2070))();\n  if (iVar3 != 0) {\n    *pEType_00 = (DbPage *)0x0;\n    return iVar3;\n  }\n  if (((*pEType_00)[1].pDirtyNext)->nRef < 2) {\n    *(undefined1 *)&(*pEType_00)->pPage = 0;\n    return 0;\n  }\n  (*(code *)(*(int *)(pcVar16 + 0xb0058) + 0x1a94))();\n  *pEType_00 = (DbPage *)0x0;\n  iVar3 = sqlite3CorruptError(0x104bb);\n  return iVar3;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "BtShared *pBVar2;" type_identifier (pointer_declarator "*pBVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "BtShared *pBVar4;" type_identifier (pointer_declarator "*pBVar4" * identifier) ;) (declaration "BtShared *pBt_00;" type_identifier (pointer_declarator "*pBt_00" * identifier) ;) (declaration "PgHdr *pPVar5;" type_identifier (pointer_declarator "*pPVar5" * identifier) ;) (declaration "BtShared *pBVar6;" type_identifier (pointer_declarator "*pBVar6" * identifier) ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "DbPage **ppDVar8;" type_identifier (pointer_declarator "**ppDVar8" * (pointer_declarator "*ppDVar8" * identifier)) ;) (declaration "DbPage **pEType_00;" type_identifier (pointer_declarator "**pEType_00" * (pointer_declarator "*pEType_00" * identifier)) ;) (declaration "undefined4 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "undefined4 uVar11;" type_identifier identifier ;) (declaration "u32 uVar12;" type_identifier identifier ;) (declaration "u32 *pgno;" type_identifier (pointer_declarator "*pgno" * identifier) ;) (declaration "BtShared *pBt_01;" type_identifier (pointer_declarator "*pBt_01" * identifier) ;) (declaration "int *piVar13;" primitive_type (pointer_declarator "*piVar13" * identifier) ;) (declaration "undefined *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "code *pcVar16;" type_identifier (pointer_declarator "*pcVar16" * identifier) ;) (declaration "char cStack_6d;" primitive_type identifier ;) (declaration "DbPage *pDStack_6c;" type_identifier (pointer_declarator "*pDStack_6c" * identifier) ;) (declaration "BtShared *pBStack_68;" type_identifier (pointer_declarator "*pBStack_68" * identifier) ;) (declaration "int iStack_64;" primitive_type identifier ;) (declaration "void *pvStack_5c;" primitive_type (pointer_declarator "*pvStack_5c" * identifier) ;) (declaration "undefined *puStack_58;" type_identifier (pointer_declarator "*puStack_58" * identifier) ;) (declaration "u8 *puStack_54;" type_identifier (pointer_declarator "*puStack_54" * identifier) ;) (declaration "Pgno *pPStack_50;" type_identifier (pointer_declarator "*pPStack_50" * identifier) ;) (declaration "BtShared *pBStack_4c;" type_identifier (pointer_declarator "*pBStack_4c" * identifier) ;) (declaration "DbPage *pDbPage;" type_identifier (pointer_declarator "*pDbPage" * identifier) ;) (declaration "BtShared *local_1c;" type_identifier (pointer_declarator "*local_1c" * identifier) ;) (expression_statement "puVar1 = PTR___stack_chk_guard_000f5568;" (assignment_expression "puVar1 = PTR___stack_chk_guard_000f5568" identifier = identifier) ;) (expression_statement "local_1c = *(BtShared **)PTR___stack_chk_guard_000f5568;" (assignment_expression "local_1c = *(BtShared **)PTR___stack_chk_guard_000f5568" identifier = (pointer_expression "*(BtShared **)PTR___stack_chk_guard_000f5568" * (cast_expression "(BtShared **)PTR___stack_chk_guard_000f5568" ( (type_descriptor "BtShared **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (if_statement "if (key < 2) {\n    pBVar2 = (BtShared *)0x0;\n  }\n  else {\n    pBVar2 = (BtShared *)\n             ptrmapPageno((BtShared *)&pBt->pageSize,(Pgno)&pBt->usableSize,(BtShared *)key);\n  }" if (parenthesized_expression "(key < 2)" ( (binary_expression "key < 2" identifier < number_literal) )) (compound_statement "{\n    pBVar2 = (BtShared *)0x0;\n  }" { (expression_statement "pBVar2 = (BtShared *)0x0;" (assignment_expression "pBVar2 = (BtShared *)0x0" identifier = (cast_expression "(BtShared *)0x0" ( (type_descriptor "BtShared *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n    pBVar2 = (BtShared *)\n             ptrmapPageno((BtShared *)&pBt->pageSize,(Pgno)&pBt->usableSize,(BtShared *)key);\n  }" else (compound_statement "{\n    pBVar2 = (BtShared *)\n             ptrmapPageno((BtShared *)&pBt->pageSize,(Pgno)&pBt->usableSize,(BtShared *)key);\n  }" { (expression_statement "pBVar2 = (BtShared *)\n             ptrmapPageno((BtShared *)&pBt->pageSize,(Pgno)&pBt->usableSize,(BtShared *)key);" (assignment_expression "pBVar2 = (BtShared *)\n             ptrmapPageno((BtShared *)&pBt->pageSize,(Pgno)&pBt->usableSize,(BtShared *)key)" identifier = (cast_expression "(BtShared *)\n             ptrmapPageno((BtShared *)&pBt->pageSize,(Pgno)&pBt->usableSize,(BtShared *)key)" ( (type_descriptor "BtShared *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "ptrmapPageno((BtShared *)&pBt->pageSize,(Pgno)&pBt->usableSize,(BtShared *)key)" identifier (argument_list "((BtShared *)&pBt->pageSize,(Pgno)&pBt->usableSize,(BtShared *)key)" ( (cast_expression "(BtShared *)&pBt->pageSize" ( (type_descriptor "BtShared *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pBt->pageSize" & (field_expression "pBt->pageSize" identifier -> field_identifier))) , (binary_expression "(Pgno)&pBt->usableSize" (parenthesized_expression "(Pgno)" ( identifier )) & (field_expression "pBt->usableSize" identifier -> field_identifier)) , (cast_expression "(BtShared *)key" ( (type_descriptor "BtShared *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))))) ;) }))) (expression_statement "puVar9 = (undefined4 *)0x0;" (assignment_expression "puVar9 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "ppDVar8 = &pDbPage;" (assignment_expression "ppDVar8 = &pDbPage" identifier = (pointer_expression "&pDbPage" & identifier)) ;) (expression_statement "pBVar6 = pBVar2;" (assignment_expression "pBVar6 = pBVar2" identifier = identifier) ;) (expression_statement "iVar3 = (*pBt->pPager->xGet)(pBt->pPager,(Pgno)pBVar2,ppDVar8,0);" (assignment_expression "iVar3 = (*pBt->pPager->xGet)(pBt->pPager,(Pgno)pBVar2,ppDVar8,0)" identifier = (call_expression "(*pBt->pPager->xGet)(pBt->pPager,(Pgno)pBVar2,ppDVar8,0)" (parenthesized_expression "(*pBt->pPager->xGet)" ( (pointer_expression "*pBt->pPager->xGet" * (field_expression "pBt->pPager->xGet" (field_expression "pBt->pPager" identifier -> field_identifier) -> field_identifier)) )) (argument_list "(pBt->pPager,(Pgno)pBVar2,ppDVar8,0)" ( (field_expression "pBt->pPager" identifier -> field_identifier) , (cast_expression "(Pgno)pBVar2" ( (type_descriptor "Pgno" type_identifier) ) identifier) , identifier , number_literal )))) ;) (if_statement "if (iVar3 == 0) {\n    key = key - (int)pBVar2;\n    iVar15 = key * 5;\n    pBVar6 = (BtShared *)(iVar15 + -5);\n    if ((int)pBVar6 < 0) {\n      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();\n      iVar3 = sqlite3CorruptError(0x1000b);\n    }\n    else {\n      key = (Pgno)pDbPage->pData;\n      pbVar7 = (byte *)(key + (int)pBVar6);\n      pBVar6 = (BtShared *)(uint)*pbVar7;\n      *pEType = *pbVar7;\n      if (pPgno != (Pgno *)0x0) {\n        key = key + iVar15;\n        *pPgno = *(Pgno *)(key - 4);\n      }\n      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();\n      if (4 < (byte)(*pEType - 1)) {\n        iVar3 = sqlite3CorruptError(0x10013);\n      }\n    }\n  }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n    key = key - (int)pBVar2;\n    iVar15 = key * 5;\n    pBVar6 = (BtShared *)(iVar15 + -5);\n    if ((int)pBVar6 < 0) {\n      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();\n      iVar3 = sqlite3CorruptError(0x1000b);\n    }\n    else {\n      key = (Pgno)pDbPage->pData;\n      pbVar7 = (byte *)(key + (int)pBVar6);\n      pBVar6 = (BtShared *)(uint)*pbVar7;\n      *pEType = *pbVar7;\n      if (pPgno != (Pgno *)0x0) {\n        key = key + iVar15;\n        *pPgno = *(Pgno *)(key - 4);\n      }\n      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();\n      if (4 < (byte)(*pEType - 1)) {\n        iVar3 = sqlite3CorruptError(0x10013);\n      }\n    }\n  }" { (expression_statement "key = key - (int)pBVar2;" (assignment_expression "key = key - (int)pBVar2" identifier = (binary_expression "key - (int)pBVar2" identifier - (cast_expression "(int)pBVar2" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "iVar15 = key * 5;" (assignment_expression "iVar15 = key * 5" identifier = (binary_expression "key * 5" identifier * number_literal)) ;) (expression_statement "pBVar6 = (BtShared *)(iVar15 + -5);" (assignment_expression "pBVar6 = (BtShared *)(iVar15 + -5)" identifier = (cast_expression "(BtShared *)(iVar15 + -5)" ( (type_descriptor "BtShared *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + -5)" ( (binary_expression "iVar15 + -5" identifier + number_literal) )))) ;) (if_statement "if ((int)pBVar6 < 0) {\n      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();\n      iVar3 = sqlite3CorruptError(0x1000b);\n    }\n    else {\n      key = (Pgno)pDbPage->pData;\n      pbVar7 = (byte *)(key + (int)pBVar6);\n      pBVar6 = (BtShared *)(uint)*pbVar7;\n      *pEType = *pbVar7;\n      if (pPgno != (Pgno *)0x0) {\n        key = key + iVar15;\n        *pPgno = *(Pgno *)(key - 4);\n      }\n      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();\n      if (4 < (byte)(*pEType - 1)) {\n        iVar3 = sqlite3CorruptError(0x10013);\n      }\n    }" if (parenthesized_expression "((int)pBVar6 < 0)" ( (binary_expression "(int)pBVar6 < 0" (cast_expression "(int)pBVar6" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();\n      iVar3 = sqlite3CorruptError(0x1000b);\n    }" { (expression_statement "(*(code *)(PTR_LAB_000f52c8 + 0x1a94))();" (call_expression "(*(code *)(PTR_LAB_000f52c8 + 0x1a94))()" (parenthesized_expression "(*(code *)(PTR_LAB_000f52c8 + 0x1a94))" ( (pointer_expression "*(code *)(PTR_LAB_000f52c8 + 0x1a94)" * (cast_expression "(code *)(PTR_LAB_000f52c8 + 0x1a94)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52c8 + 0x1a94)" ( (binary_expression "PTR_LAB_000f52c8 + 0x1a94" identifier + number_literal) )))) )) (argument_list "()" ( ))) ;) (expression_statement "iVar3 = sqlite3CorruptError(0x1000b);" (assignment_expression "iVar3 = sqlite3CorruptError(0x1000b)" identifier = (call_expression "sqlite3CorruptError(0x1000b)" identifier (argument_list "(0x1000b)" ( number_literal )))) ;) }) (else_clause "else {\n      key = (Pgno)pDbPage->pData;\n      pbVar7 = (byte *)(key + (int)pBVar6);\n      pBVar6 = (BtShared *)(uint)*pbVar7;\n      *pEType = *pbVar7;\n      if (pPgno != (Pgno *)0x0) {\n        key = key + iVar15;\n        *pPgno = *(Pgno *)(key - 4);\n      }\n      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();\n      if (4 < (byte)(*pEType - 1)) {\n        iVar3 = sqlite3CorruptError(0x10013);\n      }\n    }" else (compound_statement "{\n      key = (Pgno)pDbPage->pData;\n      pbVar7 = (byte *)(key + (int)pBVar6);\n      pBVar6 = (BtShared *)(uint)*pbVar7;\n      *pEType = *pbVar7;\n      if (pPgno != (Pgno *)0x0) {\n        key = key + iVar15;\n        *pPgno = *(Pgno *)(key - 4);\n      }\n      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();\n      if (4 < (byte)(*pEType - 1)) {\n        iVar3 = sqlite3CorruptError(0x10013);\n      }\n    }" { (expression_statement "key = (Pgno)pDbPage->pData;" (assignment_expression "key = (Pgno)pDbPage->pData" identifier = (cast_expression "(Pgno)pDbPage->pData" ( (type_descriptor "Pgno" type_identifier) ) (field_expression "pDbPage->pData" identifier -> field_identifier))) ;) (expression_statement "pbVar7 = (byte *)(key + (int)pBVar6);" (assignment_expression "pbVar7 = (byte *)(key + (int)pBVar6)" identifier = (cast_expression "(byte *)(key + (int)pBVar6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(key + (int)pBVar6)" ( (binary_expression "key + (int)pBVar6" identifier + (cast_expression "(int)pBVar6" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "pBVar6 = (BtShared *)(uint)*pbVar7;" (assignment_expression "pBVar6 = (BtShared *)(uint)*pbVar7" identifier = (binary_expression "(BtShared *)(uint)*pbVar7" (cast_expression "(BtShared *)(uint)" ( (type_descriptor "BtShared *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * identifier)) ;) (expression_statement "*pEType = *pbVar7;" (assignment_expression "*pEType = *pbVar7" (pointer_expression "*pEType" * identifier) = (pointer_expression "*pbVar7" * identifier)) ;) (if_statement "if (pPgno != (Pgno *)0x0) {\n        key = key + iVar15;\n        *pPgno = *(Pgno *)(key - 4);\n      }" if (parenthesized_expression "(pPgno != (Pgno *)0x0)" ( (binary_expression "pPgno != (Pgno *)0x0" identifier != (cast_expression "(Pgno *)0x0" ( (type_descriptor "Pgno *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        key = key + iVar15;\n        *pPgno = *(Pgno *)(key - 4);\n      }" { (expression_statement "key = key + iVar15;" (assignment_expression "key = key + iVar15" identifier = (binary_expression "key + iVar15" identifier + identifier)) ;) (expression_statement "*pPgno = *(Pgno *)(key - 4);" (assignment_expression "*pPgno = *(Pgno *)(key - 4)" (pointer_expression "*pPgno" * identifier) = (pointer_expression "*(Pgno *)(key - 4)" * (cast_expression "(Pgno *)(key - 4)" ( (type_descriptor "Pgno *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(key - 4)" ( (binary_expression "key - 4" identifier - number_literal) ))))) ;) })) (expression_statement "(*(code *)(PTR_LAB_000f52c8 + 0x1a94))();" (call_expression "(*(code *)(PTR_LAB_000f52c8 + 0x1a94))()" (parenthesized_expression "(*(code *)(PTR_LAB_000f52c8 + 0x1a94))" ( (pointer_expression "*(code *)(PTR_LAB_000f52c8 + 0x1a94)" * (cast_expression "(code *)(PTR_LAB_000f52c8 + 0x1a94)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52c8 + 0x1a94)" ( (binary_expression "PTR_LAB_000f52c8 + 0x1a94" identifier + number_literal) )))) )) (argument_list "()" ( ))) ;) (if_statement "if (4 < (byte)(*pEType - 1)) {\n        iVar3 = sqlite3CorruptError(0x10013);\n      }" if (parenthesized_expression "(4 < (byte)(*pEType - 1))" ( (binary_expression "4 < (byte)(*pEType - 1)" number_literal < (call_expression "(byte)(*pEType - 1)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(*pEType - 1)" ( (binary_expression "*pEType - 1" (pointer_expression "*pEType" * identifier) - number_literal) )))) )) (compound_statement "{\n        iVar3 = sqlite3CorruptError(0x10013);\n      }" { (expression_statement "iVar3 = sqlite3CorruptError(0x10013);" (assignment_expression "iVar3 = sqlite3CorruptError(0x10013)" identifier = (call_expression "sqlite3CorruptError(0x10013)" identifier (argument_list "(0x10013)" ( number_literal )))) ;) })) }))) })) (if_statement "if (local_1c == *(BtShared **)puVar1) {\n    return iVar3;\n  }" if (parenthesized_expression "(local_1c == *(BtShared **)puVar1)" ( (binary_expression "local_1c == *(BtShared **)puVar1" identifier == (pointer_expression "*(BtShared **)puVar1" * (cast_expression "(BtShared **)puVar1" ( (type_descriptor "BtShared **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (compound_statement "{\n    return iVar3;\n  }" { (return_statement "return iVar3;" return identifier ;) })) (expression_statement "pBt_00 = local_1c;" (assignment_expression "pBt_00 = local_1c" identifier = identifier) ;) (expression_statement "puVar14 = PTR___stack_chk_fail_000f5540;" (assignment_expression "puVar14 = PTR___stack_chk_fail_000f5540" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000f5540)();" (call_expression "(*(code *)PTR___stack_chk_fail_000f5540)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000f5540)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000f5540" * (cast_expression "(code *)PTR___stack_chk_fail_000f5540" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puStack_58 = puVar1;" (assignment_expression "puStack_58 = puVar1" identifier = identifier) ;) (expression_statement "piVar13 = *(int **)(puVar14 + 0xb04f4);" (assignment_expression "piVar13 = *(int **)(puVar14 + 0xb04f4)" identifier = (pointer_expression "*(int **)(puVar14 + 0xb04f4)" * (cast_expression "(int **)(puVar14 + 0xb04f4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + 0xb04f4)" ( (binary_expression "puVar14 + 0xb04f4" identifier + number_literal) ))))) ;) (expression_statement "pDStack_6c = (DbPage *)0x0;" (assignment_expression "pDStack_6c = (DbPage *)0x0" identifier = (cast_expression "(DbPage *)0x0" ( (type_descriptor "DbPage *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iStack_64 = *piVar13;" (assignment_expression "iStack_64 = *piVar13" identifier = (pointer_expression "*piVar13" * identifier)) ;) (expression_statement "pvStack_5c = (void *)key;" (assignment_expression "pvStack_5c = (void *)key" identifier = (cast_expression "(void *)key" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "puStack_54 = pEType;" (assignment_expression "puStack_54 = pEType" identifier = identifier) ;) (expression_statement "pPStack_50 = pPgno;" (assignment_expression "pPStack_50 = pPgno" identifier = identifier) ;) (expression_statement "pBStack_4c = pBVar2;" (assignment_expression "pBStack_4c = pBVar2" identifier = identifier) ;) (if_statement "if (pBt_00->autoVacuum == '\0') {\nLAB_00045158:\n    iVar3 = *(int *)(puVar14 + 0xb0254);\nLAB_0004515c:\n    uVar11 = 2;\n    pEType_00 = &pDStack_6c;\n    if (ppDVar8 != (DbPage **)0x0) {\n      uVar11 = 0;\n    }\n    iVar3 = (*(code *)(iVar3 + 0x2070))(pBt_00,pBVar6,pEType_00,uVar11);\n    if (iVar3 != 0) {\nLAB_00045180:\n      pBVar2 = (BtShared *)0x0;\n      goto LAB_00045184;\n    }\n    *puVar9 = (pDStack_6c[1].pDirty)->pPage;\n    if (ppDVar8 == (DbPage **)0x0) {\n      iVar15 = *(int *)(puVar14 + 0xb0254);\n      pPVar5 = pDStack_6c[1].pDirtyNext;\n      goto LAB_000451ec;\n    }\n  }\n  else {\n    pBt_01 = (BtShared *)&pBt_00->pageSize;\n    uVar12 = pBt_00->pageSize;\n    pgno = &pBt_00->usableSize;\n    uVar10 = *(uint *)(*(int *)(puVar14 + 0xb0248) + 0x4098);\n    pBVar2 = pBVar6;\n    do {\n      do {\n        pBVar2 = (BtShared *)((int)&pBVar2->pPager + 1);\n        pBVar4 = (BtShared *)0x0;\n        if ((BtShared *)0x1 < pBVar2) {\n          pBVar4 = (BtShared *)ptrmapPageno(pBt_01,(Pgno)pgno,pBVar2);\n        }\n      } while (pBVar2 == pBVar4);\n      if (uVar12 == 0) {\n        trap(7);\n      }\n    } while ((BtShared *)(uVar10 / uVar12 + 1) == pBVar2);\n    if ((BtShared *)pBt_00->nPage < pBVar2) goto LAB_00045158;\n    pEType_00 = (DbPage **)&cStack_6d;\n    iVar3 = ptrmapGet(pBt_00,(Pgno)pBVar2,(u8 *)pEType_00,(Pgno *)&pBStack_68);\n    if (iVar3 != 0) goto LAB_00045180;\n    if (cStack_6d != '\x04') goto LAB_00045158;\n    iVar3 = *(int *)(puVar14 + 0xb0254);\n    if (pBStack_68 != pBVar6) goto LAB_0004515c;\n    iVar3 = 0x65;\nLAB_00045184:\n    *puVar9 = pBVar2;\n    if (ppDVar8 == (DbPage **)0x0) {\n      iVar15 = *(int *)(puVar14 + 0xb0254);\n      if (pDStack_6c == (DbPage *)0x0) goto LAB_00045190;\n      pPVar5 = pDStack_6c[1].pDirtyNext;\nLAB_000451ec:\n      (*(code *)(iVar15 + 0x1a94))(pPVar5);\n      goto LAB_00045190;\n    }\n  }" if (parenthesized_expression "(pBt_00->autoVacuum == '\0')" ( (binary_expression "pBt_00->autoVacuum == '\0'" (field_expression "pBt_00->autoVacuum" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_00045158:\n    iVar3 = *(int *)(puVar14 + 0xb0254);\nLAB_0004515c:\n    uVar11 = 2;\n    pEType_00 = &pDStack_6c;\n    if (ppDVar8 != (DbPage **)0x0) {\n      uVar11 = 0;\n    }\n    iVar3 = (*(code *)(iVar3 + 0x2070))(pBt_00,pBVar6,pEType_00,uVar11);\n    if (iVar3 != 0) {\nLAB_00045180:\n      pBVar2 = (BtShared *)0x0;\n      goto LAB_00045184;\n    }\n    *puVar9 = (pDStack_6c[1].pDirty)->pPage;\n    if (ppDVar8 == (DbPage **)0x0) {\n      iVar15 = *(int *)(puVar14 + 0xb0254);\n      pPVar5 = pDStack_6c[1].pDirtyNext;\n      goto LAB_000451ec;\n    }\n  }" { (labeled_statement "LAB_00045158:\n    iVar3 = *(int *)(puVar14 + 0xb0254);" statement_identifier : (expression_statement "iVar3 = *(int *)(puVar14 + 0xb0254);" (assignment_expression "iVar3 = *(int *)(puVar14 + 0xb0254)" identifier = (pointer_expression "*(int *)(puVar14 + 0xb0254)" * (cast_expression "(int *)(puVar14 + 0xb0254)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + 0xb0254)" ( (binary_expression "puVar14 + 0xb0254" identifier + number_literal) ))))) ;)) (labeled_statement "LAB_0004515c:\n    uVar11 = 2;" statement_identifier : (expression_statement "uVar11 = 2;" (assignment_expression "uVar11 = 2" identifier = number_literal) ;)) (expression_statement "pEType_00 = &pDStack_6c;" (assignment_expression "pEType_00 = &pDStack_6c" identifier = (pointer_expression "&pDStack_6c" & identifier)) ;) (if_statement "if (ppDVar8 != (DbPage **)0x0) {\n      uVar11 = 0;\n    }" if (parenthesized_expression "(ppDVar8 != (DbPage **)0x0)" ( (binary_expression "ppDVar8 != (DbPage **)0x0" identifier != (cast_expression "(DbPage **)0x0" ( (type_descriptor "DbPage **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\n      uVar11 = 0;\n    }" { (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) })) (expression_statement "iVar3 = (*(code *)(iVar3 + 0x2070))(pBt_00,pBVar6,pEType_00,uVar11);" (assignment_expression "iVar3 = (*(code *)(iVar3 + 0x2070))(pBt_00,pBVar6,pEType_00,uVar11)" identifier = (call_expression "(*(code *)(iVar3 + 0x2070))(pBt_00,pBVar6,pEType_00,uVar11)" (parenthesized_expression "(*(code *)(iVar3 + 0x2070))" ( (pointer_expression "*(code *)(iVar3 + 0x2070)" * (cast_expression "(code *)(iVar3 + 0x2070)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x2070)" ( (binary_expression "iVar3 + 0x2070" identifier + number_literal) )))) )) (argument_list "(pBt_00,pBVar6,pEType_00,uVar11)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if (iVar3 != 0) {\nLAB_00045180:\n      pBVar2 = (BtShared *)0x0;\n      goto LAB_00045184;\n    }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_00045180:\n      pBVar2 = (BtShared *)0x0;\n      goto LAB_00045184;\n    }" { (labeled_statement "LAB_00045180:\n      pBVar2 = (BtShared *)0x0;" statement_identifier : (expression_statement "pBVar2 = (BtShared *)0x0;" (assignment_expression "pBVar2 = (BtShared *)0x0" identifier = (cast_expression "(BtShared *)0x0" ( (type_descriptor "BtShared *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (goto_statement "goto LAB_00045184;" goto statement_identifier ;) })) (expression_statement "*puVar9 = (pDStack_6c[1].pDirty)->pPage;" (assignment_expression "*puVar9 = (pDStack_6c[1].pDirty)->pPage" (pointer_expression "*puVar9" * identifier) = (field_expression "(pDStack_6c[1].pDirty)->pPage" (parenthesized_expression "(pDStack_6c[1].pDirty)" ( (field_expression "pDStack_6c[1].pDirty" (subscript_expression "pDStack_6c[1]" identifier [ number_literal ]) . field_identifier) )) -> field_identifier)) ;) (if_statement "if (ppDVar8 == (DbPage **)0x0) {\n      iVar15 = *(int *)(puVar14 + 0xb0254);\n      pPVar5 = pDStack_6c[1].pDirtyNext;\n      goto LAB_000451ec;\n    }" if (parenthesized_expression "(ppDVar8 == (DbPage **)0x0)" ( (binary_expression "ppDVar8 == (DbPage **)0x0" identifier == (cast_expression "(DbPage **)0x0" ( (type_descriptor "DbPage **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\n      iVar15 = *(int *)(puVar14 + 0xb0254);\n      pPVar5 = pDStack_6c[1].pDirtyNext;\n      goto LAB_000451ec;\n    }" { (expression_statement "iVar15 = *(int *)(puVar14 + 0xb0254);" (assignment_expression "iVar15 = *(int *)(puVar14 + 0xb0254)" identifier = (pointer_expression "*(int *)(puVar14 + 0xb0254)" * (cast_expression "(int *)(puVar14 + 0xb0254)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + 0xb0254)" ( (binary_expression "puVar14 + 0xb0254" identifier + number_literal) ))))) ;) (expression_statement "pPVar5 = pDStack_6c[1].pDirtyNext;" (assignment_expression "pPVar5 = pDStack_6c[1].pDirtyNext" identifier = (field_expression "pDStack_6c[1].pDirtyNext" (subscript_expression "pDStack_6c[1]" identifier [ number_literal ]) . field_identifier)) ;) (goto_statement "goto LAB_000451ec;" goto statement_identifier ;) })) }) (else_clause "else {\n    pBt_01 = (BtShared *)&pBt_00->pageSize;\n    uVar12 = pBt_00->pageSize;\n    pgno = &pBt_00->usableSize;\n    uVar10 = *(uint *)(*(int *)(puVar14 + 0xb0248) + 0x4098);\n    pBVar2 = pBVar6;\n    do {\n      do {\n        pBVar2 = (BtShared *)((int)&pBVar2->pPager + 1);\n        pBVar4 = (BtShared *)0x0;\n        if ((BtShared *)0x1 < pBVar2) {\n          pBVar4 = (BtShared *)ptrmapPageno(pBt_01,(Pgno)pgno,pBVar2);\n        }\n      } while (pBVar2 == pBVar4);\n      if (uVar12 == 0) {\n        trap(7);\n      }\n    } while ((BtShared *)(uVar10 / uVar12 + 1) == pBVar2);\n    if ((BtShared *)pBt_00->nPage < pBVar2) goto LAB_00045158;\n    pEType_00 = (DbPage **)&cStack_6d;\n    iVar3 = ptrmapGet(pBt_00,(Pgno)pBVar2,(u8 *)pEType_00,(Pgno *)&pBStack_68);\n    if (iVar3 != 0) goto LAB_00045180;\n    if (cStack_6d != '\x04') goto LAB_00045158;\n    iVar3 = *(int *)(puVar14 + 0xb0254);\n    if (pBStack_68 != pBVar6) goto LAB_0004515c;\n    iVar3 = 0x65;\nLAB_00045184:\n    *puVar9 = pBVar2;\n    if (ppDVar8 == (DbPage **)0x0) {\n      iVar15 = *(int *)(puVar14 + 0xb0254);\n      if (pDStack_6c == (DbPage *)0x0) goto LAB_00045190;\n      pPVar5 = pDStack_6c[1].pDirtyNext;\nLAB_000451ec:\n      (*(code *)(iVar15 + 0x1a94))(pPVar5);\n      goto LAB_00045190;\n    }\n  }" else (compound_statement "{\n    pBt_01 = (BtShared *)&pBt_00->pageSize;\n    uVar12 = pBt_00->pageSize;\n    pgno = &pBt_00->usableSize;\n    uVar10 = *(uint *)(*(int *)(puVar14 + 0xb0248) + 0x4098);\n    pBVar2 = pBVar6;\n    do {\n      do {\n        pBVar2 = (BtShared *)((int)&pBVar2->pPager + 1);\n        pBVar4 = (BtShared *)0x0;\n        if ((BtShared *)0x1 < pBVar2) {\n          pBVar4 = (BtShared *)ptrmapPageno(pBt_01,(Pgno)pgno,pBVar2);\n        }\n      } while (pBVar2 == pBVar4);\n      if (uVar12 == 0) {\n        trap(7);\n      }\n    } while ((BtShared *)(uVar10 / uVar12 + 1) == pBVar2);\n    if ((BtShared *)pBt_00->nPage < pBVar2) goto LAB_00045158;\n    pEType_00 = (DbPage **)&cStack_6d;\n    iVar3 = ptrmapGet(pBt_00,(Pgno)pBVar2,(u8 *)pEType_00,(Pgno *)&pBStack_68);\n    if (iVar3 != 0) goto LAB_00045180;\n    if (cStack_6d != '\x04') goto LAB_00045158;\n    iVar3 = *(int *)(puVar14 + 0xb0254);\n    if (pBStack_68 != pBVar6) goto LAB_0004515c;\n    iVar3 = 0x65;\nLAB_00045184:\n    *puVar9 = pBVar2;\n    if (ppDVar8 == (DbPage **)0x0) {\n      iVar15 = *(int *)(puVar14 + 0xb0254);\n      if (pDStack_6c == (DbPage *)0x0) goto LAB_00045190;\n      pPVar5 = pDStack_6c[1].pDirtyNext;\nLAB_000451ec:\n      (*(code *)(iVar15 + 0x1a94))(pPVar5);\n      goto LAB_00045190;\n    }\n  }" { (expression_statement "pBt_01 = (BtShared *)&pBt_00->pageSize;" (assignment_expression "pBt_01 = (BtShared *)&pBt_00->pageSize" identifier = (cast_expression "(BtShared *)&pBt_00->pageSize" ( (type_descriptor "BtShared *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pBt_00->pageSize" & (field_expression "pBt_00->pageSize" identifier -> field_identifier)))) ;) (expression_statement "uVar12 = pBt_00->pageSize;" (assignment_expression "uVar12 = pBt_00->pageSize" identifier = (field_expression "pBt_00->pageSize" identifier -> field_identifier)) ;) (expression_statement "pgno = &pBt_00->usableSize;" (assignment_expression "pgno = &pBt_00->usableSize" identifier = (pointer_expression "&pBt_00->usableSize" & (field_expression "pBt_00->usableSize" identifier -> field_identifier))) ;) (expression_statement "uVar10 = *(uint *)(*(int *)(puVar14 + 0xb0248) + 0x4098);" (assignment_expression "uVar10 = *(uint *)(*(int *)(puVar14 + 0xb0248) + 0x4098)" identifier = (pointer_expression "*(uint *)(*(int *)(puVar14 + 0xb0248) + 0x4098)" * (cast_expression "(uint *)(*(int *)(puVar14 + 0xb0248) + 0x4098)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar14 + 0xb0248) + 0x4098)" ( (binary_expression "*(int *)(puVar14 + 0xb0248) + 0x4098" (pointer_expression "*(int *)(puVar14 + 0xb0248)" * (cast_expression "(int *)(puVar14 + 0xb0248)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + 0xb0248)" ( (binary_expression "puVar14 + 0xb0248" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "pBVar2 = pBVar6;" (assignment_expression "pBVar2 = pBVar6" identifier = identifier) ;) (do_statement "do {\n      do {\n        pBVar2 = (BtShared *)((int)&pBVar2->pPager + 1);\n        pBVar4 = (BtShared *)0x0;\n        if ((BtShared *)0x1 < pBVar2) {\n          pBVar4 = (BtShared *)ptrmapPageno(pBt_01,(Pgno)pgno,pBVar2);\n        }\n      } while (pBVar2 == pBVar4);\n      if (uVar12 == 0) {\n        trap(7);\n      }\n    } while ((BtShared *)(uVar10 / uVar12 + 1) == pBVar2);" do (compound_statement "{\n      do {\n        pBVar2 = (BtShared *)((int)&pBVar2->pPager + 1);\n        pBVar4 = (BtShared *)0x0;\n        if ((BtShared *)0x1 < pBVar2) {\n          pBVar4 = (BtShared *)ptrmapPageno(pBt_01,(Pgno)pgno,pBVar2);\n        }\n      } while (pBVar2 == pBVar4);\n      if (uVar12 == 0) {\n        trap(7);\n      }\n    }" { (do_statement "do {\n        pBVar2 = (BtShared *)((int)&pBVar2->pPager + 1);\n        pBVar4 = (BtShared *)0x0;\n        if ((BtShared *)0x1 < pBVar2) {\n          pBVar4 = (BtShared *)ptrmapPageno(pBt_01,(Pgno)pgno,pBVar2);\n        }\n      } while (pBVar2 == pBVar4);" do (compound_statement "{\n        pBVar2 = (BtShared *)((int)&pBVar2->pPager + 1);\n        pBVar4 = (BtShared *)0x0;\n        if ((BtShared *)0x1 < pBVar2) {\n          pBVar4 = (BtShared *)ptrmapPageno(pBt_01,(Pgno)pgno,pBVar2);\n        }\n      }" { (expression_statement "pBVar2 = (BtShared *)((int)&pBVar2->pPager + 1);" (assignment_expression "pBVar2 = (BtShared *)((int)&pBVar2->pPager + 1)" identifier = (cast_expression "(BtShared *)((int)&pBVar2->pPager + 1)" ( (type_descriptor "BtShared *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pBVar2->pPager + 1)" ( (binary_expression "(int)&pBVar2->pPager + 1" (cast_expression "(int)&pBVar2->pPager" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pBVar2->pPager" & (field_expression "pBVar2->pPager" identifier -> field_identifier))) + number_literal) )))) ;) (expression_statement "pBVar4 = (BtShared *)0x0;" (assignment_expression "pBVar4 = (BtShared *)0x0" identifier = (cast_expression "(BtShared *)0x0" ( (type_descriptor "BtShared *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if ((BtShared *)0x1 < pBVar2) {\n          pBVar4 = (BtShared *)ptrmapPageno(pBt_01,(Pgno)pgno,pBVar2);\n        }" if (parenthesized_expression "((BtShared *)0x1 < pBVar2)" ( (binary_expression "(BtShared *)0x1 < pBVar2" (cast_expression "(BtShared *)0x1" ( (type_descriptor "BtShared *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) < identifier) )) (compound_statement "{\n          pBVar4 = (BtShared *)ptrmapPageno(pBt_01,(Pgno)pgno,pBVar2);\n        }" { (expression_statement "pBVar4 = (BtShared *)ptrmapPageno(pBt_01,(Pgno)pgno,pBVar2);" (assignment_expression "pBVar4 = (BtShared *)ptrmapPageno(pBt_01,(Pgno)pgno,pBVar2)" identifier = (cast_expression "(BtShared *)ptrmapPageno(pBt_01,(Pgno)pgno,pBVar2)" ( (type_descriptor "BtShared *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "ptrmapPageno(pBt_01,(Pgno)pgno,pBVar2)" identifier (argument_list "(pBt_01,(Pgno)pgno,pBVar2)" ( identifier , (cast_expression "(Pgno)pgno" ( (type_descriptor "Pgno" type_identifier) ) identifier) , identifier ))))) ;) })) }) while (parenthesized_expression "(pBVar2 == pBVar4)" ( (binary_expression "pBVar2 == pBVar4" identifier == identifier) )) ;) (if_statement "if (uVar12 == 0) {\n        trap(7);\n      }" if (parenthesized_expression "(uVar12 == 0)" ( (binary_expression "uVar12 == 0" identifier == number_literal) )) (compound_statement "{\n        trap(7);\n      }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) }) while (parenthesized_expression "((BtShared *)(uVar10 / uVar12 + 1) == pBVar2)" ( (binary_expression "(BtShared *)(uVar10 / uVar12 + 1) == pBVar2" (cast_expression "(BtShared *)(uVar10 / uVar12 + 1)" ( (type_descriptor "BtShared *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar10 / uVar12 + 1)" ( (binary_expression "uVar10 / uVar12 + 1" (binary_expression "uVar10 / uVar12" identifier / identifier) + number_literal) ))) == identifier) )) ;) (if_statement "if ((BtShared *)pBt_00->nPage < pBVar2) goto LAB_00045158;" if (parenthesized_expression "((BtShared *)pBt_00->nPage < pBVar2)" ( (binary_expression "(BtShared *)pBt_00->nPage < pBVar2" (cast_expression "(BtShared *)pBt_00->nPage" ( (type_descriptor "BtShared *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pBt_00->nPage" identifier -> field_identifier)) < identifier) )) (goto_statement "goto LAB_00045158;" goto statement_identifier ;)) (expression_statement "pEType_00 = (DbPage **)&cStack_6d;" (assignment_expression "pEType_00 = (DbPage **)&cStack_6d" identifier = (cast_expression "(DbPage **)&cStack_6d" ( (type_descriptor "DbPage **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&cStack_6d" & identifier))) ;) (expression_statement "iVar3 = ptrmapGet(pBt_00,(Pgno)pBVar2,(u8 *)pEType_00,(Pgno *)&pBStack_68);" (assignment_expression "iVar3 = ptrmapGet(pBt_00,(Pgno)pBVar2,(u8 *)pEType_00,(Pgno *)&pBStack_68)" identifier = (call_expression "ptrmapGet(pBt_00,(Pgno)pBVar2,(u8 *)pEType_00,(Pgno *)&pBStack_68)" identifier (argument_list "(pBt_00,(Pgno)pBVar2,(u8 *)pEType_00,(Pgno *)&pBStack_68)" ( identifier , (cast_expression "(Pgno)pBVar2" ( (type_descriptor "Pgno" type_identifier) ) identifier) , (cast_expression "(u8 *)pEType_00" ( (type_descriptor "u8 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(Pgno *)&pBStack_68" ( (type_descriptor "Pgno *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pBStack_68" & identifier)) )))) ;) (if_statement "if (iVar3 != 0) goto LAB_00045180;" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00045180;" goto statement_identifier ;)) (if_statement "if (cStack_6d != '\x04') goto LAB_00045158;" if (parenthesized_expression "(cStack_6d != '\x04')" ( (binary_expression "cStack_6d != '\x04'" identifier != (char_literal "'\x04'" ' escape_sequence ')) )) (goto_statement "goto LAB_00045158;" goto statement_identifier ;)) (expression_statement "iVar3 = *(int *)(puVar14 + 0xb0254);" (assignment_expression "iVar3 = *(int *)(puVar14 + 0xb0254)" identifier = (pointer_expression "*(int *)(puVar14 + 0xb0254)" * (cast_expression "(int *)(puVar14 + 0xb0254)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + 0xb0254)" ( (binary_expression "puVar14 + 0xb0254" identifier + number_literal) ))))) ;) (if_statement "if (pBStack_68 != pBVar6) goto LAB_0004515c;" if (parenthesized_expression "(pBStack_68 != pBVar6)" ( (binary_expression "pBStack_68 != pBVar6" identifier != identifier) )) (goto_statement "goto LAB_0004515c;" goto statement_identifier ;)) (expression_statement "iVar3 = 0x65;" (assignment_expression "iVar3 = 0x65" identifier = number_literal) ;) (labeled_statement "LAB_00045184:\n    *puVar9 = pBVar2;" statement_identifier : (expression_statement "*puVar9 = pBVar2;" (assignment_expression "*puVar9 = pBVar2" (pointer_expression "*puVar9" * identifier) = identifier) ;)) (if_statement "if (ppDVar8 == (DbPage **)0x0) {\n      iVar15 = *(int *)(puVar14 + 0xb0254);\n      if (pDStack_6c == (DbPage *)0x0) goto LAB_00045190;\n      pPVar5 = pDStack_6c[1].pDirtyNext;\nLAB_000451ec:\n      (*(code *)(iVar15 + 0x1a94))(pPVar5);\n      goto LAB_00045190;\n    }" if (parenthesized_expression "(ppDVar8 == (DbPage **)0x0)" ( (binary_expression "ppDVar8 == (DbPage **)0x0" identifier == (cast_expression "(DbPage **)0x0" ( (type_descriptor "DbPage **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\n      iVar15 = *(int *)(puVar14 + 0xb0254);\n      if (pDStack_6c == (DbPage *)0x0) goto LAB_00045190;\n      pPVar5 = pDStack_6c[1].pDirtyNext;\nLAB_000451ec:\n      (*(code *)(iVar15 + 0x1a94))(pPVar5);\n      goto LAB_00045190;\n    }" { (expression_statement "iVar15 = *(int *)(puVar14 + 0xb0254);" (assignment_expression "iVar15 = *(int *)(puVar14 + 0xb0254)" identifier = (pointer_expression "*(int *)(puVar14 + 0xb0254)" * (cast_expression "(int *)(puVar14 + 0xb0254)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + 0xb0254)" ( (binary_expression "puVar14 + 0xb0254" identifier + number_literal) ))))) ;) (if_statement "if (pDStack_6c == (DbPage *)0x0) goto LAB_00045190;" if (parenthesized_expression "(pDStack_6c == (DbPage *)0x0)" ( (binary_expression "pDStack_6c == (DbPage *)0x0" identifier == (cast_expression "(DbPage *)0x0" ( (type_descriptor "DbPage *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00045190;" goto statement_identifier ;)) (expression_statement "pPVar5 = pDStack_6c[1].pDirtyNext;" (assignment_expression "pPVar5 = pDStack_6c[1].pDirtyNext" identifier = (field_expression "pDStack_6c[1].pDirtyNext" (subscript_expression "pDStack_6c[1]" identifier [ number_literal ]) . field_identifier)) ;) (labeled_statement "LAB_000451ec:\n      (*(code *)(iVar15 + 0x1a94))(pPVar5);" statement_identifier : (expression_statement "(*(code *)(iVar15 + 0x1a94))(pPVar5);" (call_expression "(*(code *)(iVar15 + 0x1a94))(pPVar5)" (parenthesized_expression "(*(code *)(iVar15 + 0x1a94))" ( (pointer_expression "*(code *)(iVar15 + 0x1a94)" * (cast_expression "(code *)(iVar15 + 0x1a94)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 0x1a94)" ( (binary_expression "iVar15 + 0x1a94" identifier + number_literal) )))) )) (argument_list "(pPVar5)" ( identifier ))) ;)) (goto_statement "goto LAB_00045190;" goto statement_identifier ;) })) }))) (expression_statement "*ppDVar8 = pDStack_6c;" (assignment_expression "*ppDVar8 = pDStack_6c" (pointer_expression "*ppDVar8" * identifier) = identifier) ;) (labeled_statement "LAB_00045190:\n  if (iVar3 == 0x65) {\n    iVar3 = 0;\n  }" statement_identifier : (if_statement "if (iVar3 == 0x65) {\n    iVar3 = 0;\n  }" if (parenthesized_expression "(iVar3 == 0x65)" ( (binary_expression "iVar3 == 0x65" identifier == number_literal) )) (compound_statement "{\n    iVar3 = 0;\n  }" { (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) }))) (if_statement "if (iStack_64 == *piVar13) {\n    return iVar3;\n  }" if (parenthesized_expression "(iStack_64 == *piVar13)" ( (binary_expression "iStack_64 == *piVar13" identifier == (pointer_expression "*piVar13" * identifier)) )) (compound_statement "{\n    return iVar3;\n  }" { (return_statement "return iVar3;" return identifier ;) })) (expression_statement "pcVar16 = *(code **)(puVar14 + 0xb04cc);" (assignment_expression "pcVar16 = *(code **)(puVar14 + 0xb04cc)" identifier = (pointer_expression "*(code **)(puVar14 + 0xb04cc)" * (cast_expression "(code **)(puVar14 + 0xb04cc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar14 + 0xb04cc)" ( (binary_expression "puVar14 + 0xb04cc" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar16)();" (call_expression "(*pcVar16)()" (parenthesized_expression "(*pcVar16)" ( (pointer_expression "*pcVar16" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "iVar3 = (*(code *)(*(int *)(pcVar16 + 0xb0058) + 0x2070))();" (assignment_expression "iVar3 = (*(code *)(*(int *)(pcVar16 + 0xb0058) + 0x2070))()" identifier = (call_expression "(*(code *)(*(int *)(pcVar16 + 0xb0058) + 0x2070))()" (parenthesized_expression "(*(code *)(*(int *)(pcVar16 + 0xb0058) + 0x2070))" ( (pointer_expression "*(code *)(*(int *)(pcVar16 + 0xb0058) + 0x2070)" * (cast_expression "(code *)(*(int *)(pcVar16 + 0xb0058) + 0x2070)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar16 + 0xb0058) + 0x2070)" ( (binary_expression "*(int *)(pcVar16 + 0xb0058) + 0x2070" (pointer_expression "*(int *)(pcVar16 + 0xb0058)" * (cast_expression "(int *)(pcVar16 + 0xb0058)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar16 + 0xb0058)" ( (binary_expression "pcVar16 + 0xb0058" identifier + number_literal) )))) + number_literal) )))) )) (argument_list "()" ( )))) ;) (if_statement "if (iVar3 != 0) {\n    *pEType_00 = (DbPage *)0x0;\n    return iVar3;\n  }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n    *pEType_00 = (DbPage *)0x0;\n    return iVar3;\n  }" { (expression_statement "*pEType_00 = (DbPage *)0x0;" (assignment_expression "*pEType_00 = (DbPage *)0x0" (pointer_expression "*pEType_00" * identifier) = (cast_expression "(DbPage *)0x0" ( (type_descriptor "DbPage *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (return_statement "return iVar3;" return identifier ;) })) (if_statement "if (((*pEType_00)[1].pDirtyNext)->nRef < 2) {\n    *(undefined1 *)&(*pEType_00)->pPage = 0;\n    return 0;\n  }" if (parenthesized_expression "(((*pEType_00)[1].pDirtyNext)->nRef < 2)" ( (binary_expression "((*pEType_00)[1].pDirtyNext)->nRef < 2" (field_expression "((*pEType_00)[1].pDirtyNext)->nRef" (parenthesized_expression "((*pEType_00)[1].pDirtyNext)" ( (field_expression "(*pEType_00)[1].pDirtyNext" (subscript_expression "(*pEType_00)[1]" (parenthesized_expression "(*pEType_00)" ( (pointer_expression "*pEType_00" * identifier) )) [ number_literal ]) . field_identifier) )) -> field_identifier) < number_literal) )) (compound_statement "{\n    *(undefined1 *)&(*pEType_00)->pPage = 0;\n    return 0;\n  }" { (expression_statement "*(undefined1 *)&(*pEType_00)->pPage = 0;" (assignment_expression "*(undefined1 *)&(*pEType_00)->pPage = 0" (pointer_expression "*(undefined1 *)&(*pEType_00)->pPage" * (cast_expression "(undefined1 *)&(*pEType_00)->pPage" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(*pEType_00)->pPage" & (field_expression "(*pEType_00)->pPage" (parenthesized_expression "(*pEType_00)" ( (pointer_expression "*pEType_00" * identifier) )) -> field_identifier)))) = number_literal) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "(*(code *)(*(int *)(pcVar16 + 0xb0058) + 0x1a94))();" (call_expression "(*(code *)(*(int *)(pcVar16 + 0xb0058) + 0x1a94))()" (parenthesized_expression "(*(code *)(*(int *)(pcVar16 + 0xb0058) + 0x1a94))" ( (pointer_expression "*(code *)(*(int *)(pcVar16 + 0xb0058) + 0x1a94)" * (cast_expression "(code *)(*(int *)(pcVar16 + 0xb0058) + 0x1a94)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar16 + 0xb0058) + 0x1a94)" ( (binary_expression "*(int *)(pcVar16 + 0xb0058) + 0x1a94" (pointer_expression "*(int *)(pcVar16 + 0xb0058)" * (cast_expression "(int *)(pcVar16 + 0xb0058)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar16 + 0xb0058)" ( (binary_expression "pcVar16 + 0xb0058" identifier + number_literal) )))) + number_literal) )))) )) (argument_list "()" ( ))) ;) (expression_statement "*pEType_00 = (DbPage *)0x0;" (assignment_expression "*pEType_00 = (DbPage *)0x0" (pointer_expression "*pEType_00" * identifier) = (cast_expression "(DbPage *)0x0" ( (type_descriptor "DbPage *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar3 = sqlite3CorruptError(0x104bb);" (assignment_expression "iVar3 = sqlite3CorruptError(0x104bb)" identifier = (call_expression "sqlite3CorruptError(0x104bb)" identifier (argument_list "(0x104bb)" ( number_literal )))) ;) (return_statement "return iVar3;" return identifier ;) })))
(translation_unit "int FUN_00044ef0(int *param_1,uint param_2,byte *param_3,undefined4 *param_4)\n\n{\n  undefined *puVar1;\n  uint uVar2;\n  int iVar3;\n  uint uVar4;\n  uint uVar5;\n  byte *pbVar6;\n  int *piVar7;\n  int *piVar8;\n  uint *puVar9;\n  uint uVar10;\n  undefined4 uVar11;\n  uint uVar12;\n  int iVar13;\n  int iVar14;\n  int *piVar15;\n  undefined *puVar16;\n  code *pcVar17;\n  char cStack_6d;\n  int iStack_6c;\n  uint uStack_68;\n  int iStack_64;\n  uint uStack_5c;\n  undefined *puStack_58;\n  byte *pbStack_54;\n  undefined4 *puStack_50;\n  uint uStack_4c;\n  int local_20;\n  int local_1c;\n  \n  puVar1 = PTR___stack_chk_guard_000f5568;\n  local_1c = *(int *)PTR___stack_chk_guard_000f5568;\n  if (param_2 < 2) {\n    uVar2 = 0;\n  }\n  else {\n    uVar2 = FUN_0002d484(param_1 + 9,param_1 + 10,param_2);\n  }\n  puVar9 = (uint *)0x0;\n  piVar7 = &local_20;\n  uVar5 = uVar2;\n  iVar3 = (**(code **)(*param_1 + 0xcc))(*param_1);\n  if (iVar3 == 0) {\n    param_2 = param_2 - uVar2;\n    iVar14 = param_2 * 5;\n    uVar5 = iVar14 - 5;\n    if ((int)uVar5 < 0) {\n      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();\n      iVar3 = FUN_00044904(0x1000b);\n    }\n    else {\n      param_2 = *(uint *)(local_20 + 4);\n      pbVar6 = (byte *)(param_2 + uVar5);\n      uVar5 = (uint)*pbVar6;\n      *param_3 = *pbVar6;\n      if (param_4 != (undefined4 *)0x0) {\n        param_2 = param_2 + iVar14;\n        *param_4 = *(undefined4 *)(param_2 - 4);\n      }\n      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();\n      if (4 < (byte)(*param_3 - 1)) {\n        iVar3 = FUN_00044904(0x10013);\n      }\n    }\n  }\n  if (local_1c == *(int *)puVar1) {\n    return iVar3;\n  }\n  iVar3 = local_1c;\n  puVar16 = PTR___stack_chk_fail_000f5540;\n  (*(code *)PTR___stack_chk_fail_000f5540)();\n  puStack_58 = puVar1;\n  piVar15 = *(int **)(puVar16 + 0xb04f4);\n  iStack_6c = 0;\n  iStack_64 = *piVar15;\n  uStack_5c = param_2;\n  pbStack_54 = param_3;\n  puStack_50 = param_4;\n  uStack_4c = uVar2;\n  if (*(char *)(iVar3 + 0x11) == '\0') {\nLAB_00045158:\n    iVar14 = *(int *)(puVar16 + 0xb0254);\nLAB_0004515c:\n    uVar11 = 2;\n    piVar8 = &iStack_6c;\n    if (piVar7 != (int *)0x0) {\n      uVar11 = 0;\n    }\n    iVar14 = (*(code *)(iVar14 + 0x2070))(iVar3,uVar5,piVar8,uVar11);\n    if (iVar14 != 0) {\nLAB_00045180:\n      uVar2 = 0;\n      goto LAB_00045184;\n    }\n    *puVar9 = **(uint **)(iStack_6c + 0x38);\n    if (piVar7 == (int *)0x0) {\n      iVar3 = *(int *)(puVar16 + 0xb0254);\n      uVar11 = *(undefined4 *)(iStack_6c + 0x48);\n      goto LAB_000451ec;\n    }\n  }\n  else {\n    iVar14 = iVar3 + 0x24;\n    uVar12 = *(uint *)(iVar3 + 0x24);\n    iVar13 = iVar3 + 0x28;\n    uVar10 = *(uint *)(*(int *)(puVar16 + 0xb0248) + 0x4098);\n    uVar2 = uVar5;\n    do {\n      do {\n        uVar2 = uVar2 + 1;\n        uVar4 = 0;\n        if (1 < uVar2) {\n          uVar4 = FUN_0002d484(iVar14,iVar13,uVar2);\n        }\n      } while (uVar2 == uVar4);\n      if (uVar12 == 0) {\n        trap(7);\n      }\n    } while (uVar10 / uVar12 + 1 == uVar2);\n    if (*(uint *)(iVar3 + 0x30) < uVar2) goto LAB_00045158;\n    piVar8 = (int *)&cStack_6d;\n    iVar14 = FUN_00044ef0(iVar3,uVar2,piVar8,&uStack_68);\n    if (iVar14 != 0) goto LAB_00045180;\n    if (cStack_6d != '\x04') goto LAB_00045158;\n    iVar14 = *(int *)(puVar16 + 0xb0254);\n    if (uStack_68 != uVar5) goto LAB_0004515c;\n    iVar14 = 0x65;\nLAB_00045184:\n    *puVar9 = uVar2;\n    if (piVar7 == (int *)0x0) {\n      iVar3 = *(int *)(puVar16 + 0xb0254);\n      if (iStack_6c == 0) goto LAB_00045190;\n      uVar11 = *(undefined4 *)(iStack_6c + 0x48);\nLAB_000451ec:\n      (*(code *)(iVar3 + 0x1a94))(uVar11);\n      goto LAB_00045190;\n    }\n  }\n  *piVar7 = iStack_6c;\nLAB_00045190:\n  if (iVar14 == 0x65) {\n    iVar14 = 0;\n  }\n  if (iStack_64 == *piVar15) {\n    return iVar14;\n  }\n  pcVar17 = *(code **)(puVar16 + 0xb04cc);\n  (*pcVar17)();\n  iVar3 = (*(code *)(*(int *)(pcVar17 + 0xb0058) + 0x2070))();\n  if (iVar3 != 0) {\n    *piVar8 = 0;\n    return iVar3;\n  }\n  if (*(short *)(*(int *)((undefined1 *)*piVar8 + 0x48) + 0x1e) < 2) {\n    *(undefined1 *)*piVar8 = 0;\n    return 0;\n  }\n  (*(code *)(*(int *)(pcVar17 + 0xb0058) + 0x1a94))();\n  *piVar8 = 0;\n  iVar3 = FUN_00044904(0x104bb);\n  return iVar3;\n}\n\n" (function_definition "int FUN_00044ef0(int *param_1,uint param_2,byte *param_3,undefined4 *param_4)\n\n{\n  undefined *puVar1;\n  uint uVar2;\n  int iVar3;\n  uint uVar4;\n  uint uVar5;\n  byte *pbVar6;\n  int *piVar7;\n  int *piVar8;\n  uint *puVar9;\n  uint uVar10;\n  undefined4 uVar11;\n  uint uVar12;\n  int iVar13;\n  int iVar14;\n  int *piVar15;\n  undefined *puVar16;\n  code *pcVar17;\n  char cStack_6d;\n  int iStack_6c;\n  uint uStack_68;\n  int iStack_64;\n  uint uStack_5c;\n  undefined *puStack_58;\n  byte *pbStack_54;\n  undefined4 *puStack_50;\n  uint uStack_4c;\n  int local_20;\n  int local_1c;\n  \n  puVar1 = PTR___stack_chk_guard_000f5568;\n  local_1c = *(int *)PTR___stack_chk_guard_000f5568;\n  if (param_2 < 2) {\n    uVar2 = 0;\n  }\n  else {\n    uVar2 = FUN_0002d484(param_1 + 9,param_1 + 10,param_2);\n  }\n  puVar9 = (uint *)0x0;\n  piVar7 = &local_20;\n  uVar5 = uVar2;\n  iVar3 = (**(code **)(*param_1 + 0xcc))(*param_1);\n  if (iVar3 == 0) {\n    param_2 = param_2 - uVar2;\n    iVar14 = param_2 * 5;\n    uVar5 = iVar14 - 5;\n    if ((int)uVar5 < 0) {\n      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();\n      iVar3 = FUN_00044904(0x1000b);\n    }\n    else {\n      param_2 = *(uint *)(local_20 + 4);\n      pbVar6 = (byte *)(param_2 + uVar5);\n      uVar5 = (uint)*pbVar6;\n      *param_3 = *pbVar6;\n      if (param_4 != (undefined4 *)0x0) {\n        param_2 = param_2 + iVar14;\n        *param_4 = *(undefined4 *)(param_2 - 4);\n      }\n      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();\n      if (4 < (byte)(*param_3 - 1)) {\n        iVar3 = FUN_00044904(0x10013);\n      }\n    }\n  }\n  if (local_1c == *(int *)puVar1) {\n    return iVar3;\n  }\n  iVar3 = local_1c;\n  puVar16 = PTR___stack_chk_fail_000f5540;\n  (*(code *)PTR___stack_chk_fail_000f5540)();\n  puStack_58 = puVar1;\n  piVar15 = *(int **)(puVar16 + 0xb04f4);\n  iStack_6c = 0;\n  iStack_64 = *piVar15;\n  uStack_5c = param_2;\n  pbStack_54 = param_3;\n  puStack_50 = param_4;\n  uStack_4c = uVar2;\n  if (*(char *)(iVar3 + 0x11) == '\0') {\nLAB_00045158:\n    iVar14 = *(int *)(puVar16 + 0xb0254);\nLAB_0004515c:\n    uVar11 = 2;\n    piVar8 = &iStack_6c;\n    if (piVar7 != (int *)0x0) {\n      uVar11 = 0;\n    }\n    iVar14 = (*(code *)(iVar14 + 0x2070))(iVar3,uVar5,piVar8,uVar11);\n    if (iVar14 != 0) {\nLAB_00045180:\n      uVar2 = 0;\n      goto LAB_00045184;\n    }\n    *puVar9 = **(uint **)(iStack_6c + 0x38);\n    if (piVar7 == (int *)0x0) {\n      iVar3 = *(int *)(puVar16 + 0xb0254);\n      uVar11 = *(undefined4 *)(iStack_6c + 0x48);\n      goto LAB_000451ec;\n    }\n  }\n  else {\n    iVar14 = iVar3 + 0x24;\n    uVar12 = *(uint *)(iVar3 + 0x24);\n    iVar13 = iVar3 + 0x28;\n    uVar10 = *(uint *)(*(int *)(puVar16 + 0xb0248) + 0x4098);\n    uVar2 = uVar5;\n    do {\n      do {\n        uVar2 = uVar2 + 1;\n        uVar4 = 0;\n        if (1 < uVar2) {\n          uVar4 = FUN_0002d484(iVar14,iVar13,uVar2);\n        }\n      } while (uVar2 == uVar4);\n      if (uVar12 == 0) {\n        trap(7);\n      }\n    } while (uVar10 / uVar12 + 1 == uVar2);\n    if (*(uint *)(iVar3 + 0x30) < uVar2) goto LAB_00045158;\n    piVar8 = (int *)&cStack_6d;\n    iVar14 = FUN_00044ef0(iVar3,uVar2,piVar8,&uStack_68);\n    if (iVar14 != 0) goto LAB_00045180;\n    if (cStack_6d != '\x04') goto LAB_00045158;\n    iVar14 = *(int *)(puVar16 + 0xb0254);\n    if (uStack_68 != uVar5) goto LAB_0004515c;\n    iVar14 = 0x65;\nLAB_00045184:\n    *puVar9 = uVar2;\n    if (piVar7 == (int *)0x0) {\n      iVar3 = *(int *)(puVar16 + 0xb0254);\n      if (iStack_6c == 0) goto LAB_00045190;\n      uVar11 = *(undefined4 *)(iStack_6c + 0x48);\nLAB_000451ec:\n      (*(code *)(iVar3 + 0x1a94))(uVar11);\n      goto LAB_00045190;\n    }\n  }\n  *piVar7 = iStack_6c;\nLAB_00045190:\n  if (iVar14 == 0x65) {\n    iVar14 = 0;\n  }\n  if (iStack_64 == *piVar15) {\n    return iVar14;\n  }\n  pcVar17 = *(code **)(puVar16 + 0xb04cc);\n  (*pcVar17)();\n  iVar3 = (*(code *)(*(int *)(pcVar17 + 0xb0058) + 0x2070))();\n  if (iVar3 != 0) {\n    *piVar8 = 0;\n    return iVar3;\n  }\n  if (*(short *)(*(int *)((undefined1 *)*piVar8 + 0x48) + 0x1e) < 2) {\n    *(undefined1 *)*piVar8 = 0;\n    return 0;\n  }\n  (*(code *)(*(int *)(pcVar17 + 0xb0058) + 0x1a94))();\n  *piVar8 = 0;\n  iVar3 = FUN_00044904(0x104bb);\n  return iVar3;\n}" primitive_type (function_declarator "FUN_00044ef0(int *param_1,uint param_2,byte *param_3,undefined4 *param_4)" identifier (parameter_list "(int *param_1,uint param_2,byte *param_3,undefined4 *param_4)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "byte *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined4 *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) ))) (compound_statement "{\n  undefined *puVar1;\n  uint uVar2;\n  int iVar3;\n  uint uVar4;\n  uint uVar5;\n  byte *pbVar6;\n  int *piVar7;\n  int *piVar8;\n  uint *puVar9;\n  uint uVar10;\n  undefined4 uVar11;\n  uint uVar12;\n  int iVar13;\n  int iVar14;\n  int *piVar15;\n  undefined *puVar16;\n  code *pcVar17;\n  char cStack_6d;\n  int iStack_6c;\n  uint uStack_68;\n  int iStack_64;\n  uint uStack_5c;\n  undefined *puStack_58;\n  byte *pbStack_54;\n  undefined4 *puStack_50;\n  uint uStack_4c;\n  int local_20;\n  int local_1c;\n  \n  puVar1 = PTR___stack_chk_guard_000f5568;\n  local_1c = *(int *)PTR___stack_chk_guard_000f5568;\n  if (param_2 < 2) {\n    uVar2 = 0;\n  }\n  else {\n    uVar2 = FUN_0002d484(param_1 + 9,param_1 + 10,param_2);\n  }\n  puVar9 = (uint *)0x0;\n  piVar7 = &local_20;\n  uVar5 = uVar2;\n  iVar3 = (**(code **)(*param_1 + 0xcc))(*param_1);\n  if (iVar3 == 0) {\n    param_2 = param_2 - uVar2;\n    iVar14 = param_2 * 5;\n    uVar5 = iVar14 - 5;\n    if ((int)uVar5 < 0) {\n      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();\n      iVar3 = FUN_00044904(0x1000b);\n    }\n    else {\n      param_2 = *(uint *)(local_20 + 4);\n      pbVar6 = (byte *)(param_2 + uVar5);\n      uVar5 = (uint)*pbVar6;\n      *param_3 = *pbVar6;\n      if (param_4 != (undefined4 *)0x0) {\n        param_2 = param_2 + iVar14;\n        *param_4 = *(undefined4 *)(param_2 - 4);\n      }\n      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();\n      if (4 < (byte)(*param_3 - 1)) {\n        iVar3 = FUN_00044904(0x10013);\n      }\n    }\n  }\n  if (local_1c == *(int *)puVar1) {\n    return iVar3;\n  }\n  iVar3 = local_1c;\n  puVar16 = PTR___stack_chk_fail_000f5540;\n  (*(code *)PTR___stack_chk_fail_000f5540)();\n  puStack_58 = puVar1;\n  piVar15 = *(int **)(puVar16 + 0xb04f4);\n  iStack_6c = 0;\n  iStack_64 = *piVar15;\n  uStack_5c = param_2;\n  pbStack_54 = param_3;\n  puStack_50 = param_4;\n  uStack_4c = uVar2;\n  if (*(char *)(iVar3 + 0x11) == '\0') {\nLAB_00045158:\n    iVar14 = *(int *)(puVar16 + 0xb0254);\nLAB_0004515c:\n    uVar11 = 2;\n    piVar8 = &iStack_6c;\n    if (piVar7 != (int *)0x0) {\n      uVar11 = 0;\n    }\n    iVar14 = (*(code *)(iVar14 + 0x2070))(iVar3,uVar5,piVar8,uVar11);\n    if (iVar14 != 0) {\nLAB_00045180:\n      uVar2 = 0;\n      goto LAB_00045184;\n    }\n    *puVar9 = **(uint **)(iStack_6c + 0x38);\n    if (piVar7 == (int *)0x0) {\n      iVar3 = *(int *)(puVar16 + 0xb0254);\n      uVar11 = *(undefined4 *)(iStack_6c + 0x48);\n      goto LAB_000451ec;\n    }\n  }\n  else {\n    iVar14 = iVar3 + 0x24;\n    uVar12 = *(uint *)(iVar3 + 0x24);\n    iVar13 = iVar3 + 0x28;\n    uVar10 = *(uint *)(*(int *)(puVar16 + 0xb0248) + 0x4098);\n    uVar2 = uVar5;\n    do {\n      do {\n        uVar2 = uVar2 + 1;\n        uVar4 = 0;\n        if (1 < uVar2) {\n          uVar4 = FUN_0002d484(iVar14,iVar13,uVar2);\n        }\n      } while (uVar2 == uVar4);\n      if (uVar12 == 0) {\n        trap(7);\n      }\n    } while (uVar10 / uVar12 + 1 == uVar2);\n    if (*(uint *)(iVar3 + 0x30) < uVar2) goto LAB_00045158;\n    piVar8 = (int *)&cStack_6d;\n    iVar14 = FUN_00044ef0(iVar3,uVar2,piVar8,&uStack_68);\n    if (iVar14 != 0) goto LAB_00045180;\n    if (cStack_6d != '\x04') goto LAB_00045158;\n    iVar14 = *(int *)(puVar16 + 0xb0254);\n    if (uStack_68 != uVar5) goto LAB_0004515c;\n    iVar14 = 0x65;\nLAB_00045184:\n    *puVar9 = uVar2;\n    if (piVar7 == (int *)0x0) {\n      iVar3 = *(int *)(puVar16 + 0xb0254);\n      if (iStack_6c == 0) goto LAB_00045190;\n      uVar11 = *(undefined4 *)(iStack_6c + 0x48);\nLAB_000451ec:\n      (*(code *)(iVar3 + 0x1a94))(uVar11);\n      goto LAB_00045190;\n    }\n  }\n  *piVar7 = iStack_6c;\nLAB_00045190:\n  if (iVar14 == 0x65) {\n    iVar14 = 0;\n  }\n  if (iStack_64 == *piVar15) {\n    return iVar14;\n  }\n  pcVar17 = *(code **)(puVar16 + 0xb04cc);\n  (*pcVar17)();\n  iVar3 = (*(code *)(*(int *)(pcVar17 + 0xb0058) + 0x2070))();\n  if (iVar3 != 0) {\n    *piVar8 = 0;\n    return iVar3;\n  }\n  if (*(short *)(*(int *)((undefined1 *)*piVar8 + 0x48) + 0x1e) < 2) {\n    *(undefined1 *)*piVar8 = 0;\n    return 0;\n  }\n  (*(code *)(*(int *)(pcVar17 + 0xb0058) + 0x1a94))();\n  *piVar8 = 0;\n  iVar3 = FUN_00044904(0x104bb);\n  return iVar3;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "uint *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "undefined4 uVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "int *piVar15;" primitive_type (pointer_declarator "*piVar15" * identifier) ;) (declaration "undefined *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "code *pcVar17;" type_identifier (pointer_declarator "*pcVar17" * identifier) ;) (declaration "char cStack_6d;" primitive_type identifier ;) (declaration "int iStack_6c;" primitive_type identifier ;) (declaration "uint uStack_68;" type_identifier identifier ;) (declaration "int iStack_64;" primitive_type identifier ;) (declaration "uint uStack_5c;" type_identifier identifier ;) (declaration "undefined *puStack_58;" type_identifier (pointer_declarator "*puStack_58" * identifier) ;) (declaration "byte *pbStack_54;" type_identifier (pointer_declarator "*pbStack_54" * identifier) ;) (declaration "undefined4 *puStack_50;" type_identifier (pointer_declarator "*puStack_50" * identifier) ;) (declaration "uint uStack_4c;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "int local_1c;" primitive_type identifier ;) (expression_statement "puVar1 = PTR___stack_chk_guard_000f5568;" (assignment_expression "puVar1 = PTR___stack_chk_guard_000f5568" identifier = identifier) ;) (expression_statement "local_1c = *(int *)PTR___stack_chk_guard_000f5568;" (assignment_expression "local_1c = *(int *)PTR___stack_chk_guard_000f5568" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_000f5568" * (cast_expression "(int *)PTR___stack_chk_guard_000f5568" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (param_2 < 2) {\n    uVar2 = 0;\n  }\n  else {\n    uVar2 = FUN_0002d484(param_1 + 9,param_1 + 10,param_2);\n  }" if (parenthesized_expression "(param_2 < 2)" ( (binary_expression "param_2 < 2" identifier < number_literal) )) (compound_statement "{\n    uVar2 = 0;\n  }" { (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    uVar2 = FUN_0002d484(param_1 + 9,param_1 + 10,param_2);\n  }" else (compound_statement "{\n    uVar2 = FUN_0002d484(param_1 + 9,param_1 + 10,param_2);\n  }" { (expression_statement "uVar2 = FUN_0002d484(param_1 + 9,param_1 + 10,param_2);" (assignment_expression "uVar2 = FUN_0002d484(param_1 + 9,param_1 + 10,param_2)" identifier = (call_expression "FUN_0002d484(param_1 + 9,param_1 + 10,param_2)" identifier (argument_list "(param_1 + 9,param_1 + 10,param_2)" ( (binary_expression "param_1 + 9" identifier + number_literal) , (binary_expression "param_1 + 10" identifier + number_literal) , identifier )))) ;) }))) (expression_statement "puVar9 = (uint *)0x0;" (assignment_expression "puVar9 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "piVar7 = &local_20;" (assignment_expression "piVar7 = &local_20" identifier = (pointer_expression "&local_20" & identifier)) ;) (expression_statement "uVar5 = uVar2;" (assignment_expression "uVar5 = uVar2" identifier = identifier) ;) (expression_statement "iVar3 = (**(code **)(*param_1 + 0xcc))(*param_1);" (assignment_expression "iVar3 = (**(code **)(*param_1 + 0xcc))(*param_1)" identifier = (call_expression "(**(code **)(*param_1 + 0xcc))(*param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0xcc))" ( (pointer_expression "**(code **)(*param_1 + 0xcc)" * (pointer_expression "*(code **)(*param_1 + 0xcc)" * (cast_expression "(code **)(*param_1 + 0xcc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0xcc)" ( (binary_expression "*param_1 + 0xcc" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(*param_1)" ( (pointer_expression "*param_1" * identifier) )))) ;) (if_statement "if (iVar3 == 0) {\n    param_2 = param_2 - uVar2;\n    iVar14 = param_2 * 5;\n    uVar5 = iVar14 - 5;\n    if ((int)uVar5 < 0) {\n      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();\n      iVar3 = FUN_00044904(0x1000b);\n    }\n    else {\n      param_2 = *(uint *)(local_20 + 4);\n      pbVar6 = (byte *)(param_2 + uVar5);\n      uVar5 = (uint)*pbVar6;\n      *param_3 = *pbVar6;\n      if (param_4 != (undefined4 *)0x0) {\n        param_2 = param_2 + iVar14;\n        *param_4 = *(undefined4 *)(param_2 - 4);\n      }\n      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();\n      if (4 < (byte)(*param_3 - 1)) {\n        iVar3 = FUN_00044904(0x10013);\n      }\n    }\n  }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n    param_2 = param_2 - uVar2;\n    iVar14 = param_2 * 5;\n    uVar5 = iVar14 - 5;\n    if ((int)uVar5 < 0) {\n      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();\n      iVar3 = FUN_00044904(0x1000b);\n    }\n    else {\n      param_2 = *(uint *)(local_20 + 4);\n      pbVar6 = (byte *)(param_2 + uVar5);\n      uVar5 = (uint)*pbVar6;\n      *param_3 = *pbVar6;\n      if (param_4 != (undefined4 *)0x0) {\n        param_2 = param_2 + iVar14;\n        *param_4 = *(undefined4 *)(param_2 - 4);\n      }\n      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();\n      if (4 < (byte)(*param_3 - 1)) {\n        iVar3 = FUN_00044904(0x10013);\n      }\n    }\n  }" { (expression_statement "param_2 = param_2 - uVar2;" (assignment_expression "param_2 = param_2 - uVar2" identifier = (binary_expression "param_2 - uVar2" identifier - identifier)) ;) (expression_statement "iVar14 = param_2 * 5;" (assignment_expression "iVar14 = param_2 * 5" identifier = (binary_expression "param_2 * 5" identifier * number_literal)) ;) (expression_statement "uVar5 = iVar14 - 5;" (assignment_expression "uVar5 = iVar14 - 5" identifier = (binary_expression "iVar14 - 5" identifier - number_literal)) ;) (if_statement "if ((int)uVar5 < 0) {\n      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();\n      iVar3 = FUN_00044904(0x1000b);\n    }\n    else {\n      param_2 = *(uint *)(local_20 + 4);\n      pbVar6 = (byte *)(param_2 + uVar5);\n      uVar5 = (uint)*pbVar6;\n      *param_3 = *pbVar6;\n      if (param_4 != (undefined4 *)0x0) {\n        param_2 = param_2 + iVar14;\n        *param_4 = *(undefined4 *)(param_2 - 4);\n      }\n      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();\n      if (4 < (byte)(*param_3 - 1)) {\n        iVar3 = FUN_00044904(0x10013);\n      }\n    }" if (parenthesized_expression "((int)uVar5 < 0)" ( (binary_expression "(int)uVar5 < 0" (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();\n      iVar3 = FUN_00044904(0x1000b);\n    }" { (expression_statement "(*(code *)(PTR_LAB_000f52c8 + 0x1a94))();" (call_expression "(*(code *)(PTR_LAB_000f52c8 + 0x1a94))()" (parenthesized_expression "(*(code *)(PTR_LAB_000f52c8 + 0x1a94))" ( (pointer_expression "*(code *)(PTR_LAB_000f52c8 + 0x1a94)" * (cast_expression "(code *)(PTR_LAB_000f52c8 + 0x1a94)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52c8 + 0x1a94)" ( (binary_expression "PTR_LAB_000f52c8 + 0x1a94" identifier + number_literal) )))) )) (argument_list "()" ( ))) ;) (expression_statement "iVar3 = FUN_00044904(0x1000b);" (assignment_expression "iVar3 = FUN_00044904(0x1000b)" identifier = (call_expression "FUN_00044904(0x1000b)" identifier (argument_list "(0x1000b)" ( number_literal )))) ;) }) (else_clause "else {\n      param_2 = *(uint *)(local_20 + 4);\n      pbVar6 = (byte *)(param_2 + uVar5);\n      uVar5 = (uint)*pbVar6;\n      *param_3 = *pbVar6;\n      if (param_4 != (undefined4 *)0x0) {\n        param_2 = param_2 + iVar14;\n        *param_4 = *(undefined4 *)(param_2 - 4);\n      }\n      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();\n      if (4 < (byte)(*param_3 - 1)) {\n        iVar3 = FUN_00044904(0x10013);\n      }\n    }" else (compound_statement "{\n      param_2 = *(uint *)(local_20 + 4);\n      pbVar6 = (byte *)(param_2 + uVar5);\n      uVar5 = (uint)*pbVar6;\n      *param_3 = *pbVar6;\n      if (param_4 != (undefined4 *)0x0) {\n        param_2 = param_2 + iVar14;\n        *param_4 = *(undefined4 *)(param_2 - 4);\n      }\n      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();\n      if (4 < (byte)(*param_3 - 1)) {\n        iVar3 = FUN_00044904(0x10013);\n      }\n    }" { (expression_statement "param_2 = *(uint *)(local_20 + 4);" (assignment_expression "param_2 = *(uint *)(local_20 + 4)" identifier = (pointer_expression "*(uint *)(local_20 + 4)" * (cast_expression "(uint *)(local_20 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_20 + 4)" ( (binary_expression "local_20 + 4" identifier + number_literal) ))))) ;) (expression_statement "pbVar6 = (byte *)(param_2 + uVar5);" (assignment_expression "pbVar6 = (byte *)(param_2 + uVar5)" identifier = (cast_expression "(byte *)(param_2 + uVar5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + uVar5)" ( (binary_expression "param_2 + uVar5" identifier + identifier) )))) ;) (expression_statement "uVar5 = (uint)*pbVar6;" (assignment_expression "uVar5 = (uint)*pbVar6" identifier = (binary_expression "(uint)*pbVar6" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "*param_3 = *pbVar6;" (assignment_expression "*param_3 = *pbVar6" (pointer_expression "*param_3" * identifier) = (pointer_expression "*pbVar6" * identifier)) ;) (if_statement "if (param_4 != (undefined4 *)0x0) {\n        param_2 = param_2 + iVar14;\n        *param_4 = *(undefined4 *)(param_2 - 4);\n      }" if (parenthesized_expression "(param_4 != (undefined4 *)0x0)" ( (binary_expression "param_4 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        param_2 = param_2 + iVar14;\n        *param_4 = *(undefined4 *)(param_2 - 4);\n      }" { (expression_statement "param_2 = param_2 + iVar14;" (assignment_expression "param_2 = param_2 + iVar14" identifier = (binary_expression "param_2 + iVar14" identifier + identifier)) ;) (expression_statement "*param_4 = *(undefined4 *)(param_2 - 4);" (assignment_expression "*param_4 = *(undefined4 *)(param_2 - 4)" (pointer_expression "*param_4" * identifier) = (pointer_expression "*(undefined4 *)(param_2 - 4)" * (cast_expression "(undefined4 *)(param_2 - 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 - 4)" ( (binary_expression "param_2 - 4" identifier - number_literal) ))))) ;) })) (expression_statement "(*(code *)(PTR_LAB_000f52c8 + 0x1a94))();" (call_expression "(*(code *)(PTR_LAB_000f52c8 + 0x1a94))()" (parenthesized_expression "(*(code *)(PTR_LAB_000f52c8 + 0x1a94))" ( (pointer_expression "*(code *)(PTR_LAB_000f52c8 + 0x1a94)" * (cast_expression "(code *)(PTR_LAB_000f52c8 + 0x1a94)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52c8 + 0x1a94)" ( (binary_expression "PTR_LAB_000f52c8 + 0x1a94" identifier + number_literal) )))) )) (argument_list "()" ( ))) ;) (if_statement "if (4 < (byte)(*param_3 - 1)) {\n        iVar3 = FUN_00044904(0x10013);\n      }" if (parenthesized_expression "(4 < (byte)(*param_3 - 1))" ( (binary_expression "4 < (byte)(*param_3 - 1)" number_literal < (call_expression "(byte)(*param_3 - 1)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(*param_3 - 1)" ( (binary_expression "*param_3 - 1" (pointer_expression "*param_3" * identifier) - number_literal) )))) )) (compound_statement "{\n        iVar3 = FUN_00044904(0x10013);\n      }" { (expression_statement "iVar3 = FUN_00044904(0x10013);" (assignment_expression "iVar3 = FUN_00044904(0x10013)" identifier = (call_expression "FUN_00044904(0x10013)" identifier (argument_list "(0x10013)" ( number_literal )))) ;) })) }))) })) (if_statement "if (local_1c == *(int *)puVar1) {\n    return iVar3;\n  }" if (parenthesized_expression "(local_1c == *(int *)puVar1)" ( (binary_expression "local_1c == *(int *)puVar1" identifier == (pointer_expression "*(int *)puVar1" * (cast_expression "(int *)puVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return iVar3;\n  }" { (return_statement "return iVar3;" return identifier ;) })) (expression_statement "iVar3 = local_1c;" (assignment_expression "iVar3 = local_1c" identifier = identifier) ;) (expression_statement "puVar16 = PTR___stack_chk_fail_000f5540;" (assignment_expression "puVar16 = PTR___stack_chk_fail_000f5540" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000f5540)();" (call_expression "(*(code *)PTR___stack_chk_fail_000f5540)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000f5540)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000f5540" * (cast_expression "(code *)PTR___stack_chk_fail_000f5540" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puStack_58 = puVar1;" (assignment_expression "puStack_58 = puVar1" identifier = identifier) ;) (expression_statement "piVar15 = *(int **)(puVar16 + 0xb04f4);" (assignment_expression "piVar15 = *(int **)(puVar16 + 0xb04f4)" identifier = (pointer_expression "*(int **)(puVar16 + 0xb04f4)" * (cast_expression "(int **)(puVar16 + 0xb04f4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0xb04f4)" ( (binary_expression "puVar16 + 0xb04f4" identifier + number_literal) ))))) ;) (expression_statement "iStack_6c = 0;" (assignment_expression "iStack_6c = 0" identifier = number_literal) ;) (expression_statement "iStack_64 = *piVar15;" (assignment_expression "iStack_64 = *piVar15" identifier = (pointer_expression "*piVar15" * identifier)) ;) (expression_statement "uStack_5c = param_2;" (assignment_expression "uStack_5c = param_2" identifier = identifier) ;) (expression_statement "pbStack_54 = param_3;" (assignment_expression "pbStack_54 = param_3" identifier = identifier) ;) (expression_statement "puStack_50 = param_4;" (assignment_expression "puStack_50 = param_4" identifier = identifier) ;) (expression_statement "uStack_4c = uVar2;" (assignment_expression "uStack_4c = uVar2" identifier = identifier) ;) (if_statement "if (*(char *)(iVar3 + 0x11) == '\0') {\nLAB_00045158:\n    iVar14 = *(int *)(puVar16 + 0xb0254);\nLAB_0004515c:\n    uVar11 = 2;\n    piVar8 = &iStack_6c;\n    if (piVar7 != (int *)0x0) {\n      uVar11 = 0;\n    }\n    iVar14 = (*(code *)(iVar14 + 0x2070))(iVar3,uVar5,piVar8,uVar11);\n    if (iVar14 != 0) {\nLAB_00045180:\n      uVar2 = 0;\n      goto LAB_00045184;\n    }\n    *puVar9 = **(uint **)(iStack_6c + 0x38);\n    if (piVar7 == (int *)0x0) {\n      iVar3 = *(int *)(puVar16 + 0xb0254);\n      uVar11 = *(undefined4 *)(iStack_6c + 0x48);\n      goto LAB_000451ec;\n    }\n  }\n  else {\n    iVar14 = iVar3 + 0x24;\n    uVar12 = *(uint *)(iVar3 + 0x24);\n    iVar13 = iVar3 + 0x28;\n    uVar10 = *(uint *)(*(int *)(puVar16 + 0xb0248) + 0x4098);\n    uVar2 = uVar5;\n    do {\n      do {\n        uVar2 = uVar2 + 1;\n        uVar4 = 0;\n        if (1 < uVar2) {\n          uVar4 = FUN_0002d484(iVar14,iVar13,uVar2);\n        }\n      } while (uVar2 == uVar4);\n      if (uVar12 == 0) {\n        trap(7);\n      }\n    } while (uVar10 / uVar12 + 1 == uVar2);\n    if (*(uint *)(iVar3 + 0x30) < uVar2) goto LAB_00045158;\n    piVar8 = (int *)&cStack_6d;\n    iVar14 = FUN_00044ef0(iVar3,uVar2,piVar8,&uStack_68);\n    if (iVar14 != 0) goto LAB_00045180;\n    if (cStack_6d != '\x04') goto LAB_00045158;\n    iVar14 = *(int *)(puVar16 + 0xb0254);\n    if (uStack_68 != uVar5) goto LAB_0004515c;\n    iVar14 = 0x65;\nLAB_00045184:\n    *puVar9 = uVar2;\n    if (piVar7 == (int *)0x0) {\n      iVar3 = *(int *)(puVar16 + 0xb0254);\n      if (iStack_6c == 0) goto LAB_00045190;\n      uVar11 = *(undefined4 *)(iStack_6c + 0x48);\nLAB_000451ec:\n      (*(code *)(iVar3 + 0x1a94))(uVar11);\n      goto LAB_00045190;\n    }\n  }" if (parenthesized_expression "(*(char *)(iVar3 + 0x11) == '\0')" ( (binary_expression "*(char *)(iVar3 + 0x11) == '\0'" (pointer_expression "*(char *)(iVar3 + 0x11)" * (cast_expression "(char *)(iVar3 + 0x11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x11)" ( (binary_expression "iVar3 + 0x11" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_00045158:\n    iVar14 = *(int *)(puVar16 + 0xb0254);\nLAB_0004515c:\n    uVar11 = 2;\n    piVar8 = &iStack_6c;\n    if (piVar7 != (int *)0x0) {\n      uVar11 = 0;\n    }\n    iVar14 = (*(code *)(iVar14 + 0x2070))(iVar3,uVar5,piVar8,uVar11);\n    if (iVar14 != 0) {\nLAB_00045180:\n      uVar2 = 0;\n      goto LAB_00045184;\n    }\n    *puVar9 = **(uint **)(iStack_6c + 0x38);\n    if (piVar7 == (int *)0x0) {\n      iVar3 = *(int *)(puVar16 + 0xb0254);\n      uVar11 = *(undefined4 *)(iStack_6c + 0x48);\n      goto LAB_000451ec;\n    }\n  }" { (labeled_statement "LAB_00045158:\n    iVar14 = *(int *)(puVar16 + 0xb0254);" statement_identifier : (expression_statement "iVar14 = *(int *)(puVar16 + 0xb0254);" (assignment_expression "iVar14 = *(int *)(puVar16 + 0xb0254)" identifier = (pointer_expression "*(int *)(puVar16 + 0xb0254)" * (cast_expression "(int *)(puVar16 + 0xb0254)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xb0254)" ( (binary_expression "puVar16 + 0xb0254" identifier + number_literal) ))))) ;)) (labeled_statement "LAB_0004515c:\n    uVar11 = 2;" statement_identifier : (expression_statement "uVar11 = 2;" (assignment_expression "uVar11 = 2" identifier = number_literal) ;)) (expression_statement "piVar8 = &iStack_6c;" (assignment_expression "piVar8 = &iStack_6c" identifier = (pointer_expression "&iStack_6c" & identifier)) ;) (if_statement "if (piVar7 != (int *)0x0) {\n      uVar11 = 0;\n    }" if (parenthesized_expression "(piVar7 != (int *)0x0)" ( (binary_expression "piVar7 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      uVar11 = 0;\n    }" { (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) })) (expression_statement "iVar14 = (*(code *)(iVar14 + 0x2070))(iVar3,uVar5,piVar8,uVar11);" (assignment_expression "iVar14 = (*(code *)(iVar14 + 0x2070))(iVar3,uVar5,piVar8,uVar11)" identifier = (call_expression "(*(code *)(iVar14 + 0x2070))(iVar3,uVar5,piVar8,uVar11)" (parenthesized_expression "(*(code *)(iVar14 + 0x2070))" ( (pointer_expression "*(code *)(iVar14 + 0x2070)" * (cast_expression "(code *)(iVar14 + 0x2070)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x2070)" ( (binary_expression "iVar14 + 0x2070" identifier + number_literal) )))) )) (argument_list "(iVar3,uVar5,piVar8,uVar11)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if (iVar14 != 0) {\nLAB_00045180:\n      uVar2 = 0;\n      goto LAB_00045184;\n    }" if (parenthesized_expression "(iVar14 != 0)" ( (binary_expression "iVar14 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_00045180:\n      uVar2 = 0;\n      goto LAB_00045184;\n    }" { (labeled_statement "LAB_00045180:\n      uVar2 = 0;" statement_identifier : (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;)) (goto_statement "goto LAB_00045184;" goto statement_identifier ;) })) (expression_statement "*puVar9 = **(uint **)(iStack_6c + 0x38);" (assignment_expression "*puVar9 = **(uint **)(iStack_6c + 0x38)" (pointer_expression "*puVar9" * identifier) = (pointer_expression "**(uint **)(iStack_6c + 0x38)" * (pointer_expression "*(uint **)(iStack_6c + 0x38)" * (cast_expression "(uint **)(iStack_6c + 0x38)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iStack_6c + 0x38)" ( (binary_expression "iStack_6c + 0x38" identifier + number_literal) )))))) ;) (if_statement "if (piVar7 == (int *)0x0) {\n      iVar3 = *(int *)(puVar16 + 0xb0254);\n      uVar11 = *(undefined4 *)(iStack_6c + 0x48);\n      goto LAB_000451ec;\n    }" if (parenthesized_expression "(piVar7 == (int *)0x0)" ( (binary_expression "piVar7 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      iVar3 = *(int *)(puVar16 + 0xb0254);\n      uVar11 = *(undefined4 *)(iStack_6c + 0x48);\n      goto LAB_000451ec;\n    }" { (expression_statement "iVar3 = *(int *)(puVar16 + 0xb0254);" (assignment_expression "iVar3 = *(int *)(puVar16 + 0xb0254)" identifier = (pointer_expression "*(int *)(puVar16 + 0xb0254)" * (cast_expression "(int *)(puVar16 + 0xb0254)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xb0254)" ( (binary_expression "puVar16 + 0xb0254" identifier + number_literal) ))))) ;) (expression_statement "uVar11 = *(undefined4 *)(iStack_6c + 0x48);" (assignment_expression "uVar11 = *(undefined4 *)(iStack_6c + 0x48)" identifier = (pointer_expression "*(undefined4 *)(iStack_6c + 0x48)" * (cast_expression "(undefined4 *)(iStack_6c + 0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_6c + 0x48)" ( (binary_expression "iStack_6c + 0x48" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_000451ec;" goto statement_identifier ;) })) }) (else_clause "else {\n    iVar14 = iVar3 + 0x24;\n    uVar12 = *(uint *)(iVar3 + 0x24);\n    iVar13 = iVar3 + 0x28;\n    uVar10 = *(uint *)(*(int *)(puVar16 + 0xb0248) + 0x4098);\n    uVar2 = uVar5;\n    do {\n      do {\n        uVar2 = uVar2 + 1;\n        uVar4 = 0;\n        if (1 < uVar2) {\n          uVar4 = FUN_0002d484(iVar14,iVar13,uVar2);\n        }\n      } while (uVar2 == uVar4);\n      if (uVar12 == 0) {\n        trap(7);\n      }\n    } while (uVar10 / uVar12 + 1 == uVar2);\n    if (*(uint *)(iVar3 + 0x30) < uVar2) goto LAB_00045158;\n    piVar8 = (int *)&cStack_6d;\n    iVar14 = FUN_00044ef0(iVar3,uVar2,piVar8,&uStack_68);\n    if (iVar14 != 0) goto LAB_00045180;\n    if (cStack_6d != '\x04') goto LAB_00045158;\n    iVar14 = *(int *)(puVar16 + 0xb0254);\n    if (uStack_68 != uVar5) goto LAB_0004515c;\n    iVar14 = 0x65;\nLAB_00045184:\n    *puVar9 = uVar2;\n    if (piVar7 == (int *)0x0) {\n      iVar3 = *(int *)(puVar16 + 0xb0254);\n      if (iStack_6c == 0) goto LAB_00045190;\n      uVar11 = *(undefined4 *)(iStack_6c + 0x48);\nLAB_000451ec:\n      (*(code *)(iVar3 + 0x1a94))(uVar11);\n      goto LAB_00045190;\n    }\n  }" else (compound_statement "{\n    iVar14 = iVar3 + 0x24;\n    uVar12 = *(uint *)(iVar3 + 0x24);\n    iVar13 = iVar3 + 0x28;\n    uVar10 = *(uint *)(*(int *)(puVar16 + 0xb0248) + 0x4098);\n    uVar2 = uVar5;\n    do {\n      do {\n        uVar2 = uVar2 + 1;\n        uVar4 = 0;\n        if (1 < uVar2) {\n          uVar4 = FUN_0002d484(iVar14,iVar13,uVar2);\n        }\n      } while (uVar2 == uVar4);\n      if (uVar12 == 0) {\n        trap(7);\n      }\n    } while (uVar10 / uVar12 + 1 == uVar2);\n    if (*(uint *)(iVar3 + 0x30) < uVar2) goto LAB_00045158;\n    piVar8 = (int *)&cStack_6d;\n    iVar14 = FUN_00044ef0(iVar3,uVar2,piVar8,&uStack_68);\n    if (iVar14 != 0) goto LAB_00045180;\n    if (cStack_6d != '\x04') goto LAB_00045158;\n    iVar14 = *(int *)(puVar16 + 0xb0254);\n    if (uStack_68 != uVar5) goto LAB_0004515c;\n    iVar14 = 0x65;\nLAB_00045184:\n    *puVar9 = uVar2;\n    if (piVar7 == (int *)0x0) {\n      iVar3 = *(int *)(puVar16 + 0xb0254);\n      if (iStack_6c == 0) goto LAB_00045190;\n      uVar11 = *(undefined4 *)(iStack_6c + 0x48);\nLAB_000451ec:\n      (*(code *)(iVar3 + 0x1a94))(uVar11);\n      goto LAB_00045190;\n    }\n  }" { (expression_statement "iVar14 = iVar3 + 0x24;" (assignment_expression "iVar14 = iVar3 + 0x24" identifier = (binary_expression "iVar3 + 0x24" identifier + number_literal)) ;) (expression_statement "uVar12 = *(uint *)(iVar3 + 0x24);" (assignment_expression "uVar12 = *(uint *)(iVar3 + 0x24)" identifier = (pointer_expression "*(uint *)(iVar3 + 0x24)" * (cast_expression "(uint *)(iVar3 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x24)" ( (binary_expression "iVar3 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "iVar13 = iVar3 + 0x28;" (assignment_expression "iVar13 = iVar3 + 0x28" identifier = (binary_expression "iVar3 + 0x28" identifier + number_literal)) ;) (expression_statement "uVar10 = *(uint *)(*(int *)(puVar16 + 0xb0248) + 0x4098);" (assignment_expression "uVar10 = *(uint *)(*(int *)(puVar16 + 0xb0248) + 0x4098)" identifier = (pointer_expression "*(uint *)(*(int *)(puVar16 + 0xb0248) + 0x4098)" * (cast_expression "(uint *)(*(int *)(puVar16 + 0xb0248) + 0x4098)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar16 + 0xb0248) + 0x4098)" ( (binary_expression "*(int *)(puVar16 + 0xb0248) + 0x4098" (pointer_expression "*(int *)(puVar16 + 0xb0248)" * (cast_expression "(int *)(puVar16 + 0xb0248)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xb0248)" ( (binary_expression "puVar16 + 0xb0248" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "uVar2 = uVar5;" (assignment_expression "uVar2 = uVar5" identifier = identifier) ;) (do_statement "do {\n      do {\n        uVar2 = uVar2 + 1;\n        uVar4 = 0;\n        if (1 < uVar2) {\n          uVar4 = FUN_0002d484(iVar14,iVar13,uVar2);\n        }\n      } while (uVar2 == uVar4);\n      if (uVar12 == 0) {\n        trap(7);\n      }\n    } while (uVar10 / uVar12 + 1 == uVar2);" do (compound_statement "{\n      do {\n        uVar2 = uVar2 + 1;\n        uVar4 = 0;\n        if (1 < uVar2) {\n          uVar4 = FUN_0002d484(iVar14,iVar13,uVar2);\n        }\n      } while (uVar2 == uVar4);\n      if (uVar12 == 0) {\n        trap(7);\n      }\n    }" { (do_statement "do {\n        uVar2 = uVar2 + 1;\n        uVar4 = 0;\n        if (1 < uVar2) {\n          uVar4 = FUN_0002d484(iVar14,iVar13,uVar2);\n        }\n      } while (uVar2 == uVar4);" do (compound_statement "{\n        uVar2 = uVar2 + 1;\n        uVar4 = 0;\n        if (1 < uVar2) {\n          uVar4 = FUN_0002d484(iVar14,iVar13,uVar2);\n        }\n      }" { (expression_statement "uVar2 = uVar2 + 1;" (assignment_expression "uVar2 = uVar2 + 1" identifier = (binary_expression "uVar2 + 1" identifier + number_literal)) ;) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (if_statement "if (1 < uVar2) {\n          uVar4 = FUN_0002d484(iVar14,iVar13,uVar2);\n        }" if (parenthesized_expression "(1 < uVar2)" ( (binary_expression "1 < uVar2" number_literal < identifier) )) (compound_statement "{\n          uVar4 = FUN_0002d484(iVar14,iVar13,uVar2);\n        }" { (expression_statement "uVar4 = FUN_0002d484(iVar14,iVar13,uVar2);" (assignment_expression "uVar4 = FUN_0002d484(iVar14,iVar13,uVar2)" identifier = (call_expression "FUN_0002d484(iVar14,iVar13,uVar2)" identifier (argument_list "(iVar14,iVar13,uVar2)" ( identifier , identifier , identifier )))) ;) })) }) while (parenthesized_expression "(uVar2 == uVar4)" ( (binary_expression "uVar2 == uVar4" identifier == identifier) )) ;) (if_statement "if (uVar12 == 0) {\n        trap(7);\n      }" if (parenthesized_expression "(uVar12 == 0)" ( (binary_expression "uVar12 == 0" identifier == number_literal) )) (compound_statement "{\n        trap(7);\n      }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) }) while (parenthesized_expression "(uVar10 / uVar12 + 1 == uVar2)" ( (binary_expression "uVar10 / uVar12 + 1 == uVar2" (binary_expression "uVar10 / uVar12 + 1" (binary_expression "uVar10 / uVar12" identifier / identifier) + number_literal) == identifier) )) ;) (if_statement "if (*(uint *)(iVar3 + 0x30) < uVar2) goto LAB_00045158;" if (parenthesized_expression "(*(uint *)(iVar3 + 0x30) < uVar2)" ( (binary_expression "*(uint *)(iVar3 + 0x30) < uVar2" (pointer_expression "*(uint *)(iVar3 + 0x30)" * (cast_expression "(uint *)(iVar3 + 0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x30)" ( (binary_expression "iVar3 + 0x30" identifier + number_literal) )))) < identifier) )) (goto_statement "goto LAB_00045158;" goto statement_identifier ;)) (expression_statement "piVar8 = (int *)&cStack_6d;" (assignment_expression "piVar8 = (int *)&cStack_6d" identifier = (cast_expression "(int *)&cStack_6d" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&cStack_6d" & identifier))) ;) (expression_statement "iVar14 = FUN_00044ef0(iVar3,uVar2,piVar8,&uStack_68);" (assignment_expression "iVar14 = FUN_00044ef0(iVar3,uVar2,piVar8,&uStack_68)" identifier = (call_expression "FUN_00044ef0(iVar3,uVar2,piVar8,&uStack_68)" identifier (argument_list "(iVar3,uVar2,piVar8,&uStack_68)" ( identifier , identifier , identifier , (pointer_expression "&uStack_68" & identifier) )))) ;) (if_statement "if (iVar14 != 0) goto LAB_00045180;" if (parenthesized_expression "(iVar14 != 0)" ( (binary_expression "iVar14 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00045180;" goto statement_identifier ;)) (if_statement "if (cStack_6d != '\x04') goto LAB_00045158;" if (parenthesized_expression "(cStack_6d != '\x04')" ( (binary_expression "cStack_6d != '\x04'" identifier != (char_literal "'\x04'" ' escape_sequence ')) )) (goto_statement "goto LAB_00045158;" goto statement_identifier ;)) (expression_statement "iVar14 = *(int *)(puVar16 + 0xb0254);" (assignment_expression "iVar14 = *(int *)(puVar16 + 0xb0254)" identifier = (pointer_expression "*(int *)(puVar16 + 0xb0254)" * (cast_expression "(int *)(puVar16 + 0xb0254)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xb0254)" ( (binary_expression "puVar16 + 0xb0254" identifier + number_literal) ))))) ;) (if_statement "if (uStack_68 != uVar5) goto LAB_0004515c;" if (parenthesized_expression "(uStack_68 != uVar5)" ( (binary_expression "uStack_68 != uVar5" identifier != identifier) )) (goto_statement "goto LAB_0004515c;" goto statement_identifier ;)) (expression_statement "iVar14 = 0x65;" (assignment_expression "iVar14 = 0x65" identifier = number_literal) ;) (labeled_statement "LAB_00045184:\n    *puVar9 = uVar2;" statement_identifier : (expression_statement "*puVar9 = uVar2;" (assignment_expression "*puVar9 = uVar2" (pointer_expression "*puVar9" * identifier) = identifier) ;)) (if_statement "if (piVar7 == (int *)0x0) {\n      iVar3 = *(int *)(puVar16 + 0xb0254);\n      if (iStack_6c == 0) goto LAB_00045190;\n      uVar11 = *(undefined4 *)(iStack_6c + 0x48);\nLAB_000451ec:\n      (*(code *)(iVar3 + 0x1a94))(uVar11);\n      goto LAB_00045190;\n    }" if (parenthesized_expression "(piVar7 == (int *)0x0)" ( (binary_expression "piVar7 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      iVar3 = *(int *)(puVar16 + 0xb0254);\n      if (iStack_6c == 0) goto LAB_00045190;\n      uVar11 = *(undefined4 *)(iStack_6c + 0x48);\nLAB_000451ec:\n      (*(code *)(iVar3 + 0x1a94))(uVar11);\n      goto LAB_00045190;\n    }" { (expression_statement "iVar3 = *(int *)(puVar16 + 0xb0254);" (assignment_expression "iVar3 = *(int *)(puVar16 + 0xb0254)" identifier = (pointer_expression "*(int *)(puVar16 + 0xb0254)" * (cast_expression "(int *)(puVar16 + 0xb0254)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xb0254)" ( (binary_expression "puVar16 + 0xb0254" identifier + number_literal) ))))) ;) (if_statement "if (iStack_6c == 0) goto LAB_00045190;" if (parenthesized_expression "(iStack_6c == 0)" ( (binary_expression "iStack_6c == 0" identifier == number_literal) )) (goto_statement "goto LAB_00045190;" goto statement_identifier ;)) (expression_statement "uVar11 = *(undefined4 *)(iStack_6c + 0x48);" (assignment_expression "uVar11 = *(undefined4 *)(iStack_6c + 0x48)" identifier = (pointer_expression "*(undefined4 *)(iStack_6c + 0x48)" * (cast_expression "(undefined4 *)(iStack_6c + 0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_6c + 0x48)" ( (binary_expression "iStack_6c + 0x48" identifier + number_literal) ))))) ;) (labeled_statement "LAB_000451ec:\n      (*(code *)(iVar3 + 0x1a94))(uVar11);" statement_identifier : (expression_statement "(*(code *)(iVar3 + 0x1a94))(uVar11);" (call_expression "(*(code *)(iVar3 + 0x1a94))(uVar11)" (parenthesized_expression "(*(code *)(iVar3 + 0x1a94))" ( (pointer_expression "*(code *)(iVar3 + 0x1a94)" * (cast_expression "(code *)(iVar3 + 0x1a94)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x1a94)" ( (binary_expression "iVar3 + 0x1a94" identifier + number_literal) )))) )) (argument_list "(uVar11)" ( identifier ))) ;)) (goto_statement "goto LAB_00045190;" goto statement_identifier ;) })) }))) (expression_statement "*piVar7 = iStack_6c;" (assignment_expression "*piVar7 = iStack_6c" (pointer_expression "*piVar7" * identifier) = identifier) ;) (labeled_statement "LAB_00045190:\n  if (iVar14 == 0x65) {\n    iVar14 = 0;\n  }" statement_identifier : (if_statement "if (iVar14 == 0x65) {\n    iVar14 = 0;\n  }" if (parenthesized_expression "(iVar14 == 0x65)" ( (binary_expression "iVar14 == 0x65" identifier == number_literal) )) (compound_statement "{\n    iVar14 = 0;\n  }" { (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;) }))) (if_statement "if (iStack_64 == *piVar15) {\n    return iVar14;\n  }" if (parenthesized_expression "(iStack_64 == *piVar15)" ( (binary_expression "iStack_64 == *piVar15" identifier == (pointer_expression "*piVar15" * identifier)) )) (compound_statement "{\n    return iVar14;\n  }" { (return_statement "return iVar14;" return identifier ;) })) (expression_statement "pcVar17 = *(code **)(puVar16 + 0xb04cc);" (assignment_expression "pcVar17 = *(code **)(puVar16 + 0xb04cc)" identifier = (pointer_expression "*(code **)(puVar16 + 0xb04cc)" * (cast_expression "(code **)(puVar16 + 0xb04cc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0xb04cc)" ( (binary_expression "puVar16 + 0xb04cc" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar17)();" (call_expression "(*pcVar17)()" (parenthesized_expression "(*pcVar17)" ( (pointer_expression "*pcVar17" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "iVar3 = (*(code *)(*(int *)(pcVar17 + 0xb0058) + 0x2070))();" (assignment_expression "iVar3 = (*(code *)(*(int *)(pcVar17 + 0xb0058) + 0x2070))()" identifier = (call_expression "(*(code *)(*(int *)(pcVar17 + 0xb0058) + 0x2070))()" (parenthesized_expression "(*(code *)(*(int *)(pcVar17 + 0xb0058) + 0x2070))" ( (pointer_expression "*(code *)(*(int *)(pcVar17 + 0xb0058) + 0x2070)" * (cast_expression "(code *)(*(int *)(pcVar17 + 0xb0058) + 0x2070)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar17 + 0xb0058) + 0x2070)" ( (binary_expression "*(int *)(pcVar17 + 0xb0058) + 0x2070" (pointer_expression "*(int *)(pcVar17 + 0xb0058)" * (cast_expression "(int *)(pcVar17 + 0xb0058)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar17 + 0xb0058)" ( (binary_expression "pcVar17 + 0xb0058" identifier + number_literal) )))) + number_literal) )))) )) (argument_list "()" ( )))) ;) (if_statement "if (iVar3 != 0) {\n    *piVar8 = 0;\n    return iVar3;\n  }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n    *piVar8 = 0;\n    return iVar3;\n  }" { (expression_statement "*piVar8 = 0;" (assignment_expression "*piVar8 = 0" (pointer_expression "*piVar8" * identifier) = number_literal) ;) (return_statement "return iVar3;" return identifier ;) })) (if_statement "if (*(short *)(*(int *)((undefined1 *)*piVar8 + 0x48) + 0x1e) < 2) {\n    *(undefined1 *)*piVar8 = 0;\n    return 0;\n  }" if (parenthesized_expression "(*(short *)(*(int *)((undefined1 *)*piVar8 + 0x48) + 0x1e) < 2)" ( (binary_expression "*(short *)(*(int *)((undefined1 *)*piVar8 + 0x48) + 0x1e) < 2" (pointer_expression "*(short *)(*(int *)((undefined1 *)*piVar8 + 0x48) + 0x1e)" * (cast_expression "(short *)(*(int *)((undefined1 *)*piVar8 + 0x48) + 0x1e)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)((undefined1 *)*piVar8 + 0x48) + 0x1e)" ( (binary_expression "*(int *)((undefined1 *)*piVar8 + 0x48) + 0x1e" (pointer_expression "*(int *)((undefined1 *)*piVar8 + 0x48)" * (cast_expression "(int *)((undefined1 *)*piVar8 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((undefined1 *)*piVar8 + 0x48)" ( (binary_expression "(undefined1 *)*piVar8 + 0x48" (cast_expression "(undefined1 *)*piVar8" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar8" * identifier)) + number_literal) )))) + number_literal) )))) < number_literal) )) (compound_statement "{\n    *(undefined1 *)*piVar8 = 0;\n    return 0;\n  }" { (expression_statement "*(undefined1 *)*piVar8 = 0;" (assignment_expression "*(undefined1 *)*piVar8 = 0" (pointer_expression "*(undefined1 *)*piVar8" * (cast_expression "(undefined1 *)*piVar8" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar8" * identifier))) = number_literal) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "(*(code *)(*(int *)(pcVar17 + 0xb0058) + 0x1a94))();" (call_expression "(*(code *)(*(int *)(pcVar17 + 0xb0058) + 0x1a94))()" (parenthesized_expression "(*(code *)(*(int *)(pcVar17 + 0xb0058) + 0x1a94))" ( (pointer_expression "*(code *)(*(int *)(pcVar17 + 0xb0058) + 0x1a94)" * (cast_expression "(code *)(*(int *)(pcVar17 + 0xb0058) + 0x1a94)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar17 + 0xb0058) + 0x1a94)" ( (binary_expression "*(int *)(pcVar17 + 0xb0058) + 0x1a94" (pointer_expression "*(int *)(pcVar17 + 0xb0058)" * (cast_expression "(int *)(pcVar17 + 0xb0058)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar17 + 0xb0058)" ( (binary_expression "pcVar17 + 0xb0058" identifier + number_literal) )))) + number_literal) )))) )) (argument_list "()" ( ))) ;) (expression_statement "*piVar8 = 0;" (assignment_expression "*piVar8 = 0" (pointer_expression "*piVar8" * identifier) = number_literal) ;) (expression_statement "iVar3 = FUN_00044904(0x104bb);" (assignment_expression "iVar3 = FUN_00044904(0x104bb)" identifier = (call_expression "FUN_00044904(0x104bb)" identifier (argument_list "(0x104bb)" ( number_literal )))) ;) (return_statement "return iVar3;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (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 (pointer_declarator * IDENT) ;) (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 (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) , IDENT )))) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (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) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) }) (else_clause else (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 IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT - LIT) ))))) ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * IDENT) - LIT) )))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) })) }))) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * (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 IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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 IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (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) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;) })) }) while (parenthesized_expression ( (binary_expression IDENT == IDENT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) }) while (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT / IDENT) + LIT) == IDENT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (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 IDENT != IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (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 IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( IDENT ))) ;)) (goto_statement goto statement_identifier ;) })) }))) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * IDENT)) )) (compound_statement { (return_statement return IDENT ;) })) (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 (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) )) (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (return_statement return IDENT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) + LIT) )))) + LIT) )))) < LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) = LIT) ;) (return_statement return LIT ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) )) (argument_list ( ))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (return_statement return IDENT ;) })))
(function_definition "int FUN_00044ef0(int *param_1,uint param_2,byte *param_3,undefined4 *param_4)\n\n{\n  undefined *puVar1;\n  uint uVar2;\n  int iVar3;\n  uint uVar4;\n  uint uVar5;\n  byte *pbVar6;\n  int *piVar7;\n  int *piVar8;\n  uint *puVar9;\n  uint uVar10;\n  undefined4 uVar11;\n  uint uVar12;\n  int iVar13;\n  int iVar14;\n  int *piVar15;\n  undefined *puVar16;\n  code *pcVar17;\n  char cStack_6d;\n  int iStack_6c;\n  uint uStack_68;\n  int iStack_64;\n  uint uStack_5c;\n  undefined *puStack_58;\n  byte *pbStack_54;\n  undefined4 *puStack_50;\n  uint uStack_4c;\n  int local_20;\n  int local_1c;\n  \n  puVar1 = PTR___stack_chk_guard_000f5568;\n  local_1c = *(int *)PTR___stack_chk_guard_000f5568;\n  if (param_2 < 2) {\n    uVar2 = 0;\n  }\n  else {\n    uVar2 = FUN_0002d484(param_1 + 9,param_1 + 10,param_2);\n  }\n  puVar9 = (uint *)0x0;\n  piVar7 = &local_20;\n  uVar5 = uVar2;\n  iVar3 = (**(code **)(*param_1 + 0xcc))(*param_1);\n  if (iVar3 == 0) {\n    param_2 = param_2 - uVar2;\n    iVar14 = param_2 * 5;\n    uVar5 = iVar14 - 5;\n    if ((int)uVar5 < 0) {\n      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();\n      iVar3 = FUN_00044904(0x1000b);\n    }\n    else {\n      param_2 = *(uint *)(local_20 + 4);\n      pbVar6 = (byte *)(param_2 + uVar5);\n      uVar5 = (uint)*pbVar6;\n      *param_3 = *pbVar6;\n      if (param_4 != (undefined4 *)0x0) {\n        param_2 = param_2 + iVar14;\n        *param_4 = *(undefined4 *)(param_2 - 4);\n      }\n      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();\n      if (4 < (byte)(*param_3 - 1)) {\n        iVar3 = FUN_00044904(0x10013);\n      }\n    }\n  }\n  if (local_1c == *(int *)puVar1) {\n    return iVar3;\n  }\n  iVar3 = local_1c;\n  puVar16 = PTR___stack_chk_fail_000f5540;\n  (*(code *)PTR___stack_chk_fail_000f5540)();\n  puStack_58 = puVar1;\n  piVar15 = *(int **)(puVar16 + 0xb04f4);\n  iStack_6c = 0;\n  iStack_64 = *piVar15;\n  uStack_5c = param_2;\n  pbStack_54 = param_3;\n  puStack_50 = param_4;\n  uStack_4c = uVar2;\n  if (*(char *)(iVar3 + 0x11) == '\0') {\nLAB_00045158:\n    iVar14 = *(int *)(puVar16 + 0xb0254);\nLAB_0004515c:\n    uVar11 = 2;\n    piVar8 = &iStack_6c;\n    if (piVar7 != (int *)0x0) {\n      uVar11 = 0;\n    }\n    iVar14 = (*(code *)(iVar14 + 0x2070))(iVar3,uVar5,piVar8,uVar11);\n    if (iVar14 != 0) {\nLAB_00045180:\n      uVar2 = 0;\n      goto LAB_00045184;\n    }\n    *puVar9 = **(uint **)(iStack_6c + 0x38);\n    if (piVar7 == (int *)0x0) {\n      iVar3 = *(int *)(puVar16 + 0xb0254);\n      uVar11 = *(undefined4 *)(iStack_6c + 0x48);\n      goto LAB_000451ec;\n    }\n  }\n  else {\n    iVar14 = iVar3 + 0x24;\n    uVar12 = *(uint *)(iVar3 + 0x24);\n    iVar13 = iVar3 + 0x28;\n    uVar10 = *(uint *)(*(int *)(puVar16 + 0xb0248) + 0x4098);\n    uVar2 = uVar5;\n    do {\n      do {\n        uVar2 = uVar2 + 1;\n        uVar4 = 0;\n        if (1 < uVar2) {\n          uVar4 = FUN_0002d484(iVar14,iVar13,uVar2);\n        }\n      } while (uVar2 == uVar4);\n      if (uVar12 == 0) {\n        trap(7);\n      }\n    } while (uVar10 / uVar12 + 1 == uVar2);\n    if (*(uint *)(iVar3 + 0x30) < uVar2) goto LAB_00045158;\n    piVar8 = (int *)&cStack_6d;\n    iVar14 = FUN_00044ef0(iVar3,uVar2,piVar8,&uStack_68);\n    if (iVar14 != 0) goto LAB_00045180;\n    if (cStack_6d != '\x04') goto LAB_00045158;\n    iVar14 = *(int *)(puVar16 + 0xb0254);\n    if (uStack_68 != uVar5) goto LAB_0004515c;\n    iVar14 = 0x65;\nLAB_00045184:\n    *puVar9 = uVar2;\n    if (piVar7 == (int *)0x0) {\n      iVar3 = *(int *)(puVar16 + 0xb0254);\n      if (iStack_6c == 0) goto LAB_00045190;\n      uVar11 = *(undefined4 *)(iStack_6c + 0x48);\nLAB_000451ec:\n      (*(code *)(iVar3 + 0x1a94))(uVar11);\n      goto LAB_00045190;\n    }\n  }\n  *piVar7 = iStack_6c;\nLAB_00045190:\n  if (iVar14 == 0x65) {\n    iVar14 = 0;\n  }\n  if (iStack_64 == *piVar15) {\n    return iVar14;\n  }\n  pcVar17 = *(code **)(puVar16 + 0xb04cc);\n  (*pcVar17)();\n  iVar3 = (*(code *)(*(int *)(pcVar17 + 0xb0058) + 0x2070))();\n  if (iVar3 != 0) {\n    *piVar8 = 0;\n    return iVar3;\n  }\n  if (*(short *)(*(int *)((undefined1 *)*piVar8 + 0x48) + 0x1e) < 2) {\n    *(undefined1 *)*piVar8 = 0;\n    return 0;\n  }\n  (*(code *)(*(int *)(pcVar17 + 0xb0058) + 0x1a94))();\n  *piVar8 = 0;\n  iVar3 = FUN_00044904(0x104bb);\n  return iVar3;\n}" (primitive_type "int") (function_declarator "FUN_00044ef0(int *param_1,uint param_2,byte *param_3,undefined4 *param_4)" (identifier "FUN_00044ef0") (parameter_list "(int *param_1,uint param_2,byte *param_3,undefined4 *param_4)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "uint param_2" (type_identifier "uint") (identifier "param_2")) (, ",") (parameter_declaration "byte *param_3" (type_identifier "byte") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "undefined4 *param_4" (type_identifier "undefined4") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) () ")"))) (compound_statement "{\n  undefined *puVar1;\n  uint uVar2;\n  int iVar3;\n  uint uVar4;\n  uint uVar5;\n  byte *pbVar6;\n  int *piVar7;\n  int *piVar8;\n  uint *puVar9;\n  uint uVar10;\n  undefined4 uVar11;\n  uint uVar12;\n  int iVar13;\n  int iVar14;\n  int *piVar15;\n  undefined *puVar16;\n  code *pcVar17;\n  char cStack_6d;\n  int iStack_6c;\n  uint uStack_68;\n  int iStack_64;\n  uint uStack_5c;\n  undefined *puStack_58;\n  byte *pbStack_54;\n  undefined4 *puStack_50;\n  uint uStack_4c;\n  int local_20;\n  int local_1c;\n  \n  puVar1 = PTR___stack_chk_guard_000f5568;\n  local_1c = *(int *)PTR___stack_chk_guard_000f5568;\n  if (param_2 < 2) {\n    uVar2 = 0;\n  }\n  else {\n    uVar2 = FUN_0002d484(param_1 + 9,param_1 + 10,param_2);\n  }\n  puVar9 = (uint *)0x0;\n  piVar7 = &local_20;\n  uVar5 = uVar2;\n  iVar3 = (**(code **)(*param_1 + 0xcc))(*param_1);\n  if (iVar3 == 0) {\n    param_2 = param_2 - uVar2;\n    iVar14 = param_2 * 5;\n    uVar5 = iVar14 - 5;\n    if ((int)uVar5 < 0) {\n      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();\n      iVar3 = FUN_00044904(0x1000b);\n    }\n    else {\n      param_2 = *(uint *)(local_20 + 4);\n      pbVar6 = (byte *)(param_2 + uVar5);\n      uVar5 = (uint)*pbVar6;\n      *param_3 = *pbVar6;\n      if (param_4 != (undefined4 *)0x0) {\n        param_2 = param_2 + iVar14;\n        *param_4 = *(undefined4 *)(param_2 - 4);\n      }\n      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();\n      if (4 < (byte)(*param_3 - 1)) {\n        iVar3 = FUN_00044904(0x10013);\n      }\n    }\n  }\n  if (local_1c == *(int *)puVar1) {\n    return iVar3;\n  }\n  iVar3 = local_1c;\n  puVar16 = PTR___stack_chk_fail_000f5540;\n  (*(code *)PTR___stack_chk_fail_000f5540)();\n  puStack_58 = puVar1;\n  piVar15 = *(int **)(puVar16 + 0xb04f4);\n  iStack_6c = 0;\n  iStack_64 = *piVar15;\n  uStack_5c = param_2;\n  pbStack_54 = param_3;\n  puStack_50 = param_4;\n  uStack_4c = uVar2;\n  if (*(char *)(iVar3 + 0x11) == '\0') {\nLAB_00045158:\n    iVar14 = *(int *)(puVar16 + 0xb0254);\nLAB_0004515c:\n    uVar11 = 2;\n    piVar8 = &iStack_6c;\n    if (piVar7 != (int *)0x0) {\n      uVar11 = 0;\n    }\n    iVar14 = (*(code *)(iVar14 + 0x2070))(iVar3,uVar5,piVar8,uVar11);\n    if (iVar14 != 0) {\nLAB_00045180:\n      uVar2 = 0;\n      goto LAB_00045184;\n    }\n    *puVar9 = **(uint **)(iStack_6c + 0x38);\n    if (piVar7 == (int *)0x0) {\n      iVar3 = *(int *)(puVar16 + 0xb0254);\n      uVar11 = *(undefined4 *)(iStack_6c + 0x48);\n      goto LAB_000451ec;\n    }\n  }\n  else {\n    iVar14 = iVar3 + 0x24;\n    uVar12 = *(uint *)(iVar3 + 0x24);\n    iVar13 = iVar3 + 0x28;\n    uVar10 = *(uint *)(*(int *)(puVar16 + 0xb0248) + 0x4098);\n    uVar2 = uVar5;\n    do {\n      do {\n        uVar2 = uVar2 + 1;\n        uVar4 = 0;\n        if (1 < uVar2) {\n          uVar4 = FUN_0002d484(iVar14,iVar13,uVar2);\n        }\n      } while (uVar2 == uVar4);\n      if (uVar12 == 0) {\n        trap(7);\n      }\n    } while (uVar10 / uVar12 + 1 == uVar2);\n    if (*(uint *)(iVar3 + 0x30) < uVar2) goto LAB_00045158;\n    piVar8 = (int *)&cStack_6d;\n    iVar14 = FUN_00044ef0(iVar3,uVar2,piVar8,&uStack_68);\n    if (iVar14 != 0) goto LAB_00045180;\n    if (cStack_6d != '\x04') goto LAB_00045158;\n    iVar14 = *(int *)(puVar16 + 0xb0254);\n    if (uStack_68 != uVar5) goto LAB_0004515c;\n    iVar14 = 0x65;\nLAB_00045184:\n    *puVar9 = uVar2;\n    if (piVar7 == (int *)0x0) {\n      iVar3 = *(int *)(puVar16 + 0xb0254);\n      if (iStack_6c == 0) goto LAB_00045190;\n      uVar11 = *(undefined4 *)(iStack_6c + 0x48);\nLAB_000451ec:\n      (*(code *)(iVar3 + 0x1a94))(uVar11);\n      goto LAB_00045190;\n    }\n  }\n  *piVar7 = iStack_6c;\nLAB_00045190:\n  if (iVar14 == 0x65) {\n    iVar14 = 0;\n  }\n  if (iStack_64 == *piVar15) {\n    return iVar14;\n  }\n  pcVar17 = *(code **)(puVar16 + 0xb04cc);\n  (*pcVar17)();\n  iVar3 = (*(code *)(*(int *)(pcVar17 + 0xb0058) + 0x2070))();\n  if (iVar3 != 0) {\n    *piVar8 = 0;\n    return iVar3;\n  }\n  if (*(short *)(*(int *)((undefined1 *)*piVar8 + 0x48) + 0x1e) < 2) {\n    *(undefined1 *)*piVar8 = 0;\n    return 0;\n  }\n  (*(code *)(*(int *)(pcVar17 + 0xb0058) + 0x1a94))();\n  *piVar8 = 0;\n  iVar3 = FUN_00044904(0x104bb);\n  return iVar3;\n}" ({ "{") (declaration "undefined *puVar1;" (type_identifier "undefined") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "byte *pbVar6;" (type_identifier "byte") (pointer_declarator "*pbVar6" (* "*") (identifier "pbVar6")) (; ";")) (declaration "int *piVar7;" (primitive_type "int") (pointer_declarator "*piVar7" (* "*") (identifier "piVar7")) (; ";")) (declaration "int *piVar8;" (primitive_type "int") (pointer_declarator "*piVar8" (* "*") (identifier "piVar8")) (; ";")) (declaration "uint *puVar9;" (type_identifier "uint") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (declaration "undefined4 uVar11;" (type_identifier "undefined4") (identifier "uVar11") (; ";")) (declaration "uint uVar12;" (type_identifier "uint") (identifier "uVar12") (; ";")) (declaration "int iVar13;" (primitive_type "int") (identifier "iVar13") (; ";")) (declaration "int iVar14;" (primitive_type "int") (identifier "iVar14") (; ";")) (declaration "int *piVar15;" (primitive_type "int") (pointer_declarator "*piVar15" (* "*") (identifier "piVar15")) (; ";")) (declaration "undefined *puVar16;" (type_identifier "undefined") (pointer_declarator "*puVar16" (* "*") (identifier "puVar16")) (; ";")) (declaration "code *pcVar17;" (type_identifier "code") (pointer_declarator "*pcVar17" (* "*") (identifier "pcVar17")) (; ";")) (declaration "char cStack_6d;" (primitive_type "char") (identifier "cStack_6d") (; ";")) (declaration "int iStack_6c;" (primitive_type "int") (identifier "iStack_6c") (; ";")) (declaration "uint uStack_68;" (type_identifier "uint") (identifier "uStack_68") (; ";")) (declaration "int iStack_64;" (primitive_type "int") (identifier "iStack_64") (; ";")) (declaration "uint uStack_5c;" (type_identifier "uint") (identifier "uStack_5c") (; ";")) (declaration "undefined *puStack_58;" (type_identifier "undefined") (pointer_declarator "*puStack_58" (* "*") (identifier "puStack_58")) (; ";")) (declaration "byte *pbStack_54;" (type_identifier "byte") (pointer_declarator "*pbStack_54" (* "*") (identifier "pbStack_54")) (; ";")) (declaration "undefined4 *puStack_50;" (type_identifier "undefined4") (pointer_declarator "*puStack_50" (* "*") (identifier "puStack_50")) (; ";")) (declaration "uint uStack_4c;" (type_identifier "uint") (identifier "uStack_4c") (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (declaration "int local_1c;" (primitive_type "int") (identifier "local_1c") (; ";")) (expression_statement "puVar1 = PTR___stack_chk_guard_000f5568;" (assignment_expression "puVar1 = PTR___stack_chk_guard_000f5568" (identifier "puVar1") (= "=") (identifier "PTR___stack_chk_guard_000f5568")) (; ";")) (expression_statement "local_1c = *(int *)PTR___stack_chk_guard_000f5568;" (assignment_expression "local_1c = *(int *)PTR___stack_chk_guard_000f5568" (identifier "local_1c") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_000f5568" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_000f5568" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_000f5568")))) (; ";")) (if_statement "if (param_2 < 2) {\n    uVar2 = 0;\n  }\n  else {\n    uVar2 = FUN_0002d484(param_1 + 9,param_1 + 10,param_2);\n  }" (if "if") (parenthesized_expression "(param_2 < 2)" (( "(") (binary_expression "param_2 < 2" (identifier "param_2") (< "<") (number_literal "2")) () ")")) (compound_statement "{\n    uVar2 = 0;\n  }" ({ "{") (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" (identifier "uVar2") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n    uVar2 = FUN_0002d484(param_1 + 9,param_1 + 10,param_2);\n  }" (else "else") (compound_statement "{\n    uVar2 = FUN_0002d484(param_1 + 9,param_1 + 10,param_2);\n  }" ({ "{") (expression_statement "uVar2 = FUN_0002d484(param_1 + 9,param_1 + 10,param_2);" (assignment_expression "uVar2 = FUN_0002d484(param_1 + 9,param_1 + 10,param_2)" (identifier "uVar2") (= "=") (call_expression "FUN_0002d484(param_1 + 9,param_1 + 10,param_2)" (identifier "FUN_0002d484") (argument_list "(param_1 + 9,param_1 + 10,param_2)" (( "(") (binary_expression "param_1 + 9" (identifier "param_1") (+ "+") (number_literal "9")) (, ",") (binary_expression "param_1 + 10" (identifier "param_1") (+ "+") (number_literal "10")) (, ",") (identifier "param_2") () ")")))) (; ";")) (} "}")))) (expression_statement "puVar9 = (uint *)0x0;" (assignment_expression "puVar9 = (uint *)0x0" (identifier "puVar9") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "piVar7 = &local_20;" (assignment_expression "piVar7 = &local_20" (identifier "piVar7") (= "=") (pointer_expression "&local_20" (& "&") (identifier "local_20"))) (; ";")) (expression_statement "uVar5 = uVar2;" (assignment_expression "uVar5 = uVar2" (identifier "uVar5") (= "=") (identifier "uVar2")) (; ";")) (expression_statement "iVar3 = (**(code **)(*param_1 + 0xcc))(*param_1);" (assignment_expression "iVar3 = (**(code **)(*param_1 + 0xcc))(*param_1)" (identifier "iVar3") (= "=") (call_expression "(**(code **)(*param_1 + 0xcc))(*param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0xcc))" (( "(") (pointer_expression "**(code **)(*param_1 + 0xcc)" (* "*") (pointer_expression "*(code **)(*param_1 + 0xcc)" (* "*") (cast_expression "(code **)(*param_1 + 0xcc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 0xcc)" (( "(") (binary_expression "*param_1 + 0xcc" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0xcc")) () ")"))))) () ")")) (argument_list "(*param_1)" (( "(") (pointer_expression "*param_1" (* "*") (identifier "param_1")) () ")")))) (; ";")) (if_statement "if (iVar3 == 0) {\n    param_2 = param_2 - uVar2;\n    iVar14 = param_2 * 5;\n    uVar5 = iVar14 - 5;\n    if ((int)uVar5 < 0) {\n      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();\n      iVar3 = FUN_00044904(0x1000b);\n    }\n    else {\n      param_2 = *(uint *)(local_20 + 4);\n      pbVar6 = (byte *)(param_2 + uVar5);\n      uVar5 = (uint)*pbVar6;\n      *param_3 = *pbVar6;\n      if (param_4 != (undefined4 *)0x0) {\n        param_2 = param_2 + iVar14;\n        *param_4 = *(undefined4 *)(param_2 - 4);\n      }\n      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();\n      if (4 < (byte)(*param_3 - 1)) {\n        iVar3 = FUN_00044904(0x10013);\n      }\n    }\n  }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    param_2 = param_2 - uVar2;\n    iVar14 = param_2 * 5;\n    uVar5 = iVar14 - 5;\n    if ((int)uVar5 < 0) {\n      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();\n      iVar3 = FUN_00044904(0x1000b);\n    }\n    else {\n      param_2 = *(uint *)(local_20 + 4);\n      pbVar6 = (byte *)(param_2 + uVar5);\n      uVar5 = (uint)*pbVar6;\n      *param_3 = *pbVar6;\n      if (param_4 != (undefined4 *)0x0) {\n        param_2 = param_2 + iVar14;\n        *param_4 = *(undefined4 *)(param_2 - 4);\n      }\n      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();\n      if (4 < (byte)(*param_3 - 1)) {\n        iVar3 = FUN_00044904(0x10013);\n      }\n    }\n  }" ({ "{") (expression_statement "param_2 = param_2 - uVar2;" (assignment_expression "param_2 = param_2 - uVar2" (identifier "param_2") (= "=") (binary_expression "param_2 - uVar2" (identifier "param_2") (- "-") (identifier "uVar2"))) (; ";")) (expression_statement "iVar14 = param_2 * 5;" (assignment_expression "iVar14 = param_2 * 5" (identifier "iVar14") (= "=") (binary_expression "param_2 * 5" (identifier "param_2") (* "*") (number_literal "5"))) (; ";")) (expression_statement "uVar5 = iVar14 - 5;" (assignment_expression "uVar5 = iVar14 - 5" (identifier "uVar5") (= "=") (binary_expression "iVar14 - 5" (identifier "iVar14") (- "-") (number_literal "5"))) (; ";")) (if_statement "if ((int)uVar5 < 0) {\n      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();\n      iVar3 = FUN_00044904(0x1000b);\n    }\n    else {\n      param_2 = *(uint *)(local_20 + 4);\n      pbVar6 = (byte *)(param_2 + uVar5);\n      uVar5 = (uint)*pbVar6;\n      *param_3 = *pbVar6;\n      if (param_4 != (undefined4 *)0x0) {\n        param_2 = param_2 + iVar14;\n        *param_4 = *(undefined4 *)(param_2 - 4);\n      }\n      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();\n      if (4 < (byte)(*param_3 - 1)) {\n        iVar3 = FUN_00044904(0x10013);\n      }\n    }" (if "if") (parenthesized_expression "((int)uVar5 < 0)" (( "(") (binary_expression "(int)uVar5 < 0" (cast_expression "(int)uVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar5")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();\n      iVar3 = FUN_00044904(0x1000b);\n    }" ({ "{") (expression_statement "(*(code *)(PTR_LAB_000f52c8 + 0x1a94))();" (call_expression "(*(code *)(PTR_LAB_000f52c8 + 0x1a94))()" (parenthesized_expression "(*(code *)(PTR_LAB_000f52c8 + 0x1a94))" (( "(") (pointer_expression "*(code *)(PTR_LAB_000f52c8 + 0x1a94)" (* "*") (cast_expression "(code *)(PTR_LAB_000f52c8 + 0x1a94)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_000f52c8 + 0x1a94)" (( "(") (binary_expression "PTR_LAB_000f52c8 + 0x1a94" (identifier "PTR_LAB_000f52c8") (+ "+") (number_literal "0x1a94")) () ")")))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar3 = FUN_00044904(0x1000b);" (assignment_expression "iVar3 = FUN_00044904(0x1000b)" (identifier "iVar3") (= "=") (call_expression "FUN_00044904(0x1000b)" (identifier "FUN_00044904") (argument_list "(0x1000b)" (( "(") (number_literal "0x1000b") () ")")))) (; ";")) (} "}")) (else_clause "else {\n      param_2 = *(uint *)(local_20 + 4);\n      pbVar6 = (byte *)(param_2 + uVar5);\n      uVar5 = (uint)*pbVar6;\n      *param_3 = *pbVar6;\n      if (param_4 != (undefined4 *)0x0) {\n        param_2 = param_2 + iVar14;\n        *param_4 = *(undefined4 *)(param_2 - 4);\n      }\n      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();\n      if (4 < (byte)(*param_3 - 1)) {\n        iVar3 = FUN_00044904(0x10013);\n      }\n    }" (else "else") (compound_statement "{\n      param_2 = *(uint *)(local_20 + 4);\n      pbVar6 = (byte *)(param_2 + uVar5);\n      uVar5 = (uint)*pbVar6;\n      *param_3 = *pbVar6;\n      if (param_4 != (undefined4 *)0x0) {\n        param_2 = param_2 + iVar14;\n        *param_4 = *(undefined4 *)(param_2 - 4);\n      }\n      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();\n      if (4 < (byte)(*param_3 - 1)) {\n        iVar3 = FUN_00044904(0x10013);\n      }\n    }" ({ "{") (expression_statement "param_2 = *(uint *)(local_20 + 4);" (assignment_expression "param_2 = *(uint *)(local_20 + 4)" (identifier "param_2") (= "=") (pointer_expression "*(uint *)(local_20 + 4)" (* "*") (cast_expression "(uint *)(local_20 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_20 + 4)" (( "(") (binary_expression "local_20 + 4" (identifier "local_20") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "pbVar6 = (byte *)(param_2 + uVar5);" (assignment_expression "pbVar6 = (byte *)(param_2 + uVar5)" (identifier "pbVar6") (= "=") (cast_expression "(byte *)(param_2 + uVar5)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + uVar5)" (( "(") (binary_expression "param_2 + uVar5" (identifier "param_2") (+ "+") (identifier "uVar5")) () ")")))) (; ";")) (expression_statement "uVar5 = (uint)*pbVar6;" (assignment_expression "uVar5 = (uint)*pbVar6" (identifier "uVar5") (= "=") (binary_expression "(uint)*pbVar6" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar6"))) (; ";")) (expression_statement "*param_3 = *pbVar6;" (assignment_expression "*param_3 = *pbVar6" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (pointer_expression "*pbVar6" (* "*") (identifier "pbVar6"))) (; ";")) (if_statement "if (param_4 != (undefined4 *)0x0) {\n        param_2 = param_2 + iVar14;\n        *param_4 = *(undefined4 *)(param_2 - 4);\n      }" (if "if") (parenthesized_expression "(param_4 != (undefined4 *)0x0)" (( "(") (binary_expression "param_4 != (undefined4 *)0x0" (identifier "param_4") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        param_2 = param_2 + iVar14;\n        *param_4 = *(undefined4 *)(param_2 - 4);\n      }" ({ "{") (expression_statement "param_2 = param_2 + iVar14;" (assignment_expression "param_2 = param_2 + iVar14" (identifier "param_2") (= "=") (binary_expression "param_2 + iVar14" (identifier "param_2") (+ "+") (identifier "iVar14"))) (; ";")) (expression_statement "*param_4 = *(undefined4 *)(param_2 - 4);" (assignment_expression "*param_4 = *(undefined4 *)(param_2 - 4)" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (= "=") (pointer_expression "*(undefined4 *)(param_2 - 4)" (* "*") (cast_expression "(undefined4 *)(param_2 - 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 - 4)" (( "(") (binary_expression "param_2 - 4" (identifier "param_2") (- "-") (number_literal "4")) () ")"))))) (; ";")) (} "}"))) (expression_statement "(*(code *)(PTR_LAB_000f52c8 + 0x1a94))();" (call_expression "(*(code *)(PTR_LAB_000f52c8 + 0x1a94))()" (parenthesized_expression "(*(code *)(PTR_LAB_000f52c8 + 0x1a94))" (( "(") (pointer_expression "*(code *)(PTR_LAB_000f52c8 + 0x1a94)" (* "*") (cast_expression "(code *)(PTR_LAB_000f52c8 + 0x1a94)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_000f52c8 + 0x1a94)" (( "(") (binary_expression "PTR_LAB_000f52c8 + 0x1a94" (identifier "PTR_LAB_000f52c8") (+ "+") (number_literal "0x1a94")) () ")")))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (4 < (byte)(*param_3 - 1)) {\n        iVar3 = FUN_00044904(0x10013);\n      }" (if "if") (parenthesized_expression "(4 < (byte)(*param_3 - 1))" (( "(") (binary_expression "4 < (byte)(*param_3 - 1)" (number_literal "4") (< "<") (call_expression "(byte)(*param_3 - 1)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(*param_3 - 1)" (( "(") (binary_expression "*param_3 - 1" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (- "-") (number_literal "1")) () ")")))) () ")")) (compound_statement "{\n        iVar3 = FUN_00044904(0x10013);\n      }" ({ "{") (expression_statement "iVar3 = FUN_00044904(0x10013);" (assignment_expression "iVar3 = FUN_00044904(0x10013)" (identifier "iVar3") (= "=") (call_expression "FUN_00044904(0x10013)" (identifier "FUN_00044904") (argument_list "(0x10013)" (( "(") (number_literal "0x10013") () ")")))) (; ";")) (} "}"))) (} "}")))) (} "}"))) (if_statement "if (local_1c == *(int *)puVar1) {\n    return iVar3;\n  }" (if "if") (parenthesized_expression "(local_1c == *(int *)puVar1)" (( "(") (binary_expression "local_1c == *(int *)puVar1" (identifier "local_1c") (== "==") (pointer_expression "*(int *)puVar1" (* "*") (cast_expression "(int *)puVar1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar1")))) () ")")) (compound_statement "{\n    return iVar3;\n  }" ({ "{") (return_statement "return iVar3;" (return "return") (identifier "iVar3") (; ";")) (} "}"))) (expression_statement "iVar3 = local_1c;" (assignment_expression "iVar3 = local_1c" (identifier "iVar3") (= "=") (identifier "local_1c")) (; ";")) (expression_statement "puVar16 = PTR___stack_chk_fail_000f5540;" (assignment_expression "puVar16 = PTR___stack_chk_fail_000f5540" (identifier "puVar16") (= "=") (identifier "PTR___stack_chk_fail_000f5540")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_000f5540)();" (call_expression "(*(code *)PTR___stack_chk_fail_000f5540)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000f5540)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_000f5540" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_000f5540" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_000f5540"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puStack_58 = puVar1;" (assignment_expression "puStack_58 = puVar1" (identifier "puStack_58") (= "=") (identifier "puVar1")) (; ";")) (expression_statement "piVar15 = *(int **)(puVar16 + 0xb04f4);" (assignment_expression "piVar15 = *(int **)(puVar16 + 0xb04f4)" (identifier "piVar15") (= "=") (pointer_expression "*(int **)(puVar16 + 0xb04f4)" (* "*") (cast_expression "(int **)(puVar16 + 0xb04f4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 0xb04f4)" (( "(") (binary_expression "puVar16 + 0xb04f4" (identifier "puVar16") (+ "+") (number_literal "0xb04f4")) () ")"))))) (; ";")) (expression_statement "iStack_6c = 0;" (assignment_expression "iStack_6c = 0" (identifier "iStack_6c") (= "=") (number_literal "0")) (; ";")) (expression_statement "iStack_64 = *piVar15;" (assignment_expression "iStack_64 = *piVar15" (identifier "iStack_64") (= "=") (pointer_expression "*piVar15" (* "*") (identifier "piVar15"))) (; ";")) (expression_statement "uStack_5c = param_2;" (assignment_expression "uStack_5c = param_2" (identifier "uStack_5c") (= "=") (identifier "param_2")) (; ";")) (expression_statement "pbStack_54 = param_3;" (assignment_expression "pbStack_54 = param_3" (identifier "pbStack_54") (= "=") (identifier "param_3")) (; ";")) (expression_statement "puStack_50 = param_4;" (assignment_expression "puStack_50 = param_4" (identifier "puStack_50") (= "=") (identifier "param_4")) (; ";")) (expression_statement "uStack_4c = uVar2;" (assignment_expression "uStack_4c = uVar2" (identifier "uStack_4c") (= "=") (identifier "uVar2")) (; ";")) (if_statement "if (*(char *)(iVar3 + 0x11) == '\0') {\nLAB_00045158:\n    iVar14 = *(int *)(puVar16 + 0xb0254);\nLAB_0004515c:\n    uVar11 = 2;\n    piVar8 = &iStack_6c;\n    if (piVar7 != (int *)0x0) {\n      uVar11 = 0;\n    }\n    iVar14 = (*(code *)(iVar14 + 0x2070))(iVar3,uVar5,piVar8,uVar11);\n    if (iVar14 != 0) {\nLAB_00045180:\n      uVar2 = 0;\n      goto LAB_00045184;\n    }\n    *puVar9 = **(uint **)(iStack_6c + 0x38);\n    if (piVar7 == (int *)0x0) {\n      iVar3 = *(int *)(puVar16 + 0xb0254);\n      uVar11 = *(undefined4 *)(iStack_6c + 0x48);\n      goto LAB_000451ec;\n    }\n  }\n  else {\n    iVar14 = iVar3 + 0x24;\n    uVar12 = *(uint *)(iVar3 + 0x24);\n    iVar13 = iVar3 + 0x28;\n    uVar10 = *(uint *)(*(int *)(puVar16 + 0xb0248) + 0x4098);\n    uVar2 = uVar5;\n    do {\n      do {\n        uVar2 = uVar2 + 1;\n        uVar4 = 0;\n        if (1 < uVar2) {\n          uVar4 = FUN_0002d484(iVar14,iVar13,uVar2);\n        }\n      } while (uVar2 == uVar4);\n      if (uVar12 == 0) {\n        trap(7);\n      }\n    } while (uVar10 / uVar12 + 1 == uVar2);\n    if (*(uint *)(iVar3 + 0x30) < uVar2) goto LAB_00045158;\n    piVar8 = (int *)&cStack_6d;\n    iVar14 = FUN_00044ef0(iVar3,uVar2,piVar8,&uStack_68);\n    if (iVar14 != 0) goto LAB_00045180;\n    if (cStack_6d != '\x04') goto LAB_00045158;\n    iVar14 = *(int *)(puVar16 + 0xb0254);\n    if (uStack_68 != uVar5) goto LAB_0004515c;\n    iVar14 = 0x65;\nLAB_00045184:\n    *puVar9 = uVar2;\n    if (piVar7 == (int *)0x0) {\n      iVar3 = *(int *)(puVar16 + 0xb0254);\n      if (iStack_6c == 0) goto LAB_00045190;\n      uVar11 = *(undefined4 *)(iStack_6c + 0x48);\nLAB_000451ec:\n      (*(code *)(iVar3 + 0x1a94))(uVar11);\n      goto LAB_00045190;\n    }\n  }" (if "if") (parenthesized_expression "(*(char *)(iVar3 + 0x11) == '\0')" (( "(") (binary_expression "*(char *)(iVar3 + 0x11) == '\0'" (pointer_expression "*(char *)(iVar3 + 0x11)" (* "*") (cast_expression "(char *)(iVar3 + 0x11)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x11)" (( "(") (binary_expression "iVar3 + 0x11" (identifier "iVar3") (+ "+") (number_literal "0x11")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\nLAB_00045158:\n    iVar14 = *(int *)(puVar16 + 0xb0254);\nLAB_0004515c:\n    uVar11 = 2;\n    piVar8 = &iStack_6c;\n    if (piVar7 != (int *)0x0) {\n      uVar11 = 0;\n    }\n    iVar14 = (*(code *)(iVar14 + 0x2070))(iVar3,uVar5,piVar8,uVar11);\n    if (iVar14 != 0) {\nLAB_00045180:\n      uVar2 = 0;\n      goto LAB_00045184;\n    }\n    *puVar9 = **(uint **)(iStack_6c + 0x38);\n    if (piVar7 == (int *)0x0) {\n      iVar3 = *(int *)(puVar16 + 0xb0254);\n      uVar11 = *(undefined4 *)(iStack_6c + 0x48);\n      goto LAB_000451ec;\n    }\n  }" ({ "{") (labeled_statement "LAB_00045158:\n    iVar14 = *(int *)(puVar16 + 0xb0254);" (statement_identifier "LAB_00045158") (: ":") (expression_statement "iVar14 = *(int *)(puVar16 + 0xb0254);" (assignment_expression "iVar14 = *(int *)(puVar16 + 0xb0254)" (identifier "iVar14") (= "=") (pointer_expression "*(int *)(puVar16 + 0xb0254)" (* "*") (cast_expression "(int *)(puVar16 + 0xb0254)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0xb0254)" (( "(") (binary_expression "puVar16 + 0xb0254" (identifier "puVar16") (+ "+") (number_literal "0xb0254")) () ")"))))) (; ";"))) (labeled_statement "LAB_0004515c:\n    uVar11 = 2;" (statement_identifier "LAB_0004515c") (: ":") (expression_statement "uVar11 = 2;" (assignment_expression "uVar11 = 2" (identifier "uVar11") (= "=") (number_literal "2")) (; ";"))) (expression_statement "piVar8 = &iStack_6c;" (assignment_expression "piVar8 = &iStack_6c" (identifier "piVar8") (= "=") (pointer_expression "&iStack_6c" (& "&") (identifier "iStack_6c"))) (; ";")) (if_statement "if (piVar7 != (int *)0x0) {\n      uVar11 = 0;\n    }" (if "if") (parenthesized_expression "(piVar7 != (int *)0x0)" (( "(") (binary_expression "piVar7 != (int *)0x0" (identifier "piVar7") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      uVar11 = 0;\n    }" ({ "{") (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" (identifier "uVar11") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "iVar14 = (*(code *)(iVar14 + 0x2070))(iVar3,uVar5,piVar8,uVar11);" (assignment_expression "iVar14 = (*(code *)(iVar14 + 0x2070))(iVar3,uVar5,piVar8,uVar11)" (identifier "iVar14") (= "=") (call_expression "(*(code *)(iVar14 + 0x2070))(iVar3,uVar5,piVar8,uVar11)" (parenthesized_expression "(*(code *)(iVar14 + 0x2070))" (( "(") (pointer_expression "*(code *)(iVar14 + 0x2070)" (* "*") (cast_expression "(code *)(iVar14 + 0x2070)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + 0x2070)" (( "(") (binary_expression "iVar14 + 0x2070" (identifier "iVar14") (+ "+") (number_literal "0x2070")) () ")")))) () ")")) (argument_list "(iVar3,uVar5,piVar8,uVar11)" (( "(") (identifier "iVar3") (, ",") (identifier "uVar5") (, ",") (identifier "piVar8") (, ",") (identifier "uVar11") () ")")))) (; ";")) (if_statement "if (iVar14 != 0) {\nLAB_00045180:\n      uVar2 = 0;\n      goto LAB_00045184;\n    }" (if "if") (parenthesized_expression "(iVar14 != 0)" (( "(") (binary_expression "iVar14 != 0" (identifier "iVar14") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00045180:\n      uVar2 = 0;\n      goto LAB_00045184;\n    }" ({ "{") (labeled_statement "LAB_00045180:\n      uVar2 = 0;" (statement_identifier "LAB_00045180") (: ":") (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" (identifier "uVar2") (= "=") (number_literal "0")) (; ";"))) (goto_statement "goto LAB_00045184;" (goto "goto") (statement_identifier "LAB_00045184") (; ";")) (} "}"))) (expression_statement "*puVar9 = **(uint **)(iStack_6c + 0x38);" (assignment_expression "*puVar9 = **(uint **)(iStack_6c + 0x38)" (pointer_expression "*puVar9" (* "*") (identifier "puVar9")) (= "=") (pointer_expression "**(uint **)(iStack_6c + 0x38)" (* "*") (pointer_expression "*(uint **)(iStack_6c + 0x38)" (* "*") (cast_expression "(uint **)(iStack_6c + 0x38)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iStack_6c + 0x38)" (( "(") (binary_expression "iStack_6c + 0x38" (identifier "iStack_6c") (+ "+") (number_literal "0x38")) () ")")))))) (; ";")) (if_statement "if (piVar7 == (int *)0x0) {\n      iVar3 = *(int *)(puVar16 + 0xb0254);\n      uVar11 = *(undefined4 *)(iStack_6c + 0x48);\n      goto LAB_000451ec;\n    }" (if "if") (parenthesized_expression "(piVar7 == (int *)0x0)" (( "(") (binary_expression "piVar7 == (int *)0x0" (identifier "piVar7") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      iVar3 = *(int *)(puVar16 + 0xb0254);\n      uVar11 = *(undefined4 *)(iStack_6c + 0x48);\n      goto LAB_000451ec;\n    }" ({ "{") (expression_statement "iVar3 = *(int *)(puVar16 + 0xb0254);" (assignment_expression "iVar3 = *(int *)(puVar16 + 0xb0254)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(puVar16 + 0xb0254)" (* "*") (cast_expression "(int *)(puVar16 + 0xb0254)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0xb0254)" (( "(") (binary_expression "puVar16 + 0xb0254" (identifier "puVar16") (+ "+") (number_literal "0xb0254")) () ")"))))) (; ";")) (expression_statement "uVar11 = *(undefined4 *)(iStack_6c + 0x48);" (assignment_expression "uVar11 = *(undefined4 *)(iStack_6c + 0x48)" (identifier "uVar11") (= "=") (pointer_expression "*(undefined4 *)(iStack_6c + 0x48)" (* "*") (cast_expression "(undefined4 *)(iStack_6c + 0x48)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iStack_6c + 0x48)" (( "(") (binary_expression "iStack_6c + 0x48" (identifier "iStack_6c") (+ "+") (number_literal "0x48")) () ")"))))) (; ";")) (goto_statement "goto LAB_000451ec;" (goto "goto") (statement_identifier "LAB_000451ec") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    iVar14 = iVar3 + 0x24;\n    uVar12 = *(uint *)(iVar3 + 0x24);\n    iVar13 = iVar3 + 0x28;\n    uVar10 = *(uint *)(*(int *)(puVar16 + 0xb0248) + 0x4098);\n    uVar2 = uVar5;\n    do {\n      do {\n        uVar2 = uVar2 + 1;\n        uVar4 = 0;\n        if (1 < uVar2) {\n          uVar4 = FUN_0002d484(iVar14,iVar13,uVar2);\n        }\n      } while (uVar2 == uVar4);\n      if (uVar12 == 0) {\n        trap(7);\n      }\n    } while (uVar10 / uVar12 + 1 == uVar2);\n    if (*(uint *)(iVar3 + 0x30) < uVar2) goto LAB_00045158;\n    piVar8 = (int *)&cStack_6d;\n    iVar14 = FUN_00044ef0(iVar3,uVar2,piVar8,&uStack_68);\n    if (iVar14 != 0) goto LAB_00045180;\n    if (cStack_6d != '\x04') goto LAB_00045158;\n    iVar14 = *(int *)(puVar16 + 0xb0254);\n    if (uStack_68 != uVar5) goto LAB_0004515c;\n    iVar14 = 0x65;\nLAB_00045184:\n    *puVar9 = uVar2;\n    if (piVar7 == (int *)0x0) {\n      iVar3 = *(int *)(puVar16 + 0xb0254);\n      if (iStack_6c == 0) goto LAB_00045190;\n      uVar11 = *(undefined4 *)(iStack_6c + 0x48);\nLAB_000451ec:\n      (*(code *)(iVar3 + 0x1a94))(uVar11);\n      goto LAB_00045190;\n    }\n  }" (else "else") (compound_statement "{\n    iVar14 = iVar3 + 0x24;\n    uVar12 = *(uint *)(iVar3 + 0x24);\n    iVar13 = iVar3 + 0x28;\n    uVar10 = *(uint *)(*(int *)(puVar16 + 0xb0248) + 0x4098);\n    uVar2 = uVar5;\n    do {\n      do {\n        uVar2 = uVar2 + 1;\n        uVar4 = 0;\n        if (1 < uVar2) {\n          uVar4 = FUN_0002d484(iVar14,iVar13,uVar2);\n        }\n      } while (uVar2 == uVar4);\n      if (uVar12 == 0) {\n        trap(7);\n      }\n    } while (uVar10 / uVar12 + 1 == uVar2);\n    if (*(uint *)(iVar3 + 0x30) < uVar2) goto LAB_00045158;\n    piVar8 = (int *)&cStack_6d;\n    iVar14 = FUN_00044ef0(iVar3,uVar2,piVar8,&uStack_68);\n    if (iVar14 != 0) goto LAB_00045180;\n    if (cStack_6d != '\x04') goto LAB_00045158;\n    iVar14 = *(int *)(puVar16 + 0xb0254);\n    if (uStack_68 != uVar5) goto LAB_0004515c;\n    iVar14 = 0x65;\nLAB_00045184:\n    *puVar9 = uVar2;\n    if (piVar7 == (int *)0x0) {\n      iVar3 = *(int *)(puVar16 + 0xb0254);\n      if (iStack_6c == 0) goto LAB_00045190;\n      uVar11 = *(undefined4 *)(iStack_6c + 0x48);\nLAB_000451ec:\n      (*(code *)(iVar3 + 0x1a94))(uVar11);\n      goto LAB_00045190;\n    }\n  }" ({ "{") (expression_statement "iVar14 = iVar3 + 0x24;" (assignment_expression "iVar14 = iVar3 + 0x24" (identifier "iVar14") (= "=") (binary_expression "iVar3 + 0x24" (identifier "iVar3") (+ "+") (number_literal "0x24"))) (; ";")) (expression_statement "uVar12 = *(uint *)(iVar3 + 0x24);" (assignment_expression "uVar12 = *(uint *)(iVar3 + 0x24)" (identifier "uVar12") (= "=") (pointer_expression "*(uint *)(iVar3 + 0x24)" (* "*") (cast_expression "(uint *)(iVar3 + 0x24)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x24)" (( "(") (binary_expression "iVar3 + 0x24" (identifier "iVar3") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (expression_statement "iVar13 = iVar3 + 0x28;" (assignment_expression "iVar13 = iVar3 + 0x28" (identifier "iVar13") (= "=") (binary_expression "iVar3 + 0x28" (identifier "iVar3") (+ "+") (number_literal "0x28"))) (; ";")) (expression_statement "uVar10 = *(uint *)(*(int *)(puVar16 + 0xb0248) + 0x4098);" (assignment_expression "uVar10 = *(uint *)(*(int *)(puVar16 + 0xb0248) + 0x4098)" (identifier "uVar10") (= "=") (pointer_expression "*(uint *)(*(int *)(puVar16 + 0xb0248) + 0x4098)" (* "*") (cast_expression "(uint *)(*(int *)(puVar16 + 0xb0248) + 0x4098)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar16 + 0xb0248) + 0x4098)" (( "(") (binary_expression "*(int *)(puVar16 + 0xb0248) + 0x4098" (pointer_expression "*(int *)(puVar16 + 0xb0248)" (* "*") (cast_expression "(int *)(puVar16 + 0xb0248)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0xb0248)" (( "(") (binary_expression "puVar16 + 0xb0248" (identifier "puVar16") (+ "+") (number_literal "0xb0248")) () ")")))) (+ "+") (number_literal "0x4098")) () ")"))))) (; ";")) (expression_statement "uVar2 = uVar5;" (assignment_expression "uVar2 = uVar5" (identifier "uVar2") (= "=") (identifier "uVar5")) (; ";")) (do_statement "do {\n      do {\n        uVar2 = uVar2 + 1;\n        uVar4 = 0;\n        if (1 < uVar2) {\n          uVar4 = FUN_0002d484(iVar14,iVar13,uVar2);\n        }\n      } while (uVar2 == uVar4);\n      if (uVar12 == 0) {\n        trap(7);\n      }\n    } while (uVar10 / uVar12 + 1 == uVar2);" (do "do") (compound_statement "{\n      do {\n        uVar2 = uVar2 + 1;\n        uVar4 = 0;\n        if (1 < uVar2) {\n          uVar4 = FUN_0002d484(iVar14,iVar13,uVar2);\n        }\n      } while (uVar2 == uVar4);\n      if (uVar12 == 0) {\n        trap(7);\n      }\n    }" ({ "{") (do_statement "do {\n        uVar2 = uVar2 + 1;\n        uVar4 = 0;\n        if (1 < uVar2) {\n          uVar4 = FUN_0002d484(iVar14,iVar13,uVar2);\n        }\n      } while (uVar2 == uVar4);" (do "do") (compound_statement "{\n        uVar2 = uVar2 + 1;\n        uVar4 = 0;\n        if (1 < uVar2) {\n          uVar4 = FUN_0002d484(iVar14,iVar13,uVar2);\n        }\n      }" ({ "{") (expression_statement "uVar2 = uVar2 + 1;" (assignment_expression "uVar2 = uVar2 + 1" (identifier "uVar2") (= "=") (binary_expression "uVar2 + 1" (identifier "uVar2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" (identifier "uVar4") (= "=") (number_literal "0")) (; ";")) (if_statement "if (1 < uVar2) {\n          uVar4 = FUN_0002d484(iVar14,iVar13,uVar2);\n        }" (if "if") (parenthesized_expression "(1 < uVar2)" (( "(") (binary_expression "1 < uVar2" (number_literal "1") (< "<") (identifier "uVar2")) () ")")) (compound_statement "{\n          uVar4 = FUN_0002d484(iVar14,iVar13,uVar2);\n        }" ({ "{") (expression_statement "uVar4 = FUN_0002d484(iVar14,iVar13,uVar2);" (assignment_expression "uVar4 = FUN_0002d484(iVar14,iVar13,uVar2)" (identifier "uVar4") (= "=") (call_expression "FUN_0002d484(iVar14,iVar13,uVar2)" (identifier "FUN_0002d484") (argument_list "(iVar14,iVar13,uVar2)" (( "(") (identifier "iVar14") (, ",") (identifier "iVar13") (, ",") (identifier "uVar2") () ")")))) (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "(uVar2 == uVar4)" (( "(") (binary_expression "uVar2 == uVar4" (identifier "uVar2") (== "==") (identifier "uVar4")) () ")")) (; ";")) (if_statement "if (uVar12 == 0) {\n        trap(7);\n      }" (if "if") (parenthesized_expression "(uVar12 == 0)" (( "(") (binary_expression "uVar12 == 0" (identifier "uVar12") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        trap(7);\n      }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "(uVar10 / uVar12 + 1 == uVar2)" (( "(") (binary_expression "uVar10 / uVar12 + 1 == uVar2" (binary_expression "uVar10 / uVar12 + 1" (binary_expression "uVar10 / uVar12" (identifier "uVar10") (/ "/") (identifier "uVar12")) (+ "+") (number_literal "1")) (== "==") (identifier "uVar2")) () ")")) (; ";")) (if_statement "if (*(uint *)(iVar3 + 0x30) < uVar2) goto LAB_00045158;" (if "if") (parenthesized_expression "(*(uint *)(iVar3 + 0x30) < uVar2)" (( "(") (binary_expression "*(uint *)(iVar3 + 0x30) < uVar2" (pointer_expression "*(uint *)(iVar3 + 0x30)" (* "*") (cast_expression "(uint *)(iVar3 + 0x30)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x30)" (( "(") (binary_expression "iVar3 + 0x30" (identifier "iVar3") (+ "+") (number_literal "0x30")) () ")")))) (< "<") (identifier "uVar2")) () ")")) (goto_statement "goto LAB_00045158;" (goto "goto") (statement_identifier "LAB_00045158") (; ";"))) (expression_statement "piVar8 = (int *)&cStack_6d;" (assignment_expression "piVar8 = (int *)&cStack_6d" (identifier "piVar8") (= "=") (cast_expression "(int *)&cStack_6d" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&cStack_6d" (& "&") (identifier "cStack_6d")))) (; ";")) (expression_statement "iVar14 = FUN_00044ef0(iVar3,uVar2,piVar8,&uStack_68);" (assignment_expression "iVar14 = FUN_00044ef0(iVar3,uVar2,piVar8,&uStack_68)" (identifier "iVar14") (= "=") (call_expression "FUN_00044ef0(iVar3,uVar2,piVar8,&uStack_68)" (identifier "FUN_00044ef0") (argument_list "(iVar3,uVar2,piVar8,&uStack_68)" (( "(") (identifier "iVar3") (, ",") (identifier "uVar2") (, ",") (identifier "piVar8") (, ",") (pointer_expression "&uStack_68" (& "&") (identifier "uStack_68")) () ")")))) (; ";")) (if_statement "if (iVar14 != 0) goto LAB_00045180;" (if "if") (parenthesized_expression "(iVar14 != 0)" (( "(") (binary_expression "iVar14 != 0" (identifier "iVar14") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00045180;" (goto "goto") (statement_identifier "LAB_00045180") (; ";"))) (if_statement "if (cStack_6d != '\x04') goto LAB_00045158;" (if "if") (parenthesized_expression "(cStack_6d != '\x04')" (( "(") (binary_expression "cStack_6d != '\x04'" (identifier "cStack_6d") (!= "!=") (char_literal "'\x04'" (' "'") (escape_sequence "\x04") (' "'"))) () ")")) (goto_statement "goto LAB_00045158;" (goto "goto") (statement_identifier "LAB_00045158") (; ";"))) (expression_statement "iVar14 = *(int *)(puVar16 + 0xb0254);" (assignment_expression "iVar14 = *(int *)(puVar16 + 0xb0254)" (identifier "iVar14") (= "=") (pointer_expression "*(int *)(puVar16 + 0xb0254)" (* "*") (cast_expression "(int *)(puVar16 + 0xb0254)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0xb0254)" (( "(") (binary_expression "puVar16 + 0xb0254" (identifier "puVar16") (+ "+") (number_literal "0xb0254")) () ")"))))) (; ";")) (if_statement "if (uStack_68 != uVar5) goto LAB_0004515c;" (if "if") (parenthesized_expression "(uStack_68 != uVar5)" (( "(") (binary_expression "uStack_68 != uVar5" (identifier "uStack_68") (!= "!=") (identifier "uVar5")) () ")")) (goto_statement "goto LAB_0004515c;" (goto "goto") (statement_identifier "LAB_0004515c") (; ";"))) (expression_statement "iVar14 = 0x65;" (assignment_expression "iVar14 = 0x65" (identifier "iVar14") (= "=") (number_literal "0x65")) (; ";")) (labeled_statement "LAB_00045184:\n    *puVar9 = uVar2;" (statement_identifier "LAB_00045184") (: ":") (expression_statement "*puVar9 = uVar2;" (assignment_expression "*puVar9 = uVar2" (pointer_expression "*puVar9" (* "*") (identifier "puVar9")) (= "=") (identifier "uVar2")) (; ";"))) (if_statement "if (piVar7 == (int *)0x0) {\n      iVar3 = *(int *)(puVar16 + 0xb0254);\n      if (iStack_6c == 0) goto LAB_00045190;\n      uVar11 = *(undefined4 *)(iStack_6c + 0x48);\nLAB_000451ec:\n      (*(code *)(iVar3 + 0x1a94))(uVar11);\n      goto LAB_00045190;\n    }" (if "if") (parenthesized_expression "(piVar7 == (int *)0x0)" (( "(") (binary_expression "piVar7 == (int *)0x0" (identifier "piVar7") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      iVar3 = *(int *)(puVar16 + 0xb0254);\n      if (iStack_6c == 0) goto LAB_00045190;\n      uVar11 = *(undefined4 *)(iStack_6c + 0x48);\nLAB_000451ec:\n      (*(code *)(iVar3 + 0x1a94))(uVar11);\n      goto LAB_00045190;\n    }" ({ "{") (expression_statement "iVar3 = *(int *)(puVar16 + 0xb0254);" (assignment_expression "iVar3 = *(int *)(puVar16 + 0xb0254)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(puVar16 + 0xb0254)" (* "*") (cast_expression "(int *)(puVar16 + 0xb0254)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0xb0254)" (( "(") (binary_expression "puVar16 + 0xb0254" (identifier "puVar16") (+ "+") (number_literal "0xb0254")) () ")"))))) (; ";")) (if_statement "if (iStack_6c == 0) goto LAB_00045190;" (if "if") (parenthesized_expression "(iStack_6c == 0)" (( "(") (binary_expression "iStack_6c == 0" (identifier "iStack_6c") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00045190;" (goto "goto") (statement_identifier "LAB_00045190") (; ";"))) (expression_statement "uVar11 = *(undefined4 *)(iStack_6c + 0x48);" (assignment_expression "uVar11 = *(undefined4 *)(iStack_6c + 0x48)" (identifier "uVar11") (= "=") (pointer_expression "*(undefined4 *)(iStack_6c + 0x48)" (* "*") (cast_expression "(undefined4 *)(iStack_6c + 0x48)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iStack_6c + 0x48)" (( "(") (binary_expression "iStack_6c + 0x48" (identifier "iStack_6c") (+ "+") (number_literal "0x48")) () ")"))))) (; ";")) (labeled_statement "LAB_000451ec:\n      (*(code *)(iVar3 + 0x1a94))(uVar11);" (statement_identifier "LAB_000451ec") (: ":") (expression_statement "(*(code *)(iVar3 + 0x1a94))(uVar11);" (call_expression "(*(code *)(iVar3 + 0x1a94))(uVar11)" (parenthesized_expression "(*(code *)(iVar3 + 0x1a94))" (( "(") (pointer_expression "*(code *)(iVar3 + 0x1a94)" (* "*") (cast_expression "(code *)(iVar3 + 0x1a94)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x1a94)" (( "(") (binary_expression "iVar3 + 0x1a94" (identifier "iVar3") (+ "+") (number_literal "0x1a94")) () ")")))) () ")")) (argument_list "(uVar11)" (( "(") (identifier "uVar11") () ")"))) (; ";"))) (goto_statement "goto LAB_00045190;" (goto "goto") (statement_identifier "LAB_00045190") (; ";")) (} "}"))) (} "}")))) (expression_statement "*piVar7 = iStack_6c;" (assignment_expression "*piVar7 = iStack_6c" (pointer_expression "*piVar7" (* "*") (identifier "piVar7")) (= "=") (identifier "iStack_6c")) (; ";")) (labeled_statement "LAB_00045190:\n  if (iVar14 == 0x65) {\n    iVar14 = 0;\n  }" (statement_identifier "LAB_00045190") (: ":") (if_statement "if (iVar14 == 0x65) {\n    iVar14 = 0;\n  }" (if "if") (parenthesized_expression "(iVar14 == 0x65)" (( "(") (binary_expression "iVar14 == 0x65" (identifier "iVar14") (== "==") (number_literal "0x65")) () ")")) (compound_statement "{\n    iVar14 = 0;\n  }" ({ "{") (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" (identifier "iVar14") (= "=") (number_literal "0")) (; ";")) (} "}")))) (if_statement "if (iStack_64 == *piVar15) {\n    return iVar14;\n  }" (if "if") (parenthesized_expression "(iStack_64 == *piVar15)" (( "(") (binary_expression "iStack_64 == *piVar15" (identifier "iStack_64") (== "==") (pointer_expression "*piVar15" (* "*") (identifier "piVar15"))) () ")")) (compound_statement "{\n    return iVar14;\n  }" ({ "{") (return_statement "return iVar14;" (return "return") (identifier "iVar14") (; ";")) (} "}"))) (expression_statement "pcVar17 = *(code **)(puVar16 + 0xb04cc);" (assignment_expression "pcVar17 = *(code **)(puVar16 + 0xb04cc)" (identifier "pcVar17") (= "=") (pointer_expression "*(code **)(puVar16 + 0xb04cc)" (* "*") (cast_expression "(code **)(puVar16 + 0xb04cc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 0xb04cc)" (( "(") (binary_expression "puVar16 + 0xb04cc" (identifier "puVar16") (+ "+") (number_literal "0xb04cc")) () ")"))))) (; ";")) (expression_statement "(*pcVar17)();" (call_expression "(*pcVar17)()" (parenthesized_expression "(*pcVar17)" (( "(") (pointer_expression "*pcVar17" (* "*") (identifier "pcVar17")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar3 = (*(code *)(*(int *)(pcVar17 + 0xb0058) + 0x2070))();" (assignment_expression "iVar3 = (*(code *)(*(int *)(pcVar17 + 0xb0058) + 0x2070))()" (identifier "iVar3") (= "=") (call_expression "(*(code *)(*(int *)(pcVar17 + 0xb0058) + 0x2070))()" (parenthesized_expression "(*(code *)(*(int *)(pcVar17 + 0xb0058) + 0x2070))" (( "(") (pointer_expression "*(code *)(*(int *)(pcVar17 + 0xb0058) + 0x2070)" (* "*") (cast_expression "(code *)(*(int *)(pcVar17 + 0xb0058) + 0x2070)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(pcVar17 + 0xb0058) + 0x2070)" (( "(") (binary_expression "*(int *)(pcVar17 + 0xb0058) + 0x2070" (pointer_expression "*(int *)(pcVar17 + 0xb0058)" (* "*") (cast_expression "(int *)(pcVar17 + 0xb0058)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar17 + 0xb0058)" (( "(") (binary_expression "pcVar17 + 0xb0058" (identifier "pcVar17") (+ "+") (number_literal "0xb0058")) () ")")))) (+ "+") (number_literal "0x2070")) () ")")))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar3 != 0) {\n    *piVar8 = 0;\n    return iVar3;\n  }" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    *piVar8 = 0;\n    return iVar3;\n  }" ({ "{") (expression_statement "*piVar8 = 0;" (assignment_expression "*piVar8 = 0" (pointer_expression "*piVar8" (* "*") (identifier "piVar8")) (= "=") (number_literal "0")) (; ";")) (return_statement "return iVar3;" (return "return") (identifier "iVar3") (; ";")) (} "}"))) (if_statement "if (*(short *)(*(int *)((undefined1 *)*piVar8 + 0x48) + 0x1e) < 2) {\n    *(undefined1 *)*piVar8 = 0;\n    return 0;\n  }" (if "if") (parenthesized_expression "(*(short *)(*(int *)((undefined1 *)*piVar8 + 0x48) + 0x1e) < 2)" (( "(") (binary_expression "*(short *)(*(int *)((undefined1 *)*piVar8 + 0x48) + 0x1e) < 2" (pointer_expression "*(short *)(*(int *)((undefined1 *)*piVar8 + 0x48) + 0x1e)" (* "*") (cast_expression "(short *)(*(int *)((undefined1 *)*piVar8 + 0x48) + 0x1e)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)((undefined1 *)*piVar8 + 0x48) + 0x1e)" (( "(") (binary_expression "*(int *)((undefined1 *)*piVar8 + 0x48) + 0x1e" (pointer_expression "*(int *)((undefined1 *)*piVar8 + 0x48)" (* "*") (cast_expression "(int *)((undefined1 *)*piVar8 + 0x48)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((undefined1 *)*piVar8 + 0x48)" (( "(") (binary_expression "(undefined1 *)*piVar8 + 0x48" (cast_expression "(undefined1 *)*piVar8" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar8" (* "*") (identifier "piVar8"))) (+ "+") (number_literal "0x48")) () ")")))) (+ "+") (number_literal "0x1e")) () ")")))) (< "<") (number_literal "2")) () ")")) (compound_statement "{\n    *(undefined1 *)*piVar8 = 0;\n    return 0;\n  }" ({ "{") (expression_statement "*(undefined1 *)*piVar8 = 0;" (assignment_expression "*(undefined1 *)*piVar8 = 0" (pointer_expression "*(undefined1 *)*piVar8" (* "*") (cast_expression "(undefined1 *)*piVar8" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar8" (* "*") (identifier "piVar8")))) (= "=") (number_literal "0")) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "(*(code *)(*(int *)(pcVar17 + 0xb0058) + 0x1a94))();" (call_expression "(*(code *)(*(int *)(pcVar17 + 0xb0058) + 0x1a94))()" (parenthesized_expression "(*(code *)(*(int *)(pcVar17 + 0xb0058) + 0x1a94))" (( "(") (pointer_expression "*(code *)(*(int *)(pcVar17 + 0xb0058) + 0x1a94)" (* "*") (cast_expression "(code *)(*(int *)(pcVar17 + 0xb0058) + 0x1a94)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(pcVar17 + 0xb0058) + 0x1a94)" (( "(") (binary_expression "*(int *)(pcVar17 + 0xb0058) + 0x1a94" (pointer_expression "*(int *)(pcVar17 + 0xb0058)" (* "*") (cast_expression "(int *)(pcVar17 + 0xb0058)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar17 + 0xb0058)" (( "(") (binary_expression "pcVar17 + 0xb0058" (identifier "pcVar17") (+ "+") (number_literal "0xb0058")) () ")")))) (+ "+") (number_literal "0x1a94")) () ")")))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*piVar8 = 0;" (assignment_expression "*piVar8 = 0" (pointer_expression "*piVar8" (* "*") (identifier "piVar8")) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar3 = FUN_00044904(0x104bb);" (assignment_expression "iVar3 = FUN_00044904(0x104bb)" (identifier "iVar3") (= "=") (call_expression "FUN_00044904(0x104bb)" (identifier "FUN_00044904") (argument_list "(0x104bb)" (( "(") (number_literal "0x104bb") () ")")))) (; ";")) (return_statement "return iVar3;" (return "return") (identifier "iVar3") (; ";")) (} "}")))

int function_1(type_1 *pBt,type_2 var_1,type_3 *pEType,type_2 *var_8)

{
  type_4 *puVar1;
  type_1 *var_12;
  int var_3;
  type_1 *var_13;
  type_1 *pBt_00;
  type_5 *pPVar5;
  type_1 *var_19;
  type_6 *var_7;
  type_7 **var_11;
  type_7 **pEType_00;
  type_8 *puVar9;
  type_9 var_16;
  type_8 uVar11;
  type_10 var_14;
  type_10 *pgno;
  type_1 *pBt_01;
  int *piVar13;
  type_4 *var_10;
  int var_4;
  type_11 *var_22;
  char var_17;
  type_7 *var_20;
  type_1 *var_18;
  int var_21;
  void *pvStack_5c;
  type_4 *puStack_58;
  type_3 *puStack_54;
  type_2 *pPStack_50;
  type_1 *pBStack_4c;
  type_7 *pDbPage;
  type_1 *var_9;
  
  puVar1 = PTR___stack_chk_guard_000f5568;
  var_9 = *(type_1 **)PTR___stack_chk_guard_000f5568;
  if (var_1 < 2) {
    var_12 = (type_1 *)0x0;
  }
  else {
    var_12 = (type_1 *)
             var_2((type_1 *)&pBt->pageSize,(type_2)&pBt->usableSize,(type_1 *)var_1);
  }
  puVar9 = (type_8 *)0x0;
  var_11 = &pDbPage;
  var_19 = var_12;
  var_3 = (*pBt->pPager->xGet)(pBt->pPager,(type_2)var_12,var_11,0);
  if (var_3 == 0) {
    var_1 = var_1 - (int)var_12;
    var_4 = var_1 * 5;
    var_19 = (type_1 *)(var_4 + -5);
    if ((int)var_19 < 0) {
      (*(type_11 *)(var_5 + 0x1a94))();
      var_3 = var_6(0x1000b);
    }
    else {
      var_1 = (type_2)pDbPage->pData;
      var_7 = (type_6 *)(var_1 + (int)var_19);
      var_19 = (type_1 *)(type_9)*var_7;
      *pEType = *var_7;
      if (var_8 != (type_2 *)0x0) {
        var_1 = var_1 + var_4;
        *var_8 = *(type_2 *)(var_1 - 4);
      }
      (*(type_11 *)(var_5 + 0x1a94))();
      if (4 < (type_6)(*pEType - 1)) {
        var_3 = var_6(0x10013);
      }
    }
  }
  if (var_9 == *(type_1 **)puVar1) {
    return var_3;
  }
  pBt_00 = var_9;
  var_10 = PTR___stack_chk_fail_000f5540;
  (*(type_11 *)PTR___stack_chk_fail_000f5540)();
  puStack_58 = puVar1;
  piVar13 = *(int **)(var_10 + 0xb04f4);
  var_20 = (type_7 *)0x0;
  var_21 = *piVar13;
  pvStack_5c = (void *)var_1;
  puStack_54 = pEType;
  pPStack_50 = var_8;
  pBStack_4c = var_12;
  if (pBt_00->autoVacuum == '\0') {
LAB_00045158:
    var_3 = *(int *)(var_10 + 0xb0254);
LAB_0004515c:
    uVar11 = 2;
    pEType_00 = &var_20;
    if (var_11 != (type_7 **)0x0) {
      uVar11 = 0;
    }
    var_3 = (*(type_11 *)(var_3 + 0x2070))(pBt_00,var_19,pEType_00,uVar11);
    if (var_3 != 0) {
LAB_00045180:
      var_12 = (type_1 *)0x0;
      goto LAB_00045184;
    }
    *puVar9 = (var_20[1].pDirty)->pPage;
    if (var_11 == (type_7 **)0x0) {
      var_4 = *(int *)(var_10 + 0xb0254);
      pPVar5 = var_20[1].pDirtyNext;
      goto LAB_000451ec;
    }
  }
  else {
    pBt_01 = (type_1 *)&pBt_00->pageSize;
    var_14 = pBt_00->pageSize;
    pgno = &pBt_00->usableSize;
    var_16 = *(type_9 *)(*(int *)(var_10 + 0xb0248) + 0x4098);
    var_12 = var_19;
    do {
      do {
        var_12 = (type_1 *)((int)&var_12->pPager + 1);
        var_13 = (type_1 *)0x0;
        if ((type_1 *)0x1 < var_12) {
          var_13 = (type_1 *)var_2(pBt_01,(type_2)pgno,var_12);
        }
      } while (var_12 == var_13);
      if (var_14 == 0) {
        var_15(7);
      }
    } while ((type_1 *)(var_16 / var_14 + 1) == var_12);
    if ((type_1 *)pBt_00->nPage < var_12) goto LAB_00045158;
    pEType_00 = (type_7 **)&var_17;
    var_3 = function_1(pBt_00,(type_2)var_12,(type_3 *)pEType_00,(type_2 *)&var_18);
    if (var_3 != 0) goto LAB_00045180;
    if (var_17 != '\x04') goto LAB_00045158;
    var_3 = *(int *)(var_10 + 0xb0254);
    if (var_18 != var_19) goto LAB_0004515c;
    var_3 = 0x65;
LAB_00045184:
    *puVar9 = var_12;
    if (var_11 == (type_7 **)0x0) {
      var_4 = *(int *)(var_10 + 0xb0254);
      if (var_20 == (type_7 *)0x0) goto LAB_00045190;
      pPVar5 = var_20[1].pDirtyNext;
LAB_000451ec:
      (*(type_11 *)(var_4 + 0x1a94))(pPVar5);
      goto LAB_00045190;
    }
  }
  *var_11 = var_20;
LAB_00045190:
  if (var_3 == 0x65) {
    var_3 = 0;
  }
  if (var_21 == *piVar13) {
    return var_3;
  }
  var_22 = *(type_11 **)(var_10 + 0xb04cc);
  (*var_22)();
  var_3 = (*(type_11 *)(*(int *)(var_22 + 0xb0058) + 0x2070))();
  if (var_3 != 0) {
    *pEType_00 = (type_7 *)0x0;
    return var_3;
  }
  if (((*pEType_00)[1].pDirtyNext)->nRef < 2) {
    *(type_12 *)&(*pEType_00)->pPage = 0;
    return 0;
  }
  (*(type_11 *)(*(int *)(var_22 + 0xb0058) + 0x1a94))();
  *pEType_00 = (type_7 *)0x0;
  var_3 = var_6(0x104bb);
  return var_3;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) 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: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator 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: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator 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: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (binary_expression left: (identifier) right: (number_literal)) (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (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)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (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)))))) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) alternative: (else_clause (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: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (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 (call_expression function: (parenthesized_expression (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)))))) arguments: (argument_list))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))))))))) (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: (identifier))))) consequence: (compound_statement (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (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))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (labeled_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)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (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)))))) arguments: (argument_list (identifier) (identifier) (identifier) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (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: (identifier) right: (number_literal)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (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)) 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: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (goto_statement label: (statement_identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (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: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (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: (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: (identifier) right: (identifier))) (do_statement body: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal))))))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)) right: (identifier)))) (if_statement condition: (parenthesized_expression (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: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (pointer_expression argument: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (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)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (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)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (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))))))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (parenthesized_expression (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)))))) arguments: (argument_list (identifier))))) (goto_statement label: (statement_identifier))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (return_statement (identifier)))) (if_statement condition: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))) right: (number_literal))))) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))) right: (number_literal))) (return_statement (number_literal)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))) arguments: (argument_list))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal))))) (return_statement (identifier)))))

int MASKED(int *param_1,uint param_2,byte *param_3,undefined4 *param_4)

{
  undefined *puVar1;
  uint uVar2;
  int iVar3;
  uint uVar4;
  uint uVar5;
  byte *pbVar6;
  int *piVar7;
  int *piVar8;
  uint *puVar9;
  uint uVar10;
  undefined4 uVar11;
  uint uVar12;
  int iVar13;
  int iVar14;
  int *piVar15;
  undefined *puVar16;
  code *pcVar17;
  char cStack_6d;
  int iStack_6c;
  uint uStack_68;
  int iStack_64;
  uint uStack_5c;
  undefined *puStack_58;
  byte *pbStack_54;
  undefined4 *puStack_50;
  uint uStack_4c;
  int local_20;
  int local_1c;
  
  puVar1 = PTR___stack_chk_guard_000f5568;
  local_1c = *(int *)PTR___stack_chk_guard_000f5568;
  if (param_2 < 2) {
    uVar2 = 0;
  }
  else {
    uVar2 = FUN_0002d484(param_1 + 9,param_1 + 10,param_2);
  }
  puVar9 = (uint *)0x0;
  piVar7 = &local_20;
  uVar5 = uVar2;
  iVar3 = (**(code **)(*param_1 + 0xcc))(*param_1);
  if (iVar3 == 0) {
    param_2 = param_2 - uVar2;
    iVar14 = param_2 * 5;
    uVar5 = iVar14 - 5;
    if ((int)uVar5 < 0) {
      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();
      iVar3 = FUN_00044904(0x1000b);
    }
    else {
      param_2 = *(uint *)(local_20 + 4);
      pbVar6 = (byte *)(param_2 + uVar5);
      uVar5 = (uint)*pbVar6;
      *param_3 = *pbVar6;
      if (param_4 != (undefined4 *)0x0) {
        param_2 = param_2 + iVar14;
        *param_4 = *(undefined4 *)(param_2 - 4);
      }
      (*(code *)(PTR_LAB_000f52c8 + 0x1a94))();
      if (4 < (byte)(*param_3 - 1)) {
        iVar3 = FUN_00044904(0x10013);
      }
    }
  }
  if (local_1c == *(int *)puVar1) {
    return iVar3;
  }
  iVar3 = local_1c;
  puVar16 = PTR___stack_chk_fail_000f5540;
  (*(code *)PTR___stack_chk_fail_000f5540)();
  puStack_58 = puVar1;
  piVar15 = *(int **)(puVar16 + 0xb04f4);
  iStack_6c = 0;
  iStack_64 = *piVar15;
  uStack_5c = param_2;
  pbStack_54 = param_3;
  puStack_50 = param_4;
  uStack_4c = uVar2;
  if (*(char *)(iVar3 + 0x11) == '\0') {
LAB_00045158:
    iVar14 = *(int *)(puVar16 + 0xb0254);
LAB_0004515c:
    uVar11 = 2;
    piVar8 = &iStack_6c;
    if (piVar7 != (int *)0x0) {
      uVar11 = 0;
    }
    iVar14 = (*(code *)(iVar14 + 0x2070))(iVar3,uVar5,piVar8,uVar11);
    if (iVar14 != 0) {
LAB_00045180:
      uVar2 = 0;
      goto LAB_00045184;
    }
    *puVar9 = **(uint **)(iStack_6c + 0x38);
    if (piVar7 == (int *)0x0) {
      iVar3 = *(int *)(puVar16 + 0xb0254);
      uVar11 = *(undefined4 *)(iStack_6c + 0x48);
      goto LAB_000451ec;
    }
  }
  else {
    iVar14 = iVar3 + 0x24;
    uVar12 = *(uint *)(iVar3 + 0x24);
    iVar13 = iVar3 + 0x28;
    uVar10 = *(uint *)(*(int *)(puVar16 + 0xb0248) + 0x4098);
    uVar2 = uVar5;
    do {
      do {
        uVar2 = uVar2 + 1;
        uVar4 = 0;
        if (1 < uVar2) {
          uVar4 = FUN_0002d484(iVar14,iVar13,uVar2);
        }
      } while (uVar2 == uVar4);
      if (uVar12 == 0) {
        trap(7);
      }
    } while (uVar10 / uVar12 + 1 == uVar2);
    if (*(uint *)(iVar3 + 0x30) < uVar2) goto LAB_00045158;
    piVar8 = (int *)&cStack_6d;
    iVar14 = MASKED(iVar3,uVar2,piVar8,&uStack_68);
    if (iVar14 != 0) goto LAB_00045180;
    if (cStack_6d != '\x04') goto LAB_00045158;
    iVar14 = *(int *)(puVar16 + 0xb0254);
    if (uStack_68 != uVar5) goto LAB_0004515c;
    iVar14 = 0x65;
LAB_00045184:
    *puVar9 = uVar2;
    if (piVar7 == (int *)0x0) {
      iVar3 = *(int *)(puVar16 + 0xb0254);
      if (iStack_6c == 0) goto LAB_00045190;
      uVar11 = *(undefined4 *)(iStack_6c + 0x48);
LAB_000451ec:
      (*(code *)(iVar3 + 0x1a94))(uVar11);
      goto LAB_00045190;
    }
  }
  *piVar7 = iStack_6c;
LAB_00045190:
  if (iVar14 == 0x65) {
    iVar14 = 0;
  }
  if (iStack_64 == *piVar15) {
    return iVar14;
  }
  pcVar17 = *(code **)(puVar16 + 0xb04cc);
  (*pcVar17)();
  iVar3 = (*(code *)(*(int *)(pcVar17 + 0xb0058) + 0x2070))();
  if (iVar3 != 0) {
    *piVar8 = 0;
    return iVar3;
  }
  if (*(short *)(*(int *)((undefined1 *)*piVar8 + 0x48) + 0x1e) < 2) {
    *(undefined1 *)*piVar8 = 0;
    return 0;
  }
  (*(code *)(*(int *)(pcVar17 + 0xb0058) + 0x1a94))();
  *piVar8 = 0;
  iVar3 = FUN_00044904(0x104bb);
  return iVar3;
}

