
void pagerFixMaplimit(Pager *pPager)

{
  undefined *puVar1;
  sqlite3_io_methods *psVar2;
  u8 uVar3;
  sqlite3_int64 sz;
  int iStack_c;
  
  puVar1 = PTR___stack_chk_guard_0015ba2c;
  uVar3 = '\x01';
  sz._0_4_ = *(int *)&pPager->szMmap;
  sz._4_4_ = (int)pPager->szMmap;
  iStack_c = *(int *)PTR___stack_chk_guard_0015ba2c;
  if ((sz._0_4_ < 1) && ((sz._0_4_ != 0 || (sz._4_4_ == 0)))) {
    uVar3 = '\0';
  }
  pPager->bUseFetch = uVar3;
  if (pPager->errCode == 0) {
    if ((sz._0_4_ < 1) && ((sz._0_4_ != 0 || (sz._4_4_ == 0)))) {
      pPager->xGet = (_func_int_Pager_ptr_Pgno_DbPage_ptr_ptr_int *)(PTR_LAB_0015b704 + -0xe84);
    }
    else {
      pPager->xGet = (_func_int_Pager_ptr_Pgno_DbPage_ptr_ptr_int *)(PTR_LAB_0015b704 + -0xa94);
    }
  }
  else {
    pPager->xGet = (_func_int_Pager_ptr_Pgno_DbPage_ptr_ptr_int *)(PTR_LAB_0015b65c + -0x1cc8);
  }
  psVar2 = pPager->fd->pMethods;
  if (psVar2 != (sqlite3_io_methods *)0x0) {
    (*psVar2->xFileControl)(pPager->fd,0x12,&sz);
  }
  if (iStack_c == *(int *)puVar1) {
    return;
  }
  (*(code *)PTR___stack_chk_fail_0015ba10)();
  return;
}



/* WARNING: Removing unreachable block (ram,0x0004a8e4) */

int FUN_0004a5b8(int param_1)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  uint uVar4;
  int *piVar5;
  undefined4 *puVar6;
  char cVar7;
  int iVar8;
  int iVar9;
  int *piVar10;
  int *piVar11;
  undefined *puVar12;
  int iVar13;
  undefined4 *puVar14;
  int local_18;
  int local_14;
  int local_c;
  
  puVar12 = PTR___stack_chk_guard_0015ba2c;
  puVar6 = (undefined4 *)0x1;
  local_18 = *(int *)(param_1 + 0x80);
  local_14 = *(int *)(param_1 + 0x84);
  local_c = *(int *)PTR___stack_chk_guard_0015ba2c;
  if ((local_18 < 1) && ((local_18 != 0 || (local_14 == 0)))) {
    puVar6 = (undefined4 *)0x0;
  }
  *(char *)(param_1 + 0x16) = (char)puVar6;
  if (*(int *)(param_1 + 0x28) == 0) {
    if ((local_18 < 1) && ((local_18 != 0 || (local_14 == 0)))) {
      *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b704 + -0xe84;
    }
    else {
      *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b704 + -0xa94;
    }
  }
  else {
    *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b65c + -0x1cc8;
  }
  piVar5 = *(int **)(param_1 + 0x3c);
  if (*piVar5 != 0) {
    puVar6 = (undefined4 *)0x12;
    (**(code **)(*piVar5 + 0x28))(piVar5,0x12,&local_18);
  }
  if (local_c == *(int *)puVar12) {
    return *(int *)puVar12;
  }
  puVar12 = PTR___stack_chk_fail_0015ba10;
  (*(code *)PTR___stack_chk_fail_0015ba10)();
  piVar10 = *(int **)(puVar12 + 0x111384);
  cVar7 = *(char *)(piVar5 + 1);
  iVar1 = *piVar10;
  if ((cVar7 != '\0') &&
     ((*(byte *)((int)piVar5 + 0x11) < 4 || (*(byte *)((int)piVar5 + 0x11) == 5)))) {
    iVar2 = FUN_00032f88(piVar5);
    if (iVar2 != 0) goto LAB_0004a818;
    cVar7 = *(char *)(piVar5 + 1);
  }
  iVar2 = *piVar5;
  iVar13 = *(int *)(puVar12 + 0x111030);
  piVar5[0x36] = 0;
  piVar11 = (int *)piVar5[0xf];
  puVar14 = (undefined4 *)piVar5[0x37];
  iVar9 = piVar5[0x29];
  puVar6 = (undefined4 *)(*(int *)(iVar2 + 4) + 0x78);
  iVar8 = piVar5[0x28];
  piVar3 = (int *)(*(code *)(iVar13 + -0x5aa4))(0);
  if (piVar3 == (int *)0x0) {
    iVar2 = 7;
  }
  else {
    *piVar3 = iVar2;
    piVar3[1] = (int)piVar11;
    piVar3[2] = (int)(piVar3 + 0x1e);
    piVar3[5] = iVar9;
    *(undefined2 *)(piVar3 + 10) = 0xffff;
    piVar3[4] = iVar8;
    piVar3[0x1b] = (int)puVar14;
    *(undefined2 *)(piVar3 + 0xc) = 0x101;
    if (cVar7 != '\0') {
      cVar7 = '\x02';
    }
    *(char *)((int)piVar3 + 0x2b) = cVar7;
    iVar2 = (**(code **)(iVar2 + 0x18))(iVar2);
    if (iVar2 == 0) {
      uVar4 = (**(code **)(*piVar11 + 0x30))(piVar11);
      if ((uVar4 & 0x400) != 0) {
        *(undefined1 *)(piVar3 + 0xc) = 0;
      }
      if ((uVar4 & 0x1000) != 0) {
        *(undefined1 *)((int)piVar3 + 0x31) = 0;
      }
      piVar5[0x36] = (int)piVar3;
      puVar6 = puVar14;
    }
    else {
      puVar6 = (undefined4 *)0x0;
      FUN_00033348(piVar3);
      piVar11 = (int *)piVar3[2];
      if (*piVar11 != 0) {
        (**(code **)(*piVar11 + 4))(piVar11);
        *piVar11 = 0;
      }
      (**(code **)(puVar12 + 0x110f78))(piVar3);
    }
  }
LAB_0004a818:
  if ((*(int **)piVar5[0xf] != (int *)0x0) && (2 < **(int **)piVar5[0xf])) {
    FUN_0004a5b8(piVar5);
  }
  if (iVar1 == *piVar10) {
    return iVar2;
  }
  (**(code **)(puVar12 + 0x111368))();
  if ((*(char *)(iVar1 + 0xc) != '\0') || (*(int *)(iVar1 + 0xd8) != 0)) {
    *puVar6 = 1;
    return 0;
  }
  if (*(char *)(iVar1 + 0xd) != '\0') {
    return 0xe;
  }
  if (*(char *)(iVar1 + 4) == '\0') {
    if (*(int *)**(undefined4 **)(iVar1 + 0x3c) < 2) {
      return 0xe;
    }
    if (((int *)**(undefined4 **)(iVar1 + 0x3c))[0xd] == 0) {
      return 0xe;
    }
  }
  piVar5 = *(int **)(iVar1 + 0x40);
  if (*piVar5 != 0) {
    (**(code **)(*piVar5 + 4))(piVar5);
    *piVar5 = 0;
  }
  iVar2 = FUN_0004a6a8(iVar1);
  if (iVar2 == 0) {
    *(undefined1 *)(iVar1 + 0x10) = 0;
    *(undefined1 *)(iVar1 + 5) = 5;
  }
  return iVar2;
}


lui gp,0x12
addiu gp,gp,-0x7008
addu gp,gp,t9
addiu sp,sp,-0x30
li a1,0x1
sw s0,0x28(sp)
sw gp,0x10(sp)
sw ra,0x2c(sp)
lw s0,-0x7b84(gp)
lw v0,0x80(a0)
lw v1,0x84(a0)
lw a2,0x0(s0)
sw v0,0x18(sp)
sw v1,0x1c(sp)
sw a2,0x24(sp)
blez v0,0x0004a66c
_nop
lw a2,0x28(a0)
beq a2,zero,0x0004a650
_sb a1,0x16(a0)
lw v0,-0x7f54(gp)
addiu v0,v0,-0x1cc8
sw v0,0xcc(a0)
lw a0,0x3c(a0)
lw v0,0x0(a0)
beq v0,zero,0x0004a634
_addiu a2,sp,0x18
lw t9,0x28(v0)
jalr t9
_li a1,0x12
lw gp,0x10(sp)
lw v1,0x24(sp)
lw v0,0x0(s0)
bne v1,v0,0x0004a69c
_lw ra,0x2c(sp)
lw s0,0x28(sp)
jr ra
_addiu sp,sp,0x30
bgtz v0,0x0004a68c
_nop
beq v0,zero,0x0004a684
_lw v0,-0x7eac(gp)
addiu v0,v0,-0xe84
b 0x0004a614
_sw v0,0xcc(a0)
bne v0,zero,0x0004a67c
_nop
bne v1,zero,0x0004a5fc
_nop
b 0x0004a5fc
_or a1,zero,zero
beq v1,zero,0x0004a660
_nop
lw v0,-0x7eac(gp)
addiu v0,v0,-0xa94
b 0x0004a614
_sw v0,0xcc(a0)
lw t9,-0x7ba0(gp)
jalr t9
_nop
(translation_unit "/* WARNING: Removing unreachable block (ram,0x0004a8e4) */\n\nint FUN_0004a5b8(int param_1)\n\n{\n  int iVar1;\n  int iVar2;\n  int *piVar3;\n  uint uVar4;\n  int *piVar5;\n  undefined4 *puVar6;\n  char cVar7;\n  int iVar8;\n  int iVar9;\n  int *piVar10;\n  int *piVar11;\n  undefined *puVar12;\n  int iVar13;\n  undefined4 *puVar14;\n  int local_18;\n  int local_14;\n  int local_c;\n  \n  puVar12 = PTR___stack_chk_guard_0015ba2c;\n  puVar6 = (undefined4 *)0x1;\n  local_18 = *(int *)(param_1 + 0x80);\n  local_14 = *(int *)(param_1 + 0x84);\n  local_c = *(int *)PTR___stack_chk_guard_0015ba2c;\n  if ((local_18 < 1) && ((local_18 != 0 || (local_14 == 0)))) {\n    puVar6 = (undefined4 *)0x0;\n  }\n  *(char *)(param_1 + 0x16) = (char)puVar6;\n  if (*(int *)(param_1 + 0x28) == 0) {\n    if ((local_18 < 1) && ((local_18 != 0 || (local_14 == 0)))) {\n      *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b704 + -0xe84;\n    }\n    else {\n      *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b704 + -0xa94;\n    }\n  }\n  else {\n    *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b65c + -0x1cc8;\n  }\n  piVar5 = *(int **)(param_1 + 0x3c);\n  if (*piVar5 != 0) {\n    puVar6 = (undefined4 *)0x12;\n    (**(code **)(*piVar5 + 0x28))(piVar5,0x12,&local_18);\n  }\n  if (local_c == *(int *)puVar12) {\n    return *(int *)puVar12;\n  }\n  puVar12 = PTR___stack_chk_fail_0015ba10;\n  (*(code *)PTR___stack_chk_fail_0015ba10)();\n  piVar10 = *(int **)(puVar12 + 0x111384);\n  cVar7 = *(char *)(piVar5 + 1);\n  iVar1 = *piVar10;\n  if ((cVar7 != '\0') &&\n     ((*(byte *)((int)piVar5 + 0x11) < 4 || (*(byte *)((int)piVar5 + 0x11) == 5)))) {\n    iVar2 = FUN_00032f88(piVar5);\n    if (iVar2 != 0) goto LAB_0004a818;\n    cVar7 = *(char *)(piVar5 + 1);\n  }\n  iVar2 = *piVar5;\n  iVar13 = *(int *)(puVar12 + 0x111030);\n  piVar5[0x36] = 0;\n  piVar11 = (int *)piVar5[0xf];\n  puVar14 = (undefined4 *)piVar5[0x37];\n  iVar9 = piVar5[0x29];\n  puVar6 = (undefined4 *)(*(int *)(iVar2 + 4) + 0x78);\n  iVar8 = piVar5[0x28];\n  piVar3 = (int *)(*(code *)(iVar13 + -0x5aa4))(0);\n  if (piVar3 == (int *)0x0) {\n    iVar2 = 7;\n  }\n  else {\n    *piVar3 = iVar2;\n    piVar3[1] = (int)piVar11;\n    piVar3[2] = (int)(piVar3 + 0x1e);\n    piVar3[5] = iVar9;\n    *(undefined2 *)(piVar3 + 10) = 0xffff;\n    piVar3[4] = iVar8;\n    piVar3[0x1b] = (int)puVar14;\n    *(undefined2 *)(piVar3 + 0xc) = 0x101;\n    if (cVar7 != '\0') {\n      cVar7 = '\x02';\n    }\n    *(char *)((int)piVar3 + 0x2b) = cVar7;\n    iVar2 = (**(code **)(iVar2 + 0x18))(iVar2);\n    if (iVar2 == 0) {\n      uVar4 = (**(code **)(*piVar11 + 0x30))(piVar11);\n      if ((uVar4 & 0x400) != 0) {\n        *(undefined1 *)(piVar3 + 0xc) = 0;\n      }\n      if ((uVar4 & 0x1000) != 0) {\n        *(undefined1 *)((int)piVar3 + 0x31) = 0;\n      }\n      piVar5[0x36] = (int)piVar3;\n      puVar6 = puVar14;\n    }\n    else {\n      puVar6 = (undefined4 *)0x0;\n      FUN_00033348(piVar3);\n      piVar11 = (int *)piVar3[2];\n      if (*piVar11 != 0) {\n        (**(code **)(*piVar11 + 4))(piVar11);\n        *piVar11 = 0;\n      }\n      (**(code **)(puVar12 + 0x110f78))(piVar3);\n    }\n  }\nLAB_0004a818:\n  if ((*(int **)piVar5[0xf] != (int *)0x0) && (2 < **(int **)piVar5[0xf])) {\n    FUN_0004a5b8(piVar5);\n  }\n  if (iVar1 == *piVar10) {\n    return iVar2;\n  }\n  (**(code **)(puVar12 + 0x111368))();\n  if ((*(char *)(iVar1 + 0xc) != '\0') || (*(int *)(iVar1 + 0xd8) != 0)) {\n    *puVar6 = 1;\n    return 0;\n  }\n  if (*(char *)(iVar1 + 0xd) != '\0') {\n    return 0xe;\n  }\n  if (*(char *)(iVar1 + 4) == '\0') {\n    if (*(int *)**(undefined4 **)(iVar1 + 0x3c) < 2) {\n      return 0xe;\n    }\n    if (((int *)**(undefined4 **)(iVar1 + 0x3c))[0xd] == 0) {\n      return 0xe;\n    }\n  }\n  piVar5 = *(int **)(iVar1 + 0x40);\n  if (*piVar5 != 0) {\n    (**(code **)(*piVar5 + 4))(piVar5);\n    *piVar5 = 0;\n  }\n  iVar2 = FUN_0004a6a8(iVar1);\n  if (iVar2 == 0) {\n    *(undefined1 *)(iVar1 + 0x10) = 0;\n    *(undefined1 *)(iVar1 + 5) = 5;\n  }\n  return iVar2;\n}\n\n" comment (function_definition "int FUN_0004a5b8(int param_1)\n\n{\n  int iVar1;\n  int iVar2;\n  int *piVar3;\n  uint uVar4;\n  int *piVar5;\n  undefined4 *puVar6;\n  char cVar7;\n  int iVar8;\n  int iVar9;\n  int *piVar10;\n  int *piVar11;\n  undefined *puVar12;\n  int iVar13;\n  undefined4 *puVar14;\n  int local_18;\n  int local_14;\n  int local_c;\n  \n  puVar12 = PTR___stack_chk_guard_0015ba2c;\n  puVar6 = (undefined4 *)0x1;\n  local_18 = *(int *)(param_1 + 0x80);\n  local_14 = *(int *)(param_1 + 0x84);\n  local_c = *(int *)PTR___stack_chk_guard_0015ba2c;\n  if ((local_18 < 1) && ((local_18 != 0 || (local_14 == 0)))) {\n    puVar6 = (undefined4 *)0x0;\n  }\n  *(char *)(param_1 + 0x16) = (char)puVar6;\n  if (*(int *)(param_1 + 0x28) == 0) {\n    if ((local_18 < 1) && ((local_18 != 0 || (local_14 == 0)))) {\n      *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b704 + -0xe84;\n    }\n    else {\n      *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b704 + -0xa94;\n    }\n  }\n  else {\n    *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b65c + -0x1cc8;\n  }\n  piVar5 = *(int **)(param_1 + 0x3c);\n  if (*piVar5 != 0) {\n    puVar6 = (undefined4 *)0x12;\n    (**(code **)(*piVar5 + 0x28))(piVar5,0x12,&local_18);\n  }\n  if (local_c == *(int *)puVar12) {\n    return *(int *)puVar12;\n  }\n  puVar12 = PTR___stack_chk_fail_0015ba10;\n  (*(code *)PTR___stack_chk_fail_0015ba10)();\n  piVar10 = *(int **)(puVar12 + 0x111384);\n  cVar7 = *(char *)(piVar5 + 1);\n  iVar1 = *piVar10;\n  if ((cVar7 != '\0') &&\n     ((*(byte *)((int)piVar5 + 0x11) < 4 || (*(byte *)((int)piVar5 + 0x11) == 5)))) {\n    iVar2 = FUN_00032f88(piVar5);\n    if (iVar2 != 0) goto LAB_0004a818;\n    cVar7 = *(char *)(piVar5 + 1);\n  }\n  iVar2 = *piVar5;\n  iVar13 = *(int *)(puVar12 + 0x111030);\n  piVar5[0x36] = 0;\n  piVar11 = (int *)piVar5[0xf];\n  puVar14 = (undefined4 *)piVar5[0x37];\n  iVar9 = piVar5[0x29];\n  puVar6 = (undefined4 *)(*(int *)(iVar2 + 4) + 0x78);\n  iVar8 = piVar5[0x28];\n  piVar3 = (int *)(*(code *)(iVar13 + -0x5aa4))(0);\n  if (piVar3 == (int *)0x0) {\n    iVar2 = 7;\n  }\n  else {\n    *piVar3 = iVar2;\n    piVar3[1] = (int)piVar11;\n    piVar3[2] = (int)(piVar3 + 0x1e);\n    piVar3[5] = iVar9;\n    *(undefined2 *)(piVar3 + 10) = 0xffff;\n    piVar3[4] = iVar8;\n    piVar3[0x1b] = (int)puVar14;\n    *(undefined2 *)(piVar3 + 0xc) = 0x101;\n    if (cVar7 != '\0') {\n      cVar7 = '\x02';\n    }\n    *(char *)((int)piVar3 + 0x2b) = cVar7;\n    iVar2 = (**(code **)(iVar2 + 0x18))(iVar2);\n    if (iVar2 == 0) {\n      uVar4 = (**(code **)(*piVar11 + 0x30))(piVar11);\n      if ((uVar4 & 0x400) != 0) {\n        *(undefined1 *)(piVar3 + 0xc) = 0;\n      }\n      if ((uVar4 & 0x1000) != 0) {\n        *(undefined1 *)((int)piVar3 + 0x31) = 0;\n      }\n      piVar5[0x36] = (int)piVar3;\n      puVar6 = puVar14;\n    }\n    else {\n      puVar6 = (undefined4 *)0x0;\n      FUN_00033348(piVar3);\n      piVar11 = (int *)piVar3[2];\n      if (*piVar11 != 0) {\n        (**(code **)(*piVar11 + 4))(piVar11);\n        *piVar11 = 0;\n      }\n      (**(code **)(puVar12 + 0x110f78))(piVar3);\n    }\n  }\nLAB_0004a818:\n  if ((*(int **)piVar5[0xf] != (int *)0x0) && (2 < **(int **)piVar5[0xf])) {\n    FUN_0004a5b8(piVar5);\n  }\n  if (iVar1 == *piVar10) {\n    return iVar2;\n  }\n  (**(code **)(puVar12 + 0x111368))();\n  if ((*(char *)(iVar1 + 0xc) != '\0') || (*(int *)(iVar1 + 0xd8) != 0)) {\n    *puVar6 = 1;\n    return 0;\n  }\n  if (*(char *)(iVar1 + 0xd) != '\0') {\n    return 0xe;\n  }\n  if (*(char *)(iVar1 + 4) == '\0') {\n    if (*(int *)**(undefined4 **)(iVar1 + 0x3c) < 2) {\n      return 0xe;\n    }\n    if (((int *)**(undefined4 **)(iVar1 + 0x3c))[0xd] == 0) {\n      return 0xe;\n    }\n  }\n  piVar5 = *(int **)(iVar1 + 0x40);\n  if (*piVar5 != 0) {\n    (**(code **)(*piVar5 + 4))(piVar5);\n    *piVar5 = 0;\n  }\n  iVar2 = FUN_0004a6a8(iVar1);\n  if (iVar2 == 0) {\n    *(undefined1 *)(iVar1 + 0x10) = 0;\n    *(undefined1 *)(iVar1 + 5) = 5;\n  }\n  return iVar2;\n}" primitive_type (function_declarator "FUN_0004a5b8(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  int *piVar3;\n  uint uVar4;\n  int *piVar5;\n  undefined4 *puVar6;\n  char cVar7;\n  int iVar8;\n  int iVar9;\n  int *piVar10;\n  int *piVar11;\n  undefined *puVar12;\n  int iVar13;\n  undefined4 *puVar14;\n  int local_18;\n  int local_14;\n  int local_c;\n  \n  puVar12 = PTR___stack_chk_guard_0015ba2c;\n  puVar6 = (undefined4 *)0x1;\n  local_18 = *(int *)(param_1 + 0x80);\n  local_14 = *(int *)(param_1 + 0x84);\n  local_c = *(int *)PTR___stack_chk_guard_0015ba2c;\n  if ((local_18 < 1) && ((local_18 != 0 || (local_14 == 0)))) {\n    puVar6 = (undefined4 *)0x0;\n  }\n  *(char *)(param_1 + 0x16) = (char)puVar6;\n  if (*(int *)(param_1 + 0x28) == 0) {\n    if ((local_18 < 1) && ((local_18 != 0 || (local_14 == 0)))) {\n      *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b704 + -0xe84;\n    }\n    else {\n      *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b704 + -0xa94;\n    }\n  }\n  else {\n    *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b65c + -0x1cc8;\n  }\n  piVar5 = *(int **)(param_1 + 0x3c);\n  if (*piVar5 != 0) {\n    puVar6 = (undefined4 *)0x12;\n    (**(code **)(*piVar5 + 0x28))(piVar5,0x12,&local_18);\n  }\n  if (local_c == *(int *)puVar12) {\n    return *(int *)puVar12;\n  }\n  puVar12 = PTR___stack_chk_fail_0015ba10;\n  (*(code *)PTR___stack_chk_fail_0015ba10)();\n  piVar10 = *(int **)(puVar12 + 0x111384);\n  cVar7 = *(char *)(piVar5 + 1);\n  iVar1 = *piVar10;\n  if ((cVar7 != '\0') &&\n     ((*(byte *)((int)piVar5 + 0x11) < 4 || (*(byte *)((int)piVar5 + 0x11) == 5)))) {\n    iVar2 = FUN_00032f88(piVar5);\n    if (iVar2 != 0) goto LAB_0004a818;\n    cVar7 = *(char *)(piVar5 + 1);\n  }\n  iVar2 = *piVar5;\n  iVar13 = *(int *)(puVar12 + 0x111030);\n  piVar5[0x36] = 0;\n  piVar11 = (int *)piVar5[0xf];\n  puVar14 = (undefined4 *)piVar5[0x37];\n  iVar9 = piVar5[0x29];\n  puVar6 = (undefined4 *)(*(int *)(iVar2 + 4) + 0x78);\n  iVar8 = piVar5[0x28];\n  piVar3 = (int *)(*(code *)(iVar13 + -0x5aa4))(0);\n  if (piVar3 == (int *)0x0) {\n    iVar2 = 7;\n  }\n  else {\n    *piVar3 = iVar2;\n    piVar3[1] = (int)piVar11;\n    piVar3[2] = (int)(piVar3 + 0x1e);\n    piVar3[5] = iVar9;\n    *(undefined2 *)(piVar3 + 10) = 0xffff;\n    piVar3[4] = iVar8;\n    piVar3[0x1b] = (int)puVar14;\n    *(undefined2 *)(piVar3 + 0xc) = 0x101;\n    if (cVar7 != '\0') {\n      cVar7 = '\x02';\n    }\n    *(char *)((int)piVar3 + 0x2b) = cVar7;\n    iVar2 = (**(code **)(iVar2 + 0x18))(iVar2);\n    if (iVar2 == 0) {\n      uVar4 = (**(code **)(*piVar11 + 0x30))(piVar11);\n      if ((uVar4 & 0x400) != 0) {\n        *(undefined1 *)(piVar3 + 0xc) = 0;\n      }\n      if ((uVar4 & 0x1000) != 0) {\n        *(undefined1 *)((int)piVar3 + 0x31) = 0;\n      }\n      piVar5[0x36] = (int)piVar3;\n      puVar6 = puVar14;\n    }\n    else {\n      puVar6 = (undefined4 *)0x0;\n      FUN_00033348(piVar3);\n      piVar11 = (int *)piVar3[2];\n      if (*piVar11 != 0) {\n        (**(code **)(*piVar11 + 4))(piVar11);\n        *piVar11 = 0;\n      }\n      (**(code **)(puVar12 + 0x110f78))(piVar3);\n    }\n  }\nLAB_0004a818:\n  if ((*(int **)piVar5[0xf] != (int *)0x0) && (2 < **(int **)piVar5[0xf])) {\n    FUN_0004a5b8(piVar5);\n  }\n  if (iVar1 == *piVar10) {\n    return iVar2;\n  }\n  (**(code **)(puVar12 + 0x111368))();\n  if ((*(char *)(iVar1 + 0xc) != '\0') || (*(int *)(iVar1 + 0xd8) != 0)) {\n    *puVar6 = 1;\n    return 0;\n  }\n  if (*(char *)(iVar1 + 0xd) != '\0') {\n    return 0xe;\n  }\n  if (*(char *)(iVar1 + 4) == '\0') {\n    if (*(int *)**(undefined4 **)(iVar1 + 0x3c) < 2) {\n      return 0xe;\n    }\n    if (((int *)**(undefined4 **)(iVar1 + 0x3c))[0xd] == 0) {\n      return 0xe;\n    }\n  }\n  piVar5 = *(int **)(iVar1 + 0x40);\n  if (*piVar5 != 0) {\n    (**(code **)(*piVar5 + 4))(piVar5);\n    *piVar5 = 0;\n  }\n  iVar2 = FUN_0004a6a8(iVar1);\n  if (iVar2 == 0) {\n    *(undefined1 *)(iVar1 + 0x10) = 0;\n    *(undefined1 *)(iVar1 + 5) = 5;\n  }\n  return iVar2;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "undefined4 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "char cVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int *piVar10;" primitive_type (pointer_declarator "*piVar10" * identifier) ;) (declaration "int *piVar11;" primitive_type (pointer_declarator "*piVar11" * identifier) ;) (declaration "undefined *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "undefined4 *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "int local_18;" primitive_type identifier ;) (declaration "int local_14;" primitive_type identifier ;) (declaration "int local_c;" primitive_type identifier ;) (expression_statement "puVar12 = PTR___stack_chk_guard_0015ba2c;" (assignment_expression "puVar12 = PTR___stack_chk_guard_0015ba2c" identifier = identifier) ;) (expression_statement "puVar6 = (undefined4 *)0x1;" (assignment_expression "puVar6 = (undefined4 *)0x1" identifier = (cast_expression "(undefined4 *)0x1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_18 = *(int *)(param_1 + 0x80);" (assignment_expression "local_18 = *(int *)(param_1 + 0x80)" identifier = (pointer_expression "*(int *)(param_1 + 0x80)" * (cast_expression "(int *)(param_1 + 0x80)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x80)" ( (binary_expression "param_1 + 0x80" identifier + number_literal) ))))) ;) (expression_statement "local_14 = *(int *)(param_1 + 0x84);" (assignment_expression "local_14 = *(int *)(param_1 + 0x84)" identifier = (pointer_expression "*(int *)(param_1 + 0x84)" * (cast_expression "(int *)(param_1 + 0x84)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x84)" ( (binary_expression "param_1 + 0x84" identifier + number_literal) ))))) ;) (expression_statement "local_c = *(int *)PTR___stack_chk_guard_0015ba2c;" (assignment_expression "local_c = *(int *)PTR___stack_chk_guard_0015ba2c" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0015ba2c" * (cast_expression "(int *)PTR___stack_chk_guard_0015ba2c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if ((local_18 < 1) && ((local_18 != 0 || (local_14 == 0)))) {\n    puVar6 = (undefined4 *)0x0;\n  }" if (parenthesized_expression "((local_18 < 1) && ((local_18 != 0 || (local_14 == 0))))" ( (binary_expression "(local_18 < 1) && ((local_18 != 0 || (local_14 == 0)))" (parenthesized_expression "(local_18 < 1)" ( (binary_expression "local_18 < 1" identifier < number_literal) )) && (parenthesized_expression "((local_18 != 0 || (local_14 == 0)))" ( (parenthesized_expression "(local_18 != 0 || (local_14 == 0))" ( (binary_expression "local_18 != 0 || (local_14 == 0)" (binary_expression "local_18 != 0" identifier != number_literal) || (parenthesized_expression "(local_14 == 0)" ( (binary_expression "local_14 == 0" identifier == number_literal) ))) )) ))) )) (compound_statement "{\n    puVar6 = (undefined4 *)0x0;\n  }" { (expression_statement "puVar6 = (undefined4 *)0x0;" (assignment_expression "puVar6 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "*(char *)(param_1 + 0x16) = (char)puVar6;" (assignment_expression "*(char *)(param_1 + 0x16) = (char)puVar6" (pointer_expression "*(char *)(param_1 + 0x16)" * (cast_expression "(char *)(param_1 + 0x16)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x16)" ( (binary_expression "param_1 + 0x16" identifier + number_literal) )))) = (cast_expression "(char)puVar6" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (if_statement "if (*(int *)(param_1 + 0x28) == 0) {\n    if ((local_18 < 1) && ((local_18 != 0 || (local_14 == 0)))) {\n      *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b704 + -0xe84;\n    }\n    else {\n      *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b704 + -0xa94;\n    }\n  }\n  else {\n    *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b65c + -0x1cc8;\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0x28) == 0)" ( (binary_expression "*(int *)(param_1 + 0x28) == 0" (pointer_expression "*(int *)(param_1 + 0x28)" * (cast_expression "(int *)(param_1 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    if ((local_18 < 1) && ((local_18 != 0 || (local_14 == 0)))) {\n      *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b704 + -0xe84;\n    }\n    else {\n      *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b704 + -0xa94;\n    }\n  }" { (if_statement "if ((local_18 < 1) && ((local_18 != 0 || (local_14 == 0)))) {\n      *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b704 + -0xe84;\n    }\n    else {\n      *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b704 + -0xa94;\n    }" if (parenthesized_expression "((local_18 < 1) && ((local_18 != 0 || (local_14 == 0))))" ( (binary_expression "(local_18 < 1) && ((local_18 != 0 || (local_14 == 0)))" (parenthesized_expression "(local_18 < 1)" ( (binary_expression "local_18 < 1" identifier < number_literal) )) && (parenthesized_expression "((local_18 != 0 || (local_14 == 0)))" ( (parenthesized_expression "(local_18 != 0 || (local_14 == 0))" ( (binary_expression "local_18 != 0 || (local_14 == 0)" (binary_expression "local_18 != 0" identifier != number_literal) || (parenthesized_expression "(local_14 == 0)" ( (binary_expression "local_14 == 0" identifier == number_literal) ))) )) ))) )) (compound_statement "{\n      *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b704 + -0xe84;\n    }" { (expression_statement "*(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b704 + -0xe84;" (assignment_expression "*(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b704 + -0xe84" (pointer_expression "*(undefined **)(param_1 + 0xcc)" * (cast_expression "(undefined **)(param_1 + 0xcc)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xcc)" ( (binary_expression "param_1 + 0xcc" identifier + number_literal) )))) = (binary_expression "PTR_LAB_0015b704 + -0xe84" identifier + number_literal)) ;) }) (else_clause "else {\n      *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b704 + -0xa94;\n    }" else (compound_statement "{\n      *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b704 + -0xa94;\n    }" { (expression_statement "*(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b704 + -0xa94;" (assignment_expression "*(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b704 + -0xa94" (pointer_expression "*(undefined **)(param_1 + 0xcc)" * (cast_expression "(undefined **)(param_1 + 0xcc)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xcc)" ( (binary_expression "param_1 + 0xcc" identifier + number_literal) )))) = (binary_expression "PTR_LAB_0015b704 + -0xa94" identifier + number_literal)) ;) }))) }) (else_clause "else {\n    *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b65c + -0x1cc8;\n  }" else (compound_statement "{\n    *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b65c + -0x1cc8;\n  }" { (expression_statement "*(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b65c + -0x1cc8;" (assignment_expression "*(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b65c + -0x1cc8" (pointer_expression "*(undefined **)(param_1 + 0xcc)" * (cast_expression "(undefined **)(param_1 + 0xcc)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xcc)" ( (binary_expression "param_1 + 0xcc" identifier + number_literal) )))) = (binary_expression "PTR_LAB_0015b65c + -0x1cc8" identifier + number_literal)) ;) }))) (expression_statement "piVar5 = *(int **)(param_1 + 0x3c);" (assignment_expression "piVar5 = *(int **)(param_1 + 0x3c)" identifier = (pointer_expression "*(int **)(param_1 + 0x3c)" * (cast_expression "(int **)(param_1 + 0x3c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) ))))) ;) (if_statement "if (*piVar5 != 0) {\n    puVar6 = (undefined4 *)0x12;\n    (**(code **)(*piVar5 + 0x28))(piVar5,0x12,&local_18);\n  }" if (parenthesized_expression "(*piVar5 != 0)" ( (binary_expression "*piVar5 != 0" (pointer_expression "*piVar5" * identifier) != number_literal) )) (compound_statement "{\n    puVar6 = (undefined4 *)0x12;\n    (**(code **)(*piVar5 + 0x28))(piVar5,0x12,&local_18);\n  }" { (expression_statement "puVar6 = (undefined4 *)0x12;" (assignment_expression "puVar6 = (undefined4 *)0x12" identifier = (cast_expression "(undefined4 *)0x12" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(**(code **)(*piVar5 + 0x28))(piVar5,0x12,&local_18);" (call_expression "(**(code **)(*piVar5 + 0x28))(piVar5,0x12,&local_18)" (parenthesized_expression "(**(code **)(*piVar5 + 0x28))" ( (pointer_expression "**(code **)(*piVar5 + 0x28)" * (pointer_expression "*(code **)(*piVar5 + 0x28)" * (cast_expression "(code **)(*piVar5 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar5 + 0x28)" ( (binary_expression "*piVar5 + 0x28" (pointer_expression "*piVar5" * identifier) + number_literal) ))))) )) (argument_list "(piVar5,0x12,&local_18)" ( identifier , number_literal , (pointer_expression "&local_18" & identifier) ))) ;) })) (if_statement "if (local_c == *(int *)puVar12) {\n    return *(int *)puVar12;\n  }" if (parenthesized_expression "(local_c == *(int *)puVar12)" ( (binary_expression "local_c == *(int *)puVar12" identifier == (pointer_expression "*(int *)puVar12" * (cast_expression "(int *)puVar12" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return *(int *)puVar12;\n  }" { (return_statement "return *(int *)puVar12;" return (pointer_expression "*(int *)puVar12" * (cast_expression "(int *)puVar12" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) })) (expression_statement "puVar12 = PTR___stack_chk_fail_0015ba10;" (assignment_expression "puVar12 = PTR___stack_chk_fail_0015ba10" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_0015ba10)();" (call_expression "(*(code *)PTR___stack_chk_fail_0015ba10)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0015ba10)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0015ba10" * (cast_expression "(code *)PTR___stack_chk_fail_0015ba10" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "piVar10 = *(int **)(puVar12 + 0x111384);" (assignment_expression "piVar10 = *(int **)(puVar12 + 0x111384)" identifier = (pointer_expression "*(int **)(puVar12 + 0x111384)" * (cast_expression "(int **)(puVar12 + 0x111384)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar12 + 0x111384)" ( (binary_expression "puVar12 + 0x111384" identifier + number_literal) ))))) ;) (expression_statement "cVar7 = *(char *)(piVar5 + 1);" (assignment_expression "cVar7 = *(char *)(piVar5 + 1)" identifier = (pointer_expression "*(char *)(piVar5 + 1)" * (cast_expression "(char *)(piVar5 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar5 + 1)" ( (binary_expression "piVar5 + 1" identifier + number_literal) ))))) ;) (expression_statement "iVar1 = *piVar10;" (assignment_expression "iVar1 = *piVar10" identifier = (pointer_expression "*piVar10" * identifier)) ;) (if_statement "if ((cVar7 != '\0') &&\n     ((*(byte *)((int)piVar5 + 0x11) < 4 || (*(byte *)((int)piVar5 + 0x11) == 5)))) {\n    iVar2 = FUN_00032f88(piVar5);\n    if (iVar2 != 0) goto LAB_0004a818;\n    cVar7 = *(char *)(piVar5 + 1);\n  }" if (parenthesized_expression "((cVar7 != '\0') &&\n     ((*(byte *)((int)piVar5 + 0x11) < 4 || (*(byte *)((int)piVar5 + 0x11) == 5))))" ( (binary_expression "(cVar7 != '\0') &&\n     ((*(byte *)((int)piVar5 + 0x11) < 4 || (*(byte *)((int)piVar5 + 0x11) == 5)))" (parenthesized_expression "(cVar7 != '\0')" ( (binary_expression "cVar7 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "((*(byte *)((int)piVar5 + 0x11) < 4 || (*(byte *)((int)piVar5 + 0x11) == 5)))" ( (parenthesized_expression "(*(byte *)((int)piVar5 + 0x11) < 4 || (*(byte *)((int)piVar5 + 0x11) == 5))" ( (binary_expression "*(byte *)((int)piVar5 + 0x11) < 4 || (*(byte *)((int)piVar5 + 0x11) == 5)" (binary_expression "*(byte *)((int)piVar5 + 0x11) < 4" (pointer_expression "*(byte *)((int)piVar5 + 0x11)" * (cast_expression "(byte *)((int)piVar5 + 0x11)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar5 + 0x11)" ( (binary_expression "(int)piVar5 + 0x11" (cast_expression "(int)piVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) < number_literal) || (parenthesized_expression "(*(byte *)((int)piVar5 + 0x11) == 5)" ( (binary_expression "*(byte *)((int)piVar5 + 0x11) == 5" (pointer_expression "*(byte *)((int)piVar5 + 0x11)" * (cast_expression "(byte *)((int)piVar5 + 0x11)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar5 + 0x11)" ( (binary_expression "(int)piVar5 + 0x11" (cast_expression "(int)piVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == number_literal) ))) )) ))) )) (compound_statement "{\n    iVar2 = FUN_00032f88(piVar5);\n    if (iVar2 != 0) goto LAB_0004a818;\n    cVar7 = *(char *)(piVar5 + 1);\n  }" { (expression_statement "iVar2 = FUN_00032f88(piVar5);" (assignment_expression "iVar2 = FUN_00032f88(piVar5)" identifier = (call_expression "FUN_00032f88(piVar5)" identifier (argument_list "(piVar5)" ( identifier )))) ;) (if_statement "if (iVar2 != 0) goto LAB_0004a818;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0004a818;" goto statement_identifier ;)) (expression_statement "cVar7 = *(char *)(piVar5 + 1);" (assignment_expression "cVar7 = *(char *)(piVar5 + 1)" identifier = (pointer_expression "*(char *)(piVar5 + 1)" * (cast_expression "(char *)(piVar5 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar5 + 1)" ( (binary_expression "piVar5 + 1" identifier + number_literal) ))))) ;) })) (expression_statement "iVar2 = *piVar5;" (assignment_expression "iVar2 = *piVar5" identifier = (pointer_expression "*piVar5" * identifier)) ;) (expression_statement "iVar13 = *(int *)(puVar12 + 0x111030);" (assignment_expression "iVar13 = *(int *)(puVar12 + 0x111030)" identifier = (pointer_expression "*(int *)(puVar12 + 0x111030)" * (cast_expression "(int *)(puVar12 + 0x111030)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 0x111030)" ( (binary_expression "puVar12 + 0x111030" identifier + number_literal) ))))) ;) (expression_statement "piVar5[0x36] = 0;" (assignment_expression "piVar5[0x36] = 0" (subscript_expression "piVar5[0x36]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar11 = (int *)piVar5[0xf];" (assignment_expression "piVar11 = (int *)piVar5[0xf]" identifier = (cast_expression "(int *)piVar5[0xf]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar5[0xf]" identifier [ number_literal ]))) ;) (expression_statement "puVar14 = (undefined4 *)piVar5[0x37];" (assignment_expression "puVar14 = (undefined4 *)piVar5[0x37]" identifier = (cast_expression "(undefined4 *)piVar5[0x37]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar5[0x37]" identifier [ number_literal ]))) ;) (expression_statement "iVar9 = piVar5[0x29];" (assignment_expression "iVar9 = piVar5[0x29]" identifier = (subscript_expression "piVar5[0x29]" identifier [ number_literal ])) ;) (expression_statement "puVar6 = (undefined4 *)(*(int *)(iVar2 + 4) + 0x78);" (assignment_expression "puVar6 = (undefined4 *)(*(int *)(iVar2 + 4) + 0x78)" identifier = (cast_expression "(undefined4 *)(*(int *)(iVar2 + 4) + 0x78)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar2 + 4) + 0x78)" ( (binary_expression "*(int *)(iVar2 + 4) + 0x78" (pointer_expression "*(int *)(iVar2 + 4)" * (cast_expression "(int *)(iVar2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 4)" ( (binary_expression "iVar2 + 4" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "iVar8 = piVar5[0x28];" (assignment_expression "iVar8 = piVar5[0x28]" identifier = (subscript_expression "piVar5[0x28]" identifier [ number_literal ])) ;) (expression_statement "piVar3 = (int *)(*(code *)(iVar13 + -0x5aa4))(0);" (assignment_expression "piVar3 = (int *)(*(code *)(iVar13 + -0x5aa4))(0)" identifier = (cast_expression "(int *)(*(code *)(iVar13 + -0x5aa4))(0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)(iVar13 + -0x5aa4))(0)" (parenthesized_expression "(*(code *)(iVar13 + -0x5aa4))" ( (pointer_expression "*(code *)(iVar13 + -0x5aa4)" * (cast_expression "(code *)(iVar13 + -0x5aa4)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + -0x5aa4)" ( (binary_expression "iVar13 + -0x5aa4" identifier + number_literal) )))) )) (argument_list "(0)" ( number_literal ))))) ;) (if_statement "if (piVar3 == (int *)0x0) {\n    iVar2 = 7;\n  }\n  else {\n    *piVar3 = iVar2;\n    piVar3[1] = (int)piVar11;\n    piVar3[2] = (int)(piVar3 + 0x1e);\n    piVar3[5] = iVar9;\n    *(undefined2 *)(piVar3 + 10) = 0xffff;\n    piVar3[4] = iVar8;\n    piVar3[0x1b] = (int)puVar14;\n    *(undefined2 *)(piVar3 + 0xc) = 0x101;\n    if (cVar7 != '\0') {\n      cVar7 = '\x02';\n    }\n    *(char *)((int)piVar3 + 0x2b) = cVar7;\n    iVar2 = (**(code **)(iVar2 + 0x18))(iVar2);\n    if (iVar2 == 0) {\n      uVar4 = (**(code **)(*piVar11 + 0x30))(piVar11);\n      if ((uVar4 & 0x400) != 0) {\n        *(undefined1 *)(piVar3 + 0xc) = 0;\n      }\n      if ((uVar4 & 0x1000) != 0) {\n        *(undefined1 *)((int)piVar3 + 0x31) = 0;\n      }\n      piVar5[0x36] = (int)piVar3;\n      puVar6 = puVar14;\n    }\n    else {\n      puVar6 = (undefined4 *)0x0;\n      FUN_00033348(piVar3);\n      piVar11 = (int *)piVar3[2];\n      if (*piVar11 != 0) {\n        (**(code **)(*piVar11 + 4))(piVar11);\n        *piVar11 = 0;\n      }\n      (**(code **)(puVar12 + 0x110f78))(piVar3);\n    }\n  }" if (parenthesized_expression "(piVar3 == (int *)0x0)" ( (binary_expression "piVar3 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    iVar2 = 7;\n  }" { (expression_statement "iVar2 = 7;" (assignment_expression "iVar2 = 7" identifier = number_literal) ;) }) (else_clause "else {\n    *piVar3 = iVar2;\n    piVar3[1] = (int)piVar11;\n    piVar3[2] = (int)(piVar3 + 0x1e);\n    piVar3[5] = iVar9;\n    *(undefined2 *)(piVar3 + 10) = 0xffff;\n    piVar3[4] = iVar8;\n    piVar3[0x1b] = (int)puVar14;\n    *(undefined2 *)(piVar3 + 0xc) = 0x101;\n    if (cVar7 != '\0') {\n      cVar7 = '\x02';\n    }\n    *(char *)((int)piVar3 + 0x2b) = cVar7;\n    iVar2 = (**(code **)(iVar2 + 0x18))(iVar2);\n    if (iVar2 == 0) {\n      uVar4 = (**(code **)(*piVar11 + 0x30))(piVar11);\n      if ((uVar4 & 0x400) != 0) {\n        *(undefined1 *)(piVar3 + 0xc) = 0;\n      }\n      if ((uVar4 & 0x1000) != 0) {\n        *(undefined1 *)((int)piVar3 + 0x31) = 0;\n      }\n      piVar5[0x36] = (int)piVar3;\n      puVar6 = puVar14;\n    }\n    else {\n      puVar6 = (undefined4 *)0x0;\n      FUN_00033348(piVar3);\n      piVar11 = (int *)piVar3[2];\n      if (*piVar11 != 0) {\n        (**(code **)(*piVar11 + 4))(piVar11);\n        *piVar11 = 0;\n      }\n      (**(code **)(puVar12 + 0x110f78))(piVar3);\n    }\n  }" else (compound_statement "{\n    *piVar3 = iVar2;\n    piVar3[1] = (int)piVar11;\n    piVar3[2] = (int)(piVar3 + 0x1e);\n    piVar3[5] = iVar9;\n    *(undefined2 *)(piVar3 + 10) = 0xffff;\n    piVar3[4] = iVar8;\n    piVar3[0x1b] = (int)puVar14;\n    *(undefined2 *)(piVar3 + 0xc) = 0x101;\n    if (cVar7 != '\0') {\n      cVar7 = '\x02';\n    }\n    *(char *)((int)piVar3 + 0x2b) = cVar7;\n    iVar2 = (**(code **)(iVar2 + 0x18))(iVar2);\n    if (iVar2 == 0) {\n      uVar4 = (**(code **)(*piVar11 + 0x30))(piVar11);\n      if ((uVar4 & 0x400) != 0) {\n        *(undefined1 *)(piVar3 + 0xc) = 0;\n      }\n      if ((uVar4 & 0x1000) != 0) {\n        *(undefined1 *)((int)piVar3 + 0x31) = 0;\n      }\n      piVar5[0x36] = (int)piVar3;\n      puVar6 = puVar14;\n    }\n    else {\n      puVar6 = (undefined4 *)0x0;\n      FUN_00033348(piVar3);\n      piVar11 = (int *)piVar3[2];\n      if (*piVar11 != 0) {\n        (**(code **)(*piVar11 + 4))(piVar11);\n        *piVar11 = 0;\n      }\n      (**(code **)(puVar12 + 0x110f78))(piVar3);\n    }\n  }" { (expression_statement "*piVar3 = iVar2;" (assignment_expression "*piVar3 = iVar2" (pointer_expression "*piVar3" * identifier) = identifier) ;) (expression_statement "piVar3[1] = (int)piVar11;" (assignment_expression "piVar3[1] = (int)piVar11" (subscript_expression "piVar3[1]" identifier [ number_literal ]) = (cast_expression "(int)piVar11" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar3[2] = (int)(piVar3 + 0x1e);" (assignment_expression "piVar3[2] = (int)(piVar3 + 0x1e)" (subscript_expression "piVar3[2]" identifier [ number_literal ]) = (cast_expression "(int)(piVar3 + 0x1e)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(piVar3 + 0x1e)" ( (binary_expression "piVar3 + 0x1e" identifier + number_literal) )))) ;) (expression_statement "piVar3[5] = iVar9;" (assignment_expression "piVar3[5] = iVar9" (subscript_expression "piVar3[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined2 *)(piVar3 + 10) = 0xffff;" (assignment_expression "*(undefined2 *)(piVar3 + 10) = 0xffff" (pointer_expression "*(undefined2 *)(piVar3 + 10)" * (cast_expression "(undefined2 *)(piVar3 + 10)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar3 + 10)" ( (binary_expression "piVar3 + 10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "piVar3[4] = iVar8;" (assignment_expression "piVar3[4] = iVar8" (subscript_expression "piVar3[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar3[0x1b] = (int)puVar14;" (assignment_expression "piVar3[0x1b] = (int)puVar14" (subscript_expression "piVar3[0x1b]" identifier [ number_literal ]) = (cast_expression "(int)puVar14" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*(undefined2 *)(piVar3 + 0xc) = 0x101;" (assignment_expression "*(undefined2 *)(piVar3 + 0xc) = 0x101" (pointer_expression "*(undefined2 *)(piVar3 + 0xc)" * (cast_expression "(undefined2 *)(piVar3 + 0xc)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar3 + 0xc)" ( (binary_expression "piVar3 + 0xc" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (cVar7 != '\0') {\n      cVar7 = '\x02';\n    }" if (parenthesized_expression "(cVar7 != '\0')" ( (binary_expression "cVar7 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      cVar7 = '\x02';\n    }" { (expression_statement "cVar7 = '\x02';" (assignment_expression "cVar7 = '\x02'" identifier = (char_literal "'\x02'" ' escape_sequence ')) ;) })) (expression_statement "*(char *)((int)piVar3 + 0x2b) = cVar7;" (assignment_expression "*(char *)((int)piVar3 + 0x2b) = cVar7" (pointer_expression "*(char *)((int)piVar3 + 0x2b)" * (cast_expression "(char *)((int)piVar3 + 0x2b)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar3 + 0x2b)" ( (binary_expression "(int)piVar3 + 0x2b" (cast_expression "(int)piVar3" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "iVar2 = (**(code **)(iVar2 + 0x18))(iVar2);" (assignment_expression "iVar2 = (**(code **)(iVar2 + 0x18))(iVar2)" identifier = (call_expression "(**(code **)(iVar2 + 0x18))(iVar2)" (parenthesized_expression "(**(code **)(iVar2 + 0x18))" ( (pointer_expression "**(code **)(iVar2 + 0x18)" * (pointer_expression "*(code **)(iVar2 + 0x18)" * (cast_expression "(code **)(iVar2 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 0x18)" ( (binary_expression "iVar2 + 0x18" identifier + number_literal) ))))) )) (argument_list "(iVar2)" ( identifier )))) ;) (if_statement "if (iVar2 == 0) {\n      uVar4 = (**(code **)(*piVar11 + 0x30))(piVar11);\n      if ((uVar4 & 0x400) != 0) {\n        *(undefined1 *)(piVar3 + 0xc) = 0;\n      }\n      if ((uVar4 & 0x1000) != 0) {\n        *(undefined1 *)((int)piVar3 + 0x31) = 0;\n      }\n      piVar5[0x36] = (int)piVar3;\n      puVar6 = puVar14;\n    }\n    else {\n      puVar6 = (undefined4 *)0x0;\n      FUN_00033348(piVar3);\n      piVar11 = (int *)piVar3[2];\n      if (*piVar11 != 0) {\n        (**(code **)(*piVar11 + 4))(piVar11);\n        *piVar11 = 0;\n      }\n      (**(code **)(puVar12 + 0x110f78))(piVar3);\n    }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar4 = (**(code **)(*piVar11 + 0x30))(piVar11);\n      if ((uVar4 & 0x400) != 0) {\n        *(undefined1 *)(piVar3 + 0xc) = 0;\n      }\n      if ((uVar4 & 0x1000) != 0) {\n        *(undefined1 *)((int)piVar3 + 0x31) = 0;\n      }\n      piVar5[0x36] = (int)piVar3;\n      puVar6 = puVar14;\n    }" { (expression_statement "uVar4 = (**(code **)(*piVar11 + 0x30))(piVar11);" (assignment_expression "uVar4 = (**(code **)(*piVar11 + 0x30))(piVar11)" identifier = (call_expression "(**(code **)(*piVar11 + 0x30))(piVar11)" (parenthesized_expression "(**(code **)(*piVar11 + 0x30))" ( (pointer_expression "**(code **)(*piVar11 + 0x30)" * (pointer_expression "*(code **)(*piVar11 + 0x30)" * (cast_expression "(code **)(*piVar11 + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar11 + 0x30)" ( (binary_expression "*piVar11 + 0x30" (pointer_expression "*piVar11" * identifier) + number_literal) ))))) )) (argument_list "(piVar11)" ( identifier )))) ;) (if_statement "if ((uVar4 & 0x400) != 0) {\n        *(undefined1 *)(piVar3 + 0xc) = 0;\n      }" if (parenthesized_expression "((uVar4 & 0x400) != 0)" ( (binary_expression "(uVar4 & 0x400) != 0" (parenthesized_expression "(uVar4 & 0x400)" ( (binary_expression "uVar4 & 0x400" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        *(undefined1 *)(piVar3 + 0xc) = 0;\n      }" { (expression_statement "*(undefined1 *)(piVar3 + 0xc) = 0;" (assignment_expression "*(undefined1 *)(piVar3 + 0xc) = 0" (pointer_expression "*(undefined1 *)(piVar3 + 0xc)" * (cast_expression "(undefined1 *)(piVar3 + 0xc)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar3 + 0xc)" ( (binary_expression "piVar3 + 0xc" identifier + number_literal) )))) = number_literal) ;) })) (if_statement "if ((uVar4 & 0x1000) != 0) {\n        *(undefined1 *)((int)piVar3 + 0x31) = 0;\n      }" if (parenthesized_expression "((uVar4 & 0x1000) != 0)" ( (binary_expression "(uVar4 & 0x1000) != 0" (parenthesized_expression "(uVar4 & 0x1000)" ( (binary_expression "uVar4 & 0x1000" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        *(undefined1 *)((int)piVar3 + 0x31) = 0;\n      }" { (expression_statement "*(undefined1 *)((int)piVar3 + 0x31) = 0;" (assignment_expression "*(undefined1 *)((int)piVar3 + 0x31) = 0" (pointer_expression "*(undefined1 *)((int)piVar3 + 0x31)" * (cast_expression "(undefined1 *)((int)piVar3 + 0x31)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar3 + 0x31)" ( (binary_expression "(int)piVar3 + 0x31" (cast_expression "(int)piVar3" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) })) (expression_statement "piVar5[0x36] = (int)piVar3;" (assignment_expression "piVar5[0x36] = (int)piVar3" (subscript_expression "piVar5[0x36]" identifier [ number_literal ]) = (cast_expression "(int)piVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "puVar6 = puVar14;" (assignment_expression "puVar6 = puVar14" identifier = identifier) ;) }) (else_clause "else {\n      puVar6 = (undefined4 *)0x0;\n      FUN_00033348(piVar3);\n      piVar11 = (int *)piVar3[2];\n      if (*piVar11 != 0) {\n        (**(code **)(*piVar11 + 4))(piVar11);\n        *piVar11 = 0;\n      }\n      (**(code **)(puVar12 + 0x110f78))(piVar3);\n    }" else (compound_statement "{\n      puVar6 = (undefined4 *)0x0;\n      FUN_00033348(piVar3);\n      piVar11 = (int *)piVar3[2];\n      if (*piVar11 != 0) {\n        (**(code **)(*piVar11 + 4))(piVar11);\n        *piVar11 = 0;\n      }\n      (**(code **)(puVar12 + 0x110f78))(piVar3);\n    }" { (expression_statement "puVar6 = (undefined4 *)0x0;" (assignment_expression "puVar6 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "FUN_00033348(piVar3);" (call_expression "FUN_00033348(piVar3)" identifier (argument_list "(piVar3)" ( identifier ))) ;) (expression_statement "piVar11 = (int *)piVar3[2];" (assignment_expression "piVar11 = (int *)piVar3[2]" identifier = (cast_expression "(int *)piVar3[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar3[2]" identifier [ number_literal ]))) ;) (if_statement "if (*piVar11 != 0) {\n        (**(code **)(*piVar11 + 4))(piVar11);\n        *piVar11 = 0;\n      }" if (parenthesized_expression "(*piVar11 != 0)" ( (binary_expression "*piVar11 != 0" (pointer_expression "*piVar11" * identifier) != number_literal) )) (compound_statement "{\n        (**(code **)(*piVar11 + 4))(piVar11);\n        *piVar11 = 0;\n      }" { (expression_statement "(**(code **)(*piVar11 + 4))(piVar11);" (call_expression "(**(code **)(*piVar11 + 4))(piVar11)" (parenthesized_expression "(**(code **)(*piVar11 + 4))" ( (pointer_expression "**(code **)(*piVar11 + 4)" * (pointer_expression "*(code **)(*piVar11 + 4)" * (cast_expression "(code **)(*piVar11 + 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar11 + 4)" ( (binary_expression "*piVar11 + 4" (pointer_expression "*piVar11" * identifier) + number_literal) ))))) )) (argument_list "(piVar11)" ( identifier ))) ;) (expression_statement "*piVar11 = 0;" (assignment_expression "*piVar11 = 0" (pointer_expression "*piVar11" * identifier) = number_literal) ;) })) (expression_statement "(**(code **)(puVar12 + 0x110f78))(piVar3);" (call_expression "(**(code **)(puVar12 + 0x110f78))(piVar3)" (parenthesized_expression "(**(code **)(puVar12 + 0x110f78))" ( (pointer_expression "**(code **)(puVar12 + 0x110f78)" * (pointer_expression "*(code **)(puVar12 + 0x110f78)" * (cast_expression "(code **)(puVar12 + 0x110f78)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar12 + 0x110f78)" ( (binary_expression "puVar12 + 0x110f78" identifier + number_literal) ))))) )) (argument_list "(piVar3)" ( identifier ))) ;) }))) }))) (labeled_statement "LAB_0004a818:\n  if ((*(int **)piVar5[0xf] != (int *)0x0) && (2 < **(int **)piVar5[0xf])) {\n    FUN_0004a5b8(piVar5);\n  }" statement_identifier : (if_statement "if ((*(int **)piVar5[0xf] != (int *)0x0) && (2 < **(int **)piVar5[0xf])) {\n    FUN_0004a5b8(piVar5);\n  }" if (parenthesized_expression "((*(int **)piVar5[0xf] != (int *)0x0) && (2 < **(int **)piVar5[0xf]))" ( (binary_expression "(*(int **)piVar5[0xf] != (int *)0x0) && (2 < **(int **)piVar5[0xf])" (parenthesized_expression "(*(int **)piVar5[0xf] != (int *)0x0)" ( (binary_expression "*(int **)piVar5[0xf] != (int *)0x0" (pointer_expression "*(int **)piVar5[0xf]" * (cast_expression "(int **)piVar5[0xf]" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (subscript_expression "piVar5[0xf]" identifier [ number_literal ]))) != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(2 < **(int **)piVar5[0xf])" ( (binary_expression "2 < **(int **)piVar5[0xf]" number_literal < (pointer_expression "**(int **)piVar5[0xf]" * (pointer_expression "*(int **)piVar5[0xf]" * (cast_expression "(int **)piVar5[0xf]" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (subscript_expression "piVar5[0xf]" identifier [ number_literal ]))))) ))) )) (compound_statement "{\n    FUN_0004a5b8(piVar5);\n  }" { (expression_statement "FUN_0004a5b8(piVar5);" (call_expression "FUN_0004a5b8(piVar5)" identifier (argument_list "(piVar5)" ( identifier ))) ;) }))) (if_statement "if (iVar1 == *piVar10) {\n    return iVar2;\n  }" if (parenthesized_expression "(iVar1 == *piVar10)" ( (binary_expression "iVar1 == *piVar10" identifier == (pointer_expression "*piVar10" * identifier)) )) (compound_statement "{\n    return iVar2;\n  }" { (return_statement "return iVar2;" return identifier ;) })) (expression_statement "(**(code **)(puVar12 + 0x111368))();" (call_expression "(**(code **)(puVar12 + 0x111368))()" (parenthesized_expression "(**(code **)(puVar12 + 0x111368))" ( (pointer_expression "**(code **)(puVar12 + 0x111368)" * (pointer_expression "*(code **)(puVar12 + 0x111368)" * (cast_expression "(code **)(puVar12 + 0x111368)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar12 + 0x111368)" ( (binary_expression "puVar12 + 0x111368" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (if_statement "if ((*(char *)(iVar1 + 0xc) != '\0') || (*(int *)(iVar1 + 0xd8) != 0)) {\n    *puVar6 = 1;\n    return 0;\n  }" if (parenthesized_expression "((*(char *)(iVar1 + 0xc) != '\0') || (*(int *)(iVar1 + 0xd8) != 0))" ( (binary_expression "(*(char *)(iVar1 + 0xc) != '\0') || (*(int *)(iVar1 + 0xd8) != 0)" (parenthesized_expression "(*(char *)(iVar1 + 0xc) != '\0')" ( (binary_expression "*(char *)(iVar1 + 0xc) != '\0'" (pointer_expression "*(char *)(iVar1 + 0xc)" * (cast_expression "(char *)(iVar1 + 0xc)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(*(int *)(iVar1 + 0xd8) != 0)" ( (binary_expression "*(int *)(iVar1 + 0xd8) != 0" (pointer_expression "*(int *)(iVar1 + 0xd8)" * (cast_expression "(int *)(iVar1 + 0xd8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xd8)" ( (binary_expression "iVar1 + 0xd8" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n    *puVar6 = 1;\n    return 0;\n  }" { (expression_statement "*puVar6 = 1;" (assignment_expression "*puVar6 = 1" (pointer_expression "*puVar6" * identifier) = number_literal) ;) (return_statement "return 0;" return number_literal ;) })) (if_statement "if (*(char *)(iVar1 + 0xd) != '\0') {\n    return 0xe;\n  }" if (parenthesized_expression "(*(char *)(iVar1 + 0xd) != '\0')" ( (binary_expression "*(char *)(iVar1 + 0xd) != '\0'" (pointer_expression "*(char *)(iVar1 + 0xd)" * (cast_expression "(char *)(iVar1 + 0xd)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xd)" ( (binary_expression "iVar1 + 0xd" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    return 0xe;\n  }" { (return_statement "return 0xe;" return number_literal ;) })) (if_statement "if (*(char *)(iVar1 + 4) == '\0') {\n    if (*(int *)**(undefined4 **)(iVar1 + 0x3c) < 2) {\n      return 0xe;\n    }\n    if (((int *)**(undefined4 **)(iVar1 + 0x3c))[0xd] == 0) {\n      return 0xe;\n    }\n  }" if (parenthesized_expression "(*(char *)(iVar1 + 4) == '\0')" ( (binary_expression "*(char *)(iVar1 + 4) == '\0'" (pointer_expression "*(char *)(iVar1 + 4)" * (cast_expression "(char *)(iVar1 + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    if (*(int *)**(undefined4 **)(iVar1 + 0x3c) < 2) {\n      return 0xe;\n    }\n    if (((int *)**(undefined4 **)(iVar1 + 0x3c))[0xd] == 0) {\n      return 0xe;\n    }\n  }" { (if_statement "if (*(int *)**(undefined4 **)(iVar1 + 0x3c) < 2) {\n      return 0xe;\n    }" if (parenthesized_expression "(*(int *)**(undefined4 **)(iVar1 + 0x3c) < 2)" ( (binary_expression "*(int *)**(undefined4 **)(iVar1 + 0x3c) < 2" (pointer_expression "*(int *)**(undefined4 **)(iVar1 + 0x3c)" * (cast_expression "(int *)**(undefined4 **)(iVar1 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(undefined4 **)(iVar1 + 0x3c)" * (pointer_expression "*(undefined4 **)(iVar1 + 0x3c)" * (cast_expression "(undefined4 **)(iVar1 + 0x3c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 0x3c)" ( (binary_expression "iVar1 + 0x3c" identifier + number_literal) ))))))) < number_literal) )) (compound_statement "{\n      return 0xe;\n    }" { (return_statement "return 0xe;" return number_literal ;) })) (if_statement "if (((int *)**(undefined4 **)(iVar1 + 0x3c))[0xd] == 0) {\n      return 0xe;\n    }" if (parenthesized_expression "(((int *)**(undefined4 **)(iVar1 + 0x3c))[0xd] == 0)" ( (binary_expression "((int *)**(undefined4 **)(iVar1 + 0x3c))[0xd] == 0" (subscript_expression "((int *)**(undefined4 **)(iVar1 + 0x3c))[0xd]" (parenthesized_expression "((int *)**(undefined4 **)(iVar1 + 0x3c))" ( (cast_expression "(int *)**(undefined4 **)(iVar1 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(undefined4 **)(iVar1 + 0x3c)" * (pointer_expression "*(undefined4 **)(iVar1 + 0x3c)" * (cast_expression "(undefined4 **)(iVar1 + 0x3c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 0x3c)" ( (binary_expression "iVar1 + 0x3c" identifier + number_literal) )))))) )) [ number_literal ]) == number_literal) )) (compound_statement "{\n      return 0xe;\n    }" { (return_statement "return 0xe;" return number_literal ;) })) })) (expression_statement "piVar5 = *(int **)(iVar1 + 0x40);" (assignment_expression "piVar5 = *(int **)(iVar1 + 0x40)" identifier = (pointer_expression "*(int **)(iVar1 + 0x40)" * (cast_expression "(int **)(iVar1 + 0x40)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 0x40)" ( (binary_expression "iVar1 + 0x40" identifier + number_literal) ))))) ;) (if_statement "if (*piVar5 != 0) {\n    (**(code **)(*piVar5 + 4))(piVar5);\n    *piVar5 = 0;\n  }" if (parenthesized_expression "(*piVar5 != 0)" ( (binary_expression "*piVar5 != 0" (pointer_expression "*piVar5" * identifier) != number_literal) )) (compound_statement "{\n    (**(code **)(*piVar5 + 4))(piVar5);\n    *piVar5 = 0;\n  }" { (expression_statement "(**(code **)(*piVar5 + 4))(piVar5);" (call_expression "(**(code **)(*piVar5 + 4))(piVar5)" (parenthesized_expression "(**(code **)(*piVar5 + 4))" ( (pointer_expression "**(code **)(*piVar5 + 4)" * (pointer_expression "*(code **)(*piVar5 + 4)" * (cast_expression "(code **)(*piVar5 + 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar5 + 4)" ( (binary_expression "*piVar5 + 4" (pointer_expression "*piVar5" * identifier) + number_literal) ))))) )) (argument_list "(piVar5)" ( identifier ))) ;) (expression_statement "*piVar5 = 0;" (assignment_expression "*piVar5 = 0" (pointer_expression "*piVar5" * identifier) = number_literal) ;) })) (expression_statement "iVar2 = FUN_0004a6a8(iVar1);" (assignment_expression "iVar2 = FUN_0004a6a8(iVar1)" identifier = (call_expression "FUN_0004a6a8(iVar1)" identifier (argument_list "(iVar1)" ( identifier )))) ;) (if_statement "if (iVar2 == 0) {\n    *(undefined1 *)(iVar1 + 0x10) = 0;\n    *(undefined1 *)(iVar1 + 5) = 5;\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    *(undefined1 *)(iVar1 + 0x10) = 0;\n    *(undefined1 *)(iVar1 + 5) = 5;\n  }" { (expression_statement "*(undefined1 *)(iVar1 + 0x10) = 0;" (assignment_expression "*(undefined1 *)(iVar1 + 0x10) = 0" (pointer_expression "*(undefined1 *)(iVar1 + 0x10)" * (cast_expression "(undefined1 *)(iVar1 + 0x10)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x10)" ( (binary_expression "iVar1 + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)(iVar1 + 5) = 5;" (assignment_expression "*(undefined1 *)(iVar1 + 5) = 5" (pointer_expression "*(undefined1 *)(iVar1 + 5)" * (cast_expression "(undefined1 *)(iVar1 + 5)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 5)" ( (binary_expression "iVar1 + 5" identifier + number_literal) )))) = number_literal) ;) })) (return_statement "return iVar2;" return identifier ;) })))
(translation_unit "void pagerFixMaplimit(Pager *pPager)\n\n{\n  undefined *puVar1;\n  sqlite3_io_methods *psVar2;\n  u8 uVar3;\n  sqlite3_int64 sz;\n  int iStack_c;\n  \n  puVar1 = PTR___stack_chk_guard_0015ba2c;\n  uVar3 = '\x01';\n  sz._0_4_ = *(int *)&pPager->szMmap;\n  sz._4_4_ = (int)pPager->szMmap;\n  iStack_c = *(int *)PTR___stack_chk_guard_0015ba2c;\n  if ((sz._0_4_ < 1) && ((sz._0_4_ != 0 || (sz._4_4_ == 0)))) {\n    uVar3 = '\0';\n  }\n  pPager->bUseFetch = uVar3;\n  if (pPager->errCode == 0) {\n    if ((sz._0_4_ < 1) && ((sz._0_4_ != 0 || (sz._4_4_ == 0)))) {\n      pPager->xGet = (_func_int_Pager_ptr_Pgno_DbPage_ptr_ptr_int *)(PTR_LAB_0015b704 + -0xe84);\n    }\n    else {\n      pPager->xGet = (_func_int_Pager_ptr_Pgno_DbPage_ptr_ptr_int *)(PTR_LAB_0015b704 + -0xa94);\n    }\n  }\n  else {\n    pPager->xGet = (_func_int_Pager_ptr_Pgno_DbPage_ptr_ptr_int *)(PTR_LAB_0015b65c + -0x1cc8);\n  }\n  psVar2 = pPager->fd->pMethods;\n  if (psVar2 != (sqlite3_io_methods *)0x0) {\n    (*psVar2->xFileControl)(pPager->fd,0x12,&sz);\n  }\n  if (iStack_c == *(int *)puVar1) {\n    return;\n  }\n  (*(code *)PTR___stack_chk_fail_0015ba10)();\n  return;\n}\n\n" (function_definition "void pagerFixMaplimit(Pager *pPager)\n\n{\n  undefined *puVar1;\n  sqlite3_io_methods *psVar2;\n  u8 uVar3;\n  sqlite3_int64 sz;\n  int iStack_c;\n  \n  puVar1 = PTR___stack_chk_guard_0015ba2c;\n  uVar3 = '\x01';\n  sz._0_4_ = *(int *)&pPager->szMmap;\n  sz._4_4_ = (int)pPager->szMmap;\n  iStack_c = *(int *)PTR___stack_chk_guard_0015ba2c;\n  if ((sz._0_4_ < 1) && ((sz._0_4_ != 0 || (sz._4_4_ == 0)))) {\n    uVar3 = '\0';\n  }\n  pPager->bUseFetch = uVar3;\n  if (pPager->errCode == 0) {\n    if ((sz._0_4_ < 1) && ((sz._0_4_ != 0 || (sz._4_4_ == 0)))) {\n      pPager->xGet = (_func_int_Pager_ptr_Pgno_DbPage_ptr_ptr_int *)(PTR_LAB_0015b704 + -0xe84);\n    }\n    else {\n      pPager->xGet = (_func_int_Pager_ptr_Pgno_DbPage_ptr_ptr_int *)(PTR_LAB_0015b704 + -0xa94);\n    }\n  }\n  else {\n    pPager->xGet = (_func_int_Pager_ptr_Pgno_DbPage_ptr_ptr_int *)(PTR_LAB_0015b65c + -0x1cc8);\n  }\n  psVar2 = pPager->fd->pMethods;\n  if (psVar2 != (sqlite3_io_methods *)0x0) {\n    (*psVar2->xFileControl)(pPager->fd,0x12,&sz);\n  }\n  if (iStack_c == *(int *)puVar1) {\n    return;\n  }\n  (*(code *)PTR___stack_chk_fail_0015ba10)();\n  return;\n}" primitive_type (function_declarator "pagerFixMaplimit(Pager *pPager)" identifier (parameter_list "(Pager *pPager)" ( (parameter_declaration "Pager *pPager" type_identifier (pointer_declarator "*pPager" * identifier)) ))) (compound_statement "{\n  undefined *puVar1;\n  sqlite3_io_methods *psVar2;\n  u8 uVar3;\n  sqlite3_int64 sz;\n  int iStack_c;\n  \n  puVar1 = PTR___stack_chk_guard_0015ba2c;\n  uVar3 = '\x01';\n  sz._0_4_ = *(int *)&pPager->szMmap;\n  sz._4_4_ = (int)pPager->szMmap;\n  iStack_c = *(int *)PTR___stack_chk_guard_0015ba2c;\n  if ((sz._0_4_ < 1) && ((sz._0_4_ != 0 || (sz._4_4_ == 0)))) {\n    uVar3 = '\0';\n  }\n  pPager->bUseFetch = uVar3;\n  if (pPager->errCode == 0) {\n    if ((sz._0_4_ < 1) && ((sz._0_4_ != 0 || (sz._4_4_ == 0)))) {\n      pPager->xGet = (_func_int_Pager_ptr_Pgno_DbPage_ptr_ptr_int *)(PTR_LAB_0015b704 + -0xe84);\n    }\n    else {\n      pPager->xGet = (_func_int_Pager_ptr_Pgno_DbPage_ptr_ptr_int *)(PTR_LAB_0015b704 + -0xa94);\n    }\n  }\n  else {\n    pPager->xGet = (_func_int_Pager_ptr_Pgno_DbPage_ptr_ptr_int *)(PTR_LAB_0015b65c + -0x1cc8);\n  }\n  psVar2 = pPager->fd->pMethods;\n  if (psVar2 != (sqlite3_io_methods *)0x0) {\n    (*psVar2->xFileControl)(pPager->fd,0x12,&sz);\n  }\n  if (iStack_c == *(int *)puVar1) {\n    return;\n  }\n  (*(code *)PTR___stack_chk_fail_0015ba10)();\n  return;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "sqlite3_io_methods *psVar2;" type_identifier (pointer_declarator "*psVar2" * identifier) ;) (declaration "u8 uVar3;" type_identifier identifier ;) (declaration "sqlite3_int64 sz;" type_identifier identifier ;) (declaration "int iStack_c;" primitive_type identifier ;) (expression_statement "puVar1 = PTR___stack_chk_guard_0015ba2c;" (assignment_expression "puVar1 = PTR___stack_chk_guard_0015ba2c" identifier = identifier) ;) (expression_statement "uVar3 = '\x01';" (assignment_expression "uVar3 = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "sz._0_4_ = *(int *)&pPager->szMmap;" (assignment_expression "sz._0_4_ = *(int *)&pPager->szMmap" (field_expression "sz._0_4_" identifier . field_identifier) = (pointer_expression "*(int *)&pPager->szMmap" * (cast_expression "(int *)&pPager->szMmap" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pPager->szMmap" & (field_expression "pPager->szMmap" identifier -> field_identifier))))) ;) (expression_statement "sz._4_4_ = (int)pPager->szMmap;" (assignment_expression "sz._4_4_ = (int)pPager->szMmap" (field_expression "sz._4_4_" identifier . field_identifier) = (cast_expression "(int)pPager->szMmap" ( (type_descriptor "int" primitive_type) ) (field_expression "pPager->szMmap" identifier -> field_identifier))) ;) (expression_statement "iStack_c = *(int *)PTR___stack_chk_guard_0015ba2c;" (assignment_expression "iStack_c = *(int *)PTR___stack_chk_guard_0015ba2c" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0015ba2c" * (cast_expression "(int *)PTR___stack_chk_guard_0015ba2c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if ((sz._0_4_ < 1) && ((sz._0_4_ != 0 || (sz._4_4_ == 0)))) {\n    uVar3 = '\0';\n  }" if (parenthesized_expression "((sz._0_4_ < 1) && ((sz._0_4_ != 0 || (sz._4_4_ == 0))))" ( (binary_expression "(sz._0_4_ < 1) && ((sz._0_4_ != 0 || (sz._4_4_ == 0)))" (parenthesized_expression "(sz._0_4_ < 1)" ( (binary_expression "sz._0_4_ < 1" (field_expression "sz._0_4_" identifier . field_identifier) < number_literal) )) && (parenthesized_expression "((sz._0_4_ != 0 || (sz._4_4_ == 0)))" ( (parenthesized_expression "(sz._0_4_ != 0 || (sz._4_4_ == 0))" ( (binary_expression "sz._0_4_ != 0 || (sz._4_4_ == 0)" (binary_expression "sz._0_4_ != 0" (field_expression "sz._0_4_" identifier . field_identifier) != number_literal) || (parenthesized_expression "(sz._4_4_ == 0)" ( (binary_expression "sz._4_4_ == 0" (field_expression "sz._4_4_" identifier . field_identifier) == number_literal) ))) )) ))) )) (compound_statement "{\n    uVar3 = '\0';\n  }" { (expression_statement "uVar3 = '\0';" (assignment_expression "uVar3 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) })) (expression_statement "pPager->bUseFetch = uVar3;" (assignment_expression "pPager->bUseFetch = uVar3" (field_expression "pPager->bUseFetch" identifier -> field_identifier) = identifier) ;) (if_statement "if (pPager->errCode == 0) {\n    if ((sz._0_4_ < 1) && ((sz._0_4_ != 0 || (sz._4_4_ == 0)))) {\n      pPager->xGet = (_func_int_Pager_ptr_Pgno_DbPage_ptr_ptr_int *)(PTR_LAB_0015b704 + -0xe84);\n    }\n    else {\n      pPager->xGet = (_func_int_Pager_ptr_Pgno_DbPage_ptr_ptr_int *)(PTR_LAB_0015b704 + -0xa94);\n    }\n  }\n  else {\n    pPager->xGet = (_func_int_Pager_ptr_Pgno_DbPage_ptr_ptr_int *)(PTR_LAB_0015b65c + -0x1cc8);\n  }" if (parenthesized_expression "(pPager->errCode == 0)" ( (binary_expression "pPager->errCode == 0" (field_expression "pPager->errCode" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n    if ((sz._0_4_ < 1) && ((sz._0_4_ != 0 || (sz._4_4_ == 0)))) {\n      pPager->xGet = (_func_int_Pager_ptr_Pgno_DbPage_ptr_ptr_int *)(PTR_LAB_0015b704 + -0xe84);\n    }\n    else {\n      pPager->xGet = (_func_int_Pager_ptr_Pgno_DbPage_ptr_ptr_int *)(PTR_LAB_0015b704 + -0xa94);\n    }\n  }" { (if_statement "if ((sz._0_4_ < 1) && ((sz._0_4_ != 0 || (sz._4_4_ == 0)))) {\n      pPager->xGet = (_func_int_Pager_ptr_Pgno_DbPage_ptr_ptr_int *)(PTR_LAB_0015b704 + -0xe84);\n    }\n    else {\n      pPager->xGet = (_func_int_Pager_ptr_Pgno_DbPage_ptr_ptr_int *)(PTR_LAB_0015b704 + -0xa94);\n    }" if (parenthesized_expression "((sz._0_4_ < 1) && ((sz._0_4_ != 0 || (sz._4_4_ == 0))))" ( (binary_expression "(sz._0_4_ < 1) && ((sz._0_4_ != 0 || (sz._4_4_ == 0)))" (parenthesized_expression "(sz._0_4_ < 1)" ( (binary_expression "sz._0_4_ < 1" (field_expression "sz._0_4_" identifier . field_identifier) < number_literal) )) && (parenthesized_expression "((sz._0_4_ != 0 || (sz._4_4_ == 0)))" ( (parenthesized_expression "(sz._0_4_ != 0 || (sz._4_4_ == 0))" ( (binary_expression "sz._0_4_ != 0 || (sz._4_4_ == 0)" (binary_expression "sz._0_4_ != 0" (field_expression "sz._0_4_" identifier . field_identifier) != number_literal) || (parenthesized_expression "(sz._4_4_ == 0)" ( (binary_expression "sz._4_4_ == 0" (field_expression "sz._4_4_" identifier . field_identifier) == number_literal) ))) )) ))) )) (compound_statement "{\n      pPager->xGet = (_func_int_Pager_ptr_Pgno_DbPage_ptr_ptr_int *)(PTR_LAB_0015b704 + -0xe84);\n    }" { (expression_statement "pPager->xGet = (_func_int_Pager_ptr_Pgno_DbPage_ptr_ptr_int *)(PTR_LAB_0015b704 + -0xe84);" (assignment_expression "pPager->xGet = (_func_int_Pager_ptr_Pgno_DbPage_ptr_ptr_int *)(PTR_LAB_0015b704 + -0xe84)" (field_expression "pPager->xGet" identifier -> field_identifier) = (cast_expression "(_func_int_Pager_ptr_Pgno_DbPage_ptr_ptr_int *)(PTR_LAB_0015b704 + -0xe84)" ( (type_descriptor "_func_int_Pager_ptr_Pgno_DbPage_ptr_ptr_int *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b704 + -0xe84)" ( (binary_expression "PTR_LAB_0015b704 + -0xe84" identifier + number_literal) )))) ;) }) (else_clause "else {\n      pPager->xGet = (_func_int_Pager_ptr_Pgno_DbPage_ptr_ptr_int *)(PTR_LAB_0015b704 + -0xa94);\n    }" else (compound_statement "{\n      pPager->xGet = (_func_int_Pager_ptr_Pgno_DbPage_ptr_ptr_int *)(PTR_LAB_0015b704 + -0xa94);\n    }" { (expression_statement "pPager->xGet = (_func_int_Pager_ptr_Pgno_DbPage_ptr_ptr_int *)(PTR_LAB_0015b704 + -0xa94);" (assignment_expression "pPager->xGet = (_func_int_Pager_ptr_Pgno_DbPage_ptr_ptr_int *)(PTR_LAB_0015b704 + -0xa94)" (field_expression "pPager->xGet" identifier -> field_identifier) = (cast_expression "(_func_int_Pager_ptr_Pgno_DbPage_ptr_ptr_int *)(PTR_LAB_0015b704 + -0xa94)" ( (type_descriptor "_func_int_Pager_ptr_Pgno_DbPage_ptr_ptr_int *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b704 + -0xa94)" ( (binary_expression "PTR_LAB_0015b704 + -0xa94" identifier + number_literal) )))) ;) }))) }) (else_clause "else {\n    pPager->xGet = (_func_int_Pager_ptr_Pgno_DbPage_ptr_ptr_int *)(PTR_LAB_0015b65c + -0x1cc8);\n  }" else (compound_statement "{\n    pPager->xGet = (_func_int_Pager_ptr_Pgno_DbPage_ptr_ptr_int *)(PTR_LAB_0015b65c + -0x1cc8);\n  }" { (expression_statement "pPager->xGet = (_func_int_Pager_ptr_Pgno_DbPage_ptr_ptr_int *)(PTR_LAB_0015b65c + -0x1cc8);" (assignment_expression "pPager->xGet = (_func_int_Pager_ptr_Pgno_DbPage_ptr_ptr_int *)(PTR_LAB_0015b65c + -0x1cc8)" (field_expression "pPager->xGet" identifier -> field_identifier) = (cast_expression "(_func_int_Pager_ptr_Pgno_DbPage_ptr_ptr_int *)(PTR_LAB_0015b65c + -0x1cc8)" ( (type_descriptor "_func_int_Pager_ptr_Pgno_DbPage_ptr_ptr_int *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b65c + -0x1cc8)" ( (binary_expression "PTR_LAB_0015b65c + -0x1cc8" identifier + number_literal) )))) ;) }))) (expression_statement "psVar2 = pPager->fd->pMethods;" (assignment_expression "psVar2 = pPager->fd->pMethods" identifier = (field_expression "pPager->fd->pMethods" (field_expression "pPager->fd" identifier -> field_identifier) -> field_identifier)) ;) (if_statement "if (psVar2 != (sqlite3_io_methods *)0x0) {\n    (*psVar2->xFileControl)(pPager->fd,0x12,&sz);\n  }" if (parenthesized_expression "(psVar2 != (sqlite3_io_methods *)0x0)" ( (binary_expression "psVar2 != (sqlite3_io_methods *)0x0" identifier != (cast_expression "(sqlite3_io_methods *)0x0" ( (type_descriptor "sqlite3_io_methods *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    (*psVar2->xFileControl)(pPager->fd,0x12,&sz);\n  }" { (expression_statement "(*psVar2->xFileControl)(pPager->fd,0x12,&sz);" (call_expression "(*psVar2->xFileControl)(pPager->fd,0x12,&sz)" (parenthesized_expression "(*psVar2->xFileControl)" ( (pointer_expression "*psVar2->xFileControl" * (field_expression "psVar2->xFileControl" identifier -> field_identifier)) )) (argument_list "(pPager->fd,0x12,&sz)" ( (field_expression "pPager->fd" identifier -> field_identifier) , number_literal , (pointer_expression "&sz" & identifier) ))) ;) })) (if_statement "if (iStack_c == *(int *)puVar1) {\n    return;\n  }" if (parenthesized_expression "(iStack_c == *(int *)puVar1)" ( (binary_expression "iStack_c == *(int *)puVar1" identifier == (pointer_expression "*(int *)puVar1" * (cast_expression "(int *)puVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "(*(code *)PTR___stack_chk_fail_0015ba10)();" (call_expression "(*(code *)PTR___stack_chk_fail_0015ba10)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0015ba10)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0015ba10" * (cast_expression "(code *)PTR___stack_chk_fail_0015ba10" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })))
(translation_unit "int FUN_0004a5b8(int param_1)\n\n{\n  int iVar1;\n  int iVar2;\n  int *piVar3;\n  uint uVar4;\n  int *piVar5;\n  undefined4 *puVar6;\n  char cVar7;\n  int iVar8;\n  int iVar9;\n  int *piVar10;\n  int *piVar11;\n  undefined *puVar12;\n  int iVar13;\n  undefined4 *puVar14;\n  int local_18;\n  int local_14;\n  int local_c;\n  \n  puVar12 = PTR___stack_chk_guard_0015ba2c;\n  puVar6 = (undefined4 *)0x1;\n  local_18 = *(int *)(param_1 + 0x80);\n  local_14 = *(int *)(param_1 + 0x84);\n  local_c = *(int *)PTR___stack_chk_guard_0015ba2c;\n  if ((local_18 < 1) && ((local_18 != 0 || (local_14 == 0)))) {\n    puVar6 = (undefined4 *)0x0;\n  }\n  *(char *)(param_1 + 0x16) = (char)puVar6;\n  if (*(int *)(param_1 + 0x28) == 0) {\n    if ((local_18 < 1) && ((local_18 != 0 || (local_14 == 0)))) {\n      *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b704 + -0xe84;\n    }\n    else {\n      *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b704 + -0xa94;\n    }\n  }\n  else {\n    *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b65c + -0x1cc8;\n  }\n  piVar5 = *(int **)(param_1 + 0x3c);\n  if (*piVar5 != 0) {\n    puVar6 = (undefined4 *)0x12;\n    (**(code **)(*piVar5 + 0x28))(piVar5,0x12,&local_18);\n  }\n  if (local_c == *(int *)puVar12) {\n    return *(int *)puVar12;\n  }\n  puVar12 = PTR___stack_chk_fail_0015ba10;\n  (*(code *)PTR___stack_chk_fail_0015ba10)();\n  piVar10 = *(int **)(puVar12 + 0x111384);\n  cVar7 = *(char *)(piVar5 + 1);\n  iVar1 = *piVar10;\n  if ((cVar7 != '\0') &&\n     ((*(byte *)((int)piVar5 + 0x11) < 4 || (*(byte *)((int)piVar5 + 0x11) == 5)))) {\n    iVar2 = FUN_00032f88(piVar5);\n    if (iVar2 != 0) goto LAB_0004a818;\n    cVar7 = *(char *)(piVar5 + 1);\n  }\n  iVar2 = *piVar5;\n  iVar13 = *(int *)(puVar12 + 0x111030);\n  piVar5[0x36] = 0;\n  piVar11 = (int *)piVar5[0xf];\n  puVar14 = (undefined4 *)piVar5[0x37];\n  iVar9 = piVar5[0x29];\n  puVar6 = (undefined4 *)(*(int *)(iVar2 + 4) + 0x78);\n  iVar8 = piVar5[0x28];\n  piVar3 = (int *)(*(code *)(iVar13 + -0x5aa4))(0);\n  if (piVar3 == (int *)0x0) {\n    iVar2 = 7;\n  }\n  else {\n    *piVar3 = iVar2;\n    piVar3[1] = (int)piVar11;\n    piVar3[2] = (int)(piVar3 + 0x1e);\n    piVar3[5] = iVar9;\n    *(undefined2 *)(piVar3 + 10) = 0xffff;\n    piVar3[4] = iVar8;\n    piVar3[0x1b] = (int)puVar14;\n    *(undefined2 *)(piVar3 + 0xc) = 0x101;\n    if (cVar7 != '\0') {\n      cVar7 = '\x02';\n    }\n    *(char *)((int)piVar3 + 0x2b) = cVar7;\n    iVar2 = (**(code **)(iVar2 + 0x18))(iVar2);\n    if (iVar2 == 0) {\n      uVar4 = (**(code **)(*piVar11 + 0x30))(piVar11);\n      if ((uVar4 & 0x400) != 0) {\n        *(undefined1 *)(piVar3 + 0xc) = 0;\n      }\n      if ((uVar4 & 0x1000) != 0) {\n        *(undefined1 *)((int)piVar3 + 0x31) = 0;\n      }\n      piVar5[0x36] = (int)piVar3;\n      puVar6 = puVar14;\n    }\n    else {\n      puVar6 = (undefined4 *)0x0;\n      FUN_00033348(piVar3);\n      piVar11 = (int *)piVar3[2];\n      if (*piVar11 != 0) {\n        (**(code **)(*piVar11 + 4))(piVar11);\n        *piVar11 = 0;\n      }\n      (**(code **)(puVar12 + 0x110f78))(piVar3);\n    }\n  }\nLAB_0004a818:\n  if ((*(int **)piVar5[0xf] != (int *)0x0) && (2 < **(int **)piVar5[0xf])) {\n    FUN_0004a5b8(piVar5);\n  }\n  if (iVar1 == *piVar10) {\n    return iVar2;\n  }\n  (**(code **)(puVar12 + 0x111368))();\n  if ((*(char *)(iVar1 + 0xc) != '\0') || (*(int *)(iVar1 + 0xd8) != 0)) {\n    *puVar6 = 1;\n    return 0;\n  }\n  if (*(char *)(iVar1 + 0xd) != '\0') {\n    return 0xe;\n  }\n  if (*(char *)(iVar1 + 4) == '\0') {\n    if (*(int *)**(undefined4 **)(iVar1 + 0x3c) < 2) {\n      return 0xe;\n    }\n    if (((int *)**(undefined4 **)(iVar1 + 0x3c))[0xd] == 0) {\n      return 0xe;\n    }\n  }\n  piVar5 = *(int **)(iVar1 + 0x40);\n  if (*piVar5 != 0) {\n    (**(code **)(*piVar5 + 4))(piVar5);\n    *piVar5 = 0;\n  }\n  iVar2 = FUN_0004a6a8(iVar1);\n  if (iVar2 == 0) {\n    *(undefined1 *)(iVar1 + 0x10) = 0;\n    *(undefined1 *)(iVar1 + 5) = 5;\n  }\n  return iVar2;\n}\n\n" (function_definition "int FUN_0004a5b8(int param_1)\n\n{\n  int iVar1;\n  int iVar2;\n  int *piVar3;\n  uint uVar4;\n  int *piVar5;\n  undefined4 *puVar6;\n  char cVar7;\n  int iVar8;\n  int iVar9;\n  int *piVar10;\n  int *piVar11;\n  undefined *puVar12;\n  int iVar13;\n  undefined4 *puVar14;\n  int local_18;\n  int local_14;\n  int local_c;\n  \n  puVar12 = PTR___stack_chk_guard_0015ba2c;\n  puVar6 = (undefined4 *)0x1;\n  local_18 = *(int *)(param_1 + 0x80);\n  local_14 = *(int *)(param_1 + 0x84);\n  local_c = *(int *)PTR___stack_chk_guard_0015ba2c;\n  if ((local_18 < 1) && ((local_18 != 0 || (local_14 == 0)))) {\n    puVar6 = (undefined4 *)0x0;\n  }\n  *(char *)(param_1 + 0x16) = (char)puVar6;\n  if (*(int *)(param_1 + 0x28) == 0) {\n    if ((local_18 < 1) && ((local_18 != 0 || (local_14 == 0)))) {\n      *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b704 + -0xe84;\n    }\n    else {\n      *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b704 + -0xa94;\n    }\n  }\n  else {\n    *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b65c + -0x1cc8;\n  }\n  piVar5 = *(int **)(param_1 + 0x3c);\n  if (*piVar5 != 0) {\n    puVar6 = (undefined4 *)0x12;\n    (**(code **)(*piVar5 + 0x28))(piVar5,0x12,&local_18);\n  }\n  if (local_c == *(int *)puVar12) {\n    return *(int *)puVar12;\n  }\n  puVar12 = PTR___stack_chk_fail_0015ba10;\n  (*(code *)PTR___stack_chk_fail_0015ba10)();\n  piVar10 = *(int **)(puVar12 + 0x111384);\n  cVar7 = *(char *)(piVar5 + 1);\n  iVar1 = *piVar10;\n  if ((cVar7 != '\0') &&\n     ((*(byte *)((int)piVar5 + 0x11) < 4 || (*(byte *)((int)piVar5 + 0x11) == 5)))) {\n    iVar2 = FUN_00032f88(piVar5);\n    if (iVar2 != 0) goto LAB_0004a818;\n    cVar7 = *(char *)(piVar5 + 1);\n  }\n  iVar2 = *piVar5;\n  iVar13 = *(int *)(puVar12 + 0x111030);\n  piVar5[0x36] = 0;\n  piVar11 = (int *)piVar5[0xf];\n  puVar14 = (undefined4 *)piVar5[0x37];\n  iVar9 = piVar5[0x29];\n  puVar6 = (undefined4 *)(*(int *)(iVar2 + 4) + 0x78);\n  iVar8 = piVar5[0x28];\n  piVar3 = (int *)(*(code *)(iVar13 + -0x5aa4))(0);\n  if (piVar3 == (int *)0x0) {\n    iVar2 = 7;\n  }\n  else {\n    *piVar3 = iVar2;\n    piVar3[1] = (int)piVar11;\n    piVar3[2] = (int)(piVar3 + 0x1e);\n    piVar3[5] = iVar9;\n    *(undefined2 *)(piVar3 + 10) = 0xffff;\n    piVar3[4] = iVar8;\n    piVar3[0x1b] = (int)puVar14;\n    *(undefined2 *)(piVar3 + 0xc) = 0x101;\n    if (cVar7 != '\0') {\n      cVar7 = '\x02';\n    }\n    *(char *)((int)piVar3 + 0x2b) = cVar7;\n    iVar2 = (**(code **)(iVar2 + 0x18))(iVar2);\n    if (iVar2 == 0) {\n      uVar4 = (**(code **)(*piVar11 + 0x30))(piVar11);\n      if ((uVar4 & 0x400) != 0) {\n        *(undefined1 *)(piVar3 + 0xc) = 0;\n      }\n      if ((uVar4 & 0x1000) != 0) {\n        *(undefined1 *)((int)piVar3 + 0x31) = 0;\n      }\n      piVar5[0x36] = (int)piVar3;\n      puVar6 = puVar14;\n    }\n    else {\n      puVar6 = (undefined4 *)0x0;\n      FUN_00033348(piVar3);\n      piVar11 = (int *)piVar3[2];\n      if (*piVar11 != 0) {\n        (**(code **)(*piVar11 + 4))(piVar11);\n        *piVar11 = 0;\n      }\n      (**(code **)(puVar12 + 0x110f78))(piVar3);\n    }\n  }\nLAB_0004a818:\n  if ((*(int **)piVar5[0xf] != (int *)0x0) && (2 < **(int **)piVar5[0xf])) {\n    FUN_0004a5b8(piVar5);\n  }\n  if (iVar1 == *piVar10) {\n    return iVar2;\n  }\n  (**(code **)(puVar12 + 0x111368))();\n  if ((*(char *)(iVar1 + 0xc) != '\0') || (*(int *)(iVar1 + 0xd8) != 0)) {\n    *puVar6 = 1;\n    return 0;\n  }\n  if (*(char *)(iVar1 + 0xd) != '\0') {\n    return 0xe;\n  }\n  if (*(char *)(iVar1 + 4) == '\0') {\n    if (*(int *)**(undefined4 **)(iVar1 + 0x3c) < 2) {\n      return 0xe;\n    }\n    if (((int *)**(undefined4 **)(iVar1 + 0x3c))[0xd] == 0) {\n      return 0xe;\n    }\n  }\n  piVar5 = *(int **)(iVar1 + 0x40);\n  if (*piVar5 != 0) {\n    (**(code **)(*piVar5 + 4))(piVar5);\n    *piVar5 = 0;\n  }\n  iVar2 = FUN_0004a6a8(iVar1);\n  if (iVar2 == 0) {\n    *(undefined1 *)(iVar1 + 0x10) = 0;\n    *(undefined1 *)(iVar1 + 5) = 5;\n  }\n  return iVar2;\n}" primitive_type (function_declarator "FUN_0004a5b8(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  int *piVar3;\n  uint uVar4;\n  int *piVar5;\n  undefined4 *puVar6;\n  char cVar7;\n  int iVar8;\n  int iVar9;\n  int *piVar10;\n  int *piVar11;\n  undefined *puVar12;\n  int iVar13;\n  undefined4 *puVar14;\n  int local_18;\n  int local_14;\n  int local_c;\n  \n  puVar12 = PTR___stack_chk_guard_0015ba2c;\n  puVar6 = (undefined4 *)0x1;\n  local_18 = *(int *)(param_1 + 0x80);\n  local_14 = *(int *)(param_1 + 0x84);\n  local_c = *(int *)PTR___stack_chk_guard_0015ba2c;\n  if ((local_18 < 1) && ((local_18 != 0 || (local_14 == 0)))) {\n    puVar6 = (undefined4 *)0x0;\n  }\n  *(char *)(param_1 + 0x16) = (char)puVar6;\n  if (*(int *)(param_1 + 0x28) == 0) {\n    if ((local_18 < 1) && ((local_18 != 0 || (local_14 == 0)))) {\n      *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b704 + -0xe84;\n    }\n    else {\n      *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b704 + -0xa94;\n    }\n  }\n  else {\n    *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b65c + -0x1cc8;\n  }\n  piVar5 = *(int **)(param_1 + 0x3c);\n  if (*piVar5 != 0) {\n    puVar6 = (undefined4 *)0x12;\n    (**(code **)(*piVar5 + 0x28))(piVar5,0x12,&local_18);\n  }\n  if (local_c == *(int *)puVar12) {\n    return *(int *)puVar12;\n  }\n  puVar12 = PTR___stack_chk_fail_0015ba10;\n  (*(code *)PTR___stack_chk_fail_0015ba10)();\n  piVar10 = *(int **)(puVar12 + 0x111384);\n  cVar7 = *(char *)(piVar5 + 1);\n  iVar1 = *piVar10;\n  if ((cVar7 != '\0') &&\n     ((*(byte *)((int)piVar5 + 0x11) < 4 || (*(byte *)((int)piVar5 + 0x11) == 5)))) {\n    iVar2 = FUN_00032f88(piVar5);\n    if (iVar2 != 0) goto LAB_0004a818;\n    cVar7 = *(char *)(piVar5 + 1);\n  }\n  iVar2 = *piVar5;\n  iVar13 = *(int *)(puVar12 + 0x111030);\n  piVar5[0x36] = 0;\n  piVar11 = (int *)piVar5[0xf];\n  puVar14 = (undefined4 *)piVar5[0x37];\n  iVar9 = piVar5[0x29];\n  puVar6 = (undefined4 *)(*(int *)(iVar2 + 4) + 0x78);\n  iVar8 = piVar5[0x28];\n  piVar3 = (int *)(*(code *)(iVar13 + -0x5aa4))(0);\n  if (piVar3 == (int *)0x0) {\n    iVar2 = 7;\n  }\n  else {\n    *piVar3 = iVar2;\n    piVar3[1] = (int)piVar11;\n    piVar3[2] = (int)(piVar3 + 0x1e);\n    piVar3[5] = iVar9;\n    *(undefined2 *)(piVar3 + 10) = 0xffff;\n    piVar3[4] = iVar8;\n    piVar3[0x1b] = (int)puVar14;\n    *(undefined2 *)(piVar3 + 0xc) = 0x101;\n    if (cVar7 != '\0') {\n      cVar7 = '\x02';\n    }\n    *(char *)((int)piVar3 + 0x2b) = cVar7;\n    iVar2 = (**(code **)(iVar2 + 0x18))(iVar2);\n    if (iVar2 == 0) {\n      uVar4 = (**(code **)(*piVar11 + 0x30))(piVar11);\n      if ((uVar4 & 0x400) != 0) {\n        *(undefined1 *)(piVar3 + 0xc) = 0;\n      }\n      if ((uVar4 & 0x1000) != 0) {\n        *(undefined1 *)((int)piVar3 + 0x31) = 0;\n      }\n      piVar5[0x36] = (int)piVar3;\n      puVar6 = puVar14;\n    }\n    else {\n      puVar6 = (undefined4 *)0x0;\n      FUN_00033348(piVar3);\n      piVar11 = (int *)piVar3[2];\n      if (*piVar11 != 0) {\n        (**(code **)(*piVar11 + 4))(piVar11);\n        *piVar11 = 0;\n      }\n      (**(code **)(puVar12 + 0x110f78))(piVar3);\n    }\n  }\nLAB_0004a818:\n  if ((*(int **)piVar5[0xf] != (int *)0x0) && (2 < **(int **)piVar5[0xf])) {\n    FUN_0004a5b8(piVar5);\n  }\n  if (iVar1 == *piVar10) {\n    return iVar2;\n  }\n  (**(code **)(puVar12 + 0x111368))();\n  if ((*(char *)(iVar1 + 0xc) != '\0') || (*(int *)(iVar1 + 0xd8) != 0)) {\n    *puVar6 = 1;\n    return 0;\n  }\n  if (*(char *)(iVar1 + 0xd) != '\0') {\n    return 0xe;\n  }\n  if (*(char *)(iVar1 + 4) == '\0') {\n    if (*(int *)**(undefined4 **)(iVar1 + 0x3c) < 2) {\n      return 0xe;\n    }\n    if (((int *)**(undefined4 **)(iVar1 + 0x3c))[0xd] == 0) {\n      return 0xe;\n    }\n  }\n  piVar5 = *(int **)(iVar1 + 0x40);\n  if (*piVar5 != 0) {\n    (**(code **)(*piVar5 + 4))(piVar5);\n    *piVar5 = 0;\n  }\n  iVar2 = FUN_0004a6a8(iVar1);\n  if (iVar2 == 0) {\n    *(undefined1 *)(iVar1 + 0x10) = 0;\n    *(undefined1 *)(iVar1 + 5) = 5;\n  }\n  return iVar2;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "undefined4 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "char cVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int *piVar10;" primitive_type (pointer_declarator "*piVar10" * identifier) ;) (declaration "int *piVar11;" primitive_type (pointer_declarator "*piVar11" * identifier) ;) (declaration "undefined *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "undefined4 *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "int local_18;" primitive_type identifier ;) (declaration "int local_14;" primitive_type identifier ;) (declaration "int local_c;" primitive_type identifier ;) (expression_statement "puVar12 = PTR___stack_chk_guard_0015ba2c;" (assignment_expression "puVar12 = PTR___stack_chk_guard_0015ba2c" identifier = identifier) ;) (expression_statement "puVar6 = (undefined4 *)0x1;" (assignment_expression "puVar6 = (undefined4 *)0x1" identifier = (cast_expression "(undefined4 *)0x1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_18 = *(int *)(param_1 + 0x80);" (assignment_expression "local_18 = *(int *)(param_1 + 0x80)" identifier = (pointer_expression "*(int *)(param_1 + 0x80)" * (cast_expression "(int *)(param_1 + 0x80)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x80)" ( (binary_expression "param_1 + 0x80" identifier + number_literal) ))))) ;) (expression_statement "local_14 = *(int *)(param_1 + 0x84);" (assignment_expression "local_14 = *(int *)(param_1 + 0x84)" identifier = (pointer_expression "*(int *)(param_1 + 0x84)" * (cast_expression "(int *)(param_1 + 0x84)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x84)" ( (binary_expression "param_1 + 0x84" identifier + number_literal) ))))) ;) (expression_statement "local_c = *(int *)PTR___stack_chk_guard_0015ba2c;" (assignment_expression "local_c = *(int *)PTR___stack_chk_guard_0015ba2c" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0015ba2c" * (cast_expression "(int *)PTR___stack_chk_guard_0015ba2c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if ((local_18 < 1) && ((local_18 != 0 || (local_14 == 0)))) {\n    puVar6 = (undefined4 *)0x0;\n  }" if (parenthesized_expression "((local_18 < 1) && ((local_18 != 0 || (local_14 == 0))))" ( (binary_expression "(local_18 < 1) && ((local_18 != 0 || (local_14 == 0)))" (parenthesized_expression "(local_18 < 1)" ( (binary_expression "local_18 < 1" identifier < number_literal) )) && (parenthesized_expression "((local_18 != 0 || (local_14 == 0)))" ( (parenthesized_expression "(local_18 != 0 || (local_14 == 0))" ( (binary_expression "local_18 != 0 || (local_14 == 0)" (binary_expression "local_18 != 0" identifier != number_literal) || (parenthesized_expression "(local_14 == 0)" ( (binary_expression "local_14 == 0" identifier == number_literal) ))) )) ))) )) (compound_statement "{\n    puVar6 = (undefined4 *)0x0;\n  }" { (expression_statement "puVar6 = (undefined4 *)0x0;" (assignment_expression "puVar6 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "*(char *)(param_1 + 0x16) = (char)puVar6;" (assignment_expression "*(char *)(param_1 + 0x16) = (char)puVar6" (pointer_expression "*(char *)(param_1 + 0x16)" * (cast_expression "(char *)(param_1 + 0x16)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x16)" ( (binary_expression "param_1 + 0x16" identifier + number_literal) )))) = (cast_expression "(char)puVar6" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (if_statement "if (*(int *)(param_1 + 0x28) == 0) {\n    if ((local_18 < 1) && ((local_18 != 0 || (local_14 == 0)))) {\n      *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b704 + -0xe84;\n    }\n    else {\n      *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b704 + -0xa94;\n    }\n  }\n  else {\n    *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b65c + -0x1cc8;\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0x28) == 0)" ( (binary_expression "*(int *)(param_1 + 0x28) == 0" (pointer_expression "*(int *)(param_1 + 0x28)" * (cast_expression "(int *)(param_1 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    if ((local_18 < 1) && ((local_18 != 0 || (local_14 == 0)))) {\n      *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b704 + -0xe84;\n    }\n    else {\n      *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b704 + -0xa94;\n    }\n  }" { (if_statement "if ((local_18 < 1) && ((local_18 != 0 || (local_14 == 0)))) {\n      *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b704 + -0xe84;\n    }\n    else {\n      *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b704 + -0xa94;\n    }" if (parenthesized_expression "((local_18 < 1) && ((local_18 != 0 || (local_14 == 0))))" ( (binary_expression "(local_18 < 1) && ((local_18 != 0 || (local_14 == 0)))" (parenthesized_expression "(local_18 < 1)" ( (binary_expression "local_18 < 1" identifier < number_literal) )) && (parenthesized_expression "((local_18 != 0 || (local_14 == 0)))" ( (parenthesized_expression "(local_18 != 0 || (local_14 == 0))" ( (binary_expression "local_18 != 0 || (local_14 == 0)" (binary_expression "local_18 != 0" identifier != number_literal) || (parenthesized_expression "(local_14 == 0)" ( (binary_expression "local_14 == 0" identifier == number_literal) ))) )) ))) )) (compound_statement "{\n      *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b704 + -0xe84;\n    }" { (expression_statement "*(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b704 + -0xe84;" (assignment_expression "*(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b704 + -0xe84" (pointer_expression "*(undefined **)(param_1 + 0xcc)" * (cast_expression "(undefined **)(param_1 + 0xcc)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xcc)" ( (binary_expression "param_1 + 0xcc" identifier + number_literal) )))) = (binary_expression "PTR_LAB_0015b704 + -0xe84" identifier + number_literal)) ;) }) (else_clause "else {\n      *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b704 + -0xa94;\n    }" else (compound_statement "{\n      *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b704 + -0xa94;\n    }" { (expression_statement "*(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b704 + -0xa94;" (assignment_expression "*(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b704 + -0xa94" (pointer_expression "*(undefined **)(param_1 + 0xcc)" * (cast_expression "(undefined **)(param_1 + 0xcc)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xcc)" ( (binary_expression "param_1 + 0xcc" identifier + number_literal) )))) = (binary_expression "PTR_LAB_0015b704 + -0xa94" identifier + number_literal)) ;) }))) }) (else_clause "else {\n    *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b65c + -0x1cc8;\n  }" else (compound_statement "{\n    *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b65c + -0x1cc8;\n  }" { (expression_statement "*(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b65c + -0x1cc8;" (assignment_expression "*(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b65c + -0x1cc8" (pointer_expression "*(undefined **)(param_1 + 0xcc)" * (cast_expression "(undefined **)(param_1 + 0xcc)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xcc)" ( (binary_expression "param_1 + 0xcc" identifier + number_literal) )))) = (binary_expression "PTR_LAB_0015b65c + -0x1cc8" identifier + number_literal)) ;) }))) (expression_statement "piVar5 = *(int **)(param_1 + 0x3c);" (assignment_expression "piVar5 = *(int **)(param_1 + 0x3c)" identifier = (pointer_expression "*(int **)(param_1 + 0x3c)" * (cast_expression "(int **)(param_1 + 0x3c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) ))))) ;) (if_statement "if (*piVar5 != 0) {\n    puVar6 = (undefined4 *)0x12;\n    (**(code **)(*piVar5 + 0x28))(piVar5,0x12,&local_18);\n  }" if (parenthesized_expression "(*piVar5 != 0)" ( (binary_expression "*piVar5 != 0" (pointer_expression "*piVar5" * identifier) != number_literal) )) (compound_statement "{\n    puVar6 = (undefined4 *)0x12;\n    (**(code **)(*piVar5 + 0x28))(piVar5,0x12,&local_18);\n  }" { (expression_statement "puVar6 = (undefined4 *)0x12;" (assignment_expression "puVar6 = (undefined4 *)0x12" identifier = (cast_expression "(undefined4 *)0x12" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(**(code **)(*piVar5 + 0x28))(piVar5,0x12,&local_18);" (call_expression "(**(code **)(*piVar5 + 0x28))(piVar5,0x12,&local_18)" (parenthesized_expression "(**(code **)(*piVar5 + 0x28))" ( (pointer_expression "**(code **)(*piVar5 + 0x28)" * (pointer_expression "*(code **)(*piVar5 + 0x28)" * (cast_expression "(code **)(*piVar5 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar5 + 0x28)" ( (binary_expression "*piVar5 + 0x28" (pointer_expression "*piVar5" * identifier) + number_literal) ))))) )) (argument_list "(piVar5,0x12,&local_18)" ( identifier , number_literal , (pointer_expression "&local_18" & identifier) ))) ;) })) (if_statement "if (local_c == *(int *)puVar12) {\n    return *(int *)puVar12;\n  }" if (parenthesized_expression "(local_c == *(int *)puVar12)" ( (binary_expression "local_c == *(int *)puVar12" identifier == (pointer_expression "*(int *)puVar12" * (cast_expression "(int *)puVar12" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return *(int *)puVar12;\n  }" { (return_statement "return *(int *)puVar12;" return (pointer_expression "*(int *)puVar12" * (cast_expression "(int *)puVar12" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) })) (expression_statement "puVar12 = PTR___stack_chk_fail_0015ba10;" (assignment_expression "puVar12 = PTR___stack_chk_fail_0015ba10" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_0015ba10)();" (call_expression "(*(code *)PTR___stack_chk_fail_0015ba10)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0015ba10)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0015ba10" * (cast_expression "(code *)PTR___stack_chk_fail_0015ba10" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "piVar10 = *(int **)(puVar12 + 0x111384);" (assignment_expression "piVar10 = *(int **)(puVar12 + 0x111384)" identifier = (pointer_expression "*(int **)(puVar12 + 0x111384)" * (cast_expression "(int **)(puVar12 + 0x111384)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar12 + 0x111384)" ( (binary_expression "puVar12 + 0x111384" identifier + number_literal) ))))) ;) (expression_statement "cVar7 = *(char *)(piVar5 + 1);" (assignment_expression "cVar7 = *(char *)(piVar5 + 1)" identifier = (pointer_expression "*(char *)(piVar5 + 1)" * (cast_expression "(char *)(piVar5 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar5 + 1)" ( (binary_expression "piVar5 + 1" identifier + number_literal) ))))) ;) (expression_statement "iVar1 = *piVar10;" (assignment_expression "iVar1 = *piVar10" identifier = (pointer_expression "*piVar10" * identifier)) ;) (if_statement "if ((cVar7 != '\0') &&\n     ((*(byte *)((int)piVar5 + 0x11) < 4 || (*(byte *)((int)piVar5 + 0x11) == 5)))) {\n    iVar2 = FUN_00032f88(piVar5);\n    if (iVar2 != 0) goto LAB_0004a818;\n    cVar7 = *(char *)(piVar5 + 1);\n  }" if (parenthesized_expression "((cVar7 != '\0') &&\n     ((*(byte *)((int)piVar5 + 0x11) < 4 || (*(byte *)((int)piVar5 + 0x11) == 5))))" ( (binary_expression "(cVar7 != '\0') &&\n     ((*(byte *)((int)piVar5 + 0x11) < 4 || (*(byte *)((int)piVar5 + 0x11) == 5)))" (parenthesized_expression "(cVar7 != '\0')" ( (binary_expression "cVar7 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "((*(byte *)((int)piVar5 + 0x11) < 4 || (*(byte *)((int)piVar5 + 0x11) == 5)))" ( (parenthesized_expression "(*(byte *)((int)piVar5 + 0x11) < 4 || (*(byte *)((int)piVar5 + 0x11) == 5))" ( (binary_expression "*(byte *)((int)piVar5 + 0x11) < 4 || (*(byte *)((int)piVar5 + 0x11) == 5)" (binary_expression "*(byte *)((int)piVar5 + 0x11) < 4" (pointer_expression "*(byte *)((int)piVar5 + 0x11)" * (cast_expression "(byte *)((int)piVar5 + 0x11)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar5 + 0x11)" ( (binary_expression "(int)piVar5 + 0x11" (cast_expression "(int)piVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) < number_literal) || (parenthesized_expression "(*(byte *)((int)piVar5 + 0x11) == 5)" ( (binary_expression "*(byte *)((int)piVar5 + 0x11) == 5" (pointer_expression "*(byte *)((int)piVar5 + 0x11)" * (cast_expression "(byte *)((int)piVar5 + 0x11)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar5 + 0x11)" ( (binary_expression "(int)piVar5 + 0x11" (cast_expression "(int)piVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == number_literal) ))) )) ))) )) (compound_statement "{\n    iVar2 = FUN_00032f88(piVar5);\n    if (iVar2 != 0) goto LAB_0004a818;\n    cVar7 = *(char *)(piVar5 + 1);\n  }" { (expression_statement "iVar2 = FUN_00032f88(piVar5);" (assignment_expression "iVar2 = FUN_00032f88(piVar5)" identifier = (call_expression "FUN_00032f88(piVar5)" identifier (argument_list "(piVar5)" ( identifier )))) ;) (if_statement "if (iVar2 != 0) goto LAB_0004a818;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0004a818;" goto statement_identifier ;)) (expression_statement "cVar7 = *(char *)(piVar5 + 1);" (assignment_expression "cVar7 = *(char *)(piVar5 + 1)" identifier = (pointer_expression "*(char *)(piVar5 + 1)" * (cast_expression "(char *)(piVar5 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar5 + 1)" ( (binary_expression "piVar5 + 1" identifier + number_literal) ))))) ;) })) (expression_statement "iVar2 = *piVar5;" (assignment_expression "iVar2 = *piVar5" identifier = (pointer_expression "*piVar5" * identifier)) ;) (expression_statement "iVar13 = *(int *)(puVar12 + 0x111030);" (assignment_expression "iVar13 = *(int *)(puVar12 + 0x111030)" identifier = (pointer_expression "*(int *)(puVar12 + 0x111030)" * (cast_expression "(int *)(puVar12 + 0x111030)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + 0x111030)" ( (binary_expression "puVar12 + 0x111030" identifier + number_literal) ))))) ;) (expression_statement "piVar5[0x36] = 0;" (assignment_expression "piVar5[0x36] = 0" (subscript_expression "piVar5[0x36]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar11 = (int *)piVar5[0xf];" (assignment_expression "piVar11 = (int *)piVar5[0xf]" identifier = (cast_expression "(int *)piVar5[0xf]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar5[0xf]" identifier [ number_literal ]))) ;) (expression_statement "puVar14 = (undefined4 *)piVar5[0x37];" (assignment_expression "puVar14 = (undefined4 *)piVar5[0x37]" identifier = (cast_expression "(undefined4 *)piVar5[0x37]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar5[0x37]" identifier [ number_literal ]))) ;) (expression_statement "iVar9 = piVar5[0x29];" (assignment_expression "iVar9 = piVar5[0x29]" identifier = (subscript_expression "piVar5[0x29]" identifier [ number_literal ])) ;) (expression_statement "puVar6 = (undefined4 *)(*(int *)(iVar2 + 4) + 0x78);" (assignment_expression "puVar6 = (undefined4 *)(*(int *)(iVar2 + 4) + 0x78)" identifier = (cast_expression "(undefined4 *)(*(int *)(iVar2 + 4) + 0x78)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar2 + 4) + 0x78)" ( (binary_expression "*(int *)(iVar2 + 4) + 0x78" (pointer_expression "*(int *)(iVar2 + 4)" * (cast_expression "(int *)(iVar2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 4)" ( (binary_expression "iVar2 + 4" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "iVar8 = piVar5[0x28];" (assignment_expression "iVar8 = piVar5[0x28]" identifier = (subscript_expression "piVar5[0x28]" identifier [ number_literal ])) ;) (expression_statement "piVar3 = (int *)(*(code *)(iVar13 + -0x5aa4))(0);" (assignment_expression "piVar3 = (int *)(*(code *)(iVar13 + -0x5aa4))(0)" identifier = (cast_expression "(int *)(*(code *)(iVar13 + -0x5aa4))(0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)(iVar13 + -0x5aa4))(0)" (parenthesized_expression "(*(code *)(iVar13 + -0x5aa4))" ( (pointer_expression "*(code *)(iVar13 + -0x5aa4)" * (cast_expression "(code *)(iVar13 + -0x5aa4)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + -0x5aa4)" ( (binary_expression "iVar13 + -0x5aa4" identifier + number_literal) )))) )) (argument_list "(0)" ( number_literal ))))) ;) (if_statement "if (piVar3 == (int *)0x0) {\n    iVar2 = 7;\n  }\n  else {\n    *piVar3 = iVar2;\n    piVar3[1] = (int)piVar11;\n    piVar3[2] = (int)(piVar3 + 0x1e);\n    piVar3[5] = iVar9;\n    *(undefined2 *)(piVar3 + 10) = 0xffff;\n    piVar3[4] = iVar8;\n    piVar3[0x1b] = (int)puVar14;\n    *(undefined2 *)(piVar3 + 0xc) = 0x101;\n    if (cVar7 != '\0') {\n      cVar7 = '\x02';\n    }\n    *(char *)((int)piVar3 + 0x2b) = cVar7;\n    iVar2 = (**(code **)(iVar2 + 0x18))(iVar2);\n    if (iVar2 == 0) {\n      uVar4 = (**(code **)(*piVar11 + 0x30))(piVar11);\n      if ((uVar4 & 0x400) != 0) {\n        *(undefined1 *)(piVar3 + 0xc) = 0;\n      }\n      if ((uVar4 & 0x1000) != 0) {\n        *(undefined1 *)((int)piVar3 + 0x31) = 0;\n      }\n      piVar5[0x36] = (int)piVar3;\n      puVar6 = puVar14;\n    }\n    else {\n      puVar6 = (undefined4 *)0x0;\n      FUN_00033348(piVar3);\n      piVar11 = (int *)piVar3[2];\n      if (*piVar11 != 0) {\n        (**(code **)(*piVar11 + 4))(piVar11);\n        *piVar11 = 0;\n      }\n      (**(code **)(puVar12 + 0x110f78))(piVar3);\n    }\n  }" if (parenthesized_expression "(piVar3 == (int *)0x0)" ( (binary_expression "piVar3 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    iVar2 = 7;\n  }" { (expression_statement "iVar2 = 7;" (assignment_expression "iVar2 = 7" identifier = number_literal) ;) }) (else_clause "else {\n    *piVar3 = iVar2;\n    piVar3[1] = (int)piVar11;\n    piVar3[2] = (int)(piVar3 + 0x1e);\n    piVar3[5] = iVar9;\n    *(undefined2 *)(piVar3 + 10) = 0xffff;\n    piVar3[4] = iVar8;\n    piVar3[0x1b] = (int)puVar14;\n    *(undefined2 *)(piVar3 + 0xc) = 0x101;\n    if (cVar7 != '\0') {\n      cVar7 = '\x02';\n    }\n    *(char *)((int)piVar3 + 0x2b) = cVar7;\n    iVar2 = (**(code **)(iVar2 + 0x18))(iVar2);\n    if (iVar2 == 0) {\n      uVar4 = (**(code **)(*piVar11 + 0x30))(piVar11);\n      if ((uVar4 & 0x400) != 0) {\n        *(undefined1 *)(piVar3 + 0xc) = 0;\n      }\n      if ((uVar4 & 0x1000) != 0) {\n        *(undefined1 *)((int)piVar3 + 0x31) = 0;\n      }\n      piVar5[0x36] = (int)piVar3;\n      puVar6 = puVar14;\n    }\n    else {\n      puVar6 = (undefined4 *)0x0;\n      FUN_00033348(piVar3);\n      piVar11 = (int *)piVar3[2];\n      if (*piVar11 != 0) {\n        (**(code **)(*piVar11 + 4))(piVar11);\n        *piVar11 = 0;\n      }\n      (**(code **)(puVar12 + 0x110f78))(piVar3);\n    }\n  }" else (compound_statement "{\n    *piVar3 = iVar2;\n    piVar3[1] = (int)piVar11;\n    piVar3[2] = (int)(piVar3 + 0x1e);\n    piVar3[5] = iVar9;\n    *(undefined2 *)(piVar3 + 10) = 0xffff;\n    piVar3[4] = iVar8;\n    piVar3[0x1b] = (int)puVar14;\n    *(undefined2 *)(piVar3 + 0xc) = 0x101;\n    if (cVar7 != '\0') {\n      cVar7 = '\x02';\n    }\n    *(char *)((int)piVar3 + 0x2b) = cVar7;\n    iVar2 = (**(code **)(iVar2 + 0x18))(iVar2);\n    if (iVar2 == 0) {\n      uVar4 = (**(code **)(*piVar11 + 0x30))(piVar11);\n      if ((uVar4 & 0x400) != 0) {\n        *(undefined1 *)(piVar3 + 0xc) = 0;\n      }\n      if ((uVar4 & 0x1000) != 0) {\n        *(undefined1 *)((int)piVar3 + 0x31) = 0;\n      }\n      piVar5[0x36] = (int)piVar3;\n      puVar6 = puVar14;\n    }\n    else {\n      puVar6 = (undefined4 *)0x0;\n      FUN_00033348(piVar3);\n      piVar11 = (int *)piVar3[2];\n      if (*piVar11 != 0) {\n        (**(code **)(*piVar11 + 4))(piVar11);\n        *piVar11 = 0;\n      }\n      (**(code **)(puVar12 + 0x110f78))(piVar3);\n    }\n  }" { (expression_statement "*piVar3 = iVar2;" (assignment_expression "*piVar3 = iVar2" (pointer_expression "*piVar3" * identifier) = identifier) ;) (expression_statement "piVar3[1] = (int)piVar11;" (assignment_expression "piVar3[1] = (int)piVar11" (subscript_expression "piVar3[1]" identifier [ number_literal ]) = (cast_expression "(int)piVar11" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar3[2] = (int)(piVar3 + 0x1e);" (assignment_expression "piVar3[2] = (int)(piVar3 + 0x1e)" (subscript_expression "piVar3[2]" identifier [ number_literal ]) = (cast_expression "(int)(piVar3 + 0x1e)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(piVar3 + 0x1e)" ( (binary_expression "piVar3 + 0x1e" identifier + number_literal) )))) ;) (expression_statement "piVar3[5] = iVar9;" (assignment_expression "piVar3[5] = iVar9" (subscript_expression "piVar3[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined2 *)(piVar3 + 10) = 0xffff;" (assignment_expression "*(undefined2 *)(piVar3 + 10) = 0xffff" (pointer_expression "*(undefined2 *)(piVar3 + 10)" * (cast_expression "(undefined2 *)(piVar3 + 10)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar3 + 10)" ( (binary_expression "piVar3 + 10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "piVar3[4] = iVar8;" (assignment_expression "piVar3[4] = iVar8" (subscript_expression "piVar3[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar3[0x1b] = (int)puVar14;" (assignment_expression "piVar3[0x1b] = (int)puVar14" (subscript_expression "piVar3[0x1b]" identifier [ number_literal ]) = (cast_expression "(int)puVar14" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*(undefined2 *)(piVar3 + 0xc) = 0x101;" (assignment_expression "*(undefined2 *)(piVar3 + 0xc) = 0x101" (pointer_expression "*(undefined2 *)(piVar3 + 0xc)" * (cast_expression "(undefined2 *)(piVar3 + 0xc)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar3 + 0xc)" ( (binary_expression "piVar3 + 0xc" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (cVar7 != '\0') {\n      cVar7 = '\x02';\n    }" if (parenthesized_expression "(cVar7 != '\0')" ( (binary_expression "cVar7 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      cVar7 = '\x02';\n    }" { (expression_statement "cVar7 = '\x02';" (assignment_expression "cVar7 = '\x02'" identifier = (char_literal "'\x02'" ' escape_sequence ')) ;) })) (expression_statement "*(char *)((int)piVar3 + 0x2b) = cVar7;" (assignment_expression "*(char *)((int)piVar3 + 0x2b) = cVar7" (pointer_expression "*(char *)((int)piVar3 + 0x2b)" * (cast_expression "(char *)((int)piVar3 + 0x2b)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar3 + 0x2b)" ( (binary_expression "(int)piVar3 + 0x2b" (cast_expression "(int)piVar3" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "iVar2 = (**(code **)(iVar2 + 0x18))(iVar2);" (assignment_expression "iVar2 = (**(code **)(iVar2 + 0x18))(iVar2)" identifier = (call_expression "(**(code **)(iVar2 + 0x18))(iVar2)" (parenthesized_expression "(**(code **)(iVar2 + 0x18))" ( (pointer_expression "**(code **)(iVar2 + 0x18)" * (pointer_expression "*(code **)(iVar2 + 0x18)" * (cast_expression "(code **)(iVar2 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 0x18)" ( (binary_expression "iVar2 + 0x18" identifier + number_literal) ))))) )) (argument_list "(iVar2)" ( identifier )))) ;) (if_statement "if (iVar2 == 0) {\n      uVar4 = (**(code **)(*piVar11 + 0x30))(piVar11);\n      if ((uVar4 & 0x400) != 0) {\n        *(undefined1 *)(piVar3 + 0xc) = 0;\n      }\n      if ((uVar4 & 0x1000) != 0) {\n        *(undefined1 *)((int)piVar3 + 0x31) = 0;\n      }\n      piVar5[0x36] = (int)piVar3;\n      puVar6 = puVar14;\n    }\n    else {\n      puVar6 = (undefined4 *)0x0;\n      FUN_00033348(piVar3);\n      piVar11 = (int *)piVar3[2];\n      if (*piVar11 != 0) {\n        (**(code **)(*piVar11 + 4))(piVar11);\n        *piVar11 = 0;\n      }\n      (**(code **)(puVar12 + 0x110f78))(piVar3);\n    }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar4 = (**(code **)(*piVar11 + 0x30))(piVar11);\n      if ((uVar4 & 0x400) != 0) {\n        *(undefined1 *)(piVar3 + 0xc) = 0;\n      }\n      if ((uVar4 & 0x1000) != 0) {\n        *(undefined1 *)((int)piVar3 + 0x31) = 0;\n      }\n      piVar5[0x36] = (int)piVar3;\n      puVar6 = puVar14;\n    }" { (expression_statement "uVar4 = (**(code **)(*piVar11 + 0x30))(piVar11);" (assignment_expression "uVar4 = (**(code **)(*piVar11 + 0x30))(piVar11)" identifier = (call_expression "(**(code **)(*piVar11 + 0x30))(piVar11)" (parenthesized_expression "(**(code **)(*piVar11 + 0x30))" ( (pointer_expression "**(code **)(*piVar11 + 0x30)" * (pointer_expression "*(code **)(*piVar11 + 0x30)" * (cast_expression "(code **)(*piVar11 + 0x30)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar11 + 0x30)" ( (binary_expression "*piVar11 + 0x30" (pointer_expression "*piVar11" * identifier) + number_literal) ))))) )) (argument_list "(piVar11)" ( identifier )))) ;) (if_statement "if ((uVar4 & 0x400) != 0) {\n        *(undefined1 *)(piVar3 + 0xc) = 0;\n      }" if (parenthesized_expression "((uVar4 & 0x400) != 0)" ( (binary_expression "(uVar4 & 0x400) != 0" (parenthesized_expression "(uVar4 & 0x400)" ( (binary_expression "uVar4 & 0x400" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        *(undefined1 *)(piVar3 + 0xc) = 0;\n      }" { (expression_statement "*(undefined1 *)(piVar3 + 0xc) = 0;" (assignment_expression "*(undefined1 *)(piVar3 + 0xc) = 0" (pointer_expression "*(undefined1 *)(piVar3 + 0xc)" * (cast_expression "(undefined1 *)(piVar3 + 0xc)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar3 + 0xc)" ( (binary_expression "piVar3 + 0xc" identifier + number_literal) )))) = number_literal) ;) })) (if_statement "if ((uVar4 & 0x1000) != 0) {\n        *(undefined1 *)((int)piVar3 + 0x31) = 0;\n      }" if (parenthesized_expression "((uVar4 & 0x1000) != 0)" ( (binary_expression "(uVar4 & 0x1000) != 0" (parenthesized_expression "(uVar4 & 0x1000)" ( (binary_expression "uVar4 & 0x1000" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        *(undefined1 *)((int)piVar3 + 0x31) = 0;\n      }" { (expression_statement "*(undefined1 *)((int)piVar3 + 0x31) = 0;" (assignment_expression "*(undefined1 *)((int)piVar3 + 0x31) = 0" (pointer_expression "*(undefined1 *)((int)piVar3 + 0x31)" * (cast_expression "(undefined1 *)((int)piVar3 + 0x31)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar3 + 0x31)" ( (binary_expression "(int)piVar3 + 0x31" (cast_expression "(int)piVar3" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) })) (expression_statement "piVar5[0x36] = (int)piVar3;" (assignment_expression "piVar5[0x36] = (int)piVar3" (subscript_expression "piVar5[0x36]" identifier [ number_literal ]) = (cast_expression "(int)piVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "puVar6 = puVar14;" (assignment_expression "puVar6 = puVar14" identifier = identifier) ;) }) (else_clause "else {\n      puVar6 = (undefined4 *)0x0;\n      FUN_00033348(piVar3);\n      piVar11 = (int *)piVar3[2];\n      if (*piVar11 != 0) {\n        (**(code **)(*piVar11 + 4))(piVar11);\n        *piVar11 = 0;\n      }\n      (**(code **)(puVar12 + 0x110f78))(piVar3);\n    }" else (compound_statement "{\n      puVar6 = (undefined4 *)0x0;\n      FUN_00033348(piVar3);\n      piVar11 = (int *)piVar3[2];\n      if (*piVar11 != 0) {\n        (**(code **)(*piVar11 + 4))(piVar11);\n        *piVar11 = 0;\n      }\n      (**(code **)(puVar12 + 0x110f78))(piVar3);\n    }" { (expression_statement "puVar6 = (undefined4 *)0x0;" (assignment_expression "puVar6 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "FUN_00033348(piVar3);" (call_expression "FUN_00033348(piVar3)" identifier (argument_list "(piVar3)" ( identifier ))) ;) (expression_statement "piVar11 = (int *)piVar3[2];" (assignment_expression "piVar11 = (int *)piVar3[2]" identifier = (cast_expression "(int *)piVar3[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar3[2]" identifier [ number_literal ]))) ;) (if_statement "if (*piVar11 != 0) {\n        (**(code **)(*piVar11 + 4))(piVar11);\n        *piVar11 = 0;\n      }" if (parenthesized_expression "(*piVar11 != 0)" ( (binary_expression "*piVar11 != 0" (pointer_expression "*piVar11" * identifier) != number_literal) )) (compound_statement "{\n        (**(code **)(*piVar11 + 4))(piVar11);\n        *piVar11 = 0;\n      }" { (expression_statement "(**(code **)(*piVar11 + 4))(piVar11);" (call_expression "(**(code **)(*piVar11 + 4))(piVar11)" (parenthesized_expression "(**(code **)(*piVar11 + 4))" ( (pointer_expression "**(code **)(*piVar11 + 4)" * (pointer_expression "*(code **)(*piVar11 + 4)" * (cast_expression "(code **)(*piVar11 + 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar11 + 4)" ( (binary_expression "*piVar11 + 4" (pointer_expression "*piVar11" * identifier) + number_literal) ))))) )) (argument_list "(piVar11)" ( identifier ))) ;) (expression_statement "*piVar11 = 0;" (assignment_expression "*piVar11 = 0" (pointer_expression "*piVar11" * identifier) = number_literal) ;) })) (expression_statement "(**(code **)(puVar12 + 0x110f78))(piVar3);" (call_expression "(**(code **)(puVar12 + 0x110f78))(piVar3)" (parenthesized_expression "(**(code **)(puVar12 + 0x110f78))" ( (pointer_expression "**(code **)(puVar12 + 0x110f78)" * (pointer_expression "*(code **)(puVar12 + 0x110f78)" * (cast_expression "(code **)(puVar12 + 0x110f78)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar12 + 0x110f78)" ( (binary_expression "puVar12 + 0x110f78" identifier + number_literal) ))))) )) (argument_list "(piVar3)" ( identifier ))) ;) }))) }))) (labeled_statement "LAB_0004a818:\n  if ((*(int **)piVar5[0xf] != (int *)0x0) && (2 < **(int **)piVar5[0xf])) {\n    FUN_0004a5b8(piVar5);\n  }" statement_identifier : (if_statement "if ((*(int **)piVar5[0xf] != (int *)0x0) && (2 < **(int **)piVar5[0xf])) {\n    FUN_0004a5b8(piVar5);\n  }" if (parenthesized_expression "((*(int **)piVar5[0xf] != (int *)0x0) && (2 < **(int **)piVar5[0xf]))" ( (binary_expression "(*(int **)piVar5[0xf] != (int *)0x0) && (2 < **(int **)piVar5[0xf])" (parenthesized_expression "(*(int **)piVar5[0xf] != (int *)0x0)" ( (binary_expression "*(int **)piVar5[0xf] != (int *)0x0" (pointer_expression "*(int **)piVar5[0xf]" * (cast_expression "(int **)piVar5[0xf]" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (subscript_expression "piVar5[0xf]" identifier [ number_literal ]))) != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(2 < **(int **)piVar5[0xf])" ( (binary_expression "2 < **(int **)piVar5[0xf]" number_literal < (pointer_expression "**(int **)piVar5[0xf]" * (pointer_expression "*(int **)piVar5[0xf]" * (cast_expression "(int **)piVar5[0xf]" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (subscript_expression "piVar5[0xf]" identifier [ number_literal ]))))) ))) )) (compound_statement "{\n    FUN_0004a5b8(piVar5);\n  }" { (expression_statement "FUN_0004a5b8(piVar5);" (call_expression "FUN_0004a5b8(piVar5)" identifier (argument_list "(piVar5)" ( identifier ))) ;) }))) (if_statement "if (iVar1 == *piVar10) {\n    return iVar2;\n  }" if (parenthesized_expression "(iVar1 == *piVar10)" ( (binary_expression "iVar1 == *piVar10" identifier == (pointer_expression "*piVar10" * identifier)) )) (compound_statement "{\n    return iVar2;\n  }" { (return_statement "return iVar2;" return identifier ;) })) (expression_statement "(**(code **)(puVar12 + 0x111368))();" (call_expression "(**(code **)(puVar12 + 0x111368))()" (parenthesized_expression "(**(code **)(puVar12 + 0x111368))" ( (pointer_expression "**(code **)(puVar12 + 0x111368)" * (pointer_expression "*(code **)(puVar12 + 0x111368)" * (cast_expression "(code **)(puVar12 + 0x111368)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar12 + 0x111368)" ( (binary_expression "puVar12 + 0x111368" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (if_statement "if ((*(char *)(iVar1 + 0xc) != '\0') || (*(int *)(iVar1 + 0xd8) != 0)) {\n    *puVar6 = 1;\n    return 0;\n  }" if (parenthesized_expression "((*(char *)(iVar1 + 0xc) != '\0') || (*(int *)(iVar1 + 0xd8) != 0))" ( (binary_expression "(*(char *)(iVar1 + 0xc) != '\0') || (*(int *)(iVar1 + 0xd8) != 0)" (parenthesized_expression "(*(char *)(iVar1 + 0xc) != '\0')" ( (binary_expression "*(char *)(iVar1 + 0xc) != '\0'" (pointer_expression "*(char *)(iVar1 + 0xc)" * (cast_expression "(char *)(iVar1 + 0xc)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(*(int *)(iVar1 + 0xd8) != 0)" ( (binary_expression "*(int *)(iVar1 + 0xd8) != 0" (pointer_expression "*(int *)(iVar1 + 0xd8)" * (cast_expression "(int *)(iVar1 + 0xd8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xd8)" ( (binary_expression "iVar1 + 0xd8" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n    *puVar6 = 1;\n    return 0;\n  }" { (expression_statement "*puVar6 = 1;" (assignment_expression "*puVar6 = 1" (pointer_expression "*puVar6" * identifier) = number_literal) ;) (return_statement "return 0;" return number_literal ;) })) (if_statement "if (*(char *)(iVar1 + 0xd) != '\0') {\n    return 0xe;\n  }" if (parenthesized_expression "(*(char *)(iVar1 + 0xd) != '\0')" ( (binary_expression "*(char *)(iVar1 + 0xd) != '\0'" (pointer_expression "*(char *)(iVar1 + 0xd)" * (cast_expression "(char *)(iVar1 + 0xd)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xd)" ( (binary_expression "iVar1 + 0xd" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    return 0xe;\n  }" { (return_statement "return 0xe;" return number_literal ;) })) (if_statement "if (*(char *)(iVar1 + 4) == '\0') {\n    if (*(int *)**(undefined4 **)(iVar1 + 0x3c) < 2) {\n      return 0xe;\n    }\n    if (((int *)**(undefined4 **)(iVar1 + 0x3c))[0xd] == 0) {\n      return 0xe;\n    }\n  }" if (parenthesized_expression "(*(char *)(iVar1 + 4) == '\0')" ( (binary_expression "*(char *)(iVar1 + 4) == '\0'" (pointer_expression "*(char *)(iVar1 + 4)" * (cast_expression "(char *)(iVar1 + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    if (*(int *)**(undefined4 **)(iVar1 + 0x3c) < 2) {\n      return 0xe;\n    }\n    if (((int *)**(undefined4 **)(iVar1 + 0x3c))[0xd] == 0) {\n      return 0xe;\n    }\n  }" { (if_statement "if (*(int *)**(undefined4 **)(iVar1 + 0x3c) < 2) {\n      return 0xe;\n    }" if (parenthesized_expression "(*(int *)**(undefined4 **)(iVar1 + 0x3c) < 2)" ( (binary_expression "*(int *)**(undefined4 **)(iVar1 + 0x3c) < 2" (pointer_expression "*(int *)**(undefined4 **)(iVar1 + 0x3c)" * (cast_expression "(int *)**(undefined4 **)(iVar1 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(undefined4 **)(iVar1 + 0x3c)" * (pointer_expression "*(undefined4 **)(iVar1 + 0x3c)" * (cast_expression "(undefined4 **)(iVar1 + 0x3c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 0x3c)" ( (binary_expression "iVar1 + 0x3c" identifier + number_literal) ))))))) < number_literal) )) (compound_statement "{\n      return 0xe;\n    }" { (return_statement "return 0xe;" return number_literal ;) })) (if_statement "if (((int *)**(undefined4 **)(iVar1 + 0x3c))[0xd] == 0) {\n      return 0xe;\n    }" if (parenthesized_expression "(((int *)**(undefined4 **)(iVar1 + 0x3c))[0xd] == 0)" ( (binary_expression "((int *)**(undefined4 **)(iVar1 + 0x3c))[0xd] == 0" (subscript_expression "((int *)**(undefined4 **)(iVar1 + 0x3c))[0xd]" (parenthesized_expression "((int *)**(undefined4 **)(iVar1 + 0x3c))" ( (cast_expression "(int *)**(undefined4 **)(iVar1 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(undefined4 **)(iVar1 + 0x3c)" * (pointer_expression "*(undefined4 **)(iVar1 + 0x3c)" * (cast_expression "(undefined4 **)(iVar1 + 0x3c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 0x3c)" ( (binary_expression "iVar1 + 0x3c" identifier + number_literal) )))))) )) [ number_literal ]) == number_literal) )) (compound_statement "{\n      return 0xe;\n    }" { (return_statement "return 0xe;" return number_literal ;) })) })) (expression_statement "piVar5 = *(int **)(iVar1 + 0x40);" (assignment_expression "piVar5 = *(int **)(iVar1 + 0x40)" identifier = (pointer_expression "*(int **)(iVar1 + 0x40)" * (cast_expression "(int **)(iVar1 + 0x40)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 0x40)" ( (binary_expression "iVar1 + 0x40" identifier + number_literal) ))))) ;) (if_statement "if (*piVar5 != 0) {\n    (**(code **)(*piVar5 + 4))(piVar5);\n    *piVar5 = 0;\n  }" if (parenthesized_expression "(*piVar5 != 0)" ( (binary_expression "*piVar5 != 0" (pointer_expression "*piVar5" * identifier) != number_literal) )) (compound_statement "{\n    (**(code **)(*piVar5 + 4))(piVar5);\n    *piVar5 = 0;\n  }" { (expression_statement "(**(code **)(*piVar5 + 4))(piVar5);" (call_expression "(**(code **)(*piVar5 + 4))(piVar5)" (parenthesized_expression "(**(code **)(*piVar5 + 4))" ( (pointer_expression "**(code **)(*piVar5 + 4)" * (pointer_expression "*(code **)(*piVar5 + 4)" * (cast_expression "(code **)(*piVar5 + 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar5 + 4)" ( (binary_expression "*piVar5 + 4" (pointer_expression "*piVar5" * identifier) + number_literal) ))))) )) (argument_list "(piVar5)" ( identifier ))) ;) (expression_statement "*piVar5 = 0;" (assignment_expression "*piVar5 = 0" (pointer_expression "*piVar5" * identifier) = number_literal) ;) })) (expression_statement "iVar2 = FUN_0004a6a8(iVar1);" (assignment_expression "iVar2 = FUN_0004a6a8(iVar1)" identifier = (call_expression "FUN_0004a6a8(iVar1)" identifier (argument_list "(iVar1)" ( identifier )))) ;) (if_statement "if (iVar2 == 0) {\n    *(undefined1 *)(iVar1 + 0x10) = 0;\n    *(undefined1 *)(iVar1 + 5) = 5;\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    *(undefined1 *)(iVar1 + 0x10) = 0;\n    *(undefined1 *)(iVar1 + 5) = 5;\n  }" { (expression_statement "*(undefined1 *)(iVar1 + 0x10) = 0;" (assignment_expression "*(undefined1 *)(iVar1 + 0x10) = 0" (pointer_expression "*(undefined1 *)(iVar1 + 0x10)" * (cast_expression "(undefined1 *)(iVar1 + 0x10)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x10)" ( (binary_expression "iVar1 + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)(iVar1 + 5) = 5;" (assignment_expression "*(undefined1 *)(iVar1 + 5) = 5" (pointer_expression "*(undefined1 *)(iVar1 + 5)" * (cast_expression "(undefined1 *)(iVar1 + 5)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 5)" ( (binary_expression "iVar1 + 5" identifier + number_literal) )))) = number_literal) ;) })) (return_statement "return iVar2;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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 = (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 *)) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < LIT) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT != LIT) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < LIT) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT != LIT) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (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 ( IDENT , LIT , (pointer_expression & IDENT) ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )) (compound_statement { (return_statement return (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) < LIT) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) == LIT) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (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) ))))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( 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 = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = 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 IDENT + LIT) ))))) )) (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (expression_statement (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 ( IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT ))) ;) }))) }))) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (subscript_expression IDENT [ LIT ]))) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (binary_expression LIT < (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (subscript_expression IDENT [ LIT ]))))) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * IDENT)) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (return_statement return LIT ;) })) (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 { (return_statement return LIT ;) })) (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 { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))))) < LIT) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression (parenthesized_expression ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) )) [ LIT ]) == LIT) )) (compound_statement { (return_statement return LIT ;) })) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (expression_statement (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 ( IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) })) (return_statement return IDENT ;) })))
(function_definition "int FUN_0004a5b8(int param_1)\n\n{\n  int iVar1;\n  int iVar2;\n  int *piVar3;\n  uint uVar4;\n  int *piVar5;\n  undefined4 *puVar6;\n  char cVar7;\n  int iVar8;\n  int iVar9;\n  int *piVar10;\n  int *piVar11;\n  undefined *puVar12;\n  int iVar13;\n  undefined4 *puVar14;\n  int local_18;\n  int local_14;\n  int local_c;\n  \n  puVar12 = PTR___stack_chk_guard_0015ba2c;\n  puVar6 = (undefined4 *)0x1;\n  local_18 = *(int *)(param_1 + 0x80);\n  local_14 = *(int *)(param_1 + 0x84);\n  local_c = *(int *)PTR___stack_chk_guard_0015ba2c;\n  if ((local_18 < 1) && ((local_18 != 0 || (local_14 == 0)))) {\n    puVar6 = (undefined4 *)0x0;\n  }\n  *(char *)(param_1 + 0x16) = (char)puVar6;\n  if (*(int *)(param_1 + 0x28) == 0) {\n    if ((local_18 < 1) && ((local_18 != 0 || (local_14 == 0)))) {\n      *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b704 + -0xe84;\n    }\n    else {\n      *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b704 + -0xa94;\n    }\n  }\n  else {\n    *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b65c + -0x1cc8;\n  }\n  piVar5 = *(int **)(param_1 + 0x3c);\n  if (*piVar5 != 0) {\n    puVar6 = (undefined4 *)0x12;\n    (**(code **)(*piVar5 + 0x28))(piVar5,0x12,&local_18);\n  }\n  if (local_c == *(int *)puVar12) {\n    return *(int *)puVar12;\n  }\n  puVar12 = PTR___stack_chk_fail_0015ba10;\n  (*(code *)PTR___stack_chk_fail_0015ba10)();\n  piVar10 = *(int **)(puVar12 + 0x111384);\n  cVar7 = *(char *)(piVar5 + 1);\n  iVar1 = *piVar10;\n  if ((cVar7 != '\0') &&\n     ((*(byte *)((int)piVar5 + 0x11) < 4 || (*(byte *)((int)piVar5 + 0x11) == 5)))) {\n    iVar2 = FUN_00032f88(piVar5);\n    if (iVar2 != 0) goto LAB_0004a818;\n    cVar7 = *(char *)(piVar5 + 1);\n  }\n  iVar2 = *piVar5;\n  iVar13 = *(int *)(puVar12 + 0x111030);\n  piVar5[0x36] = 0;\n  piVar11 = (int *)piVar5[0xf];\n  puVar14 = (undefined4 *)piVar5[0x37];\n  iVar9 = piVar5[0x29];\n  puVar6 = (undefined4 *)(*(int *)(iVar2 + 4) + 0x78);\n  iVar8 = piVar5[0x28];\n  piVar3 = (int *)(*(code *)(iVar13 + -0x5aa4))(0);\n  if (piVar3 == (int *)0x0) {\n    iVar2 = 7;\n  }\n  else {\n    *piVar3 = iVar2;\n    piVar3[1] = (int)piVar11;\n    piVar3[2] = (int)(piVar3 + 0x1e);\n    piVar3[5] = iVar9;\n    *(undefined2 *)(piVar3 + 10) = 0xffff;\n    piVar3[4] = iVar8;\n    piVar3[0x1b] = (int)puVar14;\n    *(undefined2 *)(piVar3 + 0xc) = 0x101;\n    if (cVar7 != '\0') {\n      cVar7 = '\x02';\n    }\n    *(char *)((int)piVar3 + 0x2b) = cVar7;\n    iVar2 = (**(code **)(iVar2 + 0x18))(iVar2);\n    if (iVar2 == 0) {\n      uVar4 = (**(code **)(*piVar11 + 0x30))(piVar11);\n      if ((uVar4 & 0x400) != 0) {\n        *(undefined1 *)(piVar3 + 0xc) = 0;\n      }\n      if ((uVar4 & 0x1000) != 0) {\n        *(undefined1 *)((int)piVar3 + 0x31) = 0;\n      }\n      piVar5[0x36] = (int)piVar3;\n      puVar6 = puVar14;\n    }\n    else {\n      puVar6 = (undefined4 *)0x0;\n      FUN_00033348(piVar3);\n      piVar11 = (int *)piVar3[2];\n      if (*piVar11 != 0) {\n        (**(code **)(*piVar11 + 4))(piVar11);\n        *piVar11 = 0;\n      }\n      (**(code **)(puVar12 + 0x110f78))(piVar3);\n    }\n  }\nLAB_0004a818:\n  if ((*(int **)piVar5[0xf] != (int *)0x0) && (2 < **(int **)piVar5[0xf])) {\n    FUN_0004a5b8(piVar5);\n  }\n  if (iVar1 == *piVar10) {\n    return iVar2;\n  }\n  (**(code **)(puVar12 + 0x111368))();\n  if ((*(char *)(iVar1 + 0xc) != '\0') || (*(int *)(iVar1 + 0xd8) != 0)) {\n    *puVar6 = 1;\n    return 0;\n  }\n  if (*(char *)(iVar1 + 0xd) != '\0') {\n    return 0xe;\n  }\n  if (*(char *)(iVar1 + 4) == '\0') {\n    if (*(int *)**(undefined4 **)(iVar1 + 0x3c) < 2) {\n      return 0xe;\n    }\n    if (((int *)**(undefined4 **)(iVar1 + 0x3c))[0xd] == 0) {\n      return 0xe;\n    }\n  }\n  piVar5 = *(int **)(iVar1 + 0x40);\n  if (*piVar5 != 0) {\n    (**(code **)(*piVar5 + 4))(piVar5);\n    *piVar5 = 0;\n  }\n  iVar2 = FUN_0004a6a8(iVar1);\n  if (iVar2 == 0) {\n    *(undefined1 *)(iVar1 + 0x10) = 0;\n    *(undefined1 *)(iVar1 + 5) = 5;\n  }\n  return iVar2;\n}" (primitive_type "int") (function_declarator "FUN_0004a5b8(int param_1)" (identifier "FUN_0004a5b8") (parameter_list "(int param_1)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) () ")"))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  int *piVar3;\n  uint uVar4;\n  int *piVar5;\n  undefined4 *puVar6;\n  char cVar7;\n  int iVar8;\n  int iVar9;\n  int *piVar10;\n  int *piVar11;\n  undefined *puVar12;\n  int iVar13;\n  undefined4 *puVar14;\n  int local_18;\n  int local_14;\n  int local_c;\n  \n  puVar12 = PTR___stack_chk_guard_0015ba2c;\n  puVar6 = (undefined4 *)0x1;\n  local_18 = *(int *)(param_1 + 0x80);\n  local_14 = *(int *)(param_1 + 0x84);\n  local_c = *(int *)PTR___stack_chk_guard_0015ba2c;\n  if ((local_18 < 1) && ((local_18 != 0 || (local_14 == 0)))) {\n    puVar6 = (undefined4 *)0x0;\n  }\n  *(char *)(param_1 + 0x16) = (char)puVar6;\n  if (*(int *)(param_1 + 0x28) == 0) {\n    if ((local_18 < 1) && ((local_18 != 0 || (local_14 == 0)))) {\n      *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b704 + -0xe84;\n    }\n    else {\n      *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b704 + -0xa94;\n    }\n  }\n  else {\n    *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b65c + -0x1cc8;\n  }\n  piVar5 = *(int **)(param_1 + 0x3c);\n  if (*piVar5 != 0) {\n    puVar6 = (undefined4 *)0x12;\n    (**(code **)(*piVar5 + 0x28))(piVar5,0x12,&local_18);\n  }\n  if (local_c == *(int *)puVar12) {\n    return *(int *)puVar12;\n  }\n  puVar12 = PTR___stack_chk_fail_0015ba10;\n  (*(code *)PTR___stack_chk_fail_0015ba10)();\n  piVar10 = *(int **)(puVar12 + 0x111384);\n  cVar7 = *(char *)(piVar5 + 1);\n  iVar1 = *piVar10;\n  if ((cVar7 != '\0') &&\n     ((*(byte *)((int)piVar5 + 0x11) < 4 || (*(byte *)((int)piVar5 + 0x11) == 5)))) {\n    iVar2 = FUN_00032f88(piVar5);\n    if (iVar2 != 0) goto LAB_0004a818;\n    cVar7 = *(char *)(piVar5 + 1);\n  }\n  iVar2 = *piVar5;\n  iVar13 = *(int *)(puVar12 + 0x111030);\n  piVar5[0x36] = 0;\n  piVar11 = (int *)piVar5[0xf];\n  puVar14 = (undefined4 *)piVar5[0x37];\n  iVar9 = piVar5[0x29];\n  puVar6 = (undefined4 *)(*(int *)(iVar2 + 4) + 0x78);\n  iVar8 = piVar5[0x28];\n  piVar3 = (int *)(*(code *)(iVar13 + -0x5aa4))(0);\n  if (piVar3 == (int *)0x0) {\n    iVar2 = 7;\n  }\n  else {\n    *piVar3 = iVar2;\n    piVar3[1] = (int)piVar11;\n    piVar3[2] = (int)(piVar3 + 0x1e);\n    piVar3[5] = iVar9;\n    *(undefined2 *)(piVar3 + 10) = 0xffff;\n    piVar3[4] = iVar8;\n    piVar3[0x1b] = (int)puVar14;\n    *(undefined2 *)(piVar3 + 0xc) = 0x101;\n    if (cVar7 != '\0') {\n      cVar7 = '\x02';\n    }\n    *(char *)((int)piVar3 + 0x2b) = cVar7;\n    iVar2 = (**(code **)(iVar2 + 0x18))(iVar2);\n    if (iVar2 == 0) {\n      uVar4 = (**(code **)(*piVar11 + 0x30))(piVar11);\n      if ((uVar4 & 0x400) != 0) {\n        *(undefined1 *)(piVar3 + 0xc) = 0;\n      }\n      if ((uVar4 & 0x1000) != 0) {\n        *(undefined1 *)((int)piVar3 + 0x31) = 0;\n      }\n      piVar5[0x36] = (int)piVar3;\n      puVar6 = puVar14;\n    }\n    else {\n      puVar6 = (undefined4 *)0x0;\n      FUN_00033348(piVar3);\n      piVar11 = (int *)piVar3[2];\n      if (*piVar11 != 0) {\n        (**(code **)(*piVar11 + 4))(piVar11);\n        *piVar11 = 0;\n      }\n      (**(code **)(puVar12 + 0x110f78))(piVar3);\n    }\n  }\nLAB_0004a818:\n  if ((*(int **)piVar5[0xf] != (int *)0x0) && (2 < **(int **)piVar5[0xf])) {\n    FUN_0004a5b8(piVar5);\n  }\n  if (iVar1 == *piVar10) {\n    return iVar2;\n  }\n  (**(code **)(puVar12 + 0x111368))();\n  if ((*(char *)(iVar1 + 0xc) != '\0') || (*(int *)(iVar1 + 0xd8) != 0)) {\n    *puVar6 = 1;\n    return 0;\n  }\n  if (*(char *)(iVar1 + 0xd) != '\0') {\n    return 0xe;\n  }\n  if (*(char *)(iVar1 + 4) == '\0') {\n    if (*(int *)**(undefined4 **)(iVar1 + 0x3c) < 2) {\n      return 0xe;\n    }\n    if (((int *)**(undefined4 **)(iVar1 + 0x3c))[0xd] == 0) {\n      return 0xe;\n    }\n  }\n  piVar5 = *(int **)(iVar1 + 0x40);\n  if (*piVar5 != 0) {\n    (**(code **)(*piVar5 + 4))(piVar5);\n    *piVar5 = 0;\n  }\n  iVar2 = FUN_0004a6a8(iVar1);\n  if (iVar2 == 0) {\n    *(undefined1 *)(iVar1 + 0x10) = 0;\n    *(undefined1 *)(iVar1 + 5) = 5;\n  }\n  return iVar2;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int *piVar3;" (primitive_type "int") (pointer_declarator "*piVar3" (* "*") (identifier "piVar3")) (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "int *piVar5;" (primitive_type "int") (pointer_declarator "*piVar5" (* "*") (identifier "piVar5")) (; ";")) (declaration "undefined4 *puVar6;" (type_identifier "undefined4") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "char cVar7;" (primitive_type "char") (identifier "cVar7") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "int *piVar10;" (primitive_type "int") (pointer_declarator "*piVar10" (* "*") (identifier "piVar10")) (; ";")) (declaration "int *piVar11;" (primitive_type "int") (pointer_declarator "*piVar11" (* "*") (identifier "piVar11")) (; ";")) (declaration "undefined *puVar12;" (type_identifier "undefined") (pointer_declarator "*puVar12" (* "*") (identifier "puVar12")) (; ";")) (declaration "int iVar13;" (primitive_type "int") (identifier "iVar13") (; ";")) (declaration "undefined4 *puVar14;" (type_identifier "undefined4") (pointer_declarator "*puVar14" (* "*") (identifier "puVar14")) (; ";")) (declaration "int local_18;" (primitive_type "int") (identifier "local_18") (; ";")) (declaration "int local_14;" (primitive_type "int") (identifier "local_14") (; ";")) (declaration "int local_c;" (primitive_type "int") (identifier "local_c") (; ";")) (expression_statement "puVar12 = PTR___stack_chk_guard_0015ba2c;" (assignment_expression "puVar12 = PTR___stack_chk_guard_0015ba2c" (identifier "puVar12") (= "=") (identifier "PTR___stack_chk_guard_0015ba2c")) (; ";")) (expression_statement "puVar6 = (undefined4 *)0x1;" (assignment_expression "puVar6 = (undefined4 *)0x1" (identifier "puVar6") (= "=") (cast_expression "(undefined4 *)0x1" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (; ";")) (expression_statement "local_18 = *(int *)(param_1 + 0x80);" (assignment_expression "local_18 = *(int *)(param_1 + 0x80)" (identifier "local_18") (= "=") (pointer_expression "*(int *)(param_1 + 0x80)" (* "*") (cast_expression "(int *)(param_1 + 0x80)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x80)" (( "(") (binary_expression "param_1 + 0x80" (identifier "param_1") (+ "+") (number_literal "0x80")) () ")"))))) (; ";")) (expression_statement "local_14 = *(int *)(param_1 + 0x84);" (assignment_expression "local_14 = *(int *)(param_1 + 0x84)" (identifier "local_14") (= "=") (pointer_expression "*(int *)(param_1 + 0x84)" (* "*") (cast_expression "(int *)(param_1 + 0x84)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x84)" (( "(") (binary_expression "param_1 + 0x84" (identifier "param_1") (+ "+") (number_literal "0x84")) () ")"))))) (; ";")) (expression_statement "local_c = *(int *)PTR___stack_chk_guard_0015ba2c;" (assignment_expression "local_c = *(int *)PTR___stack_chk_guard_0015ba2c" (identifier "local_c") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_0015ba2c" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_0015ba2c" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_0015ba2c")))) (; ";")) (if_statement "if ((local_18 < 1) && ((local_18 != 0 || (local_14 == 0)))) {\n    puVar6 = (undefined4 *)0x0;\n  }" (if "if") (parenthesized_expression "((local_18 < 1) && ((local_18 != 0 || (local_14 == 0))))" (( "(") (binary_expression "(local_18 < 1) && ((local_18 != 0 || (local_14 == 0)))" (parenthesized_expression "(local_18 < 1)" (( "(") (binary_expression "local_18 < 1" (identifier "local_18") (< "<") (number_literal "1")) () ")")) (&& "&&") (parenthesized_expression "((local_18 != 0 || (local_14 == 0)))" (( "(") (parenthesized_expression "(local_18 != 0 || (local_14 == 0))" (( "(") (binary_expression "local_18 != 0 || (local_14 == 0)" (binary_expression "local_18 != 0" (identifier "local_18") (!= "!=") (number_literal "0")) (|| "||") (parenthesized_expression "(local_14 == 0)" (( "(") (binary_expression "local_14 == 0" (identifier "local_14") (== "==") (number_literal "0")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n    puVar6 = (undefined4 *)0x0;\n  }" ({ "{") (expression_statement "puVar6 = (undefined4 *)0x0;" (assignment_expression "puVar6 = (undefined4 *)0x0" (identifier "puVar6") (= "=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}"))) (expression_statement "*(char *)(param_1 + 0x16) = (char)puVar6;" (assignment_expression "*(char *)(param_1 + 0x16) = (char)puVar6" (pointer_expression "*(char *)(param_1 + 0x16)" (* "*") (cast_expression "(char *)(param_1 + 0x16)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x16)" (( "(") (binary_expression "param_1 + 0x16" (identifier "param_1") (+ "+") (number_literal "0x16")) () ")")))) (= "=") (cast_expression "(char)puVar6" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "puVar6"))) (; ";")) (if_statement "if (*(int *)(param_1 + 0x28) == 0) {\n    if ((local_18 < 1) && ((local_18 != 0 || (local_14 == 0)))) {\n      *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b704 + -0xe84;\n    }\n    else {\n      *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b704 + -0xa94;\n    }\n  }\n  else {\n    *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b65c + -0x1cc8;\n  }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x28) == 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x28) == 0" (pointer_expression "*(int *)(param_1 + 0x28)" (* "*") (cast_expression "(int *)(param_1 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if ((local_18 < 1) && ((local_18 != 0 || (local_14 == 0)))) {\n      *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b704 + -0xe84;\n    }\n    else {\n      *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b704 + -0xa94;\n    }\n  }" ({ "{") (if_statement "if ((local_18 < 1) && ((local_18 != 0 || (local_14 == 0)))) {\n      *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b704 + -0xe84;\n    }\n    else {\n      *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b704 + -0xa94;\n    }" (if "if") (parenthesized_expression "((local_18 < 1) && ((local_18 != 0 || (local_14 == 0))))" (( "(") (binary_expression "(local_18 < 1) && ((local_18 != 0 || (local_14 == 0)))" (parenthesized_expression "(local_18 < 1)" (( "(") (binary_expression "local_18 < 1" (identifier "local_18") (< "<") (number_literal "1")) () ")")) (&& "&&") (parenthesized_expression "((local_18 != 0 || (local_14 == 0)))" (( "(") (parenthesized_expression "(local_18 != 0 || (local_14 == 0))" (( "(") (binary_expression "local_18 != 0 || (local_14 == 0)" (binary_expression "local_18 != 0" (identifier "local_18") (!= "!=") (number_literal "0")) (|| "||") (parenthesized_expression "(local_14 == 0)" (( "(") (binary_expression "local_14 == 0" (identifier "local_14") (== "==") (number_literal "0")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n      *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b704 + -0xe84;\n    }" ({ "{") (expression_statement "*(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b704 + -0xe84;" (assignment_expression "*(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b704 + -0xe84" (pointer_expression "*(undefined **)(param_1 + 0xcc)" (* "*") (cast_expression "(undefined **)(param_1 + 0xcc)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xcc)" (( "(") (binary_expression "param_1 + 0xcc" (identifier "param_1") (+ "+") (number_literal "0xcc")) () ")")))) (= "=") (binary_expression "PTR_LAB_0015b704 + -0xe84" (identifier "PTR_LAB_0015b704") (+ "+") (number_literal "-0xe84"))) (; ";")) (} "}")) (else_clause "else {\n      *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b704 + -0xa94;\n    }" (else "else") (compound_statement "{\n      *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b704 + -0xa94;\n    }" ({ "{") (expression_statement "*(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b704 + -0xa94;" (assignment_expression "*(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b704 + -0xa94" (pointer_expression "*(undefined **)(param_1 + 0xcc)" (* "*") (cast_expression "(undefined **)(param_1 + 0xcc)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xcc)" (( "(") (binary_expression "param_1 + 0xcc" (identifier "param_1") (+ "+") (number_literal "0xcc")) () ")")))) (= "=") (binary_expression "PTR_LAB_0015b704 + -0xa94" (identifier "PTR_LAB_0015b704") (+ "+") (number_literal "-0xa94"))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n    *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b65c + -0x1cc8;\n  }" (else "else") (compound_statement "{\n    *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b65c + -0x1cc8;\n  }" ({ "{") (expression_statement "*(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b65c + -0x1cc8;" (assignment_expression "*(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b65c + -0x1cc8" (pointer_expression "*(undefined **)(param_1 + 0xcc)" (* "*") (cast_expression "(undefined **)(param_1 + 0xcc)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xcc)" (( "(") (binary_expression "param_1 + 0xcc" (identifier "param_1") (+ "+") (number_literal "0xcc")) () ")")))) (= "=") (binary_expression "PTR_LAB_0015b65c + -0x1cc8" (identifier "PTR_LAB_0015b65c") (+ "+") (number_literal "-0x1cc8"))) (; ";")) (} "}")))) (expression_statement "piVar5 = *(int **)(param_1 + 0x3c);" (assignment_expression "piVar5 = *(int **)(param_1 + 0x3c)" (identifier "piVar5") (= "=") (pointer_expression "*(int **)(param_1 + 0x3c)" (* "*") (cast_expression "(int **)(param_1 + 0x3c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x3c)" (( "(") (binary_expression "param_1 + 0x3c" (identifier "param_1") (+ "+") (number_literal "0x3c")) () ")"))))) (; ";")) (if_statement "if (*piVar5 != 0) {\n    puVar6 = (undefined4 *)0x12;\n    (**(code **)(*piVar5 + 0x28))(piVar5,0x12,&local_18);\n  }" (if "if") (parenthesized_expression "(*piVar5 != 0)" (( "(") (binary_expression "*piVar5 != 0" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    puVar6 = (undefined4 *)0x12;\n    (**(code **)(*piVar5 + 0x28))(piVar5,0x12,&local_18);\n  }" ({ "{") (expression_statement "puVar6 = (undefined4 *)0x12;" (assignment_expression "puVar6 = (undefined4 *)0x12" (identifier "puVar6") (= "=") (cast_expression "(undefined4 *)0x12" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x12"))) (; ";")) (expression_statement "(**(code **)(*piVar5 + 0x28))(piVar5,0x12,&local_18);" (call_expression "(**(code **)(*piVar5 + 0x28))(piVar5,0x12,&local_18)" (parenthesized_expression "(**(code **)(*piVar5 + 0x28))" (( "(") (pointer_expression "**(code **)(*piVar5 + 0x28)" (* "*") (pointer_expression "*(code **)(*piVar5 + 0x28)" (* "*") (cast_expression "(code **)(*piVar5 + 0x28)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar5 + 0x28)" (( "(") (binary_expression "*piVar5 + 0x28" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (+ "+") (number_literal "0x28")) () ")"))))) () ")")) (argument_list "(piVar5,0x12,&local_18)" (( "(") (identifier "piVar5") (, ",") (number_literal "0x12") (, ",") (pointer_expression "&local_18" (& "&") (identifier "local_18")) () ")"))) (; ";")) (} "}"))) (if_statement "if (local_c == *(int *)puVar12) {\n    return *(int *)puVar12;\n  }" (if "if") (parenthesized_expression "(local_c == *(int *)puVar12)" (( "(") (binary_expression "local_c == *(int *)puVar12" (identifier "local_c") (== "==") (pointer_expression "*(int *)puVar12" (* "*") (cast_expression "(int *)puVar12" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar12")))) () ")")) (compound_statement "{\n    return *(int *)puVar12;\n  }" ({ "{") (return_statement "return *(int *)puVar12;" (return "return") (pointer_expression "*(int *)puVar12" (* "*") (cast_expression "(int *)puVar12" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar12"))) (; ";")) (} "}"))) (expression_statement "puVar12 = PTR___stack_chk_fail_0015ba10;" (assignment_expression "puVar12 = PTR___stack_chk_fail_0015ba10" (identifier "puVar12") (= "=") (identifier "PTR___stack_chk_fail_0015ba10")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_0015ba10)();" (call_expression "(*(code *)PTR___stack_chk_fail_0015ba10)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0015ba10)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_0015ba10" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_0015ba10" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_0015ba10"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "piVar10 = *(int **)(puVar12 + 0x111384);" (assignment_expression "piVar10 = *(int **)(puVar12 + 0x111384)" (identifier "piVar10") (= "=") (pointer_expression "*(int **)(puVar12 + 0x111384)" (* "*") (cast_expression "(int **)(puVar12 + 0x111384)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar12 + 0x111384)" (( "(") (binary_expression "puVar12 + 0x111384" (identifier "puVar12") (+ "+") (number_literal "0x111384")) () ")"))))) (; ";")) (expression_statement "cVar7 = *(char *)(piVar5 + 1);" (assignment_expression "cVar7 = *(char *)(piVar5 + 1)" (identifier "cVar7") (= "=") (pointer_expression "*(char *)(piVar5 + 1)" (* "*") (cast_expression "(char *)(piVar5 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar5 + 1)" (( "(") (binary_expression "piVar5 + 1" (identifier "piVar5") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (expression_statement "iVar1 = *piVar10;" (assignment_expression "iVar1 = *piVar10" (identifier "iVar1") (= "=") (pointer_expression "*piVar10" (* "*") (identifier "piVar10"))) (; ";")) (if_statement "if ((cVar7 != '\0') &&\n     ((*(byte *)((int)piVar5 + 0x11) < 4 || (*(byte *)((int)piVar5 + 0x11) == 5)))) {\n    iVar2 = FUN_00032f88(piVar5);\n    if (iVar2 != 0) goto LAB_0004a818;\n    cVar7 = *(char *)(piVar5 + 1);\n  }" (if "if") (parenthesized_expression "((cVar7 != '\0') &&\n     ((*(byte *)((int)piVar5 + 0x11) < 4 || (*(byte *)((int)piVar5 + 0x11) == 5))))" (( "(") (binary_expression "(cVar7 != '\0') &&\n     ((*(byte *)((int)piVar5 + 0x11) < 4 || (*(byte *)((int)piVar5 + 0x11) == 5)))" (parenthesized_expression "(cVar7 != '\0')" (( "(") (binary_expression "cVar7 != '\0'" (identifier "cVar7") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "((*(byte *)((int)piVar5 + 0x11) < 4 || (*(byte *)((int)piVar5 + 0x11) == 5)))" (( "(") (parenthesized_expression "(*(byte *)((int)piVar5 + 0x11) < 4 || (*(byte *)((int)piVar5 + 0x11) == 5))" (( "(") (binary_expression "*(byte *)((int)piVar5 + 0x11) < 4 || (*(byte *)((int)piVar5 + 0x11) == 5)" (binary_expression "*(byte *)((int)piVar5 + 0x11) < 4" (pointer_expression "*(byte *)((int)piVar5 + 0x11)" (* "*") (cast_expression "(byte *)((int)piVar5 + 0x11)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar5 + 0x11)" (( "(") (binary_expression "(int)piVar5 + 0x11" (cast_expression "(int)piVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar5")) (+ "+") (number_literal "0x11")) () ")")))) (< "<") (number_literal "4")) (|| "||") (parenthesized_expression "(*(byte *)((int)piVar5 + 0x11) == 5)" (( "(") (binary_expression "*(byte *)((int)piVar5 + 0x11) == 5" (pointer_expression "*(byte *)((int)piVar5 + 0x11)" (* "*") (cast_expression "(byte *)((int)piVar5 + 0x11)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar5 + 0x11)" (( "(") (binary_expression "(int)piVar5 + 0x11" (cast_expression "(int)piVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar5")) (+ "+") (number_literal "0x11")) () ")")))) (== "==") (number_literal "5")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n    iVar2 = FUN_00032f88(piVar5);\n    if (iVar2 != 0) goto LAB_0004a818;\n    cVar7 = *(char *)(piVar5 + 1);\n  }" ({ "{") (expression_statement "iVar2 = FUN_00032f88(piVar5);" (assignment_expression "iVar2 = FUN_00032f88(piVar5)" (identifier "iVar2") (= "=") (call_expression "FUN_00032f88(piVar5)" (identifier "FUN_00032f88") (argument_list "(piVar5)" (( "(") (identifier "piVar5") () ")")))) (; ";")) (if_statement "if (iVar2 != 0) goto LAB_0004a818;" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0004a818;" (goto "goto") (statement_identifier "LAB_0004a818") (; ";"))) (expression_statement "cVar7 = *(char *)(piVar5 + 1);" (assignment_expression "cVar7 = *(char *)(piVar5 + 1)" (identifier "cVar7") (= "=") (pointer_expression "*(char *)(piVar5 + 1)" (* "*") (cast_expression "(char *)(piVar5 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar5 + 1)" (( "(") (binary_expression "piVar5 + 1" (identifier "piVar5") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (} "}"))) (expression_statement "iVar2 = *piVar5;" (assignment_expression "iVar2 = *piVar5" (identifier "iVar2") (= "=") (pointer_expression "*piVar5" (* "*") (identifier "piVar5"))) (; ";")) (expression_statement "iVar13 = *(int *)(puVar12 + 0x111030);" (assignment_expression "iVar13 = *(int *)(puVar12 + 0x111030)" (identifier "iVar13") (= "=") (pointer_expression "*(int *)(puVar12 + 0x111030)" (* "*") (cast_expression "(int *)(puVar12 + 0x111030)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar12 + 0x111030)" (( "(") (binary_expression "puVar12 + 0x111030" (identifier "puVar12") (+ "+") (number_literal "0x111030")) () ")"))))) (; ";")) (expression_statement "piVar5[0x36] = 0;" (assignment_expression "piVar5[0x36] = 0" (subscript_expression "piVar5[0x36]" (identifier "piVar5") ([ "[") (number_literal "0x36") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar11 = (int *)piVar5[0xf];" (assignment_expression "piVar11 = (int *)piVar5[0xf]" (identifier "piVar11") (= "=") (cast_expression "(int *)piVar5[0xf]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar5[0xf]" (identifier "piVar5") ([ "[") (number_literal "0xf") (] "]")))) (; ";")) (expression_statement "puVar14 = (undefined4 *)piVar5[0x37];" (assignment_expression "puVar14 = (undefined4 *)piVar5[0x37]" (identifier "puVar14") (= "=") (cast_expression "(undefined4 *)piVar5[0x37]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar5[0x37]" (identifier "piVar5") ([ "[") (number_literal "0x37") (] "]")))) (; ";")) (expression_statement "iVar9 = piVar5[0x29];" (assignment_expression "iVar9 = piVar5[0x29]" (identifier "iVar9") (= "=") (subscript_expression "piVar5[0x29]" (identifier "piVar5") ([ "[") (number_literal "0x29") (] "]"))) (; ";")) (expression_statement "puVar6 = (undefined4 *)(*(int *)(iVar2 + 4) + 0x78);" (assignment_expression "puVar6 = (undefined4 *)(*(int *)(iVar2 + 4) + 0x78)" (identifier "puVar6") (= "=") (cast_expression "(undefined4 *)(*(int *)(iVar2 + 4) + 0x78)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar2 + 4) + 0x78)" (( "(") (binary_expression "*(int *)(iVar2 + 4) + 0x78" (pointer_expression "*(int *)(iVar2 + 4)" (* "*") (cast_expression "(int *)(iVar2 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 4)" (( "(") (binary_expression "iVar2 + 4" (identifier "iVar2") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "0x78")) () ")")))) (; ";")) (expression_statement "iVar8 = piVar5[0x28];" (assignment_expression "iVar8 = piVar5[0x28]" (identifier "iVar8") (= "=") (subscript_expression "piVar5[0x28]" (identifier "piVar5") ([ "[") (number_literal "0x28") (] "]"))) (; ";")) (expression_statement "piVar3 = (int *)(*(code *)(iVar13 + -0x5aa4))(0);" (assignment_expression "piVar3 = (int *)(*(code *)(iVar13 + -0x5aa4))(0)" (identifier "piVar3") (= "=") (cast_expression "(int *)(*(code *)(iVar13 + -0x5aa4))(0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)(iVar13 + -0x5aa4))(0)" (parenthesized_expression "(*(code *)(iVar13 + -0x5aa4))" (( "(") (pointer_expression "*(code *)(iVar13 + -0x5aa4)" (* "*") (cast_expression "(code *)(iVar13 + -0x5aa4)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + -0x5aa4)" (( "(") (binary_expression "iVar13 + -0x5aa4" (identifier "iVar13") (+ "+") (number_literal "-0x5aa4")) () ")")))) () ")")) (argument_list "(0)" (( "(") (number_literal "0") () ")"))))) (; ";")) (if_statement "if (piVar3 == (int *)0x0) {\n    iVar2 = 7;\n  }\n  else {\n    *piVar3 = iVar2;\n    piVar3[1] = (int)piVar11;\n    piVar3[2] = (int)(piVar3 + 0x1e);\n    piVar3[5] = iVar9;\n    *(undefined2 *)(piVar3 + 10) = 0xffff;\n    piVar3[4] = iVar8;\n    piVar3[0x1b] = (int)puVar14;\n    *(undefined2 *)(piVar3 + 0xc) = 0x101;\n    if (cVar7 != '\0') {\n      cVar7 = '\x02';\n    }\n    *(char *)((int)piVar3 + 0x2b) = cVar7;\n    iVar2 = (**(code **)(iVar2 + 0x18))(iVar2);\n    if (iVar2 == 0) {\n      uVar4 = (**(code **)(*piVar11 + 0x30))(piVar11);\n      if ((uVar4 & 0x400) != 0) {\n        *(undefined1 *)(piVar3 + 0xc) = 0;\n      }\n      if ((uVar4 & 0x1000) != 0) {\n        *(undefined1 *)((int)piVar3 + 0x31) = 0;\n      }\n      piVar5[0x36] = (int)piVar3;\n      puVar6 = puVar14;\n    }\n    else {\n      puVar6 = (undefined4 *)0x0;\n      FUN_00033348(piVar3);\n      piVar11 = (int *)piVar3[2];\n      if (*piVar11 != 0) {\n        (**(code **)(*piVar11 + 4))(piVar11);\n        *piVar11 = 0;\n      }\n      (**(code **)(puVar12 + 0x110f78))(piVar3);\n    }\n  }" (if "if") (parenthesized_expression "(piVar3 == (int *)0x0)" (( "(") (binary_expression "piVar3 == (int *)0x0" (identifier "piVar3") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    iVar2 = 7;\n  }" ({ "{") (expression_statement "iVar2 = 7;" (assignment_expression "iVar2 = 7" (identifier "iVar2") (= "=") (number_literal "7")) (; ";")) (} "}")) (else_clause "else {\n    *piVar3 = iVar2;\n    piVar3[1] = (int)piVar11;\n    piVar3[2] = (int)(piVar3 + 0x1e);\n    piVar3[5] = iVar9;\n    *(undefined2 *)(piVar3 + 10) = 0xffff;\n    piVar3[4] = iVar8;\n    piVar3[0x1b] = (int)puVar14;\n    *(undefined2 *)(piVar3 + 0xc) = 0x101;\n    if (cVar7 != '\0') {\n      cVar7 = '\x02';\n    }\n    *(char *)((int)piVar3 + 0x2b) = cVar7;\n    iVar2 = (**(code **)(iVar2 + 0x18))(iVar2);\n    if (iVar2 == 0) {\n      uVar4 = (**(code **)(*piVar11 + 0x30))(piVar11);\n      if ((uVar4 & 0x400) != 0) {\n        *(undefined1 *)(piVar3 + 0xc) = 0;\n      }\n      if ((uVar4 & 0x1000) != 0) {\n        *(undefined1 *)((int)piVar3 + 0x31) = 0;\n      }\n      piVar5[0x36] = (int)piVar3;\n      puVar6 = puVar14;\n    }\n    else {\n      puVar6 = (undefined4 *)0x0;\n      FUN_00033348(piVar3);\n      piVar11 = (int *)piVar3[2];\n      if (*piVar11 != 0) {\n        (**(code **)(*piVar11 + 4))(piVar11);\n        *piVar11 = 0;\n      }\n      (**(code **)(puVar12 + 0x110f78))(piVar3);\n    }\n  }" (else "else") (compound_statement "{\n    *piVar3 = iVar2;\n    piVar3[1] = (int)piVar11;\n    piVar3[2] = (int)(piVar3 + 0x1e);\n    piVar3[5] = iVar9;\n    *(undefined2 *)(piVar3 + 10) = 0xffff;\n    piVar3[4] = iVar8;\n    piVar3[0x1b] = (int)puVar14;\n    *(undefined2 *)(piVar3 + 0xc) = 0x101;\n    if (cVar7 != '\0') {\n      cVar7 = '\x02';\n    }\n    *(char *)((int)piVar3 + 0x2b) = cVar7;\n    iVar2 = (**(code **)(iVar2 + 0x18))(iVar2);\n    if (iVar2 == 0) {\n      uVar4 = (**(code **)(*piVar11 + 0x30))(piVar11);\n      if ((uVar4 & 0x400) != 0) {\n        *(undefined1 *)(piVar3 + 0xc) = 0;\n      }\n      if ((uVar4 & 0x1000) != 0) {\n        *(undefined1 *)((int)piVar3 + 0x31) = 0;\n      }\n      piVar5[0x36] = (int)piVar3;\n      puVar6 = puVar14;\n    }\n    else {\n      puVar6 = (undefined4 *)0x0;\n      FUN_00033348(piVar3);\n      piVar11 = (int *)piVar3[2];\n      if (*piVar11 != 0) {\n        (**(code **)(*piVar11 + 4))(piVar11);\n        *piVar11 = 0;\n      }\n      (**(code **)(puVar12 + 0x110f78))(piVar3);\n    }\n  }" ({ "{") (expression_statement "*piVar3 = iVar2;" (assignment_expression "*piVar3 = iVar2" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (= "=") (identifier "iVar2")) (; ";")) (expression_statement "piVar3[1] = (int)piVar11;" (assignment_expression "piVar3[1] = (int)piVar11" (subscript_expression "piVar3[1]" (identifier "piVar3") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(int)piVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar11"))) (; ";")) (expression_statement "piVar3[2] = (int)(piVar3 + 0x1e);" (assignment_expression "piVar3[2] = (int)(piVar3 + 0x1e)" (subscript_expression "piVar3[2]" (identifier "piVar3") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(int)(piVar3 + 0x1e)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(piVar3 + 0x1e)" (( "(") (binary_expression "piVar3 + 0x1e" (identifier "piVar3") (+ "+") (number_literal "0x1e")) () ")")))) (; ";")) (expression_statement "piVar3[5] = iVar9;" (assignment_expression "piVar3[5] = iVar9" (subscript_expression "piVar3[5]" (identifier "piVar3") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "iVar9")) (; ";")) (expression_statement "*(undefined2 *)(piVar3 + 10) = 0xffff;" (assignment_expression "*(undefined2 *)(piVar3 + 10) = 0xffff" (pointer_expression "*(undefined2 *)(piVar3 + 10)" (* "*") (cast_expression "(undefined2 *)(piVar3 + 10)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar3 + 10)" (( "(") (binary_expression "piVar3 + 10" (identifier "piVar3") (+ "+") (number_literal "10")) () ")")))) (= "=") (number_literal "0xffff")) (; ";")) (expression_statement "piVar3[4] = iVar8;" (assignment_expression "piVar3[4] = iVar8" (subscript_expression "piVar3[4]" (identifier "piVar3") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "iVar8")) (; ";")) (expression_statement "piVar3[0x1b] = (int)puVar14;" (assignment_expression "piVar3[0x1b] = (int)puVar14" (subscript_expression "piVar3[0x1b]" (identifier "piVar3") ([ "[") (number_literal "0x1b") (] "]")) (= "=") (cast_expression "(int)puVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar14"))) (; ";")) (expression_statement "*(undefined2 *)(piVar3 + 0xc) = 0x101;" (assignment_expression "*(undefined2 *)(piVar3 + 0xc) = 0x101" (pointer_expression "*(undefined2 *)(piVar3 + 0xc)" (* "*") (cast_expression "(undefined2 *)(piVar3 + 0xc)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar3 + 0xc)" (( "(") (binary_expression "piVar3 + 0xc" (identifier "piVar3") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (number_literal "0x101")) (; ";")) (if_statement "if (cVar7 != '\0') {\n      cVar7 = '\x02';\n    }" (if "if") (parenthesized_expression "(cVar7 != '\0')" (( "(") (binary_expression "cVar7 != '\0'" (identifier "cVar7") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      cVar7 = '\x02';\n    }" ({ "{") (expression_statement "cVar7 = '\x02';" (assignment_expression "cVar7 = '\x02'" (identifier "cVar7") (= "=") (char_literal "'\x02'" (' "'") (escape_sequence "\x02") (' "'"))) (; ";")) (} "}"))) (expression_statement "*(char *)((int)piVar3 + 0x2b) = cVar7;" (assignment_expression "*(char *)((int)piVar3 + 0x2b) = cVar7" (pointer_expression "*(char *)((int)piVar3 + 0x2b)" (* "*") (cast_expression "(char *)((int)piVar3 + 0x2b)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar3 + 0x2b)" (( "(") (binary_expression "(int)piVar3 + 0x2b" (cast_expression "(int)piVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar3")) (+ "+") (number_literal "0x2b")) () ")")))) (= "=") (identifier "cVar7")) (; ";")) (expression_statement "iVar2 = (**(code **)(iVar2 + 0x18))(iVar2);" (assignment_expression "iVar2 = (**(code **)(iVar2 + 0x18))(iVar2)" (identifier "iVar2") (= "=") (call_expression "(**(code **)(iVar2 + 0x18))(iVar2)" (parenthesized_expression "(**(code **)(iVar2 + 0x18))" (( "(") (pointer_expression "**(code **)(iVar2 + 0x18)" (* "*") (pointer_expression "*(code **)(iVar2 + 0x18)" (* "*") (cast_expression "(code **)(iVar2 + 0x18)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar2 + 0x18)" (( "(") (binary_expression "iVar2 + 0x18" (identifier "iVar2") (+ "+") (number_literal "0x18")) () ")"))))) () ")")) (argument_list "(iVar2)" (( "(") (identifier "iVar2") () ")")))) (; ";")) (if_statement "if (iVar2 == 0) {\n      uVar4 = (**(code **)(*piVar11 + 0x30))(piVar11);\n      if ((uVar4 & 0x400) != 0) {\n        *(undefined1 *)(piVar3 + 0xc) = 0;\n      }\n      if ((uVar4 & 0x1000) != 0) {\n        *(undefined1 *)((int)piVar3 + 0x31) = 0;\n      }\n      piVar5[0x36] = (int)piVar3;\n      puVar6 = puVar14;\n    }\n    else {\n      puVar6 = (undefined4 *)0x0;\n      FUN_00033348(piVar3);\n      piVar11 = (int *)piVar3[2];\n      if (*piVar11 != 0) {\n        (**(code **)(*piVar11 + 4))(piVar11);\n        *piVar11 = 0;\n      }\n      (**(code **)(puVar12 + 0x110f78))(piVar3);\n    }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      uVar4 = (**(code **)(*piVar11 + 0x30))(piVar11);\n      if ((uVar4 & 0x400) != 0) {\n        *(undefined1 *)(piVar3 + 0xc) = 0;\n      }\n      if ((uVar4 & 0x1000) != 0) {\n        *(undefined1 *)((int)piVar3 + 0x31) = 0;\n      }\n      piVar5[0x36] = (int)piVar3;\n      puVar6 = puVar14;\n    }" ({ "{") (expression_statement "uVar4 = (**(code **)(*piVar11 + 0x30))(piVar11);" (assignment_expression "uVar4 = (**(code **)(*piVar11 + 0x30))(piVar11)" (identifier "uVar4") (= "=") (call_expression "(**(code **)(*piVar11 + 0x30))(piVar11)" (parenthesized_expression "(**(code **)(*piVar11 + 0x30))" (( "(") (pointer_expression "**(code **)(*piVar11 + 0x30)" (* "*") (pointer_expression "*(code **)(*piVar11 + 0x30)" (* "*") (cast_expression "(code **)(*piVar11 + 0x30)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar11 + 0x30)" (( "(") (binary_expression "*piVar11 + 0x30" (pointer_expression "*piVar11" (* "*") (identifier "piVar11")) (+ "+") (number_literal "0x30")) () ")"))))) () ")")) (argument_list "(piVar11)" (( "(") (identifier "piVar11") () ")")))) (; ";")) (if_statement "if ((uVar4 & 0x400) != 0) {\n        *(undefined1 *)(piVar3 + 0xc) = 0;\n      }" (if "if") (parenthesized_expression "((uVar4 & 0x400) != 0)" (( "(") (binary_expression "(uVar4 & 0x400) != 0" (parenthesized_expression "(uVar4 & 0x400)" (( "(") (binary_expression "uVar4 & 0x400" (identifier "uVar4") (& "&") (number_literal "0x400")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        *(undefined1 *)(piVar3 + 0xc) = 0;\n      }" ({ "{") (expression_statement "*(undefined1 *)(piVar3 + 0xc) = 0;" (assignment_expression "*(undefined1 *)(piVar3 + 0xc) = 0" (pointer_expression "*(undefined1 *)(piVar3 + 0xc)" (* "*") (cast_expression "(undefined1 *)(piVar3 + 0xc)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar3 + 0xc)" (( "(") (binary_expression "piVar3 + 0xc" (identifier "piVar3") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}"))) (if_statement "if ((uVar4 & 0x1000) != 0) {\n        *(undefined1 *)((int)piVar3 + 0x31) = 0;\n      }" (if "if") (parenthesized_expression "((uVar4 & 0x1000) != 0)" (( "(") (binary_expression "(uVar4 & 0x1000) != 0" (parenthesized_expression "(uVar4 & 0x1000)" (( "(") (binary_expression "uVar4 & 0x1000" (identifier "uVar4") (& "&") (number_literal "0x1000")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        *(undefined1 *)((int)piVar3 + 0x31) = 0;\n      }" ({ "{") (expression_statement "*(undefined1 *)((int)piVar3 + 0x31) = 0;" (assignment_expression "*(undefined1 *)((int)piVar3 + 0x31) = 0" (pointer_expression "*(undefined1 *)((int)piVar3 + 0x31)" (* "*") (cast_expression "(undefined1 *)((int)piVar3 + 0x31)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar3 + 0x31)" (( "(") (binary_expression "(int)piVar3 + 0x31" (cast_expression "(int)piVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar3")) (+ "+") (number_literal "0x31")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "piVar5[0x36] = (int)piVar3;" (assignment_expression "piVar5[0x36] = (int)piVar3" (subscript_expression "piVar5[0x36]" (identifier "piVar5") ([ "[") (number_literal "0x36") (] "]")) (= "=") (cast_expression "(int)piVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar3"))) (; ";")) (expression_statement "puVar6 = puVar14;" (assignment_expression "puVar6 = puVar14" (identifier "puVar6") (= "=") (identifier "puVar14")) (; ";")) (} "}")) (else_clause "else {\n      puVar6 = (undefined4 *)0x0;\n      FUN_00033348(piVar3);\n      piVar11 = (int *)piVar3[2];\n      if (*piVar11 != 0) {\n        (**(code **)(*piVar11 + 4))(piVar11);\n        *piVar11 = 0;\n      }\n      (**(code **)(puVar12 + 0x110f78))(piVar3);\n    }" (else "else") (compound_statement "{\n      puVar6 = (undefined4 *)0x0;\n      FUN_00033348(piVar3);\n      piVar11 = (int *)piVar3[2];\n      if (*piVar11 != 0) {\n        (**(code **)(*piVar11 + 4))(piVar11);\n        *piVar11 = 0;\n      }\n      (**(code **)(puVar12 + 0x110f78))(piVar3);\n    }" ({ "{") (expression_statement "puVar6 = (undefined4 *)0x0;" (assignment_expression "puVar6 = (undefined4 *)0x0" (identifier "puVar6") (= "=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "FUN_00033348(piVar3);" (call_expression "FUN_00033348(piVar3)" (identifier "FUN_00033348") (argument_list "(piVar3)" (( "(") (identifier "piVar3") () ")"))) (; ";")) (expression_statement "piVar11 = (int *)piVar3[2];" (assignment_expression "piVar11 = (int *)piVar3[2]" (identifier "piVar11") (= "=") (cast_expression "(int *)piVar3[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar3[2]" (identifier "piVar3") ([ "[") (number_literal "2") (] "]")))) (; ";")) (if_statement "if (*piVar11 != 0) {\n        (**(code **)(*piVar11 + 4))(piVar11);\n        *piVar11 = 0;\n      }" (if "if") (parenthesized_expression "(*piVar11 != 0)" (( "(") (binary_expression "*piVar11 != 0" (pointer_expression "*piVar11" (* "*") (identifier "piVar11")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        (**(code **)(*piVar11 + 4))(piVar11);\n        *piVar11 = 0;\n      }" ({ "{") (expression_statement "(**(code **)(*piVar11 + 4))(piVar11);" (call_expression "(**(code **)(*piVar11 + 4))(piVar11)" (parenthesized_expression "(**(code **)(*piVar11 + 4))" (( "(") (pointer_expression "**(code **)(*piVar11 + 4)" (* "*") (pointer_expression "*(code **)(*piVar11 + 4)" (* "*") (cast_expression "(code **)(*piVar11 + 4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar11 + 4)" (( "(") (binary_expression "*piVar11 + 4" (pointer_expression "*piVar11" (* "*") (identifier "piVar11")) (+ "+") (number_literal "4")) () ")"))))) () ")")) (argument_list "(piVar11)" (( "(") (identifier "piVar11") () ")"))) (; ";")) (expression_statement "*piVar11 = 0;" (assignment_expression "*piVar11 = 0" (pointer_expression "*piVar11" (* "*") (identifier "piVar11")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "(**(code **)(puVar12 + 0x110f78))(piVar3);" (call_expression "(**(code **)(puVar12 + 0x110f78))(piVar3)" (parenthesized_expression "(**(code **)(puVar12 + 0x110f78))" (( "(") (pointer_expression "**(code **)(puVar12 + 0x110f78)" (* "*") (pointer_expression "*(code **)(puVar12 + 0x110f78)" (* "*") (cast_expression "(code **)(puVar12 + 0x110f78)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar12 + 0x110f78)" (( "(") (binary_expression "puVar12 + 0x110f78" (identifier "puVar12") (+ "+") (number_literal "0x110f78")) () ")"))))) () ")")) (argument_list "(piVar3)" (( "(") (identifier "piVar3") () ")"))) (; ";")) (} "}")))) (} "}")))) (labeled_statement "LAB_0004a818:\n  if ((*(int **)piVar5[0xf] != (int *)0x0) && (2 < **(int **)piVar5[0xf])) {\n    FUN_0004a5b8(piVar5);\n  }" (statement_identifier "LAB_0004a818") (: ":") (if_statement "if ((*(int **)piVar5[0xf] != (int *)0x0) && (2 < **(int **)piVar5[0xf])) {\n    FUN_0004a5b8(piVar5);\n  }" (if "if") (parenthesized_expression "((*(int **)piVar5[0xf] != (int *)0x0) && (2 < **(int **)piVar5[0xf]))" (( "(") (binary_expression "(*(int **)piVar5[0xf] != (int *)0x0) && (2 < **(int **)piVar5[0xf])" (parenthesized_expression "(*(int **)piVar5[0xf] != (int *)0x0)" (( "(") (binary_expression "*(int **)piVar5[0xf] != (int *)0x0" (pointer_expression "*(int **)piVar5[0xf]" (* "*") (cast_expression "(int **)piVar5[0xf]" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (subscript_expression "piVar5[0xf]" (identifier "piVar5") ([ "[") (number_literal "0xf") (] "]")))) (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(2 < **(int **)piVar5[0xf])" (( "(") (binary_expression "2 < **(int **)piVar5[0xf]" (number_literal "2") (< "<") (pointer_expression "**(int **)piVar5[0xf]" (* "*") (pointer_expression "*(int **)piVar5[0xf]" (* "*") (cast_expression "(int **)piVar5[0xf]" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (subscript_expression "piVar5[0xf]" (identifier "piVar5") ([ "[") (number_literal "0xf") (] "]")))))) () ")"))) () ")")) (compound_statement "{\n    FUN_0004a5b8(piVar5);\n  }" ({ "{") (expression_statement "FUN_0004a5b8(piVar5);" (call_expression "FUN_0004a5b8(piVar5)" (identifier "FUN_0004a5b8") (argument_list "(piVar5)" (( "(") (identifier "piVar5") () ")"))) (; ";")) (} "}")))) (if_statement "if (iVar1 == *piVar10) {\n    return iVar2;\n  }" (if "if") (parenthesized_expression "(iVar1 == *piVar10)" (( "(") (binary_expression "iVar1 == *piVar10" (identifier "iVar1") (== "==") (pointer_expression "*piVar10" (* "*") (identifier "piVar10"))) () ")")) (compound_statement "{\n    return iVar2;\n  }" ({ "{") (return_statement "return iVar2;" (return "return") (identifier "iVar2") (; ";")) (} "}"))) (expression_statement "(**(code **)(puVar12 + 0x111368))();" (call_expression "(**(code **)(puVar12 + 0x111368))()" (parenthesized_expression "(**(code **)(puVar12 + 0x111368))" (( "(") (pointer_expression "**(code **)(puVar12 + 0x111368)" (* "*") (pointer_expression "*(code **)(puVar12 + 0x111368)" (* "*") (cast_expression "(code **)(puVar12 + 0x111368)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar12 + 0x111368)" (( "(") (binary_expression "puVar12 + 0x111368" (identifier "puVar12") (+ "+") (number_literal "0x111368")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if ((*(char *)(iVar1 + 0xc) != '\0') || (*(int *)(iVar1 + 0xd8) != 0)) {\n    *puVar6 = 1;\n    return 0;\n  }" (if "if") (parenthesized_expression "((*(char *)(iVar1 + 0xc) != '\0') || (*(int *)(iVar1 + 0xd8) != 0))" (( "(") (binary_expression "(*(char *)(iVar1 + 0xc) != '\0') || (*(int *)(iVar1 + 0xd8) != 0)" (parenthesized_expression "(*(char *)(iVar1 + 0xc) != '\0')" (( "(") (binary_expression "*(char *)(iVar1 + 0xc) != '\0'" (pointer_expression "*(char *)(iVar1 + 0xc)" (* "*") (cast_expression "(char *)(iVar1 + 0xc)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0xc)" (( "(") (binary_expression "iVar1 + 0xc" (identifier "iVar1") (+ "+") (number_literal "0xc")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (|| "||") (parenthesized_expression "(*(int *)(iVar1 + 0xd8) != 0)" (( "(") (binary_expression "*(int *)(iVar1 + 0xd8) != 0" (pointer_expression "*(int *)(iVar1 + 0xd8)" (* "*") (cast_expression "(int *)(iVar1 + 0xd8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0xd8)" (( "(") (binary_expression "iVar1 + 0xd8" (identifier "iVar1") (+ "+") (number_literal "0xd8")) () ")")))) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    *puVar6 = 1;\n    return 0;\n  }" ({ "{") (expression_statement "*puVar6 = 1;" (assignment_expression "*puVar6 = 1" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (= "=") (number_literal "1")) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if (*(char *)(iVar1 + 0xd) != '\0') {\n    return 0xe;\n  }" (if "if") (parenthesized_expression "(*(char *)(iVar1 + 0xd) != '\0')" (( "(") (binary_expression "*(char *)(iVar1 + 0xd) != '\0'" (pointer_expression "*(char *)(iVar1 + 0xd)" (* "*") (cast_expression "(char *)(iVar1 + 0xd)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0xd)" (( "(") (binary_expression "iVar1 + 0xd" (identifier "iVar1") (+ "+") (number_literal "0xd")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    return 0xe;\n  }" ({ "{") (return_statement "return 0xe;" (return "return") (number_literal "0xe") (; ";")) (} "}"))) (if_statement "if (*(char *)(iVar1 + 4) == '\0') {\n    if (*(int *)**(undefined4 **)(iVar1 + 0x3c) < 2) {\n      return 0xe;\n    }\n    if (((int *)**(undefined4 **)(iVar1 + 0x3c))[0xd] == 0) {\n      return 0xe;\n    }\n  }" (if "if") (parenthesized_expression "(*(char *)(iVar1 + 4) == '\0')" (( "(") (binary_expression "*(char *)(iVar1 + 4) == '\0'" (pointer_expression "*(char *)(iVar1 + 4)" (* "*") (cast_expression "(char *)(iVar1 + 4)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 4)" (( "(") (binary_expression "iVar1 + 4" (identifier "iVar1") (+ "+") (number_literal "4")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    if (*(int *)**(undefined4 **)(iVar1 + 0x3c) < 2) {\n      return 0xe;\n    }\n    if (((int *)**(undefined4 **)(iVar1 + 0x3c))[0xd] == 0) {\n      return 0xe;\n    }\n  }" ({ "{") (if_statement "if (*(int *)**(undefined4 **)(iVar1 + 0x3c) < 2) {\n      return 0xe;\n    }" (if "if") (parenthesized_expression "(*(int *)**(undefined4 **)(iVar1 + 0x3c) < 2)" (( "(") (binary_expression "*(int *)**(undefined4 **)(iVar1 + 0x3c) < 2" (pointer_expression "*(int *)**(undefined4 **)(iVar1 + 0x3c)" (* "*") (cast_expression "(int *)**(undefined4 **)(iVar1 + 0x3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "**(undefined4 **)(iVar1 + 0x3c)" (* "*") (pointer_expression "*(undefined4 **)(iVar1 + 0x3c)" (* "*") (cast_expression "(undefined4 **)(iVar1 + 0x3c)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar1 + 0x3c)" (( "(") (binary_expression "iVar1 + 0x3c" (identifier "iVar1") (+ "+") (number_literal "0x3c")) () ")"))))))) (< "<") (number_literal "2")) () ")")) (compound_statement "{\n      return 0xe;\n    }" ({ "{") (return_statement "return 0xe;" (return "return") (number_literal "0xe") (; ";")) (} "}"))) (if_statement "if (((int *)**(undefined4 **)(iVar1 + 0x3c))[0xd] == 0) {\n      return 0xe;\n    }" (if "if") (parenthesized_expression "(((int *)**(undefined4 **)(iVar1 + 0x3c))[0xd] == 0)" (( "(") (binary_expression "((int *)**(undefined4 **)(iVar1 + 0x3c))[0xd] == 0" (subscript_expression "((int *)**(undefined4 **)(iVar1 + 0x3c))[0xd]" (parenthesized_expression "((int *)**(undefined4 **)(iVar1 + 0x3c))" (( "(") (cast_expression "(int *)**(undefined4 **)(iVar1 + 0x3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "**(undefined4 **)(iVar1 + 0x3c)" (* "*") (pointer_expression "*(undefined4 **)(iVar1 + 0x3c)" (* "*") (cast_expression "(undefined4 **)(iVar1 + 0x3c)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar1 + 0x3c)" (( "(") (binary_expression "iVar1 + 0x3c" (identifier "iVar1") (+ "+") (number_literal "0x3c")) () ")")))))) () ")")) ([ "[") (number_literal "0xd") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      return 0xe;\n    }" ({ "{") (return_statement "return 0xe;" (return "return") (number_literal "0xe") (; ";")) (} "}"))) (} "}"))) (expression_statement "piVar5 = *(int **)(iVar1 + 0x40);" (assignment_expression "piVar5 = *(int **)(iVar1 + 0x40)" (identifier "piVar5") (= "=") (pointer_expression "*(int **)(iVar1 + 0x40)" (* "*") (cast_expression "(int **)(iVar1 + 0x40)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar1 + 0x40)" (( "(") (binary_expression "iVar1 + 0x40" (identifier "iVar1") (+ "+") (number_literal "0x40")) () ")"))))) (; ";")) (if_statement "if (*piVar5 != 0) {\n    (**(code **)(*piVar5 + 4))(piVar5);\n    *piVar5 = 0;\n  }" (if "if") (parenthesized_expression "(*piVar5 != 0)" (( "(") (binary_expression "*piVar5 != 0" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    (**(code **)(*piVar5 + 4))(piVar5);\n    *piVar5 = 0;\n  }" ({ "{") (expression_statement "(**(code **)(*piVar5 + 4))(piVar5);" (call_expression "(**(code **)(*piVar5 + 4))(piVar5)" (parenthesized_expression "(**(code **)(*piVar5 + 4))" (( "(") (pointer_expression "**(code **)(*piVar5 + 4)" (* "*") (pointer_expression "*(code **)(*piVar5 + 4)" (* "*") (cast_expression "(code **)(*piVar5 + 4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar5 + 4)" (( "(") (binary_expression "*piVar5 + 4" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (+ "+") (number_literal "4")) () ")"))))) () ")")) (argument_list "(piVar5)" (( "(") (identifier "piVar5") () ")"))) (; ";")) (expression_statement "*piVar5 = 0;" (assignment_expression "*piVar5 = 0" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "iVar2 = FUN_0004a6a8(iVar1);" (assignment_expression "iVar2 = FUN_0004a6a8(iVar1)" (identifier "iVar2") (= "=") (call_expression "FUN_0004a6a8(iVar1)" (identifier "FUN_0004a6a8") (argument_list "(iVar1)" (( "(") (identifier "iVar1") () ")")))) (; ";")) (if_statement "if (iVar2 == 0) {\n    *(undefined1 *)(iVar1 + 0x10) = 0;\n    *(undefined1 *)(iVar1 + 5) = 5;\n  }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    *(undefined1 *)(iVar1 + 0x10) = 0;\n    *(undefined1 *)(iVar1 + 5) = 5;\n  }" ({ "{") (expression_statement "*(undefined1 *)(iVar1 + 0x10) = 0;" (assignment_expression "*(undefined1 *)(iVar1 + 0x10) = 0" (pointer_expression "*(undefined1 *)(iVar1 + 0x10)" (* "*") (cast_expression "(undefined1 *)(iVar1 + 0x10)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x10)" (( "(") (binary_expression "iVar1 + 0x10" (identifier "iVar1") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)(iVar1 + 5) = 5;" (assignment_expression "*(undefined1 *)(iVar1 + 5) = 5" (pointer_expression "*(undefined1 *)(iVar1 + 5)" (* "*") (cast_expression "(undefined1 *)(iVar1 + 5)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 5)" (( "(") (binary_expression "iVar1 + 5" (identifier "iVar1") (+ "+") (number_literal "5")) () ")")))) (= "=") (number_literal "5")) (; ";")) (} "}"))) (return_statement "return iVar2;" (return "return") (identifier "iVar2") (; ";")) (} "}")))
(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (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: (primitive_type) 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: (primitive_type) 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: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) consequence: (compound_statement (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: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (identifier) 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 declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (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))))) right: (binary_expression left: (identifier) right: (number_literal)))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (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))))) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (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 (identifier) (number_literal) (pointer_expression argument: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) consequence: (compound_statement (return_statement (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (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: (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: (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: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal)) right: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal)))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (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: (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: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (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: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (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 (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: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (char_literal (escape_sequence)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) 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: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) 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: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) 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: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (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 (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))) (expression_statement (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: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier)))))))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (subscript_expression argument: (identifier) index: (number_literal)))) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) right: (parenthesized_expression (binary_expression left: (number_literal) right: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (subscript_expression argument: (identifier) index: (number_literal))))))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (return_statement (identifier)))) (expression_statement (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: (identifier) right: (number_literal))))))) arguments: (argument_list))) (if_statement condition: (parenthesized_expression (binary_expression left: (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)))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (return_statement (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (return_statement (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (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)))))))) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (parenthesized_expression (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (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)))))))) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (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 (identifier)))) (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 (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) 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: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) (return_statement (identifier)))))

/* WARNING: Removing unreachable block (ram,0x0004a8e4) */

int MASKED(int param_1)

{
  int iVar1;
  int iVar2;
  int *piVar3;
  uint uVar4;
  int *piVar5;
  undefined4 *puVar6;
  char cVar7;
  int iVar8;
  int iVar9;
  int *piVar10;
  int *piVar11;
  undefined *puVar12;
  int iVar13;
  undefined4 *puVar14;
  int local_18;
  int local_14;
  int local_c;
  
  puVar12 = PTR___stack_chk_guard_0015ba2c;
  puVar6 = (undefined4 *)0x1;
  local_18 = *(int *)(param_1 + 0x80);
  local_14 = *(int *)(param_1 + 0x84);
  local_c = *(int *)PTR___stack_chk_guard_0015ba2c;
  if ((local_18 < 1) && ((local_18 != 0 || (local_14 == 0)))) {
    puVar6 = (undefined4 *)0x0;
  }
  *(char *)(param_1 + 0x16) = (char)puVar6;
  if (*(int *)(param_1 + 0x28) == 0) {
    if ((local_18 < 1) && ((local_18 != 0 || (local_14 == 0)))) {
      *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b704 + -0xe84;
    }
    else {
      *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b704 + -0xa94;
    }
  }
  else {
    *(undefined **)(param_1 + 0xcc) = PTR_LAB_0015b65c + -0x1cc8;
  }
  piVar5 = *(int **)(param_1 + 0x3c);
  if (*piVar5 != 0) {
    puVar6 = (undefined4 *)0x12;
    (**(code **)(*piVar5 + 0x28))(piVar5,0x12,&local_18);
  }
  if (local_c == *(int *)puVar12) {
    return *(int *)puVar12;
  }
  puVar12 = PTR___stack_chk_fail_0015ba10;
  (*(code *)PTR___stack_chk_fail_0015ba10)();
  piVar10 = *(int **)(puVar12 + 0x111384);
  cVar7 = *(char *)(piVar5 + 1);
  iVar1 = *piVar10;
  if ((cVar7 != '\0') &&
     ((*(byte *)((int)piVar5 + 0x11) < 4 || (*(byte *)((int)piVar5 + 0x11) == 5)))) {
    iVar2 = FUN_00032f88(piVar5);
    if (iVar2 != 0) goto LAB_0004a818;
    cVar7 = *(char *)(piVar5 + 1);
  }
  iVar2 = *piVar5;
  iVar13 = *(int *)(puVar12 + 0x111030);
  piVar5[0x36] = 0;
  piVar11 = (int *)piVar5[0xf];
  puVar14 = (undefined4 *)piVar5[0x37];
  iVar9 = piVar5[0x29];
  puVar6 = (undefined4 *)(*(int *)(iVar2 + 4) + 0x78);
  iVar8 = piVar5[0x28];
  piVar3 = (int *)(*(code *)(iVar13 + -0x5aa4))(0);
  if (piVar3 == (int *)0x0) {
    iVar2 = 7;
  }
  else {
    *piVar3 = iVar2;
    piVar3[1] = (int)piVar11;
    piVar3[2] = (int)(piVar3 + 0x1e);
    piVar3[5] = iVar9;
    *(undefined2 *)(piVar3 + 10) = 0xffff;
    piVar3[4] = iVar8;
    piVar3[0x1b] = (int)puVar14;
    *(undefined2 *)(piVar3 + 0xc) = 0x101;
    if (cVar7 != '\0') {
      cVar7 = '\x02';
    }
    *(char *)((int)piVar3 + 0x2b) = cVar7;
    iVar2 = (**(code **)(iVar2 + 0x18))(iVar2);
    if (iVar2 == 0) {
      uVar4 = (**(code **)(*piVar11 + 0x30))(piVar11);
      if ((uVar4 & 0x400) != 0) {
        *(undefined1 *)(piVar3 + 0xc) = 0;
      }
      if ((uVar4 & 0x1000) != 0) {
        *(undefined1 *)((int)piVar3 + 0x31) = 0;
      }
      piVar5[0x36] = (int)piVar3;
      puVar6 = puVar14;
    }
    else {
      puVar6 = (undefined4 *)0x0;
      FUN_00033348(piVar3);
      piVar11 = (int *)piVar3[2];
      if (*piVar11 != 0) {
        (**(code **)(*piVar11 + 4))(piVar11);
        *piVar11 = 0;
      }
      (**(code **)(puVar12 + 0x110f78))(piVar3);
    }
  }
LAB_0004a818:
  if ((*(int **)piVar5[0xf] != (int *)0x0) && (2 < **(int **)piVar5[0xf])) {
    MASKED(piVar5);
  }
  if (iVar1 == *piVar10) {
    return iVar2;
  }
  (**(code **)(puVar12 + 0x111368))();
  if ((*(char *)(iVar1 + 0xc) != '\0') || (*(int *)(iVar1 + 0xd8) != 0)) {
    *puVar6 = 1;
    return 0;
  }
  if (*(char *)(iVar1 + 0xd) != '\0') {
    return 0xe;
  }
  if (*(char *)(iVar1 + 4) == '\0') {
    if (*(int *)**(undefined4 **)(iVar1 + 0x3c) < 2) {
      return 0xe;
    }
    if (((int *)**(undefined4 **)(iVar1 + 0x3c))[0xd] == 0) {
      return 0xe;
    }
  }
  piVar5 = *(int **)(iVar1 + 0x40);
  if (*piVar5 != 0) {
    (**(code **)(*piVar5 + 4))(piVar5);
    *piVar5 = 0;
  }
  iVar2 = FUN_0004a6a8(iVar1);
  if (iVar2 == 0) {
    *(undefined1 *)(iVar1 + 0x10) = 0;
    *(undefined1 *)(iVar1 + 5) = 5;
  }
  return iVar2;
}

