
int sqlite3PagerClose(Pager *pPager,sqlite3 *db)

{
  u8 *zBuf;
  uint uVar1;
  PgHdr *pPVar2;
  sqlite3_file *psVar3;
  int iVar4;
  u8 *puVar5;
  int in_t9;
  code *pcVar6;
  int iVar7;
  
  iVar4 = *(int *)(in_t9 + 0x6c158);
  pcVar6 = *(code **)(iVar4 + 0x5c48);
  puVar5 = (u8 *)pPager->pTmpSpace;
  if (pcVar6 != (code *)0x0) {
    (*pcVar6)();
  }
  pPVar2 = pPager->pMmapFreelist;
  while (pPVar2 != (PgHdr *)0x0) {
    pPVar2 = pPVar2->pDirty;
    (**(code **)(in_t9 + 0x6c23c))();
  }
  pPager->exclusiveMode = '\0';
  if (((db == (sqlite3 *)0x0) || ((db->flags & 0x800) != 0)) ||
     (iVar7 = (*(code *)(*(int *)(in_t9 + 0x6c164) + 0x1998))(pPager), zBuf = puVar5, iVar7 != 0)) {
    zBuf = (u8 *)0x0;
  }
  sqlite3WalClose(pPager->pWal,db,(uint)pPager->walSyncFlags,pPager->pageSize,zBuf);
  iVar7 = *(int *)(in_t9 + 0x6c188);
  pPager->pWal = (Wal *)0x0;
  (*(code *)(iVar7 + -0x403c))(pPager);
  if (pPager->memDb != '\0') {
    (*(code *)(*(int *)(in_t9 + 0x6c1a8) + 0x3344))(pPager);
    goto LAB_00089284;
  }
  if (pPager->jfd->pMethods != (sqlite3_io_methods *)0x0) {
    uVar1 = (*(code *)(*(int *)(in_t9 + 0x6c164) + 0x1938))(pPager);
    if ((uVar1 & 0xff) == 0xd) {
      iVar7 = *(int *)(in_t9 + 0x6c184);
    }
    else {
      iVar7 = *(int *)(in_t9 + 0x6c184);
      if ((uVar1 & 0xff) != 10) goto LAB_00089270;
    }
    (*(code *)(iVar7 + 0x1394))(pPager,uVar1);
  }
LAB_00089270:
  pagerUnlockAndRollback(pPager);
LAB_00089284:
  pcVar6 = *(code **)(iVar4 + 0x5c4c);
  if (pcVar6 != (code *)0x0) {
    (*pcVar6)();
  }
  psVar3 = pPager->jfd;
  if (psVar3->pMethods != (sqlite3_io_methods *)0x0) {
    (*psVar3->pMethods->xClose)(psVar3);
    psVar3->pMethods = (sqlite3_io_methods *)0x0;
  }
  psVar3 = pPager->fd;
  iVar4 = *(int *)(in_t9 + 0x6c188);
  if (psVar3->pMethods != (sqlite3_io_methods *)0x0) {
    (*psVar3->pMethods->xClose)(psVar3);
    psVar3->pMethods = (sqlite3_io_methods *)0x0;
    iVar4 = *(int *)(in_t9 + 0x6c188);
  }
  (*(code *)(iVar4 + -0x3ff4))(puVar5);
  (**(code **)(*(int *)(in_t9 + 0x6c158) + 0x4130))(pPager->pPCache->pCache);
  (**(code **)(in_t9 + 0x6c23c))(pPager);
  return 0;
}



undefined4 FUN_00089164(int param_1,int param_2)

{
  undefined *puVar1;
  undefined4 uVar2;
  uint uVar3;
  int iVar4;
  int *piVar5;
  undefined4 uVar6;
  code *pcVar7;
  
  puVar1 = PTR_DAT_000f52bc;
  uVar6 = *(undefined4 *)(param_1 + 0xd0);
  if (*(code **)(PTR_DAT_000f52bc + 0x5c48) != (code *)0x0) {
    (**(code **)(PTR_DAT_000f52bc + 0x5c48))();
  }
  iVar4 = *(int *)(param_1 + 0x88);
  while (iVar4 != 0) {
    iVar4 = *(int *)(iVar4 + 0x10);
    (*(code *)PTR_sqlite3_free_000f53a0)();
  }
  *(undefined1 *)(param_1 + 4) = 0;
  if (((param_2 == 0) || ((*(uint *)(param_2 + 0x24) & 0x800) != 0)) ||
     (iVar4 = (*(code *)(PTR_LAB_000f52c8 + 0x1998))(param_1), uVar2 = uVar6, iVar4 != 0)) {
    uVar2 = 0;
  }
  FUN_00088ec4(*(undefined4 *)(param_1 + 0xd8),param_2,*(undefined1 *)(param_1 + 0xb),
               *(undefined4 *)(param_1 + 0x98),uVar2);
  pcVar7 = (code *)(PTR_LAB_000f52ec + -0x403c);
  *(undefined4 *)(param_1 + 0xd8) = 0;
  (*pcVar7)(param_1);
  if (*(char *)(param_1 + 0xf) == '\0') {
    if (**(int **)(param_1 + 0x40) != 0) {
      uVar3 = (*(code *)(PTR_LAB_000f52c8 + 0x1938))(param_1);
      if (((uVar3 & 0xff) == 0xd) || ((uVar3 & 0xff) == 10)) {
        (*(code *)(PTR_LAB_000f52e8 + 0x1394))(param_1,uVar3);
      }
    }
    FUN_0007ad48(param_1);
  }
  else {
    (*(code *)(PTR_LAB_000f530c + 0x3344))(param_1);
  }
  if (*(code **)(puVar1 + 0x5c4c) != (code *)0x0) {
    (**(code **)(puVar1 + 0x5c4c))();
  }
  piVar5 = *(int **)(param_1 + 0x40);
  if (*piVar5 != 0) {
    (**(code **)(*piVar5 + 4))(piVar5);
    *piVar5 = 0;
  }
  piVar5 = *(int **)(param_1 + 0x3c);
  if (*piVar5 != 0) {
    (**(code **)(*piVar5 + 4))(piVar5);
    *piVar5 = 0;
  }
  (*(code *)(PTR_LAB_000f52ec + -0x3ff4))(uVar6);
  (**(code **)(PTR_DAT_000f52bc + 0x4130))(*(undefined4 *)(*(int *)(param_1 + 0xd4) + 0x2c));
  (*(code *)PTR_sqlite3_free_000f53a0)(param_1);
  return 0;
}


lui gp,0x7
addiu gp,gp,0x413c
addu gp,gp,t9
addiu sp,sp,-0x38
sw s2,0x28(sp)
lw s2,-0x7fe4(gp)
sw gp,0x18(sp)
sw s4,0x30(sp)
or s4,a1,zero
sw s3,0x2c(sp)
sw s0,0x20(sp)
or s0,a0,zero
sw ra,0x34(sp)
sw s1,0x24(sp)
lw t9,0x5c48(s2)
beq t9,zero,0x000891b4
_lw s3,0xd0(a0)
jalr t9
_nop
lw gp,0x18(sp)
lw a0,0x88(s0)
beq a0,zero,0x000891d8
_nop
lw t9,-0x7f00(gp)
jalr t9
_lw s1,0x10(a0)
lw gp,0x18(sp)
bne s1,zero,0x000891c0
_or a0,s1,zero
beq s4,zero,0x000891f0
_sb zero,0x4(s0)
lw v0,0x24(s4)
andi v0,v0,0x800
beq v0,zero,0x00089348
_lw t9,-0x7fd8(gp)
or v0,zero,zero
lw t9,-0x7f98(gp)
or a1,s4,zero
lw a3,0x98(s0)
lw a0,0xd8(s0)
lbu a2,0xb(s0)
addiu t9,t9,-0x713c
bal 0x00088ec4
_sw v0,0x10(sp)
or a0,s0,zero
lw gp,0x18(sp)
lw t9,-0x7fb4(gp)
addiu t9,t9,-0x403c
jalr t9
_sw zero,0xd8(s0)
lbu v0,0xf(s0)
bne v0,zero,0x00089364
_lw gp,0x18(sp)
lw v0,0x40(s0)
lw v0,0x0(v0)
beq v0,zero,0x00089270
_lw t9,-0x7fd8(gp)
addiu t9,t9,0x1938
jalr t9
_or a0,s0,zero
li a0,0xd
andi v1,v0,0xff
beq v1,a0,0x0008937c
_lw gp,0x18(sp)
li a0,0xa
beq v1,a0,0x00089380
_lw t9,-0x7fb8(gp)
lw t9,-0x7fac(gp)
addiu t9,t9,-0x52b8
bal 0x0007ad48
_or a0,s0,zero
lw gp,0x18(sp)
addiu s2,s2,0x5c48
lw t9,0x4(s2)
beq t9,zero,0x000892a0
_nop
jalr t9
_nop
lw gp,0x18(sp)
lw s1,0x40(s0)
lw v0,0x0(s1)
beq v0,zero,0x000892c4
_nop
lw t9,0x4(v0)
jalr t9
_or a0,s1,zero
lw gp,0x18(sp)
sw zero,0x0(s1)
lw s1,0x3c(s0)
lw v0,0x0(s1)
beq v0,zero,0x000892ec
_lw t9,-0x7fb4(gp)
lw t9,0x4(v0)
jalr t9
_or a0,s1,zero
lw gp,0x18(sp)
sw zero,0x0(s1)
lw t9,-0x7fb4(gp)
addiu t9,t9,-0x3ff4
jalr t9
_or a0,s3,zero
lw gp,0x18(sp)
lw v0,0xd4(s0)
lw a0,0x2c(v0)
lw v0,-0x7fe4(gp)
lw t9,0x4130(v0)
jalr t9
_nop
lw gp,0x18(sp)
lw t9,-0x7f00(gp)
jalr t9
_or a0,s0,zero
or v0,zero,zero
lw ra,0x34(sp)
lw s4,0x30(sp)
lw s3,0x2c(sp)
lw s2,0x28(sp)
lw s1,0x24(sp)
lw s0,0x20(sp)
jr ra
_addiu sp,sp,0x38
addiu t9,t9,0x1998
jalr t9
_or a0,s0,zero
bne v0,zero,0x000891f0
_lw gp,0x18(sp)
b 0x000891f4
_or v0,s3,zero
lw t9,-0x7f94(gp)
addiu t9,t9,0x3344
jalr t9
_or a0,s0,zero
b 0x00089284
_lw gp,0x18(sp)
lw t9,-0x7fb8(gp)
or a1,v0,zero
addiu t9,t9,0x1394
jalr t9
_or a0,s0,zero
b 0x00089270
_lw gp,0x18(sp)
(translation_unit "undefined4 FUN_00089164(int param_1,int param_2)\n\n{\n  undefined *puVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  int iVar4;\n  int *piVar5;\n  undefined4 uVar6;\n  code *pcVar7;\n  \n  puVar1 = PTR_DAT_000f52bc;\n  uVar6 = *(undefined4 *)(param_1 + 0xd0);\n  if (*(code **)(PTR_DAT_000f52bc + 0x5c48) != (code *)0x0) {\n    (**(code **)(PTR_DAT_000f52bc + 0x5c48))();\n  }\n  iVar4 = *(int *)(param_1 + 0x88);\n  while (iVar4 != 0) {\n    iVar4 = *(int *)(iVar4 + 0x10);\n    (*(code *)PTR_sqlite3_free_000f53a0)();\n  }\n  *(undefined1 *)(param_1 + 4) = 0;\n  if (((param_2 == 0) || ((*(uint *)(param_2 + 0x24) & 0x800) != 0)) ||\n     (iVar4 = (*(code *)(PTR_LAB_000f52c8 + 0x1998))(param_1), uVar2 = uVar6, iVar4 != 0)) {\n    uVar2 = 0;\n  }\n  FUN_00088ec4(*(undefined4 *)(param_1 + 0xd8),param_2,*(undefined1 *)(param_1 + 0xb),\n               *(undefined4 *)(param_1 + 0x98),uVar2);\n  pcVar7 = (code *)(PTR_LAB_000f52ec + -0x403c);\n  *(undefined4 *)(param_1 + 0xd8) = 0;\n  (*pcVar7)(param_1);\n  if (*(char *)(param_1 + 0xf) == '\0') {\n    if (**(int **)(param_1 + 0x40) != 0) {\n      uVar3 = (*(code *)(PTR_LAB_000f52c8 + 0x1938))(param_1);\n      if (((uVar3 & 0xff) == 0xd) || ((uVar3 & 0xff) == 10)) {\n        (*(code *)(PTR_LAB_000f52e8 + 0x1394))(param_1,uVar3);\n      }\n    }\n    FUN_0007ad48(param_1);\n  }\n  else {\n    (*(code *)(PTR_LAB_000f530c + 0x3344))(param_1);\n  }\n  if (*(code **)(puVar1 + 0x5c4c) != (code *)0x0) {\n    (**(code **)(puVar1 + 0x5c4c))();\n  }\n  piVar5 = *(int **)(param_1 + 0x40);\n  if (*piVar5 != 0) {\n    (**(code **)(*piVar5 + 4))(piVar5);\n    *piVar5 = 0;\n  }\n  piVar5 = *(int **)(param_1 + 0x3c);\n  if (*piVar5 != 0) {\n    (**(code **)(*piVar5 + 4))(piVar5);\n    *piVar5 = 0;\n  }\n  (*(code *)(PTR_LAB_000f52ec + -0x3ff4))(uVar6);\n  (**(code **)(PTR_DAT_000f52bc + 0x4130))(*(undefined4 *)(*(int *)(param_1 + 0xd4) + 0x2c));\n  (*(code *)PTR_sqlite3_free_000f53a0)(param_1);\n  return 0;\n}\n\n" (function_definition "undefined4 FUN_00089164(int param_1,int param_2)\n\n{\n  undefined *puVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  int iVar4;\n  int *piVar5;\n  undefined4 uVar6;\n  code *pcVar7;\n  \n  puVar1 = PTR_DAT_000f52bc;\n  uVar6 = *(undefined4 *)(param_1 + 0xd0);\n  if (*(code **)(PTR_DAT_000f52bc + 0x5c48) != (code *)0x0) {\n    (**(code **)(PTR_DAT_000f52bc + 0x5c48))();\n  }\n  iVar4 = *(int *)(param_1 + 0x88);\n  while (iVar4 != 0) {\n    iVar4 = *(int *)(iVar4 + 0x10);\n    (*(code *)PTR_sqlite3_free_000f53a0)();\n  }\n  *(undefined1 *)(param_1 + 4) = 0;\n  if (((param_2 == 0) || ((*(uint *)(param_2 + 0x24) & 0x800) != 0)) ||\n     (iVar4 = (*(code *)(PTR_LAB_000f52c8 + 0x1998))(param_1), uVar2 = uVar6, iVar4 != 0)) {\n    uVar2 = 0;\n  }\n  FUN_00088ec4(*(undefined4 *)(param_1 + 0xd8),param_2,*(undefined1 *)(param_1 + 0xb),\n               *(undefined4 *)(param_1 + 0x98),uVar2);\n  pcVar7 = (code *)(PTR_LAB_000f52ec + -0x403c);\n  *(undefined4 *)(param_1 + 0xd8) = 0;\n  (*pcVar7)(param_1);\n  if (*(char *)(param_1 + 0xf) == '\0') {\n    if (**(int **)(param_1 + 0x40) != 0) {\n      uVar3 = (*(code *)(PTR_LAB_000f52c8 + 0x1938))(param_1);\n      if (((uVar3 & 0xff) == 0xd) || ((uVar3 & 0xff) == 10)) {\n        (*(code *)(PTR_LAB_000f52e8 + 0x1394))(param_1,uVar3);\n      }\n    }\n    FUN_0007ad48(param_1);\n  }\n  else {\n    (*(code *)(PTR_LAB_000f530c + 0x3344))(param_1);\n  }\n  if (*(code **)(puVar1 + 0x5c4c) != (code *)0x0) {\n    (**(code **)(puVar1 + 0x5c4c))();\n  }\n  piVar5 = *(int **)(param_1 + 0x40);\n  if (*piVar5 != 0) {\n    (**(code **)(*piVar5 + 4))(piVar5);\n    *piVar5 = 0;\n  }\n  piVar5 = *(int **)(param_1 + 0x3c);\n  if (*piVar5 != 0) {\n    (**(code **)(*piVar5 + 4))(piVar5);\n    *piVar5 = 0;\n  }\n  (*(code *)(PTR_LAB_000f52ec + -0x3ff4))(uVar6);\n  (**(code **)(PTR_DAT_000f52bc + 0x4130))(*(undefined4 *)(*(int *)(param_1 + 0xd4) + 0x2c));\n  (*(code *)PTR_sqlite3_free_000f53a0)(param_1);\n  return 0;\n}" type_identifier (function_declarator "FUN_00089164(int param_1,int param_2)" identifier (parameter_list "(int param_1,int param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  int iVar4;\n  int *piVar5;\n  undefined4 uVar6;\n  code *pcVar7;\n  \n  puVar1 = PTR_DAT_000f52bc;\n  uVar6 = *(undefined4 *)(param_1 + 0xd0);\n  if (*(code **)(PTR_DAT_000f52bc + 0x5c48) != (code *)0x0) {\n    (**(code **)(PTR_DAT_000f52bc + 0x5c48))();\n  }\n  iVar4 = *(int *)(param_1 + 0x88);\n  while (iVar4 != 0) {\n    iVar4 = *(int *)(iVar4 + 0x10);\n    (*(code *)PTR_sqlite3_free_000f53a0)();\n  }\n  *(undefined1 *)(param_1 + 4) = 0;\n  if (((param_2 == 0) || ((*(uint *)(param_2 + 0x24) & 0x800) != 0)) ||\n     (iVar4 = (*(code *)(PTR_LAB_000f52c8 + 0x1998))(param_1), uVar2 = uVar6, iVar4 != 0)) {\n    uVar2 = 0;\n  }\n  FUN_00088ec4(*(undefined4 *)(param_1 + 0xd8),param_2,*(undefined1 *)(param_1 + 0xb),\n               *(undefined4 *)(param_1 + 0x98),uVar2);\n  pcVar7 = (code *)(PTR_LAB_000f52ec + -0x403c);\n  *(undefined4 *)(param_1 + 0xd8) = 0;\n  (*pcVar7)(param_1);\n  if (*(char *)(param_1 + 0xf) == '\0') {\n    if (**(int **)(param_1 + 0x40) != 0) {\n      uVar3 = (*(code *)(PTR_LAB_000f52c8 + 0x1938))(param_1);\n      if (((uVar3 & 0xff) == 0xd) || ((uVar3 & 0xff) == 10)) {\n        (*(code *)(PTR_LAB_000f52e8 + 0x1394))(param_1,uVar3);\n      }\n    }\n    FUN_0007ad48(param_1);\n  }\n  else {\n    (*(code *)(PTR_LAB_000f530c + 0x3344))(param_1);\n  }\n  if (*(code **)(puVar1 + 0x5c4c) != (code *)0x0) {\n    (**(code **)(puVar1 + 0x5c4c))();\n  }\n  piVar5 = *(int **)(param_1 + 0x40);\n  if (*piVar5 != 0) {\n    (**(code **)(*piVar5 + 4))(piVar5);\n    *piVar5 = 0;\n  }\n  piVar5 = *(int **)(param_1 + 0x3c);\n  if (*piVar5 != 0) {\n    (**(code **)(*piVar5 + 4))(piVar5);\n    *piVar5 = 0;\n  }\n  (*(code *)(PTR_LAB_000f52ec + -0x3ff4))(uVar6);\n  (**(code **)(PTR_DAT_000f52bc + 0x4130))(*(undefined4 *)(*(int *)(param_1 + 0xd4) + 0x2c));\n  (*(code *)PTR_sqlite3_free_000f53a0)(param_1);\n  return 0;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "code *pcVar7;" type_identifier (pointer_declarator "*pcVar7" * identifier) ;) (expression_statement "puVar1 = PTR_DAT_000f52bc;" (assignment_expression "puVar1 = PTR_DAT_000f52bc" identifier = identifier) ;) (expression_statement "uVar6 = *(undefined4 *)(param_1 + 0xd0);" (assignment_expression "uVar6 = *(undefined4 *)(param_1 + 0xd0)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0xd0)" * (cast_expression "(undefined4 *)(param_1 + 0xd0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd0)" ( (binary_expression "param_1 + 0xd0" identifier + number_literal) ))))) ;) (if_statement "if (*(code **)(PTR_DAT_000f52bc + 0x5c48) != (code *)0x0) {\n    (**(code **)(PTR_DAT_000f52bc + 0x5c48))();\n  }" if (parenthesized_expression "(*(code **)(PTR_DAT_000f52bc + 0x5c48) != (code *)0x0)" ( (binary_expression "*(code **)(PTR_DAT_000f52bc + 0x5c48) != (code *)0x0" (pointer_expression "*(code **)(PTR_DAT_000f52bc + 0x5c48)" * (cast_expression "(code **)(PTR_DAT_000f52bc + 0x5c48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(PTR_DAT_000f52bc + 0x5c48)" ( (binary_expression "PTR_DAT_000f52bc + 0x5c48" identifier + number_literal) )))) != (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    (**(code **)(PTR_DAT_000f52bc + 0x5c48))();\n  }" { (expression_statement "(**(code **)(PTR_DAT_000f52bc + 0x5c48))();" (call_expression "(**(code **)(PTR_DAT_000f52bc + 0x5c48))()" (parenthesized_expression "(**(code **)(PTR_DAT_000f52bc + 0x5c48))" ( (pointer_expression "**(code **)(PTR_DAT_000f52bc + 0x5c48)" * (pointer_expression "*(code **)(PTR_DAT_000f52bc + 0x5c48)" * (cast_expression "(code **)(PTR_DAT_000f52bc + 0x5c48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(PTR_DAT_000f52bc + 0x5c48)" ( (binary_expression "PTR_DAT_000f52bc + 0x5c48" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) })) (expression_statement "iVar4 = *(int *)(param_1 + 0x88);" (assignment_expression "iVar4 = *(int *)(param_1 + 0x88)" identifier = (pointer_expression "*(int *)(param_1 + 0x88)" * (cast_expression "(int *)(param_1 + 0x88)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x88)" ( (binary_expression "param_1 + 0x88" identifier + number_literal) ))))) ;) (while_statement "while (iVar4 != 0) {\n    iVar4 = *(int *)(iVar4 + 0x10);\n    (*(code *)PTR_sqlite3_free_000f53a0)();\n  }" while (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar4 = *(int *)(iVar4 + 0x10);\n    (*(code *)PTR_sqlite3_free_000f53a0)();\n  }" { (expression_statement "iVar4 = *(int *)(iVar4 + 0x10);" (assignment_expression "iVar4 = *(int *)(iVar4 + 0x10)" identifier = (pointer_expression "*(int *)(iVar4 + 0x10)" * (cast_expression "(int *)(iVar4 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x10)" ( (binary_expression "iVar4 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "(*(code *)PTR_sqlite3_free_000f53a0)();" (call_expression "(*(code *)PTR_sqlite3_free_000f53a0)()" (parenthesized_expression "(*(code *)PTR_sqlite3_free_000f53a0)" ( (pointer_expression "*(code *)PTR_sqlite3_free_000f53a0" * (cast_expression "(code *)PTR_sqlite3_free_000f53a0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) })) (expression_statement "*(undefined1 *)(param_1 + 4) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 4) = 0" (pointer_expression "*(undefined1 *)(param_1 + 4)" * (cast_expression "(undefined1 *)(param_1 + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (((param_2 == 0) || ((*(uint *)(param_2 + 0x24) & 0x800) != 0)) ||\n     (iVar4 = (*(code *)(PTR_LAB_000f52c8 + 0x1998))(param_1), uVar2 = uVar6, iVar4 != 0)) {\n    uVar2 = 0;\n  }" if (parenthesized_expression "(((param_2 == 0) || ((*(uint *)(param_2 + 0x24) & 0x800) != 0)) ||\n     (iVar4 = (*(code *)(PTR_LAB_000f52c8 + 0x1998))(param_1), uVar2 = uVar6, iVar4 != 0))" ( (binary_expression "((param_2 == 0) || ((*(uint *)(param_2 + 0x24) & 0x800) != 0)) ||\n     (iVar4 = (*(code *)(PTR_LAB_000f52c8 + 0x1998))(param_1), uVar2 = uVar6, iVar4 != 0)" (parenthesized_expression "((param_2 == 0) || ((*(uint *)(param_2 + 0x24) & 0x800) != 0))" ( (binary_expression "(param_2 == 0) || ((*(uint *)(param_2 + 0x24) & 0x800) != 0)" (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) || (parenthesized_expression "((*(uint *)(param_2 + 0x24) & 0x800) != 0)" ( (binary_expression "(*(uint *)(param_2 + 0x24) & 0x800) != 0" (parenthesized_expression "(*(uint *)(param_2 + 0x24) & 0x800)" ( (binary_expression "*(uint *)(param_2 + 0x24) & 0x800" (pointer_expression "*(uint *)(param_2 + 0x24)" * (cast_expression "(uint *)(param_2 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x24)" ( (binary_expression "param_2 + 0x24" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) || (parenthesized_expression "(iVar4 = (*(code *)(PTR_LAB_000f52c8 + 0x1998))(param_1), uVar2 = uVar6, iVar4 != 0)" ( (comma_expression "iVar4 = (*(code *)(PTR_LAB_000f52c8 + 0x1998))(param_1), uVar2 = uVar6, iVar4 != 0" (assignment_expression "iVar4 = (*(code *)(PTR_LAB_000f52c8 + 0x1998))(param_1)" identifier = (call_expression "(*(code *)(PTR_LAB_000f52c8 + 0x1998))(param_1)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52c8 + 0x1998))" ( (pointer_expression "*(code *)(PTR_LAB_000f52c8 + 0x1998)" * (cast_expression "(code *)(PTR_LAB_000f52c8 + 0x1998)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52c8 + 0x1998)" ( (binary_expression "PTR_LAB_000f52c8 + 0x1998" identifier + number_literal) )))) )) (argument_list "(param_1)" ( identifier )))) , (comma_expression "uVar2 = uVar6, iVar4 != 0" (assignment_expression "uVar2 = uVar6" identifier = identifier) , (binary_expression "iVar4 != 0" identifier != number_literal))) ))) )) (compound_statement "{\n    uVar2 = 0;\n  }" { (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) })) (expression_statement "FUN_00088ec4(*(undefined4 *)(param_1 + 0xd8),param_2,*(undefined1 *)(param_1 + 0xb),\n               *(undefined4 *)(param_1 + 0x98),uVar2);" (call_expression "FUN_00088ec4(*(undefined4 *)(param_1 + 0xd8),param_2,*(undefined1 *)(param_1 + 0xb),\n               *(undefined4 *)(param_1 + 0x98),uVar2)" identifier (argument_list "(*(undefined4 *)(param_1 + 0xd8),param_2,*(undefined1 *)(param_1 + 0xb),\n               *(undefined4 *)(param_1 + 0x98),uVar2)" ( (pointer_expression "*(undefined4 *)(param_1 + 0xd8)" * (cast_expression "(undefined4 *)(param_1 + 0xd8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd8)" ( (binary_expression "param_1 + 0xd8" identifier + number_literal) )))) , identifier , (pointer_expression "*(undefined1 *)(param_1 + 0xb)" * (cast_expression "(undefined1 *)(param_1 + 0xb)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb)" ( (binary_expression "param_1 + 0xb" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_1 + 0x98)" * (cast_expression "(undefined4 *)(param_1 + 0x98)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x98)" ( (binary_expression "param_1 + 0x98" identifier + number_literal) )))) , identifier ))) ;) (expression_statement "pcVar7 = (code *)(PTR_LAB_000f52ec + -0x403c);" (assignment_expression "pcVar7 = (code *)(PTR_LAB_000f52ec + -0x403c)" identifier = (cast_expression "(code *)(PTR_LAB_000f52ec + -0x403c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52ec + -0x403c)" ( (binary_expression "PTR_LAB_000f52ec + -0x403c" identifier + number_literal) )))) ;) (expression_statement "*(undefined4 *)(param_1 + 0xd8) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0xd8) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0xd8)" * (cast_expression "(undefined4 *)(param_1 + 0xd8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd8)" ( (binary_expression "param_1 + 0xd8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(*pcVar7)(param_1);" (call_expression "(*pcVar7)(param_1)" (parenthesized_expression "(*pcVar7)" ( (pointer_expression "*pcVar7" * identifier) )) (argument_list "(param_1)" ( identifier ))) ;) (if_statement "if (*(char *)(param_1 + 0xf) == '\0') {\n    if (**(int **)(param_1 + 0x40) != 0) {\n      uVar3 = (*(code *)(PTR_LAB_000f52c8 + 0x1938))(param_1);\n      if (((uVar3 & 0xff) == 0xd) || ((uVar3 & 0xff) == 10)) {\n        (*(code *)(PTR_LAB_000f52e8 + 0x1394))(param_1,uVar3);\n      }\n    }\n    FUN_0007ad48(param_1);\n  }\n  else {\n    (*(code *)(PTR_LAB_000f530c + 0x3344))(param_1);\n  }" if (parenthesized_expression "(*(char *)(param_1 + 0xf) == '\0')" ( (binary_expression "*(char *)(param_1 + 0xf) == '\0'" (pointer_expression "*(char *)(param_1 + 0xf)" * (cast_expression "(char *)(param_1 + 0xf)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xf)" ( (binary_expression "param_1 + 0xf" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    if (**(int **)(param_1 + 0x40) != 0) {\n      uVar3 = (*(code *)(PTR_LAB_000f52c8 + 0x1938))(param_1);\n      if (((uVar3 & 0xff) == 0xd) || ((uVar3 & 0xff) == 10)) {\n        (*(code *)(PTR_LAB_000f52e8 + 0x1394))(param_1,uVar3);\n      }\n    }\n    FUN_0007ad48(param_1);\n  }" { (if_statement "if (**(int **)(param_1 + 0x40) != 0) {\n      uVar3 = (*(code *)(PTR_LAB_000f52c8 + 0x1938))(param_1);\n      if (((uVar3 & 0xff) == 0xd) || ((uVar3 & 0xff) == 10)) {\n        (*(code *)(PTR_LAB_000f52e8 + 0x1394))(param_1,uVar3);\n      }\n    }" if (parenthesized_expression "(**(int **)(param_1 + 0x40) != 0)" ( (binary_expression "**(int **)(param_1 + 0x40) != 0" (pointer_expression "**(int **)(param_1 + 0x40)" * (pointer_expression "*(int **)(param_1 + 0x40)" * (cast_expression "(int **)(param_1 + 0x40)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) ))))) != number_literal) )) (compound_statement "{\n      uVar3 = (*(code *)(PTR_LAB_000f52c8 + 0x1938))(param_1);\n      if (((uVar3 & 0xff) == 0xd) || ((uVar3 & 0xff) == 10)) {\n        (*(code *)(PTR_LAB_000f52e8 + 0x1394))(param_1,uVar3);\n      }\n    }" { (expression_statement "uVar3 = (*(code *)(PTR_LAB_000f52c8 + 0x1938))(param_1);" (assignment_expression "uVar3 = (*(code *)(PTR_LAB_000f52c8 + 0x1938))(param_1)" identifier = (call_expression "(*(code *)(PTR_LAB_000f52c8 + 0x1938))(param_1)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52c8 + 0x1938))" ( (pointer_expression "*(code *)(PTR_LAB_000f52c8 + 0x1938)" * (cast_expression "(code *)(PTR_LAB_000f52c8 + 0x1938)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52c8 + 0x1938)" ( (binary_expression "PTR_LAB_000f52c8 + 0x1938" identifier + number_literal) )))) )) (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (((uVar3 & 0xff) == 0xd) || ((uVar3 & 0xff) == 10)) {\n        (*(code *)(PTR_LAB_000f52e8 + 0x1394))(param_1,uVar3);\n      }" if (parenthesized_expression "(((uVar3 & 0xff) == 0xd) || ((uVar3 & 0xff) == 10))" ( (binary_expression "((uVar3 & 0xff) == 0xd) || ((uVar3 & 0xff) == 10)" (parenthesized_expression "((uVar3 & 0xff) == 0xd)" ( (binary_expression "(uVar3 & 0xff) == 0xd" (parenthesized_expression "(uVar3 & 0xff)" ( (binary_expression "uVar3 & 0xff" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "((uVar3 & 0xff) == 10)" ( (binary_expression "(uVar3 & 0xff) == 10" (parenthesized_expression "(uVar3 & 0xff)" ( (binary_expression "uVar3 & 0xff" identifier & number_literal) )) == number_literal) ))) )) (compound_statement "{\n        (*(code *)(PTR_LAB_000f52e8 + 0x1394))(param_1,uVar3);\n      }" { (expression_statement "(*(code *)(PTR_LAB_000f52e8 + 0x1394))(param_1,uVar3);" (call_expression "(*(code *)(PTR_LAB_000f52e8 + 0x1394))(param_1,uVar3)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52e8 + 0x1394))" ( (pointer_expression "*(code *)(PTR_LAB_000f52e8 + 0x1394)" * (cast_expression "(code *)(PTR_LAB_000f52e8 + 0x1394)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52e8 + 0x1394)" ( (binary_expression "PTR_LAB_000f52e8 + 0x1394" identifier + number_literal) )))) )) (argument_list "(param_1,uVar3)" ( identifier , identifier ))) ;) })) })) (expression_statement "FUN_0007ad48(param_1);" (call_expression "FUN_0007ad48(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) }) (else_clause "else {\n    (*(code *)(PTR_LAB_000f530c + 0x3344))(param_1);\n  }" else (compound_statement "{\n    (*(code *)(PTR_LAB_000f530c + 0x3344))(param_1);\n  }" { (expression_statement "(*(code *)(PTR_LAB_000f530c + 0x3344))(param_1);" (call_expression "(*(code *)(PTR_LAB_000f530c + 0x3344))(param_1)" (parenthesized_expression "(*(code *)(PTR_LAB_000f530c + 0x3344))" ( (pointer_expression "*(code *)(PTR_LAB_000f530c + 0x3344)" * (cast_expression "(code *)(PTR_LAB_000f530c + 0x3344)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f530c + 0x3344)" ( (binary_expression "PTR_LAB_000f530c + 0x3344" identifier + number_literal) )))) )) (argument_list "(param_1)" ( identifier ))) ;) }))) (if_statement "if (*(code **)(puVar1 + 0x5c4c) != (code *)0x0) {\n    (**(code **)(puVar1 + 0x5c4c))();\n  }" if (parenthesized_expression "(*(code **)(puVar1 + 0x5c4c) != (code *)0x0)" ( (binary_expression "*(code **)(puVar1 + 0x5c4c) != (code *)0x0" (pointer_expression "*(code **)(puVar1 + 0x5c4c)" * (cast_expression "(code **)(puVar1 + 0x5c4c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar1 + 0x5c4c)" ( (binary_expression "puVar1 + 0x5c4c" identifier + number_literal) )))) != (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    (**(code **)(puVar1 + 0x5c4c))();\n  }" { (expression_statement "(**(code **)(puVar1 + 0x5c4c))();" (call_expression "(**(code **)(puVar1 + 0x5c4c))()" (parenthesized_expression "(**(code **)(puVar1 + 0x5c4c))" ( (pointer_expression "**(code **)(puVar1 + 0x5c4c)" * (pointer_expression "*(code **)(puVar1 + 0x5c4c)" * (cast_expression "(code **)(puVar1 + 0x5c4c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar1 + 0x5c4c)" ( (binary_expression "puVar1 + 0x5c4c" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) })) (expression_statement "piVar5 = *(int **)(param_1 + 0x40);" (assignment_expression "piVar5 = *(int **)(param_1 + 0x40)" identifier = (pointer_expression "*(int **)(param_1 + 0x40)" * (cast_expression "(int **)(param_1 + 0x40)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 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 "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    (**(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 "(*(code *)(PTR_LAB_000f52ec + -0x3ff4))(uVar6);" (call_expression "(*(code *)(PTR_LAB_000f52ec + -0x3ff4))(uVar6)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52ec + -0x3ff4))" ( (pointer_expression "*(code *)(PTR_LAB_000f52ec + -0x3ff4)" * (cast_expression "(code *)(PTR_LAB_000f52ec + -0x3ff4)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52ec + -0x3ff4)" ( (binary_expression "PTR_LAB_000f52ec + -0x3ff4" identifier + number_literal) )))) )) (argument_list "(uVar6)" ( identifier ))) ;) (expression_statement "(**(code **)(PTR_DAT_000f52bc + 0x4130))(*(undefined4 *)(*(int *)(param_1 + 0xd4) + 0x2c));" (call_expression "(**(code **)(PTR_DAT_000f52bc + 0x4130))(*(undefined4 *)(*(int *)(param_1 + 0xd4) + 0x2c))" (parenthesized_expression "(**(code **)(PTR_DAT_000f52bc + 0x4130))" ( (pointer_expression "**(code **)(PTR_DAT_000f52bc + 0x4130)" * (pointer_expression "*(code **)(PTR_DAT_000f52bc + 0x4130)" * (cast_expression "(code **)(PTR_DAT_000f52bc + 0x4130)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(PTR_DAT_000f52bc + 0x4130)" ( (binary_expression "PTR_DAT_000f52bc + 0x4130" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(*(int *)(param_1 + 0xd4) + 0x2c))" ( (pointer_expression "*(undefined4 *)(*(int *)(param_1 + 0xd4) + 0x2c)" * (cast_expression "(undefined4 *)(*(int *)(param_1 + 0xd4) + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0xd4) + 0x2c)" ( (binary_expression "*(int *)(param_1 + 0xd4) + 0x2c" (pointer_expression "*(int *)(param_1 + 0xd4)" * (cast_expression "(int *)(param_1 + 0xd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd4)" ( (binary_expression "param_1 + 0xd4" identifier + number_literal) )))) + number_literal) )))) ))) ;) (expression_statement "(*(code *)PTR_sqlite3_free_000f53a0)(param_1);" (call_expression "(*(code *)PTR_sqlite3_free_000f53a0)(param_1)" (parenthesized_expression "(*(code *)PTR_sqlite3_free_000f53a0)" ( (pointer_expression "*(code *)PTR_sqlite3_free_000f53a0" * (cast_expression "(code *)PTR_sqlite3_free_000f53a0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier ))) ;) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "int sqlite3PagerClose(Pager *pPager,sqlite3 *db)\n\n{\n  u8 *zBuf;\n  uint uVar1;\n  PgHdr *pPVar2;\n  sqlite3_file *psVar3;\n  int iVar4;\n  u8 *puVar5;\n  int in_t9;\n  code *pcVar6;\n  int iVar7;\n  \n  iVar4 = *(int *)(in_t9 + 0x6c158);\n  pcVar6 = *(code **)(iVar4 + 0x5c48);\n  puVar5 = (u8 *)pPager->pTmpSpace;\n  if (pcVar6 != (code *)0x0) {\n    (*pcVar6)();\n  }\n  pPVar2 = pPager->pMmapFreelist;\n  while (pPVar2 != (PgHdr *)0x0) {\n    pPVar2 = pPVar2->pDirty;\n    (**(code **)(in_t9 + 0x6c23c))();\n  }\n  pPager->exclusiveMode = '\0';\n  if (((db == (sqlite3 *)0x0) || ((db->flags & 0x800) != 0)) ||\n     (iVar7 = (*(code *)(*(int *)(in_t9 + 0x6c164) + 0x1998))(pPager), zBuf = puVar5, iVar7 != 0)) {\n    zBuf = (u8 *)0x0;\n  }\n  sqlite3WalClose(pPager->pWal,db,(uint)pPager->walSyncFlags,pPager->pageSize,zBuf);\n  iVar7 = *(int *)(in_t9 + 0x6c188);\n  pPager->pWal = (Wal *)0x0;\n  (*(code *)(iVar7 + -0x403c))(pPager);\n  if (pPager->memDb != '\0') {\n    (*(code *)(*(int *)(in_t9 + 0x6c1a8) + 0x3344))(pPager);\n    goto LAB_00089284;\n  }\n  if (pPager->jfd->pMethods != (sqlite3_io_methods *)0x0) {\n    uVar1 = (*(code *)(*(int *)(in_t9 + 0x6c164) + 0x1938))(pPager);\n    if ((uVar1 & 0xff) == 0xd) {\n      iVar7 = *(int *)(in_t9 + 0x6c184);\n    }\n    else {\n      iVar7 = *(int *)(in_t9 + 0x6c184);\n      if ((uVar1 & 0xff) != 10) goto LAB_00089270;\n    }\n    (*(code *)(iVar7 + 0x1394))(pPager,uVar1);\n  }\nLAB_00089270:\n  pagerUnlockAndRollback(pPager);\nLAB_00089284:\n  pcVar6 = *(code **)(iVar4 + 0x5c4c);\n  if (pcVar6 != (code *)0x0) {\n    (*pcVar6)();\n  }\n  psVar3 = pPager->jfd;\n  if (psVar3->pMethods != (sqlite3_io_methods *)0x0) {\n    (*psVar3->pMethods->xClose)(psVar3);\n    psVar3->pMethods = (sqlite3_io_methods *)0x0;\n  }\n  psVar3 = pPager->fd;\n  iVar4 = *(int *)(in_t9 + 0x6c188);\n  if (psVar3->pMethods != (sqlite3_io_methods *)0x0) {\n    (*psVar3->pMethods->xClose)(psVar3);\n    psVar3->pMethods = (sqlite3_io_methods *)0x0;\n    iVar4 = *(int *)(in_t9 + 0x6c188);\n  }\n  (*(code *)(iVar4 + -0x3ff4))(puVar5);\n  (**(code **)(*(int *)(in_t9 + 0x6c158) + 0x4130))(pPager->pPCache->pCache);\n  (**(code **)(in_t9 + 0x6c23c))(pPager);\n  return 0;\n}\n\n" (function_definition "int sqlite3PagerClose(Pager *pPager,sqlite3 *db)\n\n{\n  u8 *zBuf;\n  uint uVar1;\n  PgHdr *pPVar2;\n  sqlite3_file *psVar3;\n  int iVar4;\n  u8 *puVar5;\n  int in_t9;\n  code *pcVar6;\n  int iVar7;\n  \n  iVar4 = *(int *)(in_t9 + 0x6c158);\n  pcVar6 = *(code **)(iVar4 + 0x5c48);\n  puVar5 = (u8 *)pPager->pTmpSpace;\n  if (pcVar6 != (code *)0x0) {\n    (*pcVar6)();\n  }\n  pPVar2 = pPager->pMmapFreelist;\n  while (pPVar2 != (PgHdr *)0x0) {\n    pPVar2 = pPVar2->pDirty;\n    (**(code **)(in_t9 + 0x6c23c))();\n  }\n  pPager->exclusiveMode = '\0';\n  if (((db == (sqlite3 *)0x0) || ((db->flags & 0x800) != 0)) ||\n     (iVar7 = (*(code *)(*(int *)(in_t9 + 0x6c164) + 0x1998))(pPager), zBuf = puVar5, iVar7 != 0)) {\n    zBuf = (u8 *)0x0;\n  }\n  sqlite3WalClose(pPager->pWal,db,(uint)pPager->walSyncFlags,pPager->pageSize,zBuf);\n  iVar7 = *(int *)(in_t9 + 0x6c188);\n  pPager->pWal = (Wal *)0x0;\n  (*(code *)(iVar7 + -0x403c))(pPager);\n  if (pPager->memDb != '\0') {\n    (*(code *)(*(int *)(in_t9 + 0x6c1a8) + 0x3344))(pPager);\n    goto LAB_00089284;\n  }\n  if (pPager->jfd->pMethods != (sqlite3_io_methods *)0x0) {\n    uVar1 = (*(code *)(*(int *)(in_t9 + 0x6c164) + 0x1938))(pPager);\n    if ((uVar1 & 0xff) == 0xd) {\n      iVar7 = *(int *)(in_t9 + 0x6c184);\n    }\n    else {\n      iVar7 = *(int *)(in_t9 + 0x6c184);\n      if ((uVar1 & 0xff) != 10) goto LAB_00089270;\n    }\n    (*(code *)(iVar7 + 0x1394))(pPager,uVar1);\n  }\nLAB_00089270:\n  pagerUnlockAndRollback(pPager);\nLAB_00089284:\n  pcVar6 = *(code **)(iVar4 + 0x5c4c);\n  if (pcVar6 != (code *)0x0) {\n    (*pcVar6)();\n  }\n  psVar3 = pPager->jfd;\n  if (psVar3->pMethods != (sqlite3_io_methods *)0x0) {\n    (*psVar3->pMethods->xClose)(psVar3);\n    psVar3->pMethods = (sqlite3_io_methods *)0x0;\n  }\n  psVar3 = pPager->fd;\n  iVar4 = *(int *)(in_t9 + 0x6c188);\n  if (psVar3->pMethods != (sqlite3_io_methods *)0x0) {\n    (*psVar3->pMethods->xClose)(psVar3);\n    psVar3->pMethods = (sqlite3_io_methods *)0x0;\n    iVar4 = *(int *)(in_t9 + 0x6c188);\n  }\n  (*(code *)(iVar4 + -0x3ff4))(puVar5);\n  (**(code **)(*(int *)(in_t9 + 0x6c158) + 0x4130))(pPager->pPCache->pCache);\n  (**(code **)(in_t9 + 0x6c23c))(pPager);\n  return 0;\n}" primitive_type (function_declarator "sqlite3PagerClose(Pager *pPager,sqlite3 *db)" identifier (parameter_list "(Pager *pPager,sqlite3 *db)" ( (parameter_declaration "Pager *pPager" type_identifier (pointer_declarator "*pPager" * identifier)) , (parameter_declaration "sqlite3 *db" type_identifier (pointer_declarator "*db" * identifier)) ))) (compound_statement "{\n  u8 *zBuf;\n  uint uVar1;\n  PgHdr *pPVar2;\n  sqlite3_file *psVar3;\n  int iVar4;\n  u8 *puVar5;\n  int in_t9;\n  code *pcVar6;\n  int iVar7;\n  \n  iVar4 = *(int *)(in_t9 + 0x6c158);\n  pcVar6 = *(code **)(iVar4 + 0x5c48);\n  puVar5 = (u8 *)pPager->pTmpSpace;\n  if (pcVar6 != (code *)0x0) {\n    (*pcVar6)();\n  }\n  pPVar2 = pPager->pMmapFreelist;\n  while (pPVar2 != (PgHdr *)0x0) {\n    pPVar2 = pPVar2->pDirty;\n    (**(code **)(in_t9 + 0x6c23c))();\n  }\n  pPager->exclusiveMode = '\0';\n  if (((db == (sqlite3 *)0x0) || ((db->flags & 0x800) != 0)) ||\n     (iVar7 = (*(code *)(*(int *)(in_t9 + 0x6c164) + 0x1998))(pPager), zBuf = puVar5, iVar7 != 0)) {\n    zBuf = (u8 *)0x0;\n  }\n  sqlite3WalClose(pPager->pWal,db,(uint)pPager->walSyncFlags,pPager->pageSize,zBuf);\n  iVar7 = *(int *)(in_t9 + 0x6c188);\n  pPager->pWal = (Wal *)0x0;\n  (*(code *)(iVar7 + -0x403c))(pPager);\n  if (pPager->memDb != '\0') {\n    (*(code *)(*(int *)(in_t9 + 0x6c1a8) + 0x3344))(pPager);\n    goto LAB_00089284;\n  }\n  if (pPager->jfd->pMethods != (sqlite3_io_methods *)0x0) {\n    uVar1 = (*(code *)(*(int *)(in_t9 + 0x6c164) + 0x1938))(pPager);\n    if ((uVar1 & 0xff) == 0xd) {\n      iVar7 = *(int *)(in_t9 + 0x6c184);\n    }\n    else {\n      iVar7 = *(int *)(in_t9 + 0x6c184);\n      if ((uVar1 & 0xff) != 10) goto LAB_00089270;\n    }\n    (*(code *)(iVar7 + 0x1394))(pPager,uVar1);\n  }\nLAB_00089270:\n  pagerUnlockAndRollback(pPager);\nLAB_00089284:\n  pcVar6 = *(code **)(iVar4 + 0x5c4c);\n  if (pcVar6 != (code *)0x0) {\n    (*pcVar6)();\n  }\n  psVar3 = pPager->jfd;\n  if (psVar3->pMethods != (sqlite3_io_methods *)0x0) {\n    (*psVar3->pMethods->xClose)(psVar3);\n    psVar3->pMethods = (sqlite3_io_methods *)0x0;\n  }\n  psVar3 = pPager->fd;\n  iVar4 = *(int *)(in_t9 + 0x6c188);\n  if (psVar3->pMethods != (sqlite3_io_methods *)0x0) {\n    (*psVar3->pMethods->xClose)(psVar3);\n    psVar3->pMethods = (sqlite3_io_methods *)0x0;\n    iVar4 = *(int *)(in_t9 + 0x6c188);\n  }\n  (*(code *)(iVar4 + -0x3ff4))(puVar5);\n  (**(code **)(*(int *)(in_t9 + 0x6c158) + 0x4130))(pPager->pPCache->pCache);\n  (**(code **)(in_t9 + 0x6c23c))(pPager);\n  return 0;\n}" { (declaration "u8 *zBuf;" type_identifier (pointer_declarator "*zBuf" * identifier) ;) (declaration "uint uVar1;" type_identifier identifier ;) (declaration "PgHdr *pPVar2;" type_identifier (pointer_declarator "*pPVar2" * identifier) ;) (declaration "sqlite3_file *psVar3;" type_identifier (pointer_declarator "*psVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "u8 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "int in_t9;" primitive_type identifier ;) (declaration "code *pcVar6;" type_identifier (pointer_declarator "*pcVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (expression_statement "iVar4 = *(int *)(in_t9 + 0x6c158);" (assignment_expression "iVar4 = *(int *)(in_t9 + 0x6c158)" identifier = (pointer_expression "*(int *)(in_t9 + 0x6c158)" * (cast_expression "(int *)(in_t9 + 0x6c158)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0x6c158)" ( (binary_expression "in_t9 + 0x6c158" identifier + number_literal) ))))) ;) (expression_statement "pcVar6 = *(code **)(iVar4 + 0x5c48);" (assignment_expression "pcVar6 = *(code **)(iVar4 + 0x5c48)" identifier = (pointer_expression "*(code **)(iVar4 + 0x5c48)" * (cast_expression "(code **)(iVar4 + 0x5c48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + 0x5c48)" ( (binary_expression "iVar4 + 0x5c48" identifier + number_literal) ))))) ;) (expression_statement "puVar5 = (u8 *)pPager->pTmpSpace;" (assignment_expression "puVar5 = (u8 *)pPager->pTmpSpace" identifier = (cast_expression "(u8 *)pPager->pTmpSpace" ( (type_descriptor "u8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pPager->pTmpSpace" identifier -> field_identifier))) ;) (if_statement "if (pcVar6 != (code *)0x0) {\n    (*pcVar6)();\n  }" if (parenthesized_expression "(pcVar6 != (code *)0x0)" ( (binary_expression "pcVar6 != (code *)0x0" identifier != (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    (*pcVar6)();\n  }" { (expression_statement "(*pcVar6)();" (call_expression "(*pcVar6)()" (parenthesized_expression "(*pcVar6)" ( (pointer_expression "*pcVar6" * identifier) )) (argument_list "()" ( ))) ;) })) (expression_statement "pPVar2 = pPager->pMmapFreelist;" (assignment_expression "pPVar2 = pPager->pMmapFreelist" identifier = (field_expression "pPager->pMmapFreelist" identifier -> field_identifier)) ;) (while_statement "while (pPVar2 != (PgHdr *)0x0) {\n    pPVar2 = pPVar2->pDirty;\n    (**(code **)(in_t9 + 0x6c23c))();\n  }" while (parenthesized_expression "(pPVar2 != (PgHdr *)0x0)" ( (binary_expression "pPVar2 != (PgHdr *)0x0" identifier != (cast_expression "(PgHdr *)0x0" ( (type_descriptor "PgHdr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pPVar2 = pPVar2->pDirty;\n    (**(code **)(in_t9 + 0x6c23c))();\n  }" { (expression_statement "pPVar2 = pPVar2->pDirty;" (assignment_expression "pPVar2 = pPVar2->pDirty" identifier = (field_expression "pPVar2->pDirty" identifier -> field_identifier)) ;) (expression_statement "(**(code **)(in_t9 + 0x6c23c))();" (call_expression "(**(code **)(in_t9 + 0x6c23c))()" (parenthesized_expression "(**(code **)(in_t9 + 0x6c23c))" ( (pointer_expression "**(code **)(in_t9 + 0x6c23c)" * (pointer_expression "*(code **)(in_t9 + 0x6c23c)" * (cast_expression "(code **)(in_t9 + 0x6c23c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x6c23c)" ( (binary_expression "in_t9 + 0x6c23c" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) })) (expression_statement "pPager->exclusiveMode = '\0';" (assignment_expression "pPager->exclusiveMode = '\0'" (field_expression "pPager->exclusiveMode" identifier -> field_identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (((db == (sqlite3 *)0x0) || ((db->flags & 0x800) != 0)) ||\n     (iVar7 = (*(code *)(*(int *)(in_t9 + 0x6c164) + 0x1998))(pPager), zBuf = puVar5, iVar7 != 0)) {\n    zBuf = (u8 *)0x0;\n  }" if (parenthesized_expression "(((db == (sqlite3 *)0x0) || ((db->flags & 0x800) != 0)) ||\n     (iVar7 = (*(code *)(*(int *)(in_t9 + 0x6c164) + 0x1998))(pPager), zBuf = puVar5, iVar7 != 0))" ( (binary_expression "((db == (sqlite3 *)0x0) || ((db->flags & 0x800) != 0)) ||\n     (iVar7 = (*(code *)(*(int *)(in_t9 + 0x6c164) + 0x1998))(pPager), zBuf = puVar5, iVar7 != 0)" (parenthesized_expression "((db == (sqlite3 *)0x0) || ((db->flags & 0x800) != 0))" ( (binary_expression "(db == (sqlite3 *)0x0) || ((db->flags & 0x800) != 0)" (parenthesized_expression "(db == (sqlite3 *)0x0)" ( (binary_expression "db == (sqlite3 *)0x0" identifier == (cast_expression "(sqlite3 *)0x0" ( (type_descriptor "sqlite3 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "((db->flags & 0x800) != 0)" ( (binary_expression "(db->flags & 0x800) != 0" (parenthesized_expression "(db->flags & 0x800)" ( (binary_expression "db->flags & 0x800" (field_expression "db->flags" identifier -> field_identifier) & number_literal) )) != number_literal) ))) )) || (parenthesized_expression "(iVar7 = (*(code *)(*(int *)(in_t9 + 0x6c164) + 0x1998))(pPager), zBuf = puVar5, iVar7 != 0)" ( (comma_expression "iVar7 = (*(code *)(*(int *)(in_t9 + 0x6c164) + 0x1998))(pPager), zBuf = puVar5, iVar7 != 0" (assignment_expression "iVar7 = (*(code *)(*(int *)(in_t9 + 0x6c164) + 0x1998))(pPager)" identifier = (call_expression "(*(code *)(*(int *)(in_t9 + 0x6c164) + 0x1998))(pPager)" (parenthesized_expression "(*(code *)(*(int *)(in_t9 + 0x6c164) + 0x1998))" ( (pointer_expression "*(code *)(*(int *)(in_t9 + 0x6c164) + 0x1998)" * (cast_expression "(code *)(*(int *)(in_t9 + 0x6c164) + 0x1998)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(in_t9 + 0x6c164) + 0x1998)" ( (binary_expression "*(int *)(in_t9 + 0x6c164) + 0x1998" (pointer_expression "*(int *)(in_t9 + 0x6c164)" * (cast_expression "(int *)(in_t9 + 0x6c164)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0x6c164)" ( (binary_expression "in_t9 + 0x6c164" identifier + number_literal) )))) + number_literal) )))) )) (argument_list "(pPager)" ( identifier )))) , (comma_expression "zBuf = puVar5, iVar7 != 0" (assignment_expression "zBuf = puVar5" identifier = identifier) , (binary_expression "iVar7 != 0" identifier != number_literal))) ))) )) (compound_statement "{\n    zBuf = (u8 *)0x0;\n  }" { (expression_statement "zBuf = (u8 *)0x0;" (assignment_expression "zBuf = (u8 *)0x0" identifier = (cast_expression "(u8 *)0x0" ( (type_descriptor "u8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "sqlite3WalClose(pPager->pWal,db,(uint)pPager->walSyncFlags,pPager->pageSize,zBuf);" (call_expression "sqlite3WalClose(pPager->pWal,db,(uint)pPager->walSyncFlags,pPager->pageSize,zBuf)" identifier (argument_list "(pPager->pWal,db,(uint)pPager->walSyncFlags,pPager->pageSize,zBuf)" ( (field_expression "pPager->pWal" identifier -> field_identifier) , identifier , (cast_expression "(uint)pPager->walSyncFlags" ( (type_descriptor "uint" type_identifier) ) (field_expression "pPager->walSyncFlags" identifier -> field_identifier)) , (field_expression "pPager->pageSize" identifier -> field_identifier) , identifier ))) ;) (expression_statement "iVar7 = *(int *)(in_t9 + 0x6c188);" (assignment_expression "iVar7 = *(int *)(in_t9 + 0x6c188)" identifier = (pointer_expression "*(int *)(in_t9 + 0x6c188)" * (cast_expression "(int *)(in_t9 + 0x6c188)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0x6c188)" ( (binary_expression "in_t9 + 0x6c188" identifier + number_literal) ))))) ;) (expression_statement "pPager->pWal = (Wal *)0x0;" (assignment_expression "pPager->pWal = (Wal *)0x0" (field_expression "pPager->pWal" identifier -> field_identifier) = (cast_expression "(Wal *)0x0" ( (type_descriptor "Wal *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(*(code *)(iVar7 + -0x403c))(pPager);" (call_expression "(*(code *)(iVar7 + -0x403c))(pPager)" (parenthesized_expression "(*(code *)(iVar7 + -0x403c))" ( (pointer_expression "*(code *)(iVar7 + -0x403c)" * (cast_expression "(code *)(iVar7 + -0x403c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + -0x403c)" ( (binary_expression "iVar7 + -0x403c" identifier + number_literal) )))) )) (argument_list "(pPager)" ( identifier ))) ;) (if_statement "if (pPager->memDb != '\0') {\n    (*(code *)(*(int *)(in_t9 + 0x6c1a8) + 0x3344))(pPager);\n    goto LAB_00089284;\n  }" if (parenthesized_expression "(pPager->memDb != '\0')" ( (binary_expression "pPager->memDb != '\0'" (field_expression "pPager->memDb" identifier -> field_identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    (*(code *)(*(int *)(in_t9 + 0x6c1a8) + 0x3344))(pPager);\n    goto LAB_00089284;\n  }" { (expression_statement "(*(code *)(*(int *)(in_t9 + 0x6c1a8) + 0x3344))(pPager);" (call_expression "(*(code *)(*(int *)(in_t9 + 0x6c1a8) + 0x3344))(pPager)" (parenthesized_expression "(*(code *)(*(int *)(in_t9 + 0x6c1a8) + 0x3344))" ( (pointer_expression "*(code *)(*(int *)(in_t9 + 0x6c1a8) + 0x3344)" * (cast_expression "(code *)(*(int *)(in_t9 + 0x6c1a8) + 0x3344)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(in_t9 + 0x6c1a8) + 0x3344)" ( (binary_expression "*(int *)(in_t9 + 0x6c1a8) + 0x3344" (pointer_expression "*(int *)(in_t9 + 0x6c1a8)" * (cast_expression "(int *)(in_t9 + 0x6c1a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0x6c1a8)" ( (binary_expression "in_t9 + 0x6c1a8" identifier + number_literal) )))) + number_literal) )))) )) (argument_list "(pPager)" ( identifier ))) ;) (goto_statement "goto LAB_00089284;" goto statement_identifier ;) })) (if_statement "if (pPager->jfd->pMethods != (sqlite3_io_methods *)0x0) {\n    uVar1 = (*(code *)(*(int *)(in_t9 + 0x6c164) + 0x1938))(pPager);\n    if ((uVar1 & 0xff) == 0xd) {\n      iVar7 = *(int *)(in_t9 + 0x6c184);\n    }\n    else {\n      iVar7 = *(int *)(in_t9 + 0x6c184);\n      if ((uVar1 & 0xff) != 10) goto LAB_00089270;\n    }\n    (*(code *)(iVar7 + 0x1394))(pPager,uVar1);\n  }" if (parenthesized_expression "(pPager->jfd->pMethods != (sqlite3_io_methods *)0x0)" ( (binary_expression "pPager->jfd->pMethods != (sqlite3_io_methods *)0x0" (field_expression "pPager->jfd->pMethods" (field_expression "pPager->jfd" identifier -> field_identifier) -> field_identifier) != (cast_expression "(sqlite3_io_methods *)0x0" ( (type_descriptor "sqlite3_io_methods *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar1 = (*(code *)(*(int *)(in_t9 + 0x6c164) + 0x1938))(pPager);\n    if ((uVar1 & 0xff) == 0xd) {\n      iVar7 = *(int *)(in_t9 + 0x6c184);\n    }\n    else {\n      iVar7 = *(int *)(in_t9 + 0x6c184);\n      if ((uVar1 & 0xff) != 10) goto LAB_00089270;\n    }\n    (*(code *)(iVar7 + 0x1394))(pPager,uVar1);\n  }" { (expression_statement "uVar1 = (*(code *)(*(int *)(in_t9 + 0x6c164) + 0x1938))(pPager);" (assignment_expression "uVar1 = (*(code *)(*(int *)(in_t9 + 0x6c164) + 0x1938))(pPager)" identifier = (call_expression "(*(code *)(*(int *)(in_t9 + 0x6c164) + 0x1938))(pPager)" (parenthesized_expression "(*(code *)(*(int *)(in_t9 + 0x6c164) + 0x1938))" ( (pointer_expression "*(code *)(*(int *)(in_t9 + 0x6c164) + 0x1938)" * (cast_expression "(code *)(*(int *)(in_t9 + 0x6c164) + 0x1938)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(in_t9 + 0x6c164) + 0x1938)" ( (binary_expression "*(int *)(in_t9 + 0x6c164) + 0x1938" (pointer_expression "*(int *)(in_t9 + 0x6c164)" * (cast_expression "(int *)(in_t9 + 0x6c164)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0x6c164)" ( (binary_expression "in_t9 + 0x6c164" identifier + number_literal) )))) + number_literal) )))) )) (argument_list "(pPager)" ( identifier )))) ;) (if_statement "if ((uVar1 & 0xff) == 0xd) {\n      iVar7 = *(int *)(in_t9 + 0x6c184);\n    }\n    else {\n      iVar7 = *(int *)(in_t9 + 0x6c184);\n      if ((uVar1 & 0xff) != 10) goto LAB_00089270;\n    }" if (parenthesized_expression "((uVar1 & 0xff) == 0xd)" ( (binary_expression "(uVar1 & 0xff) == 0xd" (parenthesized_expression "(uVar1 & 0xff)" ( (binary_expression "uVar1 & 0xff" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      iVar7 = *(int *)(in_t9 + 0x6c184);\n    }" { (expression_statement "iVar7 = *(int *)(in_t9 + 0x6c184);" (assignment_expression "iVar7 = *(int *)(in_t9 + 0x6c184)" identifier = (pointer_expression "*(int *)(in_t9 + 0x6c184)" * (cast_expression "(int *)(in_t9 + 0x6c184)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0x6c184)" ( (binary_expression "in_t9 + 0x6c184" identifier + number_literal) ))))) ;) }) (else_clause "else {\n      iVar7 = *(int *)(in_t9 + 0x6c184);\n      if ((uVar1 & 0xff) != 10) goto LAB_00089270;\n    }" else (compound_statement "{\n      iVar7 = *(int *)(in_t9 + 0x6c184);\n      if ((uVar1 & 0xff) != 10) goto LAB_00089270;\n    }" { (expression_statement "iVar7 = *(int *)(in_t9 + 0x6c184);" (assignment_expression "iVar7 = *(int *)(in_t9 + 0x6c184)" identifier = (pointer_expression "*(int *)(in_t9 + 0x6c184)" * (cast_expression "(int *)(in_t9 + 0x6c184)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0x6c184)" ( (binary_expression "in_t9 + 0x6c184" identifier + number_literal) ))))) ;) (if_statement "if ((uVar1 & 0xff) != 10) goto LAB_00089270;" if (parenthesized_expression "((uVar1 & 0xff) != 10)" ( (binary_expression "(uVar1 & 0xff) != 10" (parenthesized_expression "(uVar1 & 0xff)" ( (binary_expression "uVar1 & 0xff" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00089270;" goto statement_identifier ;)) }))) (expression_statement "(*(code *)(iVar7 + 0x1394))(pPager,uVar1);" (call_expression "(*(code *)(iVar7 + 0x1394))(pPager,uVar1)" (parenthesized_expression "(*(code *)(iVar7 + 0x1394))" ( (pointer_expression "*(code *)(iVar7 + 0x1394)" * (cast_expression "(code *)(iVar7 + 0x1394)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x1394)" ( (binary_expression "iVar7 + 0x1394" identifier + number_literal) )))) )) (argument_list "(pPager,uVar1)" ( identifier , identifier ))) ;) })) (labeled_statement "LAB_00089270:\n  pagerUnlockAndRollback(pPager);" statement_identifier : (expression_statement "pagerUnlockAndRollback(pPager);" (call_expression "pagerUnlockAndRollback(pPager)" identifier (argument_list "(pPager)" ( identifier ))) ;)) (labeled_statement "LAB_00089284:\n  pcVar6 = *(code **)(iVar4 + 0x5c4c);" statement_identifier : (expression_statement "pcVar6 = *(code **)(iVar4 + 0x5c4c);" (assignment_expression "pcVar6 = *(code **)(iVar4 + 0x5c4c)" identifier = (pointer_expression "*(code **)(iVar4 + 0x5c4c)" * (cast_expression "(code **)(iVar4 + 0x5c4c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + 0x5c4c)" ( (binary_expression "iVar4 + 0x5c4c" identifier + number_literal) ))))) ;)) (if_statement "if (pcVar6 != (code *)0x0) {\n    (*pcVar6)();\n  }" if (parenthesized_expression "(pcVar6 != (code *)0x0)" ( (binary_expression "pcVar6 != (code *)0x0" identifier != (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    (*pcVar6)();\n  }" { (expression_statement "(*pcVar6)();" (call_expression "(*pcVar6)()" (parenthesized_expression "(*pcVar6)" ( (pointer_expression "*pcVar6" * identifier) )) (argument_list "()" ( ))) ;) })) (expression_statement "psVar3 = pPager->jfd;" (assignment_expression "psVar3 = pPager->jfd" identifier = (field_expression "pPager->jfd" identifier -> field_identifier)) ;) (if_statement "if (psVar3->pMethods != (sqlite3_io_methods *)0x0) {\n    (*psVar3->pMethods->xClose)(psVar3);\n    psVar3->pMethods = (sqlite3_io_methods *)0x0;\n  }" if (parenthesized_expression "(psVar3->pMethods != (sqlite3_io_methods *)0x0)" ( (binary_expression "psVar3->pMethods != (sqlite3_io_methods *)0x0" (field_expression "psVar3->pMethods" identifier -> field_identifier) != (cast_expression "(sqlite3_io_methods *)0x0" ( (type_descriptor "sqlite3_io_methods *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    (*psVar3->pMethods->xClose)(psVar3);\n    psVar3->pMethods = (sqlite3_io_methods *)0x0;\n  }" { (expression_statement "(*psVar3->pMethods->xClose)(psVar3);" (call_expression "(*psVar3->pMethods->xClose)(psVar3)" (parenthesized_expression "(*psVar3->pMethods->xClose)" ( (pointer_expression "*psVar3->pMethods->xClose" * (field_expression "psVar3->pMethods->xClose" (field_expression "psVar3->pMethods" identifier -> field_identifier) -> field_identifier)) )) (argument_list "(psVar3)" ( identifier ))) ;) (expression_statement "psVar3->pMethods = (sqlite3_io_methods *)0x0;" (assignment_expression "psVar3->pMethods = (sqlite3_io_methods *)0x0" (field_expression "psVar3->pMethods" identifier -> field_identifier) = (cast_expression "(sqlite3_io_methods *)0x0" ( (type_descriptor "sqlite3_io_methods *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "psVar3 = pPager->fd;" (assignment_expression "psVar3 = pPager->fd" identifier = (field_expression "pPager->fd" identifier -> field_identifier)) ;) (expression_statement "iVar4 = *(int *)(in_t9 + 0x6c188);" (assignment_expression "iVar4 = *(int *)(in_t9 + 0x6c188)" identifier = (pointer_expression "*(int *)(in_t9 + 0x6c188)" * (cast_expression "(int *)(in_t9 + 0x6c188)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0x6c188)" ( (binary_expression "in_t9 + 0x6c188" identifier + number_literal) ))))) ;) (if_statement "if (psVar3->pMethods != (sqlite3_io_methods *)0x0) {\n    (*psVar3->pMethods->xClose)(psVar3);\n    psVar3->pMethods = (sqlite3_io_methods *)0x0;\n    iVar4 = *(int *)(in_t9 + 0x6c188);\n  }" if (parenthesized_expression "(psVar3->pMethods != (sqlite3_io_methods *)0x0)" ( (binary_expression "psVar3->pMethods != (sqlite3_io_methods *)0x0" (field_expression "psVar3->pMethods" identifier -> field_identifier) != (cast_expression "(sqlite3_io_methods *)0x0" ( (type_descriptor "sqlite3_io_methods *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    (*psVar3->pMethods->xClose)(psVar3);\n    psVar3->pMethods = (sqlite3_io_methods *)0x0;\n    iVar4 = *(int *)(in_t9 + 0x6c188);\n  }" { (expression_statement "(*psVar3->pMethods->xClose)(psVar3);" (call_expression "(*psVar3->pMethods->xClose)(psVar3)" (parenthesized_expression "(*psVar3->pMethods->xClose)" ( (pointer_expression "*psVar3->pMethods->xClose" * (field_expression "psVar3->pMethods->xClose" (field_expression "psVar3->pMethods" identifier -> field_identifier) -> field_identifier)) )) (argument_list "(psVar3)" ( identifier ))) ;) (expression_statement "psVar3->pMethods = (sqlite3_io_methods *)0x0;" (assignment_expression "psVar3->pMethods = (sqlite3_io_methods *)0x0" (field_expression "psVar3->pMethods" identifier -> field_identifier) = (cast_expression "(sqlite3_io_methods *)0x0" ( (type_descriptor "sqlite3_io_methods *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar4 = *(int *)(in_t9 + 0x6c188);" (assignment_expression "iVar4 = *(int *)(in_t9 + 0x6c188)" identifier = (pointer_expression "*(int *)(in_t9 + 0x6c188)" * (cast_expression "(int *)(in_t9 + 0x6c188)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0x6c188)" ( (binary_expression "in_t9 + 0x6c188" identifier + number_literal) ))))) ;) })) (expression_statement "(*(code *)(iVar4 + -0x3ff4))(puVar5);" (call_expression "(*(code *)(iVar4 + -0x3ff4))(puVar5)" (parenthesized_expression "(*(code *)(iVar4 + -0x3ff4))" ( (pointer_expression "*(code *)(iVar4 + -0x3ff4)" * (cast_expression "(code *)(iVar4 + -0x3ff4)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + -0x3ff4)" ( (binary_expression "iVar4 + -0x3ff4" identifier + number_literal) )))) )) (argument_list "(puVar5)" ( identifier ))) ;) (expression_statement "(**(code **)(*(int *)(in_t9 + 0x6c158) + 0x4130))(pPager->pPCache->pCache);" (call_expression "(**(code **)(*(int *)(in_t9 + 0x6c158) + 0x4130))(pPager->pPCache->pCache)" (parenthesized_expression "(**(code **)(*(int *)(in_t9 + 0x6c158) + 0x4130))" ( (pointer_expression "**(code **)(*(int *)(in_t9 + 0x6c158) + 0x4130)" * (pointer_expression "*(code **)(*(int *)(in_t9 + 0x6c158) + 0x4130)" * (cast_expression "(code **)(*(int *)(in_t9 + 0x6c158) + 0x4130)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(in_t9 + 0x6c158) + 0x4130)" ( (binary_expression "*(int *)(in_t9 + 0x6c158) + 0x4130" (pointer_expression "*(int *)(in_t9 + 0x6c158)" * (cast_expression "(int *)(in_t9 + 0x6c158)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0x6c158)" ( (binary_expression "in_t9 + 0x6c158" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(pPager->pPCache->pCache)" ( (field_expression "pPager->pPCache->pCache" (field_expression "pPager->pPCache" identifier -> field_identifier) -> field_identifier) ))) ;) (expression_statement "(**(code **)(in_t9 + 0x6c23c))(pPager);" (call_expression "(**(code **)(in_t9 + 0x6c23c))(pPager)" (parenthesized_expression "(**(code **)(in_t9 + 0x6c23c))" ( (pointer_expression "**(code **)(in_t9 + 0x6c23c)" * (pointer_expression "*(code **)(in_t9 + 0x6c23c)" * (cast_expression "(code **)(in_t9 + 0x6c23c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x6c23c)" ( (binary_expression "in_t9 + 0x6c23c" identifier + number_literal) ))))) )) (argument_list "(pPager)" ( identifier ))) ;) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "undefined4 FUN_00089164(int param_1,int param_2)\n\n{\n  undefined *puVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  int iVar4;\n  int *piVar5;\n  undefined4 uVar6;\n  code *pcVar7;\n  \n  puVar1 = PTR_DAT_000f52bc;\n  uVar6 = *(undefined4 *)(param_1 + 0xd0);\n  if (*(code **)(PTR_DAT_000f52bc + 0x5c48) != (code *)0x0) {\n    (**(code **)(PTR_DAT_000f52bc + 0x5c48))();\n  }\n  iVar4 = *(int *)(param_1 + 0x88);\n  while (iVar4 != 0) {\n    iVar4 = *(int *)(iVar4 + 0x10);\n    (*(code *)PTR_sqlite3_free_000f53a0)();\n  }\n  *(undefined1 *)(param_1 + 4) = 0;\n  if (((param_2 == 0) || ((*(uint *)(param_2 + 0x24) & 0x800) != 0)) ||\n     (iVar4 = (*(code *)(PTR_LAB_000f52c8 + 0x1998))(param_1), uVar2 = uVar6, iVar4 != 0)) {\n    uVar2 = 0;\n  }\n  FUN_00088ec4(*(undefined4 *)(param_1 + 0xd8),param_2,*(undefined1 *)(param_1 + 0xb),\n               *(undefined4 *)(param_1 + 0x98),uVar2);\n  pcVar7 = (code *)(PTR_LAB_000f52ec + -0x403c);\n  *(undefined4 *)(param_1 + 0xd8) = 0;\n  (*pcVar7)(param_1);\n  if (*(char *)(param_1 + 0xf) == '\0') {\n    if (**(int **)(param_1 + 0x40) != 0) {\n      uVar3 = (*(code *)(PTR_LAB_000f52c8 + 0x1938))(param_1);\n      if (((uVar3 & 0xff) == 0xd) || ((uVar3 & 0xff) == 10)) {\n        (*(code *)(PTR_LAB_000f52e8 + 0x1394))(param_1,uVar3);\n      }\n    }\n    FUN_0007ad48(param_1);\n  }\n  else {\n    (*(code *)(PTR_LAB_000f530c + 0x3344))(param_1);\n  }\n  if (*(code **)(puVar1 + 0x5c4c) != (code *)0x0) {\n    (**(code **)(puVar1 + 0x5c4c))();\n  }\n  piVar5 = *(int **)(param_1 + 0x40);\n  if (*piVar5 != 0) {\n    (**(code **)(*piVar5 + 4))(piVar5);\n    *piVar5 = 0;\n  }\n  piVar5 = *(int **)(param_1 + 0x3c);\n  if (*piVar5 != 0) {\n    (**(code **)(*piVar5 + 4))(piVar5);\n    *piVar5 = 0;\n  }\n  (*(code *)(PTR_LAB_000f52ec + -0x3ff4))(uVar6);\n  (**(code **)(PTR_DAT_000f52bc + 0x4130))(*(undefined4 *)(*(int *)(param_1 + 0xd4) + 0x2c));\n  (*(code *)PTR_sqlite3_free_000f53a0)(param_1);\n  return 0;\n}\n\n" (function_definition "undefined4 FUN_00089164(int param_1,int param_2)\n\n{\n  undefined *puVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  int iVar4;\n  int *piVar5;\n  undefined4 uVar6;\n  code *pcVar7;\n  \n  puVar1 = PTR_DAT_000f52bc;\n  uVar6 = *(undefined4 *)(param_1 + 0xd0);\n  if (*(code **)(PTR_DAT_000f52bc + 0x5c48) != (code *)0x0) {\n    (**(code **)(PTR_DAT_000f52bc + 0x5c48))();\n  }\n  iVar4 = *(int *)(param_1 + 0x88);\n  while (iVar4 != 0) {\n    iVar4 = *(int *)(iVar4 + 0x10);\n    (*(code *)PTR_sqlite3_free_000f53a0)();\n  }\n  *(undefined1 *)(param_1 + 4) = 0;\n  if (((param_2 == 0) || ((*(uint *)(param_2 + 0x24) & 0x800) != 0)) ||\n     (iVar4 = (*(code *)(PTR_LAB_000f52c8 + 0x1998))(param_1), uVar2 = uVar6, iVar4 != 0)) {\n    uVar2 = 0;\n  }\n  FUN_00088ec4(*(undefined4 *)(param_1 + 0xd8),param_2,*(undefined1 *)(param_1 + 0xb),\n               *(undefined4 *)(param_1 + 0x98),uVar2);\n  pcVar7 = (code *)(PTR_LAB_000f52ec + -0x403c);\n  *(undefined4 *)(param_1 + 0xd8) = 0;\n  (*pcVar7)(param_1);\n  if (*(char *)(param_1 + 0xf) == '\0') {\n    if (**(int **)(param_1 + 0x40) != 0) {\n      uVar3 = (*(code *)(PTR_LAB_000f52c8 + 0x1938))(param_1);\n      if (((uVar3 & 0xff) == 0xd) || ((uVar3 & 0xff) == 10)) {\n        (*(code *)(PTR_LAB_000f52e8 + 0x1394))(param_1,uVar3);\n      }\n    }\n    FUN_0007ad48(param_1);\n  }\n  else {\n    (*(code *)(PTR_LAB_000f530c + 0x3344))(param_1);\n  }\n  if (*(code **)(puVar1 + 0x5c4c) != (code *)0x0) {\n    (**(code **)(puVar1 + 0x5c4c))();\n  }\n  piVar5 = *(int **)(param_1 + 0x40);\n  if (*piVar5 != 0) {\n    (**(code **)(*piVar5 + 4))(piVar5);\n    *piVar5 = 0;\n  }\n  piVar5 = *(int **)(param_1 + 0x3c);\n  if (*piVar5 != 0) {\n    (**(code **)(*piVar5 + 4))(piVar5);\n    *piVar5 = 0;\n  }\n  (*(code *)(PTR_LAB_000f52ec + -0x3ff4))(uVar6);\n  (**(code **)(PTR_DAT_000f52bc + 0x4130))(*(undefined4 *)(*(int *)(param_1 + 0xd4) + 0x2c));\n  (*(code *)PTR_sqlite3_free_000f53a0)(param_1);\n  return 0;\n}" type_identifier (function_declarator "FUN_00089164(int param_1,int param_2)" identifier (parameter_list "(int param_1,int param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  int iVar4;\n  int *piVar5;\n  undefined4 uVar6;\n  code *pcVar7;\n  \n  puVar1 = PTR_DAT_000f52bc;\n  uVar6 = *(undefined4 *)(param_1 + 0xd0);\n  if (*(code **)(PTR_DAT_000f52bc + 0x5c48) != (code *)0x0) {\n    (**(code **)(PTR_DAT_000f52bc + 0x5c48))();\n  }\n  iVar4 = *(int *)(param_1 + 0x88);\n  while (iVar4 != 0) {\n    iVar4 = *(int *)(iVar4 + 0x10);\n    (*(code *)PTR_sqlite3_free_000f53a0)();\n  }\n  *(undefined1 *)(param_1 + 4) = 0;\n  if (((param_2 == 0) || ((*(uint *)(param_2 + 0x24) & 0x800) != 0)) ||\n     (iVar4 = (*(code *)(PTR_LAB_000f52c8 + 0x1998))(param_1), uVar2 = uVar6, iVar4 != 0)) {\n    uVar2 = 0;\n  }\n  FUN_00088ec4(*(undefined4 *)(param_1 + 0xd8),param_2,*(undefined1 *)(param_1 + 0xb),\n               *(undefined4 *)(param_1 + 0x98),uVar2);\n  pcVar7 = (code *)(PTR_LAB_000f52ec + -0x403c);\n  *(undefined4 *)(param_1 + 0xd8) = 0;\n  (*pcVar7)(param_1);\n  if (*(char *)(param_1 + 0xf) == '\0') {\n    if (**(int **)(param_1 + 0x40) != 0) {\n      uVar3 = (*(code *)(PTR_LAB_000f52c8 + 0x1938))(param_1);\n      if (((uVar3 & 0xff) == 0xd) || ((uVar3 & 0xff) == 10)) {\n        (*(code *)(PTR_LAB_000f52e8 + 0x1394))(param_1,uVar3);\n      }\n    }\n    FUN_0007ad48(param_1);\n  }\n  else {\n    (*(code *)(PTR_LAB_000f530c + 0x3344))(param_1);\n  }\n  if (*(code **)(puVar1 + 0x5c4c) != (code *)0x0) {\n    (**(code **)(puVar1 + 0x5c4c))();\n  }\n  piVar5 = *(int **)(param_1 + 0x40);\n  if (*piVar5 != 0) {\n    (**(code **)(*piVar5 + 4))(piVar5);\n    *piVar5 = 0;\n  }\n  piVar5 = *(int **)(param_1 + 0x3c);\n  if (*piVar5 != 0) {\n    (**(code **)(*piVar5 + 4))(piVar5);\n    *piVar5 = 0;\n  }\n  (*(code *)(PTR_LAB_000f52ec + -0x3ff4))(uVar6);\n  (**(code **)(PTR_DAT_000f52bc + 0x4130))(*(undefined4 *)(*(int *)(param_1 + 0xd4) + 0x2c));\n  (*(code *)PTR_sqlite3_free_000f53a0)(param_1);\n  return 0;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "code *pcVar7;" type_identifier (pointer_declarator "*pcVar7" * identifier) ;) (expression_statement "puVar1 = PTR_DAT_000f52bc;" (assignment_expression "puVar1 = PTR_DAT_000f52bc" identifier = identifier) ;) (expression_statement "uVar6 = *(undefined4 *)(param_1 + 0xd0);" (assignment_expression "uVar6 = *(undefined4 *)(param_1 + 0xd0)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0xd0)" * (cast_expression "(undefined4 *)(param_1 + 0xd0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd0)" ( (binary_expression "param_1 + 0xd0" identifier + number_literal) ))))) ;) (if_statement "if (*(code **)(PTR_DAT_000f52bc + 0x5c48) != (code *)0x0) {\n    (**(code **)(PTR_DAT_000f52bc + 0x5c48))();\n  }" if (parenthesized_expression "(*(code **)(PTR_DAT_000f52bc + 0x5c48) != (code *)0x0)" ( (binary_expression "*(code **)(PTR_DAT_000f52bc + 0x5c48) != (code *)0x0" (pointer_expression "*(code **)(PTR_DAT_000f52bc + 0x5c48)" * (cast_expression "(code **)(PTR_DAT_000f52bc + 0x5c48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(PTR_DAT_000f52bc + 0x5c48)" ( (binary_expression "PTR_DAT_000f52bc + 0x5c48" identifier + number_literal) )))) != (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    (**(code **)(PTR_DAT_000f52bc + 0x5c48))();\n  }" { (expression_statement "(**(code **)(PTR_DAT_000f52bc + 0x5c48))();" (call_expression "(**(code **)(PTR_DAT_000f52bc + 0x5c48))()" (parenthesized_expression "(**(code **)(PTR_DAT_000f52bc + 0x5c48))" ( (pointer_expression "**(code **)(PTR_DAT_000f52bc + 0x5c48)" * (pointer_expression "*(code **)(PTR_DAT_000f52bc + 0x5c48)" * (cast_expression "(code **)(PTR_DAT_000f52bc + 0x5c48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(PTR_DAT_000f52bc + 0x5c48)" ( (binary_expression "PTR_DAT_000f52bc + 0x5c48" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) })) (expression_statement "iVar4 = *(int *)(param_1 + 0x88);" (assignment_expression "iVar4 = *(int *)(param_1 + 0x88)" identifier = (pointer_expression "*(int *)(param_1 + 0x88)" * (cast_expression "(int *)(param_1 + 0x88)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x88)" ( (binary_expression "param_1 + 0x88" identifier + number_literal) ))))) ;) (while_statement "while (iVar4 != 0) {\n    iVar4 = *(int *)(iVar4 + 0x10);\n    (*(code *)PTR_sqlite3_free_000f53a0)();\n  }" while (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar4 = *(int *)(iVar4 + 0x10);\n    (*(code *)PTR_sqlite3_free_000f53a0)();\n  }" { (expression_statement "iVar4 = *(int *)(iVar4 + 0x10);" (assignment_expression "iVar4 = *(int *)(iVar4 + 0x10)" identifier = (pointer_expression "*(int *)(iVar4 + 0x10)" * (cast_expression "(int *)(iVar4 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x10)" ( (binary_expression "iVar4 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "(*(code *)PTR_sqlite3_free_000f53a0)();" (call_expression "(*(code *)PTR_sqlite3_free_000f53a0)()" (parenthesized_expression "(*(code *)PTR_sqlite3_free_000f53a0)" ( (pointer_expression "*(code *)PTR_sqlite3_free_000f53a0" * (cast_expression "(code *)PTR_sqlite3_free_000f53a0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) })) (expression_statement "*(undefined1 *)(param_1 + 4) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 4) = 0" (pointer_expression "*(undefined1 *)(param_1 + 4)" * (cast_expression "(undefined1 *)(param_1 + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (((param_2 == 0) || ((*(uint *)(param_2 + 0x24) & 0x800) != 0)) ||\n     (iVar4 = (*(code *)(PTR_LAB_000f52c8 + 0x1998))(param_1), uVar2 = uVar6, iVar4 != 0)) {\n    uVar2 = 0;\n  }" if (parenthesized_expression "(((param_2 == 0) || ((*(uint *)(param_2 + 0x24) & 0x800) != 0)) ||\n     (iVar4 = (*(code *)(PTR_LAB_000f52c8 + 0x1998))(param_1), uVar2 = uVar6, iVar4 != 0))" ( (binary_expression "((param_2 == 0) || ((*(uint *)(param_2 + 0x24) & 0x800) != 0)) ||\n     (iVar4 = (*(code *)(PTR_LAB_000f52c8 + 0x1998))(param_1), uVar2 = uVar6, iVar4 != 0)" (parenthesized_expression "((param_2 == 0) || ((*(uint *)(param_2 + 0x24) & 0x800) != 0))" ( (binary_expression "(param_2 == 0) || ((*(uint *)(param_2 + 0x24) & 0x800) != 0)" (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) || (parenthesized_expression "((*(uint *)(param_2 + 0x24) & 0x800) != 0)" ( (binary_expression "(*(uint *)(param_2 + 0x24) & 0x800) != 0" (parenthesized_expression "(*(uint *)(param_2 + 0x24) & 0x800)" ( (binary_expression "*(uint *)(param_2 + 0x24) & 0x800" (pointer_expression "*(uint *)(param_2 + 0x24)" * (cast_expression "(uint *)(param_2 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x24)" ( (binary_expression "param_2 + 0x24" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) || (parenthesized_expression "(iVar4 = (*(code *)(PTR_LAB_000f52c8 + 0x1998))(param_1), uVar2 = uVar6, iVar4 != 0)" ( (comma_expression "iVar4 = (*(code *)(PTR_LAB_000f52c8 + 0x1998))(param_1), uVar2 = uVar6, iVar4 != 0" (assignment_expression "iVar4 = (*(code *)(PTR_LAB_000f52c8 + 0x1998))(param_1)" identifier = (call_expression "(*(code *)(PTR_LAB_000f52c8 + 0x1998))(param_1)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52c8 + 0x1998))" ( (pointer_expression "*(code *)(PTR_LAB_000f52c8 + 0x1998)" * (cast_expression "(code *)(PTR_LAB_000f52c8 + 0x1998)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52c8 + 0x1998)" ( (binary_expression "PTR_LAB_000f52c8 + 0x1998" identifier + number_literal) )))) )) (argument_list "(param_1)" ( identifier )))) , (comma_expression "uVar2 = uVar6, iVar4 != 0" (assignment_expression "uVar2 = uVar6" identifier = identifier) , (binary_expression "iVar4 != 0" identifier != number_literal))) ))) )) (compound_statement "{\n    uVar2 = 0;\n  }" { (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) })) (expression_statement "FUN_00088ec4(*(undefined4 *)(param_1 + 0xd8),param_2,*(undefined1 *)(param_1 + 0xb),\n               *(undefined4 *)(param_1 + 0x98),uVar2);" (call_expression "FUN_00088ec4(*(undefined4 *)(param_1 + 0xd8),param_2,*(undefined1 *)(param_1 + 0xb),\n               *(undefined4 *)(param_1 + 0x98),uVar2)" identifier (argument_list "(*(undefined4 *)(param_1 + 0xd8),param_2,*(undefined1 *)(param_1 + 0xb),\n               *(undefined4 *)(param_1 + 0x98),uVar2)" ( (pointer_expression "*(undefined4 *)(param_1 + 0xd8)" * (cast_expression "(undefined4 *)(param_1 + 0xd8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd8)" ( (binary_expression "param_1 + 0xd8" identifier + number_literal) )))) , identifier , (pointer_expression "*(undefined1 *)(param_1 + 0xb)" * (cast_expression "(undefined1 *)(param_1 + 0xb)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb)" ( (binary_expression "param_1 + 0xb" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_1 + 0x98)" * (cast_expression "(undefined4 *)(param_1 + 0x98)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x98)" ( (binary_expression "param_1 + 0x98" identifier + number_literal) )))) , identifier ))) ;) (expression_statement "pcVar7 = (code *)(PTR_LAB_000f52ec + -0x403c);" (assignment_expression "pcVar7 = (code *)(PTR_LAB_000f52ec + -0x403c)" identifier = (cast_expression "(code *)(PTR_LAB_000f52ec + -0x403c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52ec + -0x403c)" ( (binary_expression "PTR_LAB_000f52ec + -0x403c" identifier + number_literal) )))) ;) (expression_statement "*(undefined4 *)(param_1 + 0xd8) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0xd8) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0xd8)" * (cast_expression "(undefined4 *)(param_1 + 0xd8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd8)" ( (binary_expression "param_1 + 0xd8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(*pcVar7)(param_1);" (call_expression "(*pcVar7)(param_1)" (parenthesized_expression "(*pcVar7)" ( (pointer_expression "*pcVar7" * identifier) )) (argument_list "(param_1)" ( identifier ))) ;) (if_statement "if (*(char *)(param_1 + 0xf) == '\0') {\n    if (**(int **)(param_1 + 0x40) != 0) {\n      uVar3 = (*(code *)(PTR_LAB_000f52c8 + 0x1938))(param_1);\n      if (((uVar3 & 0xff) == 0xd) || ((uVar3 & 0xff) == 10)) {\n        (*(code *)(PTR_LAB_000f52e8 + 0x1394))(param_1,uVar3);\n      }\n    }\n    FUN_0007ad48(param_1);\n  }\n  else {\n    (*(code *)(PTR_LAB_000f530c + 0x3344))(param_1);\n  }" if (parenthesized_expression "(*(char *)(param_1 + 0xf) == '\0')" ( (binary_expression "*(char *)(param_1 + 0xf) == '\0'" (pointer_expression "*(char *)(param_1 + 0xf)" * (cast_expression "(char *)(param_1 + 0xf)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xf)" ( (binary_expression "param_1 + 0xf" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    if (**(int **)(param_1 + 0x40) != 0) {\n      uVar3 = (*(code *)(PTR_LAB_000f52c8 + 0x1938))(param_1);\n      if (((uVar3 & 0xff) == 0xd) || ((uVar3 & 0xff) == 10)) {\n        (*(code *)(PTR_LAB_000f52e8 + 0x1394))(param_1,uVar3);\n      }\n    }\n    FUN_0007ad48(param_1);\n  }" { (if_statement "if (**(int **)(param_1 + 0x40) != 0) {\n      uVar3 = (*(code *)(PTR_LAB_000f52c8 + 0x1938))(param_1);\n      if (((uVar3 & 0xff) == 0xd) || ((uVar3 & 0xff) == 10)) {\n        (*(code *)(PTR_LAB_000f52e8 + 0x1394))(param_1,uVar3);\n      }\n    }" if (parenthesized_expression "(**(int **)(param_1 + 0x40) != 0)" ( (binary_expression "**(int **)(param_1 + 0x40) != 0" (pointer_expression "**(int **)(param_1 + 0x40)" * (pointer_expression "*(int **)(param_1 + 0x40)" * (cast_expression "(int **)(param_1 + 0x40)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) ))))) != number_literal) )) (compound_statement "{\n      uVar3 = (*(code *)(PTR_LAB_000f52c8 + 0x1938))(param_1);\n      if (((uVar3 & 0xff) == 0xd) || ((uVar3 & 0xff) == 10)) {\n        (*(code *)(PTR_LAB_000f52e8 + 0x1394))(param_1,uVar3);\n      }\n    }" { (expression_statement "uVar3 = (*(code *)(PTR_LAB_000f52c8 + 0x1938))(param_1);" (assignment_expression "uVar3 = (*(code *)(PTR_LAB_000f52c8 + 0x1938))(param_1)" identifier = (call_expression "(*(code *)(PTR_LAB_000f52c8 + 0x1938))(param_1)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52c8 + 0x1938))" ( (pointer_expression "*(code *)(PTR_LAB_000f52c8 + 0x1938)" * (cast_expression "(code *)(PTR_LAB_000f52c8 + 0x1938)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52c8 + 0x1938)" ( (binary_expression "PTR_LAB_000f52c8 + 0x1938" identifier + number_literal) )))) )) (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (((uVar3 & 0xff) == 0xd) || ((uVar3 & 0xff) == 10)) {\n        (*(code *)(PTR_LAB_000f52e8 + 0x1394))(param_1,uVar3);\n      }" if (parenthesized_expression "(((uVar3 & 0xff) == 0xd) || ((uVar3 & 0xff) == 10))" ( (binary_expression "((uVar3 & 0xff) == 0xd) || ((uVar3 & 0xff) == 10)" (parenthesized_expression "((uVar3 & 0xff) == 0xd)" ( (binary_expression "(uVar3 & 0xff) == 0xd" (parenthesized_expression "(uVar3 & 0xff)" ( (binary_expression "uVar3 & 0xff" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "((uVar3 & 0xff) == 10)" ( (binary_expression "(uVar3 & 0xff) == 10" (parenthesized_expression "(uVar3 & 0xff)" ( (binary_expression "uVar3 & 0xff" identifier & number_literal) )) == number_literal) ))) )) (compound_statement "{\n        (*(code *)(PTR_LAB_000f52e8 + 0x1394))(param_1,uVar3);\n      }" { (expression_statement "(*(code *)(PTR_LAB_000f52e8 + 0x1394))(param_1,uVar3);" (call_expression "(*(code *)(PTR_LAB_000f52e8 + 0x1394))(param_1,uVar3)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52e8 + 0x1394))" ( (pointer_expression "*(code *)(PTR_LAB_000f52e8 + 0x1394)" * (cast_expression "(code *)(PTR_LAB_000f52e8 + 0x1394)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52e8 + 0x1394)" ( (binary_expression "PTR_LAB_000f52e8 + 0x1394" identifier + number_literal) )))) )) (argument_list "(param_1,uVar3)" ( identifier , identifier ))) ;) })) })) (expression_statement "FUN_0007ad48(param_1);" (call_expression "FUN_0007ad48(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) }) (else_clause "else {\n    (*(code *)(PTR_LAB_000f530c + 0x3344))(param_1);\n  }" else (compound_statement "{\n    (*(code *)(PTR_LAB_000f530c + 0x3344))(param_1);\n  }" { (expression_statement "(*(code *)(PTR_LAB_000f530c + 0x3344))(param_1);" (call_expression "(*(code *)(PTR_LAB_000f530c + 0x3344))(param_1)" (parenthesized_expression "(*(code *)(PTR_LAB_000f530c + 0x3344))" ( (pointer_expression "*(code *)(PTR_LAB_000f530c + 0x3344)" * (cast_expression "(code *)(PTR_LAB_000f530c + 0x3344)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f530c + 0x3344)" ( (binary_expression "PTR_LAB_000f530c + 0x3344" identifier + number_literal) )))) )) (argument_list "(param_1)" ( identifier ))) ;) }))) (if_statement "if (*(code **)(puVar1 + 0x5c4c) != (code *)0x0) {\n    (**(code **)(puVar1 + 0x5c4c))();\n  }" if (parenthesized_expression "(*(code **)(puVar1 + 0x5c4c) != (code *)0x0)" ( (binary_expression "*(code **)(puVar1 + 0x5c4c) != (code *)0x0" (pointer_expression "*(code **)(puVar1 + 0x5c4c)" * (cast_expression "(code **)(puVar1 + 0x5c4c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar1 + 0x5c4c)" ( (binary_expression "puVar1 + 0x5c4c" identifier + number_literal) )))) != (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    (**(code **)(puVar1 + 0x5c4c))();\n  }" { (expression_statement "(**(code **)(puVar1 + 0x5c4c))();" (call_expression "(**(code **)(puVar1 + 0x5c4c))()" (parenthesized_expression "(**(code **)(puVar1 + 0x5c4c))" ( (pointer_expression "**(code **)(puVar1 + 0x5c4c)" * (pointer_expression "*(code **)(puVar1 + 0x5c4c)" * (cast_expression "(code **)(puVar1 + 0x5c4c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar1 + 0x5c4c)" ( (binary_expression "puVar1 + 0x5c4c" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) })) (expression_statement "piVar5 = *(int **)(param_1 + 0x40);" (assignment_expression "piVar5 = *(int **)(param_1 + 0x40)" identifier = (pointer_expression "*(int **)(param_1 + 0x40)" * (cast_expression "(int **)(param_1 + 0x40)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 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 "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    (**(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 "(*(code *)(PTR_LAB_000f52ec + -0x3ff4))(uVar6);" (call_expression "(*(code *)(PTR_LAB_000f52ec + -0x3ff4))(uVar6)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52ec + -0x3ff4))" ( (pointer_expression "*(code *)(PTR_LAB_000f52ec + -0x3ff4)" * (cast_expression "(code *)(PTR_LAB_000f52ec + -0x3ff4)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52ec + -0x3ff4)" ( (binary_expression "PTR_LAB_000f52ec + -0x3ff4" identifier + number_literal) )))) )) (argument_list "(uVar6)" ( identifier ))) ;) (expression_statement "(**(code **)(PTR_DAT_000f52bc + 0x4130))(*(undefined4 *)(*(int *)(param_1 + 0xd4) + 0x2c));" (call_expression "(**(code **)(PTR_DAT_000f52bc + 0x4130))(*(undefined4 *)(*(int *)(param_1 + 0xd4) + 0x2c))" (parenthesized_expression "(**(code **)(PTR_DAT_000f52bc + 0x4130))" ( (pointer_expression "**(code **)(PTR_DAT_000f52bc + 0x4130)" * (pointer_expression "*(code **)(PTR_DAT_000f52bc + 0x4130)" * (cast_expression "(code **)(PTR_DAT_000f52bc + 0x4130)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(PTR_DAT_000f52bc + 0x4130)" ( (binary_expression "PTR_DAT_000f52bc + 0x4130" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(*(int *)(param_1 + 0xd4) + 0x2c))" ( (pointer_expression "*(undefined4 *)(*(int *)(param_1 + 0xd4) + 0x2c)" * (cast_expression "(undefined4 *)(*(int *)(param_1 + 0xd4) + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0xd4) + 0x2c)" ( (binary_expression "*(int *)(param_1 + 0xd4) + 0x2c" (pointer_expression "*(int *)(param_1 + 0xd4)" * (cast_expression "(int *)(param_1 + 0xd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd4)" ( (binary_expression "param_1 + 0xd4" identifier + number_literal) )))) + number_literal) )))) ))) ;) (expression_statement "(*(code *)PTR_sqlite3_free_000f53a0)(param_1);" (call_expression "(*(code *)PTR_sqlite3_free_000f53a0)(param_1)" (parenthesized_expression "(*(code *)PTR_sqlite3_free_000f53a0)" ( (pointer_expression "*(code *)PTR_sqlite3_free_000f53a0" * (cast_expression "(code *)PTR_sqlite3_free_000f53a0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier ))) ;) (return_statement "return 0;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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 IDENT + LIT) ))))) )) (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) })) (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 (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) ))) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( IDENT )))) , (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT != LIT))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) || (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) ))) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( IDENT , IDENT ))) ;) })) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( IDENT ))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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 IDENT + LIT) ))))) )) (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) ))))) ;) (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 = (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 (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( 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 ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) (return_statement return LIT ;) })))
(function_definition "undefined4 FUN_00089164(int param_1,int param_2)\n\n{\n  undefined *puVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  int iVar4;\n  int *piVar5;\n  undefined4 uVar6;\n  code *pcVar7;\n  \n  puVar1 = PTR_DAT_000f52bc;\n  uVar6 = *(undefined4 *)(param_1 + 0xd0);\n  if (*(code **)(PTR_DAT_000f52bc + 0x5c48) != (code *)0x0) {\n    (**(code **)(PTR_DAT_000f52bc + 0x5c48))();\n  }\n  iVar4 = *(int *)(param_1 + 0x88);\n  while (iVar4 != 0) {\n    iVar4 = *(int *)(iVar4 + 0x10);\n    (*(code *)PTR_sqlite3_free_000f53a0)();\n  }\n  *(undefined1 *)(param_1 + 4) = 0;\n  if (((param_2 == 0) || ((*(uint *)(param_2 + 0x24) & 0x800) != 0)) ||\n     (iVar4 = (*(code *)(PTR_LAB_000f52c8 + 0x1998))(param_1), uVar2 = uVar6, iVar4 != 0)) {\n    uVar2 = 0;\n  }\n  FUN_00088ec4(*(undefined4 *)(param_1 + 0xd8),param_2,*(undefined1 *)(param_1 + 0xb),\n               *(undefined4 *)(param_1 + 0x98),uVar2);\n  pcVar7 = (code *)(PTR_LAB_000f52ec + -0x403c);\n  *(undefined4 *)(param_1 + 0xd8) = 0;\n  (*pcVar7)(param_1);\n  if (*(char *)(param_1 + 0xf) == '\0') {\n    if (**(int **)(param_1 + 0x40) != 0) {\n      uVar3 = (*(code *)(PTR_LAB_000f52c8 + 0x1938))(param_1);\n      if (((uVar3 & 0xff) == 0xd) || ((uVar3 & 0xff) == 10)) {\n        (*(code *)(PTR_LAB_000f52e8 + 0x1394))(param_1,uVar3);\n      }\n    }\n    FUN_0007ad48(param_1);\n  }\n  else {\n    (*(code *)(PTR_LAB_000f530c + 0x3344))(param_1);\n  }\n  if (*(code **)(puVar1 + 0x5c4c) != (code *)0x0) {\n    (**(code **)(puVar1 + 0x5c4c))();\n  }\n  piVar5 = *(int **)(param_1 + 0x40);\n  if (*piVar5 != 0) {\n    (**(code **)(*piVar5 + 4))(piVar5);\n    *piVar5 = 0;\n  }\n  piVar5 = *(int **)(param_1 + 0x3c);\n  if (*piVar5 != 0) {\n    (**(code **)(*piVar5 + 4))(piVar5);\n    *piVar5 = 0;\n  }\n  (*(code *)(PTR_LAB_000f52ec + -0x3ff4))(uVar6);\n  (**(code **)(PTR_DAT_000f52bc + 0x4130))(*(undefined4 *)(*(int *)(param_1 + 0xd4) + 0x2c));\n  (*(code *)PTR_sqlite3_free_000f53a0)(param_1);\n  return 0;\n}" (type_identifier "undefined4") (function_declarator "FUN_00089164(int param_1,int param_2)" (identifier "FUN_00089164") (parameter_list "(int param_1,int param_2)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) () ")"))) (compound_statement "{\n  undefined *puVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  int iVar4;\n  int *piVar5;\n  undefined4 uVar6;\n  code *pcVar7;\n  \n  puVar1 = PTR_DAT_000f52bc;\n  uVar6 = *(undefined4 *)(param_1 + 0xd0);\n  if (*(code **)(PTR_DAT_000f52bc + 0x5c48) != (code *)0x0) {\n    (**(code **)(PTR_DAT_000f52bc + 0x5c48))();\n  }\n  iVar4 = *(int *)(param_1 + 0x88);\n  while (iVar4 != 0) {\n    iVar4 = *(int *)(iVar4 + 0x10);\n    (*(code *)PTR_sqlite3_free_000f53a0)();\n  }\n  *(undefined1 *)(param_1 + 4) = 0;\n  if (((param_2 == 0) || ((*(uint *)(param_2 + 0x24) & 0x800) != 0)) ||\n     (iVar4 = (*(code *)(PTR_LAB_000f52c8 + 0x1998))(param_1), uVar2 = uVar6, iVar4 != 0)) {\n    uVar2 = 0;\n  }\n  FUN_00088ec4(*(undefined4 *)(param_1 + 0xd8),param_2,*(undefined1 *)(param_1 + 0xb),\n               *(undefined4 *)(param_1 + 0x98),uVar2);\n  pcVar7 = (code *)(PTR_LAB_000f52ec + -0x403c);\n  *(undefined4 *)(param_1 + 0xd8) = 0;\n  (*pcVar7)(param_1);\n  if (*(char *)(param_1 + 0xf) == '\0') {\n    if (**(int **)(param_1 + 0x40) != 0) {\n      uVar3 = (*(code *)(PTR_LAB_000f52c8 + 0x1938))(param_1);\n      if (((uVar3 & 0xff) == 0xd) || ((uVar3 & 0xff) == 10)) {\n        (*(code *)(PTR_LAB_000f52e8 + 0x1394))(param_1,uVar3);\n      }\n    }\n    FUN_0007ad48(param_1);\n  }\n  else {\n    (*(code *)(PTR_LAB_000f530c + 0x3344))(param_1);\n  }\n  if (*(code **)(puVar1 + 0x5c4c) != (code *)0x0) {\n    (**(code **)(puVar1 + 0x5c4c))();\n  }\n  piVar5 = *(int **)(param_1 + 0x40);\n  if (*piVar5 != 0) {\n    (**(code **)(*piVar5 + 4))(piVar5);\n    *piVar5 = 0;\n  }\n  piVar5 = *(int **)(param_1 + 0x3c);\n  if (*piVar5 != 0) {\n    (**(code **)(*piVar5 + 4))(piVar5);\n    *piVar5 = 0;\n  }\n  (*(code *)(PTR_LAB_000f52ec + -0x3ff4))(uVar6);\n  (**(code **)(PTR_DAT_000f52bc + 0x4130))(*(undefined4 *)(*(int *)(param_1 + 0xd4) + 0x2c));\n  (*(code *)PTR_sqlite3_free_000f53a0)(param_1);\n  return 0;\n}" ({ "{") (declaration "undefined *puVar1;" (type_identifier "undefined") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (identifier "uVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int *piVar5;" (primitive_type "int") (pointer_declarator "*piVar5" (* "*") (identifier "piVar5")) (; ";")) (declaration "undefined4 uVar6;" (type_identifier "undefined4") (identifier "uVar6") (; ";")) (declaration "code *pcVar7;" (type_identifier "code") (pointer_declarator "*pcVar7" (* "*") (identifier "pcVar7")) (; ";")) (expression_statement "puVar1 = PTR_DAT_000f52bc;" (assignment_expression "puVar1 = PTR_DAT_000f52bc" (identifier "puVar1") (= "=") (identifier "PTR_DAT_000f52bc")) (; ";")) (expression_statement "uVar6 = *(undefined4 *)(param_1 + 0xd0);" (assignment_expression "uVar6 = *(undefined4 *)(param_1 + 0xd0)" (identifier "uVar6") (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0xd0)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xd0)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xd0)" (( "(") (binary_expression "param_1 + 0xd0" (identifier "param_1") (+ "+") (number_literal "0xd0")) () ")"))))) (; ";")) (if_statement "if (*(code **)(PTR_DAT_000f52bc + 0x5c48) != (code *)0x0) {\n    (**(code **)(PTR_DAT_000f52bc + 0x5c48))();\n  }" (if "if") (parenthesized_expression "(*(code **)(PTR_DAT_000f52bc + 0x5c48) != (code *)0x0)" (( "(") (binary_expression "*(code **)(PTR_DAT_000f52bc + 0x5c48) != (code *)0x0" (pointer_expression "*(code **)(PTR_DAT_000f52bc + 0x5c48)" (* "*") (cast_expression "(code **)(PTR_DAT_000f52bc + 0x5c48)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(PTR_DAT_000f52bc + 0x5c48)" (( "(") (binary_expression "PTR_DAT_000f52bc + 0x5c48" (identifier "PTR_DAT_000f52bc") (+ "+") (number_literal "0x5c48")) () ")")))) (!= "!=") (cast_expression "(code *)0x0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    (**(code **)(PTR_DAT_000f52bc + 0x5c48))();\n  }" ({ "{") (expression_statement "(**(code **)(PTR_DAT_000f52bc + 0x5c48))();" (call_expression "(**(code **)(PTR_DAT_000f52bc + 0x5c48))()" (parenthesized_expression "(**(code **)(PTR_DAT_000f52bc + 0x5c48))" (( "(") (pointer_expression "**(code **)(PTR_DAT_000f52bc + 0x5c48)" (* "*") (pointer_expression "*(code **)(PTR_DAT_000f52bc + 0x5c48)" (* "*") (cast_expression "(code **)(PTR_DAT_000f52bc + 0x5c48)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(PTR_DAT_000f52bc + 0x5c48)" (( "(") (binary_expression "PTR_DAT_000f52bc + 0x5c48" (identifier "PTR_DAT_000f52bc") (+ "+") (number_literal "0x5c48")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar4 = *(int *)(param_1 + 0x88);" (assignment_expression "iVar4 = *(int *)(param_1 + 0x88)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(param_1 + 0x88)" (* "*") (cast_expression "(int *)(param_1 + 0x88)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x88)" (( "(") (binary_expression "param_1 + 0x88" (identifier "param_1") (+ "+") (number_literal "0x88")) () ")"))))) (; ";")) (while_statement "while (iVar4 != 0) {\n    iVar4 = *(int *)(iVar4 + 0x10);\n    (*(code *)PTR_sqlite3_free_000f53a0)();\n  }" (while "while") (parenthesized_expression "(iVar4 != 0)" (( "(") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    iVar4 = *(int *)(iVar4 + 0x10);\n    (*(code *)PTR_sqlite3_free_000f53a0)();\n  }" ({ "{") (expression_statement "iVar4 = *(int *)(iVar4 + 0x10);" (assignment_expression "iVar4 = *(int *)(iVar4 + 0x10)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(iVar4 + 0x10)" (* "*") (cast_expression "(int *)(iVar4 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x10)" (( "(") (binary_expression "iVar4 + 0x10" (identifier "iVar4") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "(*(code *)PTR_sqlite3_free_000f53a0)();" (call_expression "(*(code *)PTR_sqlite3_free_000f53a0)()" (parenthesized_expression "(*(code *)PTR_sqlite3_free_000f53a0)" (( "(") (pointer_expression "*(code *)PTR_sqlite3_free_000f53a0" (* "*") (cast_expression "(code *)PTR_sqlite3_free_000f53a0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_sqlite3_free_000f53a0"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "*(undefined1 *)(param_1 + 4) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 4) = 0" (pointer_expression "*(undefined1 *)(param_1 + 4)" (* "*") (cast_expression "(undefined1 *)(param_1 + 4)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (if_statement "if (((param_2 == 0) || ((*(uint *)(param_2 + 0x24) & 0x800) != 0)) ||\n     (iVar4 = (*(code *)(PTR_LAB_000f52c8 + 0x1998))(param_1), uVar2 = uVar6, iVar4 != 0)) {\n    uVar2 = 0;\n  }" (if "if") (parenthesized_expression "(((param_2 == 0) || ((*(uint *)(param_2 + 0x24) & 0x800) != 0)) ||\n     (iVar4 = (*(code *)(PTR_LAB_000f52c8 + 0x1998))(param_1), uVar2 = uVar6, iVar4 != 0))" (( "(") (binary_expression "((param_2 == 0) || ((*(uint *)(param_2 + 0x24) & 0x800) != 0)) ||\n     (iVar4 = (*(code *)(PTR_LAB_000f52c8 + 0x1998))(param_1), uVar2 = uVar6, iVar4 != 0)" (parenthesized_expression "((param_2 == 0) || ((*(uint *)(param_2 + 0x24) & 0x800) != 0))" (( "(") (binary_expression "(param_2 == 0) || ((*(uint *)(param_2 + 0x24) & 0x800) != 0)" (parenthesized_expression "(param_2 == 0)" (( "(") (binary_expression "param_2 == 0" (identifier "param_2") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((*(uint *)(param_2 + 0x24) & 0x800) != 0)" (( "(") (binary_expression "(*(uint *)(param_2 + 0x24) & 0x800) != 0" (parenthesized_expression "(*(uint *)(param_2 + 0x24) & 0x800)" (( "(") (binary_expression "*(uint *)(param_2 + 0x24) & 0x800" (pointer_expression "*(uint *)(param_2 + 0x24)" (* "*") (cast_expression "(uint *)(param_2 + 0x24)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x24)" (( "(") (binary_expression "param_2 + 0x24" (identifier "param_2") (+ "+") (number_literal "0x24")) () ")")))) (& "&") (number_literal "0x800")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (|| "||") (parenthesized_expression "(iVar4 = (*(code *)(PTR_LAB_000f52c8 + 0x1998))(param_1), uVar2 = uVar6, iVar4 != 0)" (( "(") (comma_expression "iVar4 = (*(code *)(PTR_LAB_000f52c8 + 0x1998))(param_1), uVar2 = uVar6, iVar4 != 0" (assignment_expression "iVar4 = (*(code *)(PTR_LAB_000f52c8 + 0x1998))(param_1)" (identifier "iVar4") (= "=") (call_expression "(*(code *)(PTR_LAB_000f52c8 + 0x1998))(param_1)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52c8 + 0x1998))" (( "(") (pointer_expression "*(code *)(PTR_LAB_000f52c8 + 0x1998)" (* "*") (cast_expression "(code *)(PTR_LAB_000f52c8 + 0x1998)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_000f52c8 + 0x1998)" (( "(") (binary_expression "PTR_LAB_000f52c8 + 0x1998" (identifier "PTR_LAB_000f52c8") (+ "+") (number_literal "0x1998")) () ")")))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (, ",") (comma_expression "uVar2 = uVar6, iVar4 != 0" (assignment_expression "uVar2 = uVar6" (identifier "uVar2") (= "=") (identifier "uVar6")) (, ",") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")))) () ")"))) () ")")) (compound_statement "{\n    uVar2 = 0;\n  }" ({ "{") (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" (identifier "uVar2") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "FUN_00088ec4(*(undefined4 *)(param_1 + 0xd8),param_2,*(undefined1 *)(param_1 + 0xb),\n               *(undefined4 *)(param_1 + 0x98),uVar2);" (call_expression "FUN_00088ec4(*(undefined4 *)(param_1 + 0xd8),param_2,*(undefined1 *)(param_1 + 0xb),\n               *(undefined4 *)(param_1 + 0x98),uVar2)" (identifier "FUN_00088ec4") (argument_list "(*(undefined4 *)(param_1 + 0xd8),param_2,*(undefined1 *)(param_1 + 0xb),\n               *(undefined4 *)(param_1 + 0x98),uVar2)" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0xd8)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xd8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xd8)" (( "(") (binary_expression "param_1 + 0xd8" (identifier "param_1") (+ "+") (number_literal "0xd8")) () ")")))) (, ",") (identifier "param_2") (, ",") (pointer_expression "*(undefined1 *)(param_1 + 0xb)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0xb)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xb)" (( "(") (binary_expression "param_1 + 0xb" (identifier "param_1") (+ "+") (number_literal "0xb")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(param_1 + 0x98)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x98)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x98)" (( "(") (binary_expression "param_1 + 0x98" (identifier "param_1") (+ "+") (number_literal "0x98")) () ")")))) (, ",") (identifier "uVar2") () ")"))) (; ";")) (expression_statement "pcVar7 = (code *)(PTR_LAB_000f52ec + -0x403c);" (assignment_expression "pcVar7 = (code *)(PTR_LAB_000f52ec + -0x403c)" (identifier "pcVar7") (= "=") (cast_expression "(code *)(PTR_LAB_000f52ec + -0x403c)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_000f52ec + -0x403c)" (( "(") (binary_expression "PTR_LAB_000f52ec + -0x403c" (identifier "PTR_LAB_000f52ec") (+ "+") (number_literal "-0x403c")) () ")")))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0xd8) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0xd8) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0xd8)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xd8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xd8)" (( "(") (binary_expression "param_1 + 0xd8" (identifier "param_1") (+ "+") (number_literal "0xd8")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "(*pcVar7)(param_1);" (call_expression "(*pcVar7)(param_1)" (parenthesized_expression "(*pcVar7)" (( "(") (pointer_expression "*pcVar7" (* "*") (identifier "pcVar7")) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (if_statement "if (*(char *)(param_1 + 0xf) == '\0') {\n    if (**(int **)(param_1 + 0x40) != 0) {\n      uVar3 = (*(code *)(PTR_LAB_000f52c8 + 0x1938))(param_1);\n      if (((uVar3 & 0xff) == 0xd) || ((uVar3 & 0xff) == 10)) {\n        (*(code *)(PTR_LAB_000f52e8 + 0x1394))(param_1,uVar3);\n      }\n    }\n    FUN_0007ad48(param_1);\n  }\n  else {\n    (*(code *)(PTR_LAB_000f530c + 0x3344))(param_1);\n  }" (if "if") (parenthesized_expression "(*(char *)(param_1 + 0xf) == '\0')" (( "(") (binary_expression "*(char *)(param_1 + 0xf) == '\0'" (pointer_expression "*(char *)(param_1 + 0xf)" (* "*") (cast_expression "(char *)(param_1 + 0xf)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xf)" (( "(") (binary_expression "param_1 + 0xf" (identifier "param_1") (+ "+") (number_literal "0xf")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    if (**(int **)(param_1 + 0x40) != 0) {\n      uVar3 = (*(code *)(PTR_LAB_000f52c8 + 0x1938))(param_1);\n      if (((uVar3 & 0xff) == 0xd) || ((uVar3 & 0xff) == 10)) {\n        (*(code *)(PTR_LAB_000f52e8 + 0x1394))(param_1,uVar3);\n      }\n    }\n    FUN_0007ad48(param_1);\n  }" ({ "{") (if_statement "if (**(int **)(param_1 + 0x40) != 0) {\n      uVar3 = (*(code *)(PTR_LAB_000f52c8 + 0x1938))(param_1);\n      if (((uVar3 & 0xff) == 0xd) || ((uVar3 & 0xff) == 10)) {\n        (*(code *)(PTR_LAB_000f52e8 + 0x1394))(param_1,uVar3);\n      }\n    }" (if "if") (parenthesized_expression "(**(int **)(param_1 + 0x40) != 0)" (( "(") (binary_expression "**(int **)(param_1 + 0x40) != 0" (pointer_expression "**(int **)(param_1 + 0x40)" (* "*") (pointer_expression "*(int **)(param_1 + 0x40)" (* "*") (cast_expression "(int **)(param_1 + 0x40)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x40)" (( "(") (binary_expression "param_1 + 0x40" (identifier "param_1") (+ "+") (number_literal "0x40")) () ")"))))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      uVar3 = (*(code *)(PTR_LAB_000f52c8 + 0x1938))(param_1);\n      if (((uVar3 & 0xff) == 0xd) || ((uVar3 & 0xff) == 10)) {\n        (*(code *)(PTR_LAB_000f52e8 + 0x1394))(param_1,uVar3);\n      }\n    }" ({ "{") (expression_statement "uVar3 = (*(code *)(PTR_LAB_000f52c8 + 0x1938))(param_1);" (assignment_expression "uVar3 = (*(code *)(PTR_LAB_000f52c8 + 0x1938))(param_1)" (identifier "uVar3") (= "=") (call_expression "(*(code *)(PTR_LAB_000f52c8 + 0x1938))(param_1)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52c8 + 0x1938))" (( "(") (pointer_expression "*(code *)(PTR_LAB_000f52c8 + 0x1938)" (* "*") (cast_expression "(code *)(PTR_LAB_000f52c8 + 0x1938)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_000f52c8 + 0x1938)" (( "(") (binary_expression "PTR_LAB_000f52c8 + 0x1938" (identifier "PTR_LAB_000f52c8") (+ "+") (number_literal "0x1938")) () ")")))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (if_statement "if (((uVar3 & 0xff) == 0xd) || ((uVar3 & 0xff) == 10)) {\n        (*(code *)(PTR_LAB_000f52e8 + 0x1394))(param_1,uVar3);\n      }" (if "if") (parenthesized_expression "(((uVar3 & 0xff) == 0xd) || ((uVar3 & 0xff) == 10))" (( "(") (binary_expression "((uVar3 & 0xff) == 0xd) || ((uVar3 & 0xff) == 10)" (parenthesized_expression "((uVar3 & 0xff) == 0xd)" (( "(") (binary_expression "(uVar3 & 0xff) == 0xd" (parenthesized_expression "(uVar3 & 0xff)" (( "(") (binary_expression "uVar3 & 0xff" (identifier "uVar3") (& "&") (number_literal "0xff")) () ")")) (== "==") (number_literal "0xd")) () ")")) (|| "||") (parenthesized_expression "((uVar3 & 0xff) == 10)" (( "(") (binary_expression "(uVar3 & 0xff) == 10" (parenthesized_expression "(uVar3 & 0xff)" (( "(") (binary_expression "uVar3 & 0xff" (identifier "uVar3") (& "&") (number_literal "0xff")) () ")")) (== "==") (number_literal "10")) () ")"))) () ")")) (compound_statement "{\n        (*(code *)(PTR_LAB_000f52e8 + 0x1394))(param_1,uVar3);\n      }" ({ "{") (expression_statement "(*(code *)(PTR_LAB_000f52e8 + 0x1394))(param_1,uVar3);" (call_expression "(*(code *)(PTR_LAB_000f52e8 + 0x1394))(param_1,uVar3)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52e8 + 0x1394))" (( "(") (pointer_expression "*(code *)(PTR_LAB_000f52e8 + 0x1394)" (* "*") (cast_expression "(code *)(PTR_LAB_000f52e8 + 0x1394)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_000f52e8 + 0x1394)" (( "(") (binary_expression "PTR_LAB_000f52e8 + 0x1394" (identifier "PTR_LAB_000f52e8") (+ "+") (number_literal "0x1394")) () ")")))) () ")")) (argument_list "(param_1,uVar3)" (( "(") (identifier "param_1") (, ",") (identifier "uVar3") () ")"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "FUN_0007ad48(param_1);" (call_expression "FUN_0007ad48(param_1)" (identifier "FUN_0007ad48") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (} "}")) (else_clause "else {\n    (*(code *)(PTR_LAB_000f530c + 0x3344))(param_1);\n  }" (else "else") (compound_statement "{\n    (*(code *)(PTR_LAB_000f530c + 0x3344))(param_1);\n  }" ({ "{") (expression_statement "(*(code *)(PTR_LAB_000f530c + 0x3344))(param_1);" (call_expression "(*(code *)(PTR_LAB_000f530c + 0x3344))(param_1)" (parenthesized_expression "(*(code *)(PTR_LAB_000f530c + 0x3344))" (( "(") (pointer_expression "*(code *)(PTR_LAB_000f530c + 0x3344)" (* "*") (cast_expression "(code *)(PTR_LAB_000f530c + 0x3344)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_000f530c + 0x3344)" (( "(") (binary_expression "PTR_LAB_000f530c + 0x3344" (identifier "PTR_LAB_000f530c") (+ "+") (number_literal "0x3344")) () ")")))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (} "}")))) (if_statement "if (*(code **)(puVar1 + 0x5c4c) != (code *)0x0) {\n    (**(code **)(puVar1 + 0x5c4c))();\n  }" (if "if") (parenthesized_expression "(*(code **)(puVar1 + 0x5c4c) != (code *)0x0)" (( "(") (binary_expression "*(code **)(puVar1 + 0x5c4c) != (code *)0x0" (pointer_expression "*(code **)(puVar1 + 0x5c4c)" (* "*") (cast_expression "(code **)(puVar1 + 0x5c4c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar1 + 0x5c4c)" (( "(") (binary_expression "puVar1 + 0x5c4c" (identifier "puVar1") (+ "+") (number_literal "0x5c4c")) () ")")))) (!= "!=") (cast_expression "(code *)0x0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    (**(code **)(puVar1 + 0x5c4c))();\n  }" ({ "{") (expression_statement "(**(code **)(puVar1 + 0x5c4c))();" (call_expression "(**(code **)(puVar1 + 0x5c4c))()" (parenthesized_expression "(**(code **)(puVar1 + 0x5c4c))" (( "(") (pointer_expression "**(code **)(puVar1 + 0x5c4c)" (* "*") (pointer_expression "*(code **)(puVar1 + 0x5c4c)" (* "*") (cast_expression "(code **)(puVar1 + 0x5c4c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar1 + 0x5c4c)" (( "(") (binary_expression "puVar1 + 0x5c4c" (identifier "puVar1") (+ "+") (number_literal "0x5c4c")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "piVar5 = *(int **)(param_1 + 0x40);" (assignment_expression "piVar5 = *(int **)(param_1 + 0x40)" (identifier "piVar5") (= "=") (pointer_expression "*(int **)(param_1 + 0x40)" (* "*") (cast_expression "(int **)(param_1 + 0x40)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x40)" (( "(") (binary_expression "param_1 + 0x40" (identifier "param_1") (+ "+") (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 "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    (**(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 "(*(code *)(PTR_LAB_000f52ec + -0x3ff4))(uVar6);" (call_expression "(*(code *)(PTR_LAB_000f52ec + -0x3ff4))(uVar6)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52ec + -0x3ff4))" (( "(") (pointer_expression "*(code *)(PTR_LAB_000f52ec + -0x3ff4)" (* "*") (cast_expression "(code *)(PTR_LAB_000f52ec + -0x3ff4)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_000f52ec + -0x3ff4)" (( "(") (binary_expression "PTR_LAB_000f52ec + -0x3ff4" (identifier "PTR_LAB_000f52ec") (+ "+") (number_literal "-0x3ff4")) () ")")))) () ")")) (argument_list "(uVar6)" (( "(") (identifier "uVar6") () ")"))) (; ";")) (expression_statement "(**(code **)(PTR_DAT_000f52bc + 0x4130))(*(undefined4 *)(*(int *)(param_1 + 0xd4) + 0x2c));" (call_expression "(**(code **)(PTR_DAT_000f52bc + 0x4130))(*(undefined4 *)(*(int *)(param_1 + 0xd4) + 0x2c))" (parenthesized_expression "(**(code **)(PTR_DAT_000f52bc + 0x4130))" (( "(") (pointer_expression "**(code **)(PTR_DAT_000f52bc + 0x4130)" (* "*") (pointer_expression "*(code **)(PTR_DAT_000f52bc + 0x4130)" (* "*") (cast_expression "(code **)(PTR_DAT_000f52bc + 0x4130)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(PTR_DAT_000f52bc + 0x4130)" (( "(") (binary_expression "PTR_DAT_000f52bc + 0x4130" (identifier "PTR_DAT_000f52bc") (+ "+") (number_literal "0x4130")) () ")"))))) () ")")) (argument_list "(*(undefined4 *)(*(int *)(param_1 + 0xd4) + 0x2c))" (( "(") (pointer_expression "*(undefined4 *)(*(int *)(param_1 + 0xd4) + 0x2c)" (* "*") (cast_expression "(undefined4 *)(*(int *)(param_1 + 0xd4) + 0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0xd4) + 0x2c)" (( "(") (binary_expression "*(int *)(param_1 + 0xd4) + 0x2c" (pointer_expression "*(int *)(param_1 + 0xd4)" (* "*") (cast_expression "(int *)(param_1 + 0xd4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xd4)" (( "(") (binary_expression "param_1 + 0xd4" (identifier "param_1") (+ "+") (number_literal "0xd4")) () ")")))) (+ "+") (number_literal "0x2c")) () ")")))) () ")"))) (; ";")) (expression_statement "(*(code *)PTR_sqlite3_free_000f53a0)(param_1);" (call_expression "(*(code *)PTR_sqlite3_free_000f53a0)(param_1)" (parenthesized_expression "(*(code *)PTR_sqlite3_free_000f53a0)" (( "(") (pointer_expression "*(code *)PTR_sqlite3_free_000f53a0" (* "*") (cast_expression "(code *)PTR_sqlite3_free_000f53a0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_sqlite3_free_000f53a0"))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))
(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) 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: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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: (identifier) right: (number_literal))))))) 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)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (while_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (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: (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: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) arguments: (argument_list (identifier)))) right: (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (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))))) (identifier) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) (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))))) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) arguments: (argument_list (identifier) (identifier)))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) arguments: (argument_list (identifier))))))) (if_statement condition: (parenthesized_expression (binary_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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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: (identifier) right: (number_literal))))))) 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))))))) (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: (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 (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) arguments: (argument_list (identifier)))) (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 (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))))) (expression_statement (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 (identifier)))) (return_statement (number_literal)))))

undefined4 MASKED(int param_1,int param_2)

{
  undefined *puVar1;
  undefined4 uVar2;
  uint uVar3;
  int iVar4;
  int *piVar5;
  undefined4 uVar6;
  code *pcVar7;
  
  puVar1 = PTR_DAT_000f52bc;
  uVar6 = *(undefined4 *)(param_1 + 0xd0);
  if (*(code **)(PTR_DAT_000f52bc + 0x5c48) != (code *)0x0) {
    (**(code **)(PTR_DAT_000f52bc + 0x5c48))();
  }
  iVar4 = *(int *)(param_1 + 0x88);
  while (iVar4 != 0) {
    iVar4 = *(int *)(iVar4 + 0x10);
    (*(code *)PTR_sqlite3_free_000f53a0)();
  }
  *(undefined1 *)(param_1 + 4) = 0;
  if (((param_2 == 0) || ((*(uint *)(param_2 + 0x24) & 0x800) != 0)) ||
     (iVar4 = (*(code *)(PTR_LAB_000f52c8 + 0x1998))(param_1), uVar2 = uVar6, iVar4 != 0)) {
    uVar2 = 0;
  }
  FUN_00088ec4(*(undefined4 *)(param_1 + 0xd8),param_2,*(undefined1 *)(param_1 + 0xb),
               *(undefined4 *)(param_1 + 0x98),uVar2);
  pcVar7 = (code *)(PTR_LAB_000f52ec + -0x403c);
  *(undefined4 *)(param_1 + 0xd8) = 0;
  (*pcVar7)(param_1);
  if (*(char *)(param_1 + 0xf) == '\0') {
    if (**(int **)(param_1 + 0x40) != 0) {
      uVar3 = (*(code *)(PTR_LAB_000f52c8 + 0x1938))(param_1);
      if (((uVar3 & 0xff) == 0xd) || ((uVar3 & 0xff) == 10)) {
        (*(code *)(PTR_LAB_000f52e8 + 0x1394))(param_1,uVar3);
      }
    }
    FUN_0007ad48(param_1);
  }
  else {
    (*(code *)(PTR_LAB_000f530c + 0x3344))(param_1);
  }
  if (*(code **)(puVar1 + 0x5c4c) != (code *)0x0) {
    (**(code **)(puVar1 + 0x5c4c))();
  }
  piVar5 = *(int **)(param_1 + 0x40);
  if (*piVar5 != 0) {
    (**(code **)(*piVar5 + 4))(piVar5);
    *piVar5 = 0;
  }
  piVar5 = *(int **)(param_1 + 0x3c);
  if (*piVar5 != 0) {
    (**(code **)(*piVar5 + 4))(piVar5);
    *piVar5 = 0;
  }
  (*(code *)(PTR_LAB_000f52ec + -0x3ff4))(uVar6);
  (**(code **)(PTR_DAT_000f52bc + 0x4130))(*(undefined4 *)(*(int *)(param_1 + 0xd4) + 0x2c));
  (*(code *)PTR_sqlite3_free_000f53a0)(param_1);
  return 0;
}

