
int sqlite3BtreeCommitPhaseTwo(Btree *p,int bCleanup)

{
  uint uVar1;
  int iVar2;
  Bitvec *pBVar3;
  Pager *pPVar4;
  BtShared *pBVar5;
  code *pcVar6;
  
  if (p->sharable != '\0') {
    (*(code *)(PTR_LAB_000f52ec + -0x3088))();
  }
  if (p->inTrans == '\x02') {
    pBVar5 = p->pBt;
    pPVar4 = pBVar5->pPager;
    uVar1 = pPVar4->errCode;
    if (uVar1 == 0) {
      pPVar4->iDataVersion = pPVar4->iDataVersion + 1;
      if (((pPVar4->eState == '\x02') && (pPVar4->exclusiveMode != '\0')) &&
         (pPVar4->journalMode == '\x01')) {
        pPVar4->eState = '\x01';
      }
      else {
        uVar1 = (*(code *)(PTR_DAT_000f52e8 + 0x150))(pPVar4,pPVar4->setSuper,1);
        if (((uVar1 & 0xff) == 0xd) || ((uVar1 & 0xff) == 10)) {
          (*(code *)(PTR_DAT_000f52e8 + 0x1394))(pPVar4,uVar1);
        }
        if (uVar1 != 0) goto LAB_0007b848;
      }
    }
    else {
LAB_0007b848:
      if (bCleanup == 0) {
        if (p->sharable == '\0') {
          return uVar1;
        }
        iVar2 = p->wantToLock + -1;
        p->wantToLock = iVar2;
        if (iVar2 != 0) {
          return uVar1;
        }
        goto LAB_0007b86c;
      }
    }
    pBVar3 = pBVar5->pHasContent;
    pcVar6 = (code *)(PTR_LAB_000f52ec + -0x672c);
    p->iDataVersion = p->iDataVersion - 1;
    pBVar5->inTransaction = '\x01';
    (*pcVar6)(pBVar3);
    pBVar5->pHasContent = (Bitvec *)0x0;
  }
  btreeEndTransaction(p);
  if (p->sharable != '\0') {
    uVar1 = p->wantToLock - 1;
    p->wantToLock = uVar1;
    if (uVar1 == 0) {
LAB_0007b86c:
      (*(code *)(PTR_LAB_000f52ec + -0x2fa0))(p);
      return uVar1;
    }
  }
  return 0;
}



uint FUN_0007b714(int param_1,int param_2)

{
  uint uVar1;
  int iVar2;
  int *piVar3;
  code *pcVar4;
  
  if (*(char *)(param_1 + 9) != '\0') {
    (*(code *)(PTR_LAB_000f52ec + -0x3088))();
  }
  if (*(char *)(param_1 + 8) == '\x02') {
    piVar3 = *(int **)(param_1 + 4);
    iVar2 = *piVar3;
    uVar1 = *(uint *)(iVar2 + 0x28);
    if (uVar1 == 0) {
      *(int *)(iVar2 + 100) = *(int *)(iVar2 + 100) + 1;
      if (((*(char *)(iVar2 + 0x10) == '\x02') && (*(char *)(iVar2 + 4) != '\0')) &&
         (*(char *)(iVar2 + 5) == '\x01')) {
        *(undefined1 *)(iVar2 + 0x10) = 1;
      }
      else {
        uVar1 = (*(code *)(PTR_LAB_000f52e8 + 0x150))(iVar2,*(undefined1 *)(iVar2 + 0x13),1);
        if (((uVar1 & 0xff) == 0xd) || ((uVar1 & 0xff) == 10)) {
          (*(code *)(PTR_LAB_000f52e8 + 0x1394))(iVar2,uVar1);
        }
        if (uVar1 != 0) goto LAB_0007b848;
      }
    }
    else {
LAB_0007b848:
      if (param_2 == 0) {
        if (*(char *)(param_1 + 9) == '\0') {
          return uVar1;
        }
        iVar2 = *(int *)(param_1 + 0xc) + -1;
        *(int *)(param_1 + 0xc) = iVar2;
        if (iVar2 != 0) {
          return uVar1;
        }
        goto LAB_0007b86c;
      }
    }
    iVar2 = piVar3[0x10];
    pcVar4 = (code *)(PTR_LAB_000f52ec + -0x672c);
    *(int *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + -1;
    *(undefined1 *)(piVar3 + 5) = 1;
    (*pcVar4)(iVar2);
    piVar3[0x10] = 0;
  }
  FUN_0007b584(param_1);
  if (*(char *)(param_1 + 9) != '\0') {
    uVar1 = *(int *)(param_1 + 0xc) - 1;
    *(uint *)(param_1 + 0xc) = uVar1;
    if (uVar1 == 0) {
LAB_0007b86c:
      (*(code *)(PTR_LAB_000f52ec + -0x2fa0))(param_1);
      return uVar1;
    }
  }
  return 0;
}


lui gp,0x8
addiu gp,gp,0x1b8c
addu gp,gp,t9
addiu sp,sp,-0x38
sw s3,0x30(sp)
or s3,a1,zero
sw s0,0x24(sp)
sw gp,0x10(sp)
sw ra,0x34(sp)
sw s2,0x2c(sp)
sw s1,0x28(sp)
lbu v0,0x9(a0)
bne v0,zero,0x0007b8a0
_or s0,a0,zero
lbu v1,0x8(s0)
li v0,0x2
beq v1,v0,0x0007b7a8
_nop
lw t9,-0x7fac(gp)
addiu t9,t9,-0x4a7c
bal 0x0007b584
_or a0,s0,zero
lbu v0,0x9(s0)
beq v0,zero,0x0007b788
_lw gp,0x10(sp)
lw v0,0xc(s0)
addiu v0,v0,-0x1
beq v0,zero,0x0007b86c
_sw v0,0xc(s0)
or v0,zero,zero
lw ra,0x34(sp)
lw s3,0x30(sp)
lw s2,0x2c(sp)
lw s1,0x28(sp)
lw s0,0x24(sp)
jr ra
_addiu sp,sp,0x38
lw s2,0x4(s0)
lw s1,0x0(s2)
lw v0,0x28(s1)
bne v0,zero,0x0007b848
_nop
lw v0,0x64(s1)
lbu a0,0x10(s1)
addiu v0,v0,0x1
bne a0,v1,0x0007b7dc
_sw v0,0x64(s1)
lbu v0,0x4(s1)
bne v0,zero,0x0007b8dc
_li v1,0x1
lw t9,-0x7fb8(gp)
li a2,0x1
lbu a1,0x13(s1)
addiu t9,t9,0x150
jalr t9
_or a0,s1,zero
li a0,0xd
andi v1,v0,0xff
beq v1,a0,0x0007b8b8
_lw gp,0x10(sp)
li a0,0xa
beq v1,a0,0x0007b8bc
_lw t9,-0x7fb8(gp)
bne v0,zero,0x0007b848
_nop
lw v0,0x14(s0)
lw t9,-0x7fb4(gp)
lw a0,0x40(s2)
addiu v0,v0,-0x1
addiu t9,t9,-0x672c
sw v0,0x14(s0)
li v0,0x1
jalr t9
_sb v0,0x14(s2)
lw gp,0x10(sp)
b 0x0007b75c
_sw zero,0x40(s2)
bne s3,zero,0x0007b818
_nop
lbu v1,0x9(s0)
beq v1,zero,0x0007b790
_lw ra,0x34(sp)
lw v1,0xc(s0)
addiu v1,v1,-0x1
bne v1,zero,0x0007b78c
_sw v1,0xc(s0)
lw t9,-0x7fb4(gp)
or a0,s0,zero
addiu t9,t9,-0x2fa0
jalr t9
_sw v0,0x1c(sp)
lw ra,0x34(sp)
lw v0,0x1c(sp)
lw s3,0x30(sp)
lw s2,0x2c(sp)
lw s1,0x28(sp)
lw s0,0x24(sp)
jr ra
_addiu sp,sp,0x38
lw t9,-0x7fb4(gp)
addiu t9,t9,-0x3088
jalr t9
_nop
b 0x0007b74c
_lw gp,0x10(sp)
lw t9,-0x7fb8(gp)
or a1,v0,zero
sw v0,0x1c(sp)
addiu t9,t9,0x1394
jalr t9
_or a0,s1,zero
lw gp,0x10(sp)
b 0x0007b810
_lw v0,0x1c(sp)
lbu v0,0x5(s1)
bne v0,v1,0x0007b7e0
_lw t9,-0x7fb8(gp)
b 0x0007b818
_sb v0,0x10(s1)
(translation_unit "uint FUN_0007b714(int param_1,int param_2)\n\n{\n  uint uVar1;\n  int iVar2;\n  int *piVar3;\n  code *pcVar4;\n  \n  if (*(char *)(param_1 + 9) != '\0') {\n    (*(code *)(PTR_LAB_000f52ec + -0x3088))();\n  }\n  if (*(char *)(param_1 + 8) == '\x02') {\n    piVar3 = *(int **)(param_1 + 4);\n    iVar2 = *piVar3;\n    uVar1 = *(uint *)(iVar2 + 0x28);\n    if (uVar1 == 0) {\n      *(int *)(iVar2 + 100) = *(int *)(iVar2 + 100) + 1;\n      if (((*(char *)(iVar2 + 0x10) == '\x02') && (*(char *)(iVar2 + 4) != '\0')) &&\n         (*(char *)(iVar2 + 5) == '\x01')) {\n        *(undefined1 *)(iVar2 + 0x10) = 1;\n      }\n      else {\n        uVar1 = (*(code *)(PTR_LAB_000f52e8 + 0x150))(iVar2,*(undefined1 *)(iVar2 + 0x13),1);\n        if (((uVar1 & 0xff) == 0xd) || ((uVar1 & 0xff) == 10)) {\n          (*(code *)(PTR_LAB_000f52e8 + 0x1394))(iVar2,uVar1);\n        }\n        if (uVar1 != 0) goto LAB_0007b848;\n      }\n    }\n    else {\nLAB_0007b848:\n      if (param_2 == 0) {\n        if (*(char *)(param_1 + 9) == '\0') {\n          return uVar1;\n        }\n        iVar2 = *(int *)(param_1 + 0xc) + -1;\n        *(int *)(param_1 + 0xc) = iVar2;\n        if (iVar2 != 0) {\n          return uVar1;\n        }\n        goto LAB_0007b86c;\n      }\n    }\n    iVar2 = piVar3[0x10];\n    pcVar4 = (code *)(PTR_LAB_000f52ec + -0x672c);\n    *(int *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + -1;\n    *(undefined1 *)(piVar3 + 5) = 1;\n    (*pcVar4)(iVar2);\n    piVar3[0x10] = 0;\n  }\n  FUN_0007b584(param_1);\n  if (*(char *)(param_1 + 9) != '\0') {\n    uVar1 = *(int *)(param_1 + 0xc) - 1;\n    *(uint *)(param_1 + 0xc) = uVar1;\n    if (uVar1 == 0) {\nLAB_0007b86c:\n      (*(code *)(PTR_LAB_000f52ec + -0x2fa0))(param_1);\n      return uVar1;\n    }\n  }\n  return 0;\n}\n\n" (function_definition "uint FUN_0007b714(int param_1,int param_2)\n\n{\n  uint uVar1;\n  int iVar2;\n  int *piVar3;\n  code *pcVar4;\n  \n  if (*(char *)(param_1 + 9) != '\0') {\n    (*(code *)(PTR_LAB_000f52ec + -0x3088))();\n  }\n  if (*(char *)(param_1 + 8) == '\x02') {\n    piVar3 = *(int **)(param_1 + 4);\n    iVar2 = *piVar3;\n    uVar1 = *(uint *)(iVar2 + 0x28);\n    if (uVar1 == 0) {\n      *(int *)(iVar2 + 100) = *(int *)(iVar2 + 100) + 1;\n      if (((*(char *)(iVar2 + 0x10) == '\x02') && (*(char *)(iVar2 + 4) != '\0')) &&\n         (*(char *)(iVar2 + 5) == '\x01')) {\n        *(undefined1 *)(iVar2 + 0x10) = 1;\n      }\n      else {\n        uVar1 = (*(code *)(PTR_LAB_000f52e8 + 0x150))(iVar2,*(undefined1 *)(iVar2 + 0x13),1);\n        if (((uVar1 & 0xff) == 0xd) || ((uVar1 & 0xff) == 10)) {\n          (*(code *)(PTR_LAB_000f52e8 + 0x1394))(iVar2,uVar1);\n        }\n        if (uVar1 != 0) goto LAB_0007b848;\n      }\n    }\n    else {\nLAB_0007b848:\n      if (param_2 == 0) {\n        if (*(char *)(param_1 + 9) == '\0') {\n          return uVar1;\n        }\n        iVar2 = *(int *)(param_1 + 0xc) + -1;\n        *(int *)(param_1 + 0xc) = iVar2;\n        if (iVar2 != 0) {\n          return uVar1;\n        }\n        goto LAB_0007b86c;\n      }\n    }\n    iVar2 = piVar3[0x10];\n    pcVar4 = (code *)(PTR_LAB_000f52ec + -0x672c);\n    *(int *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + -1;\n    *(undefined1 *)(piVar3 + 5) = 1;\n    (*pcVar4)(iVar2);\n    piVar3[0x10] = 0;\n  }\n  FUN_0007b584(param_1);\n  if (*(char *)(param_1 + 9) != '\0') {\n    uVar1 = *(int *)(param_1 + 0xc) - 1;\n    *(uint *)(param_1 + 0xc) = uVar1;\n    if (uVar1 == 0) {\nLAB_0007b86c:\n      (*(code *)(PTR_LAB_000f52ec + -0x2fa0))(param_1);\n      return uVar1;\n    }\n  }\n  return 0;\n}" type_identifier (function_declarator "FUN_0007b714(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  uint uVar1;\n  int iVar2;\n  int *piVar3;\n  code *pcVar4;\n  \n  if (*(char *)(param_1 + 9) != '\0') {\n    (*(code *)(PTR_LAB_000f52ec + -0x3088))();\n  }\n  if (*(char *)(param_1 + 8) == '\x02') {\n    piVar3 = *(int **)(param_1 + 4);\n    iVar2 = *piVar3;\n    uVar1 = *(uint *)(iVar2 + 0x28);\n    if (uVar1 == 0) {\n      *(int *)(iVar2 + 100) = *(int *)(iVar2 + 100) + 1;\n      if (((*(char *)(iVar2 + 0x10) == '\x02') && (*(char *)(iVar2 + 4) != '\0')) &&\n         (*(char *)(iVar2 + 5) == '\x01')) {\n        *(undefined1 *)(iVar2 + 0x10) = 1;\n      }\n      else {\n        uVar1 = (*(code *)(PTR_LAB_000f52e8 + 0x150))(iVar2,*(undefined1 *)(iVar2 + 0x13),1);\n        if (((uVar1 & 0xff) == 0xd) || ((uVar1 & 0xff) == 10)) {\n          (*(code *)(PTR_LAB_000f52e8 + 0x1394))(iVar2,uVar1);\n        }\n        if (uVar1 != 0) goto LAB_0007b848;\n      }\n    }\n    else {\nLAB_0007b848:\n      if (param_2 == 0) {\n        if (*(char *)(param_1 + 9) == '\0') {\n          return uVar1;\n        }\n        iVar2 = *(int *)(param_1 + 0xc) + -1;\n        *(int *)(param_1 + 0xc) = iVar2;\n        if (iVar2 != 0) {\n          return uVar1;\n        }\n        goto LAB_0007b86c;\n      }\n    }\n    iVar2 = piVar3[0x10];\n    pcVar4 = (code *)(PTR_LAB_000f52ec + -0x672c);\n    *(int *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + -1;\n    *(undefined1 *)(piVar3 + 5) = 1;\n    (*pcVar4)(iVar2);\n    piVar3[0x10] = 0;\n  }\n  FUN_0007b584(param_1);\n  if (*(char *)(param_1 + 9) != '\0') {\n    uVar1 = *(int *)(param_1 + 0xc) - 1;\n    *(uint *)(param_1 + 0xc) = uVar1;\n    if (uVar1 == 0) {\nLAB_0007b86c:\n      (*(code *)(PTR_LAB_000f52ec + -0x2fa0))(param_1);\n      return uVar1;\n    }\n  }\n  return 0;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "code *pcVar4;" type_identifier (pointer_declarator "*pcVar4" * identifier) ;) (if_statement "if (*(char *)(param_1 + 9) != '\0') {\n    (*(code *)(PTR_LAB_000f52ec + -0x3088))();\n  }" if (parenthesized_expression "(*(char *)(param_1 + 9) != '\0')" ( (binary_expression "*(char *)(param_1 + 9) != '\0'" (pointer_expression "*(char *)(param_1 + 9)" * (cast_expression "(char *)(param_1 + 9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    (*(code *)(PTR_LAB_000f52ec + -0x3088))();\n  }" { (expression_statement "(*(code *)(PTR_LAB_000f52ec + -0x3088))();" (call_expression "(*(code *)(PTR_LAB_000f52ec + -0x3088))()" (parenthesized_expression "(*(code *)(PTR_LAB_000f52ec + -0x3088))" ( (pointer_expression "*(code *)(PTR_LAB_000f52ec + -0x3088)" * (cast_expression "(code *)(PTR_LAB_000f52ec + -0x3088)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52ec + -0x3088)" ( (binary_expression "PTR_LAB_000f52ec + -0x3088" identifier + number_literal) )))) )) (argument_list "()" ( ))) ;) })) (if_statement "if (*(char *)(param_1 + 8) == '\x02') {\n    piVar3 = *(int **)(param_1 + 4);\n    iVar2 = *piVar3;\n    uVar1 = *(uint *)(iVar2 + 0x28);\n    if (uVar1 == 0) {\n      *(int *)(iVar2 + 100) = *(int *)(iVar2 + 100) + 1;\n      if (((*(char *)(iVar2 + 0x10) == '\x02') && (*(char *)(iVar2 + 4) != '\0')) &&\n         (*(char *)(iVar2 + 5) == '\x01')) {\n        *(undefined1 *)(iVar2 + 0x10) = 1;\n      }\n      else {\n        uVar1 = (*(code *)(PTR_LAB_000f52e8 + 0x150))(iVar2,*(undefined1 *)(iVar2 + 0x13),1);\n        if (((uVar1 & 0xff) == 0xd) || ((uVar1 & 0xff) == 10)) {\n          (*(code *)(PTR_LAB_000f52e8 + 0x1394))(iVar2,uVar1);\n        }\n        if (uVar1 != 0) goto LAB_0007b848;\n      }\n    }\n    else {\nLAB_0007b848:\n      if (param_2 == 0) {\n        if (*(char *)(param_1 + 9) == '\0') {\n          return uVar1;\n        }\n        iVar2 = *(int *)(param_1 + 0xc) + -1;\n        *(int *)(param_1 + 0xc) = iVar2;\n        if (iVar2 != 0) {\n          return uVar1;\n        }\n        goto LAB_0007b86c;\n      }\n    }\n    iVar2 = piVar3[0x10];\n    pcVar4 = (code *)(PTR_LAB_000f52ec + -0x672c);\n    *(int *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + -1;\n    *(undefined1 *)(piVar3 + 5) = 1;\n    (*pcVar4)(iVar2);\n    piVar3[0x10] = 0;\n  }" if (parenthesized_expression "(*(char *)(param_1 + 8) == '\x02')" ( (binary_expression "*(char *)(param_1 + 8) == '\x02'" (pointer_expression "*(char *)(param_1 + 8)" * (cast_expression "(char *)(param_1 + 8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) == (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n    piVar3 = *(int **)(param_1 + 4);\n    iVar2 = *piVar3;\n    uVar1 = *(uint *)(iVar2 + 0x28);\n    if (uVar1 == 0) {\n      *(int *)(iVar2 + 100) = *(int *)(iVar2 + 100) + 1;\n      if (((*(char *)(iVar2 + 0x10) == '\x02') && (*(char *)(iVar2 + 4) != '\0')) &&\n         (*(char *)(iVar2 + 5) == '\x01')) {\n        *(undefined1 *)(iVar2 + 0x10) = 1;\n      }\n      else {\n        uVar1 = (*(code *)(PTR_LAB_000f52e8 + 0x150))(iVar2,*(undefined1 *)(iVar2 + 0x13),1);\n        if (((uVar1 & 0xff) == 0xd) || ((uVar1 & 0xff) == 10)) {\n          (*(code *)(PTR_LAB_000f52e8 + 0x1394))(iVar2,uVar1);\n        }\n        if (uVar1 != 0) goto LAB_0007b848;\n      }\n    }\n    else {\nLAB_0007b848:\n      if (param_2 == 0) {\n        if (*(char *)(param_1 + 9) == '\0') {\n          return uVar1;\n        }\n        iVar2 = *(int *)(param_1 + 0xc) + -1;\n        *(int *)(param_1 + 0xc) = iVar2;\n        if (iVar2 != 0) {\n          return uVar1;\n        }\n        goto LAB_0007b86c;\n      }\n    }\n    iVar2 = piVar3[0x10];\n    pcVar4 = (code *)(PTR_LAB_000f52ec + -0x672c);\n    *(int *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + -1;\n    *(undefined1 *)(piVar3 + 5) = 1;\n    (*pcVar4)(iVar2);\n    piVar3[0x10] = 0;\n  }" { (expression_statement "piVar3 = *(int **)(param_1 + 4);" (assignment_expression "piVar3 = *(int **)(param_1 + 4)" identifier = (pointer_expression "*(int **)(param_1 + 4)" * (cast_expression "(int **)(param_1 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (expression_statement "iVar2 = *piVar3;" (assignment_expression "iVar2 = *piVar3" identifier = (pointer_expression "*piVar3" * identifier)) ;) (expression_statement "uVar1 = *(uint *)(iVar2 + 0x28);" (assignment_expression "uVar1 = *(uint *)(iVar2 + 0x28)" identifier = (pointer_expression "*(uint *)(iVar2 + 0x28)" * (cast_expression "(uint *)(iVar2 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x28)" ( (binary_expression "iVar2 + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (uVar1 == 0) {\n      *(int *)(iVar2 + 100) = *(int *)(iVar2 + 100) + 1;\n      if (((*(char *)(iVar2 + 0x10) == '\x02') && (*(char *)(iVar2 + 4) != '\0')) &&\n         (*(char *)(iVar2 + 5) == '\x01')) {\n        *(undefined1 *)(iVar2 + 0x10) = 1;\n      }\n      else {\n        uVar1 = (*(code *)(PTR_LAB_000f52e8 + 0x150))(iVar2,*(undefined1 *)(iVar2 + 0x13),1);\n        if (((uVar1 & 0xff) == 0xd) || ((uVar1 & 0xff) == 10)) {\n          (*(code *)(PTR_LAB_000f52e8 + 0x1394))(iVar2,uVar1);\n        }\n        if (uVar1 != 0) goto LAB_0007b848;\n      }\n    }\n    else {\nLAB_0007b848:\n      if (param_2 == 0) {\n        if (*(char *)(param_1 + 9) == '\0') {\n          return uVar1;\n        }\n        iVar2 = *(int *)(param_1 + 0xc) + -1;\n        *(int *)(param_1 + 0xc) = iVar2;\n        if (iVar2 != 0) {\n          return uVar1;\n        }\n        goto LAB_0007b86c;\n      }\n    }" if (parenthesized_expression "(uVar1 == 0)" ( (binary_expression "uVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      *(int *)(iVar2 + 100) = *(int *)(iVar2 + 100) + 1;\n      if (((*(char *)(iVar2 + 0x10) == '\x02') && (*(char *)(iVar2 + 4) != '\0')) &&\n         (*(char *)(iVar2 + 5) == '\x01')) {\n        *(undefined1 *)(iVar2 + 0x10) = 1;\n      }\n      else {\n        uVar1 = (*(code *)(PTR_LAB_000f52e8 + 0x150))(iVar2,*(undefined1 *)(iVar2 + 0x13),1);\n        if (((uVar1 & 0xff) == 0xd) || ((uVar1 & 0xff) == 10)) {\n          (*(code *)(PTR_LAB_000f52e8 + 0x1394))(iVar2,uVar1);\n        }\n        if (uVar1 != 0) goto LAB_0007b848;\n      }\n    }" { (expression_statement "*(int *)(iVar2 + 100) = *(int *)(iVar2 + 100) + 1;" (assignment_expression "*(int *)(iVar2 + 100) = *(int *)(iVar2 + 100) + 1" (pointer_expression "*(int *)(iVar2 + 100)" * (cast_expression "(int *)(iVar2 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 100)" ( (binary_expression "iVar2 + 100" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar2 + 100) + 1" (pointer_expression "*(int *)(iVar2 + 100)" * (cast_expression "(int *)(iVar2 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 100)" ( (binary_expression "iVar2 + 100" identifier + number_literal) )))) + number_literal)) ;) (if_statement "if (((*(char *)(iVar2 + 0x10) == '\x02') && (*(char *)(iVar2 + 4) != '\0')) &&\n         (*(char *)(iVar2 + 5) == '\x01')) {\n        *(undefined1 *)(iVar2 + 0x10) = 1;\n      }\n      else {\n        uVar1 = (*(code *)(PTR_LAB_000f52e8 + 0x150))(iVar2,*(undefined1 *)(iVar2 + 0x13),1);\n        if (((uVar1 & 0xff) == 0xd) || ((uVar1 & 0xff) == 10)) {\n          (*(code *)(PTR_LAB_000f52e8 + 0x1394))(iVar2,uVar1);\n        }\n        if (uVar1 != 0) goto LAB_0007b848;\n      }" if (parenthesized_expression "(((*(char *)(iVar2 + 0x10) == '\x02') && (*(char *)(iVar2 + 4) != '\0')) &&\n         (*(char *)(iVar2 + 5) == '\x01'))" ( (binary_expression "((*(char *)(iVar2 + 0x10) == '\x02') && (*(char *)(iVar2 + 4) != '\0')) &&\n         (*(char *)(iVar2 + 5) == '\x01')" (parenthesized_expression "((*(char *)(iVar2 + 0x10) == '\x02') && (*(char *)(iVar2 + 4) != '\0'))" ( (binary_expression "(*(char *)(iVar2 + 0x10) == '\x02') && (*(char *)(iVar2 + 4) != '\0')" (parenthesized_expression "(*(char *)(iVar2 + 0x10) == '\x02')" ( (binary_expression "*(char *)(iVar2 + 0x10) == '\x02'" (pointer_expression "*(char *)(iVar2 + 0x10)" * (cast_expression "(char *)(iVar2 + 0x10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x10)" ( (binary_expression "iVar2 + 0x10" identifier + number_literal) )))) == (char_literal "'\x02'" ' escape_sequence ')) )) && (parenthesized_expression "(*(char *)(iVar2 + 4) != '\0')" ( (binary_expression "*(char *)(iVar2 + 4) != '\0'" (pointer_expression "*(char *)(iVar2 + 4)" * (cast_expression "(char *)(iVar2 + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 4)" ( (binary_expression "iVar2 + 4" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) ))) )) && (parenthesized_expression "(*(char *)(iVar2 + 5) == '\x01')" ( (binary_expression "*(char *)(iVar2 + 5) == '\x01'" (pointer_expression "*(char *)(iVar2 + 5)" * (cast_expression "(char *)(iVar2 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 5)" ( (binary_expression "iVar2 + 5" identifier + number_literal) )))) == (char_literal "'\x01'" ' escape_sequence ')) ))) )) (compound_statement "{\n        *(undefined1 *)(iVar2 + 0x10) = 1;\n      }" { (expression_statement "*(undefined1 *)(iVar2 + 0x10) = 1;" (assignment_expression "*(undefined1 *)(iVar2 + 0x10) = 1" (pointer_expression "*(undefined1 *)(iVar2 + 0x10)" * (cast_expression "(undefined1 *)(iVar2 + 0x10)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x10)" ( (binary_expression "iVar2 + 0x10" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n        uVar1 = (*(code *)(PTR_LAB_000f52e8 + 0x150))(iVar2,*(undefined1 *)(iVar2 + 0x13),1);\n        if (((uVar1 & 0xff) == 0xd) || ((uVar1 & 0xff) == 10)) {\n          (*(code *)(PTR_LAB_000f52e8 + 0x1394))(iVar2,uVar1);\n        }\n        if (uVar1 != 0) goto LAB_0007b848;\n      }" else (compound_statement "{\n        uVar1 = (*(code *)(PTR_LAB_000f52e8 + 0x150))(iVar2,*(undefined1 *)(iVar2 + 0x13),1);\n        if (((uVar1 & 0xff) == 0xd) || ((uVar1 & 0xff) == 10)) {\n          (*(code *)(PTR_LAB_000f52e8 + 0x1394))(iVar2,uVar1);\n        }\n        if (uVar1 != 0) goto LAB_0007b848;\n      }" { (expression_statement "uVar1 = (*(code *)(PTR_LAB_000f52e8 + 0x150))(iVar2,*(undefined1 *)(iVar2 + 0x13),1);" (assignment_expression "uVar1 = (*(code *)(PTR_LAB_000f52e8 + 0x150))(iVar2,*(undefined1 *)(iVar2 + 0x13),1)" identifier = (call_expression "(*(code *)(PTR_LAB_000f52e8 + 0x150))(iVar2,*(undefined1 *)(iVar2 + 0x13),1)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52e8 + 0x150))" ( (pointer_expression "*(code *)(PTR_LAB_000f52e8 + 0x150)" * (cast_expression "(code *)(PTR_LAB_000f52e8 + 0x150)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52e8 + 0x150)" ( (binary_expression "PTR_LAB_000f52e8 + 0x150" identifier + number_literal) )))) )) (argument_list "(iVar2,*(undefined1 *)(iVar2 + 0x13),1)" ( identifier , (pointer_expression "*(undefined1 *)(iVar2 + 0x13)" * (cast_expression "(undefined1 *)(iVar2 + 0x13)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x13)" ( (binary_expression "iVar2 + 0x13" identifier + number_literal) )))) , number_literal )))) ;) (if_statement "if (((uVar1 & 0xff) == 0xd) || ((uVar1 & 0xff) == 10)) {\n          (*(code *)(PTR_LAB_000f52e8 + 0x1394))(iVar2,uVar1);\n        }" if (parenthesized_expression "(((uVar1 & 0xff) == 0xd) || ((uVar1 & 0xff) == 10))" ( (binary_expression "((uVar1 & 0xff) == 0xd) || ((uVar1 & 0xff) == 10)" (parenthesized_expression "((uVar1 & 0xff) == 0xd)" ( (binary_expression "(uVar1 & 0xff) == 0xd" (parenthesized_expression "(uVar1 & 0xff)" ( (binary_expression "uVar1 & 0xff" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "((uVar1 & 0xff) == 10)" ( (binary_expression "(uVar1 & 0xff) == 10" (parenthesized_expression "(uVar1 & 0xff)" ( (binary_expression "uVar1 & 0xff" identifier & number_literal) )) == number_literal) ))) )) (compound_statement "{\n          (*(code *)(PTR_LAB_000f52e8 + 0x1394))(iVar2,uVar1);\n        }" { (expression_statement "(*(code *)(PTR_LAB_000f52e8 + 0x1394))(iVar2,uVar1);" (call_expression "(*(code *)(PTR_LAB_000f52e8 + 0x1394))(iVar2,uVar1)" (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 "(iVar2,uVar1)" ( identifier , identifier ))) ;) })) (if_statement "if (uVar1 != 0) goto LAB_0007b848;" if (parenthesized_expression "(uVar1 != 0)" ( (binary_expression "uVar1 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0007b848;" goto statement_identifier ;)) }))) }) (else_clause "else {\nLAB_0007b848:\n      if (param_2 == 0) {\n        if (*(char *)(param_1 + 9) == '\0') {\n          return uVar1;\n        }\n        iVar2 = *(int *)(param_1 + 0xc) + -1;\n        *(int *)(param_1 + 0xc) = iVar2;\n        if (iVar2 != 0) {\n          return uVar1;\n        }\n        goto LAB_0007b86c;\n      }\n    }" else (compound_statement "{\nLAB_0007b848:\n      if (param_2 == 0) {\n        if (*(char *)(param_1 + 9) == '\0') {\n          return uVar1;\n        }\n        iVar2 = *(int *)(param_1 + 0xc) + -1;\n        *(int *)(param_1 + 0xc) = iVar2;\n        if (iVar2 != 0) {\n          return uVar1;\n        }\n        goto LAB_0007b86c;\n      }\n    }" { (labeled_statement "LAB_0007b848:\n      if (param_2 == 0) {\n        if (*(char *)(param_1 + 9) == '\0') {\n          return uVar1;\n        }\n        iVar2 = *(int *)(param_1 + 0xc) + -1;\n        *(int *)(param_1 + 0xc) = iVar2;\n        if (iVar2 != 0) {\n          return uVar1;\n        }\n        goto LAB_0007b86c;\n      }" statement_identifier : (if_statement "if (param_2 == 0) {\n        if (*(char *)(param_1 + 9) == '\0') {\n          return uVar1;\n        }\n        iVar2 = *(int *)(param_1 + 0xc) + -1;\n        *(int *)(param_1 + 0xc) = iVar2;\n        if (iVar2 != 0) {\n          return uVar1;\n        }\n        goto LAB_0007b86c;\n      }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n        if (*(char *)(param_1 + 9) == '\0') {\n          return uVar1;\n        }\n        iVar2 = *(int *)(param_1 + 0xc) + -1;\n        *(int *)(param_1 + 0xc) = iVar2;\n        if (iVar2 != 0) {\n          return uVar1;\n        }\n        goto LAB_0007b86c;\n      }" { (if_statement "if (*(char *)(param_1 + 9) == '\0') {\n          return uVar1;\n        }" if (parenthesized_expression "(*(char *)(param_1 + 9) == '\0')" ( (binary_expression "*(char *)(param_1 + 9) == '\0'" (pointer_expression "*(char *)(param_1 + 9)" * (cast_expression "(char *)(param_1 + 9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          return uVar1;\n        }" { (return_statement "return uVar1;" return identifier ;) })) (expression_statement "iVar2 = *(int *)(param_1 + 0xc) + -1;" (assignment_expression "iVar2 = *(int *)(param_1 + 0xc) + -1" identifier = (binary_expression "*(int *)(param_1 + 0xc) + -1" (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)(param_1 + 0xc) = iVar2;" (assignment_expression "*(int *)(param_1 + 0xc) = iVar2" (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar2 != 0) {\n          return uVar1;\n        }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n          return uVar1;\n        }" { (return_statement "return uVar1;" return identifier ;) })) (goto_statement "goto LAB_0007b86c;" goto statement_identifier ;) }))) }))) (expression_statement "iVar2 = piVar3[0x10];" (assignment_expression "iVar2 = piVar3[0x10]" identifier = (subscript_expression "piVar3[0x10]" identifier [ number_literal ])) ;) (expression_statement "pcVar4 = (code *)(PTR_LAB_000f52ec + -0x672c);" (assignment_expression "pcVar4 = (code *)(PTR_LAB_000f52ec + -0x672c)" identifier = (cast_expression "(code *)(PTR_LAB_000f52ec + -0x672c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52ec + -0x672c)" ( (binary_expression "PTR_LAB_000f52ec + -0x672c" identifier + number_literal) )))) ;) (expression_statement "*(int *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + -1;" (assignment_expression "*(int *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + -1" (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 0x14) + -1" (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(undefined1 *)(piVar3 + 5) = 1;" (assignment_expression "*(undefined1 *)(piVar3 + 5) = 1" (pointer_expression "*(undefined1 *)(piVar3 + 5)" * (cast_expression "(undefined1 *)(piVar3 + 5)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar3 + 5)" ( (binary_expression "piVar3 + 5" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(*pcVar4)(iVar2);" (call_expression "(*pcVar4)(iVar2)" (parenthesized_expression "(*pcVar4)" ( (pointer_expression "*pcVar4" * identifier) )) (argument_list "(iVar2)" ( identifier ))) ;) (expression_statement "piVar3[0x10] = 0;" (assignment_expression "piVar3[0x10] = 0" (subscript_expression "piVar3[0x10]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "FUN_0007b584(param_1);" (call_expression "FUN_0007b584(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (if_statement "if (*(char *)(param_1 + 9) != '\0') {\n    uVar1 = *(int *)(param_1 + 0xc) - 1;\n    *(uint *)(param_1 + 0xc) = uVar1;\n    if (uVar1 == 0) {\nLAB_0007b86c:\n      (*(code *)(PTR_LAB_000f52ec + -0x2fa0))(param_1);\n      return uVar1;\n    }\n  }" if (parenthesized_expression "(*(char *)(param_1 + 9) != '\0')" ( (binary_expression "*(char *)(param_1 + 9) != '\0'" (pointer_expression "*(char *)(param_1 + 9)" * (cast_expression "(char *)(param_1 + 9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    uVar1 = *(int *)(param_1 + 0xc) - 1;\n    *(uint *)(param_1 + 0xc) = uVar1;\n    if (uVar1 == 0) {\nLAB_0007b86c:\n      (*(code *)(PTR_LAB_000f52ec + -0x2fa0))(param_1);\n      return uVar1;\n    }\n  }" { (expression_statement "uVar1 = *(int *)(param_1 + 0xc) - 1;" (assignment_expression "uVar1 = *(int *)(param_1 + 0xc) - 1" identifier = (binary_expression "*(int *)(param_1 + 0xc) - 1" (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) - number_literal)) ;) (expression_statement "*(uint *)(param_1 + 0xc) = uVar1;" (assignment_expression "*(uint *)(param_1 + 0xc) = uVar1" (pointer_expression "*(uint *)(param_1 + 0xc)" * (cast_expression "(uint *)(param_1 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = identifier) ;) (if_statement "if (uVar1 == 0) {\nLAB_0007b86c:\n      (*(code *)(PTR_LAB_000f52ec + -0x2fa0))(param_1);\n      return uVar1;\n    }" if (parenthesized_expression "(uVar1 == 0)" ( (binary_expression "uVar1 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0007b86c:\n      (*(code *)(PTR_LAB_000f52ec + -0x2fa0))(param_1);\n      return uVar1;\n    }" { (labeled_statement "LAB_0007b86c:\n      (*(code *)(PTR_LAB_000f52ec + -0x2fa0))(param_1);" statement_identifier : (expression_statement "(*(code *)(PTR_LAB_000f52ec + -0x2fa0))(param_1);" (call_expression "(*(code *)(PTR_LAB_000f52ec + -0x2fa0))(param_1)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52ec + -0x2fa0))" ( (pointer_expression "*(code *)(PTR_LAB_000f52ec + -0x2fa0)" * (cast_expression "(code *)(PTR_LAB_000f52ec + -0x2fa0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52ec + -0x2fa0)" ( (binary_expression "PTR_LAB_000f52ec + -0x2fa0" identifier + number_literal) )))) )) (argument_list "(param_1)" ( identifier ))) ;)) (return_statement "return uVar1;" return identifier ;) })) })) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "int sqlite3BtreeCommitPhaseTwo(Btree *p,int bCleanup)\n\n{\n  uint uVar1;\n  int iVar2;\n  Bitvec *pBVar3;\n  Pager *pPVar4;\n  BtShared *pBVar5;\n  code *pcVar6;\n  \n  if (p->sharable != '\0') {\n    (*(code *)(PTR_LAB_000f52ec + -0x3088))();\n  }\n  if (p->inTrans == '\x02') {\n    pBVar5 = p->pBt;\n    pPVar4 = pBVar5->pPager;\n    uVar1 = pPVar4->errCode;\n    if (uVar1 == 0) {\n      pPVar4->iDataVersion = pPVar4->iDataVersion + 1;\n      if (((pPVar4->eState == '\x02') && (pPVar4->exclusiveMode != '\0')) &&\n         (pPVar4->journalMode == '\x01')) {\n        pPVar4->eState = '\x01';\n      }\n      else {\n        uVar1 = (*(code *)(PTR_DAT_000f52e8 + 0x150))(pPVar4,pPVar4->setSuper,1);\n        if (((uVar1 & 0xff) == 0xd) || ((uVar1 & 0xff) == 10)) {\n          (*(code *)(PTR_DAT_000f52e8 + 0x1394))(pPVar4,uVar1);\n        }\n        if (uVar1 != 0) goto LAB_0007b848;\n      }\n    }\n    else {\nLAB_0007b848:\n      if (bCleanup == 0) {\n        if (p->sharable == '\0') {\n          return uVar1;\n        }\n        iVar2 = p->wantToLock + -1;\n        p->wantToLock = iVar2;\n        if (iVar2 != 0) {\n          return uVar1;\n        }\n        goto LAB_0007b86c;\n      }\n    }\n    pBVar3 = pBVar5->pHasContent;\n    pcVar6 = (code *)(PTR_LAB_000f52ec + -0x672c);\n    p->iDataVersion = p->iDataVersion - 1;\n    pBVar5->inTransaction = '\x01';\n    (*pcVar6)(pBVar3);\n    pBVar5->pHasContent = (Bitvec *)0x0;\n  }\n  btreeEndTransaction(p);\n  if (p->sharable != '\0') {\n    uVar1 = p->wantToLock - 1;\n    p->wantToLock = uVar1;\n    if (uVar1 == 0) {\nLAB_0007b86c:\n      (*(code *)(PTR_LAB_000f52ec + -0x2fa0))(p);\n      return uVar1;\n    }\n  }\n  return 0;\n}\n\n" (function_definition "int sqlite3BtreeCommitPhaseTwo(Btree *p,int bCleanup)\n\n{\n  uint uVar1;\n  int iVar2;\n  Bitvec *pBVar3;\n  Pager *pPVar4;\n  BtShared *pBVar5;\n  code *pcVar6;\n  \n  if (p->sharable != '\0') {\n    (*(code *)(PTR_LAB_000f52ec + -0x3088))();\n  }\n  if (p->inTrans == '\x02') {\n    pBVar5 = p->pBt;\n    pPVar4 = pBVar5->pPager;\n    uVar1 = pPVar4->errCode;\n    if (uVar1 == 0) {\n      pPVar4->iDataVersion = pPVar4->iDataVersion + 1;\n      if (((pPVar4->eState == '\x02') && (pPVar4->exclusiveMode != '\0')) &&\n         (pPVar4->journalMode == '\x01')) {\n        pPVar4->eState = '\x01';\n      }\n      else {\n        uVar1 = (*(code *)(PTR_DAT_000f52e8 + 0x150))(pPVar4,pPVar4->setSuper,1);\n        if (((uVar1 & 0xff) == 0xd) || ((uVar1 & 0xff) == 10)) {\n          (*(code *)(PTR_DAT_000f52e8 + 0x1394))(pPVar4,uVar1);\n        }\n        if (uVar1 != 0) goto LAB_0007b848;\n      }\n    }\n    else {\nLAB_0007b848:\n      if (bCleanup == 0) {\n        if (p->sharable == '\0') {\n          return uVar1;\n        }\n        iVar2 = p->wantToLock + -1;\n        p->wantToLock = iVar2;\n        if (iVar2 != 0) {\n          return uVar1;\n        }\n        goto LAB_0007b86c;\n      }\n    }\n    pBVar3 = pBVar5->pHasContent;\n    pcVar6 = (code *)(PTR_LAB_000f52ec + -0x672c);\n    p->iDataVersion = p->iDataVersion - 1;\n    pBVar5->inTransaction = '\x01';\n    (*pcVar6)(pBVar3);\n    pBVar5->pHasContent = (Bitvec *)0x0;\n  }\n  btreeEndTransaction(p);\n  if (p->sharable != '\0') {\n    uVar1 = p->wantToLock - 1;\n    p->wantToLock = uVar1;\n    if (uVar1 == 0) {\nLAB_0007b86c:\n      (*(code *)(PTR_LAB_000f52ec + -0x2fa0))(p);\n      return uVar1;\n    }\n  }\n  return 0;\n}" primitive_type (function_declarator "sqlite3BtreeCommitPhaseTwo(Btree *p,int bCleanup)" identifier (parameter_list "(Btree *p,int bCleanup)" ( (parameter_declaration "Btree *p" type_identifier (pointer_declarator "*p" * identifier)) , (parameter_declaration "int bCleanup" primitive_type identifier) ))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  Bitvec *pBVar3;\n  Pager *pPVar4;\n  BtShared *pBVar5;\n  code *pcVar6;\n  \n  if (p->sharable != '\0') {\n    (*(code *)(PTR_LAB_000f52ec + -0x3088))();\n  }\n  if (p->inTrans == '\x02') {\n    pBVar5 = p->pBt;\n    pPVar4 = pBVar5->pPager;\n    uVar1 = pPVar4->errCode;\n    if (uVar1 == 0) {\n      pPVar4->iDataVersion = pPVar4->iDataVersion + 1;\n      if (((pPVar4->eState == '\x02') && (pPVar4->exclusiveMode != '\0')) &&\n         (pPVar4->journalMode == '\x01')) {\n        pPVar4->eState = '\x01';\n      }\n      else {\n        uVar1 = (*(code *)(PTR_DAT_000f52e8 + 0x150))(pPVar4,pPVar4->setSuper,1);\n        if (((uVar1 & 0xff) == 0xd) || ((uVar1 & 0xff) == 10)) {\n          (*(code *)(PTR_DAT_000f52e8 + 0x1394))(pPVar4,uVar1);\n        }\n        if (uVar1 != 0) goto LAB_0007b848;\n      }\n    }\n    else {\nLAB_0007b848:\n      if (bCleanup == 0) {\n        if (p->sharable == '\0') {\n          return uVar1;\n        }\n        iVar2 = p->wantToLock + -1;\n        p->wantToLock = iVar2;\n        if (iVar2 != 0) {\n          return uVar1;\n        }\n        goto LAB_0007b86c;\n      }\n    }\n    pBVar3 = pBVar5->pHasContent;\n    pcVar6 = (code *)(PTR_LAB_000f52ec + -0x672c);\n    p->iDataVersion = p->iDataVersion - 1;\n    pBVar5->inTransaction = '\x01';\n    (*pcVar6)(pBVar3);\n    pBVar5->pHasContent = (Bitvec *)0x0;\n  }\n  btreeEndTransaction(p);\n  if (p->sharable != '\0') {\n    uVar1 = p->wantToLock - 1;\n    p->wantToLock = uVar1;\n    if (uVar1 == 0) {\nLAB_0007b86c:\n      (*(code *)(PTR_LAB_000f52ec + -0x2fa0))(p);\n      return uVar1;\n    }\n  }\n  return 0;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "Bitvec *pBVar3;" type_identifier (pointer_declarator "*pBVar3" * identifier) ;) (declaration "Pager *pPVar4;" type_identifier (pointer_declarator "*pPVar4" * identifier) ;) (declaration "BtShared *pBVar5;" type_identifier (pointer_declarator "*pBVar5" * identifier) ;) (declaration "code *pcVar6;" type_identifier (pointer_declarator "*pcVar6" * identifier) ;) (if_statement "if (p->sharable != '\0') {\n    (*(code *)(PTR_LAB_000f52ec + -0x3088))();\n  }" if (parenthesized_expression "(p->sharable != '\0')" ( (binary_expression "p->sharable != '\0'" (field_expression "p->sharable" identifier -> field_identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    (*(code *)(PTR_LAB_000f52ec + -0x3088))();\n  }" { (expression_statement "(*(code *)(PTR_LAB_000f52ec + -0x3088))();" (call_expression "(*(code *)(PTR_LAB_000f52ec + -0x3088))()" (parenthesized_expression "(*(code *)(PTR_LAB_000f52ec + -0x3088))" ( (pointer_expression "*(code *)(PTR_LAB_000f52ec + -0x3088)" * (cast_expression "(code *)(PTR_LAB_000f52ec + -0x3088)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52ec + -0x3088)" ( (binary_expression "PTR_LAB_000f52ec + -0x3088" identifier + number_literal) )))) )) (argument_list "()" ( ))) ;) })) (if_statement "if (p->inTrans == '\x02') {\n    pBVar5 = p->pBt;\n    pPVar4 = pBVar5->pPager;\n    uVar1 = pPVar4->errCode;\n    if (uVar1 == 0) {\n      pPVar4->iDataVersion = pPVar4->iDataVersion + 1;\n      if (((pPVar4->eState == '\x02') && (pPVar4->exclusiveMode != '\0')) &&\n         (pPVar4->journalMode == '\x01')) {\n        pPVar4->eState = '\x01';\n      }\n      else {\n        uVar1 = (*(code *)(PTR_DAT_000f52e8 + 0x150))(pPVar4,pPVar4->setSuper,1);\n        if (((uVar1 & 0xff) == 0xd) || ((uVar1 & 0xff) == 10)) {\n          (*(code *)(PTR_DAT_000f52e8 + 0x1394))(pPVar4,uVar1);\n        }\n        if (uVar1 != 0) goto LAB_0007b848;\n      }\n    }\n    else {\nLAB_0007b848:\n      if (bCleanup == 0) {\n        if (p->sharable == '\0') {\n          return uVar1;\n        }\n        iVar2 = p->wantToLock + -1;\n        p->wantToLock = iVar2;\n        if (iVar2 != 0) {\n          return uVar1;\n        }\n        goto LAB_0007b86c;\n      }\n    }\n    pBVar3 = pBVar5->pHasContent;\n    pcVar6 = (code *)(PTR_LAB_000f52ec + -0x672c);\n    p->iDataVersion = p->iDataVersion - 1;\n    pBVar5->inTransaction = '\x01';\n    (*pcVar6)(pBVar3);\n    pBVar5->pHasContent = (Bitvec *)0x0;\n  }" if (parenthesized_expression "(p->inTrans == '\x02')" ( (binary_expression "p->inTrans == '\x02'" (field_expression "p->inTrans" identifier -> field_identifier) == (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n    pBVar5 = p->pBt;\n    pPVar4 = pBVar5->pPager;\n    uVar1 = pPVar4->errCode;\n    if (uVar1 == 0) {\n      pPVar4->iDataVersion = pPVar4->iDataVersion + 1;\n      if (((pPVar4->eState == '\x02') && (pPVar4->exclusiveMode != '\0')) &&\n         (pPVar4->journalMode == '\x01')) {\n        pPVar4->eState = '\x01';\n      }\n      else {\n        uVar1 = (*(code *)(PTR_DAT_000f52e8 + 0x150))(pPVar4,pPVar4->setSuper,1);\n        if (((uVar1 & 0xff) == 0xd) || ((uVar1 & 0xff) == 10)) {\n          (*(code *)(PTR_DAT_000f52e8 + 0x1394))(pPVar4,uVar1);\n        }\n        if (uVar1 != 0) goto LAB_0007b848;\n      }\n    }\n    else {\nLAB_0007b848:\n      if (bCleanup == 0) {\n        if (p->sharable == '\0') {\n          return uVar1;\n        }\n        iVar2 = p->wantToLock + -1;\n        p->wantToLock = iVar2;\n        if (iVar2 != 0) {\n          return uVar1;\n        }\n        goto LAB_0007b86c;\n      }\n    }\n    pBVar3 = pBVar5->pHasContent;\n    pcVar6 = (code *)(PTR_LAB_000f52ec + -0x672c);\n    p->iDataVersion = p->iDataVersion - 1;\n    pBVar5->inTransaction = '\x01';\n    (*pcVar6)(pBVar3);\n    pBVar5->pHasContent = (Bitvec *)0x0;\n  }" { (expression_statement "pBVar5 = p->pBt;" (assignment_expression "pBVar5 = p->pBt" identifier = (field_expression "p->pBt" identifier -> field_identifier)) ;) (expression_statement "pPVar4 = pBVar5->pPager;" (assignment_expression "pPVar4 = pBVar5->pPager" identifier = (field_expression "pBVar5->pPager" identifier -> field_identifier)) ;) (expression_statement "uVar1 = pPVar4->errCode;" (assignment_expression "uVar1 = pPVar4->errCode" identifier = (field_expression "pPVar4->errCode" identifier -> field_identifier)) ;) (if_statement "if (uVar1 == 0) {\n      pPVar4->iDataVersion = pPVar4->iDataVersion + 1;\n      if (((pPVar4->eState == '\x02') && (pPVar4->exclusiveMode != '\0')) &&\n         (pPVar4->journalMode == '\x01')) {\n        pPVar4->eState = '\x01';\n      }\n      else {\n        uVar1 = (*(code *)(PTR_DAT_000f52e8 + 0x150))(pPVar4,pPVar4->setSuper,1);\n        if (((uVar1 & 0xff) == 0xd) || ((uVar1 & 0xff) == 10)) {\n          (*(code *)(PTR_DAT_000f52e8 + 0x1394))(pPVar4,uVar1);\n        }\n        if (uVar1 != 0) goto LAB_0007b848;\n      }\n    }\n    else {\nLAB_0007b848:\n      if (bCleanup == 0) {\n        if (p->sharable == '\0') {\n          return uVar1;\n        }\n        iVar2 = p->wantToLock + -1;\n        p->wantToLock = iVar2;\n        if (iVar2 != 0) {\n          return uVar1;\n        }\n        goto LAB_0007b86c;\n      }\n    }" if (parenthesized_expression "(uVar1 == 0)" ( (binary_expression "uVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      pPVar4->iDataVersion = pPVar4->iDataVersion + 1;\n      if (((pPVar4->eState == '\x02') && (pPVar4->exclusiveMode != '\0')) &&\n         (pPVar4->journalMode == '\x01')) {\n        pPVar4->eState = '\x01';\n      }\n      else {\n        uVar1 = (*(code *)(PTR_DAT_000f52e8 + 0x150))(pPVar4,pPVar4->setSuper,1);\n        if (((uVar1 & 0xff) == 0xd) || ((uVar1 & 0xff) == 10)) {\n          (*(code *)(PTR_DAT_000f52e8 + 0x1394))(pPVar4,uVar1);\n        }\n        if (uVar1 != 0) goto LAB_0007b848;\n      }\n    }" { (expression_statement "pPVar4->iDataVersion = pPVar4->iDataVersion + 1;" (assignment_expression "pPVar4->iDataVersion = pPVar4->iDataVersion + 1" (field_expression "pPVar4->iDataVersion" identifier -> field_identifier) = (binary_expression "pPVar4->iDataVersion + 1" (field_expression "pPVar4->iDataVersion" identifier -> field_identifier) + number_literal)) ;) (if_statement "if (((pPVar4->eState == '\x02') && (pPVar4->exclusiveMode != '\0')) &&\n         (pPVar4->journalMode == '\x01')) {\n        pPVar4->eState = '\x01';\n      }\n      else {\n        uVar1 = (*(code *)(PTR_DAT_000f52e8 + 0x150))(pPVar4,pPVar4->setSuper,1);\n        if (((uVar1 & 0xff) == 0xd) || ((uVar1 & 0xff) == 10)) {\n          (*(code *)(PTR_DAT_000f52e8 + 0x1394))(pPVar4,uVar1);\n        }\n        if (uVar1 != 0) goto LAB_0007b848;\n      }" if (parenthesized_expression "(((pPVar4->eState == '\x02') && (pPVar4->exclusiveMode != '\0')) &&\n         (pPVar4->journalMode == '\x01'))" ( (binary_expression "((pPVar4->eState == '\x02') && (pPVar4->exclusiveMode != '\0')) &&\n         (pPVar4->journalMode == '\x01')" (parenthesized_expression "((pPVar4->eState == '\x02') && (pPVar4->exclusiveMode != '\0'))" ( (binary_expression "(pPVar4->eState == '\x02') && (pPVar4->exclusiveMode != '\0')" (parenthesized_expression "(pPVar4->eState == '\x02')" ( (binary_expression "pPVar4->eState == '\x02'" (field_expression "pPVar4->eState" identifier -> field_identifier) == (char_literal "'\x02'" ' escape_sequence ')) )) && (parenthesized_expression "(pPVar4->exclusiveMode != '\0')" ( (binary_expression "pPVar4->exclusiveMode != '\0'" (field_expression "pPVar4->exclusiveMode" identifier -> field_identifier) != (char_literal "'\0'" ' escape_sequence ')) ))) )) && (parenthesized_expression "(pPVar4->journalMode == '\x01')" ( (binary_expression "pPVar4->journalMode == '\x01'" (field_expression "pPVar4->journalMode" identifier -> field_identifier) == (char_literal "'\x01'" ' escape_sequence ')) ))) )) (compound_statement "{\n        pPVar4->eState = '\x01';\n      }" { (expression_statement "pPVar4->eState = '\x01';" (assignment_expression "pPVar4->eState = '\x01'" (field_expression "pPVar4->eState" identifier -> field_identifier) = (char_literal "'\x01'" ' escape_sequence ')) ;) }) (else_clause "else {\n        uVar1 = (*(code *)(PTR_DAT_000f52e8 + 0x150))(pPVar4,pPVar4->setSuper,1);\n        if (((uVar1 & 0xff) == 0xd) || ((uVar1 & 0xff) == 10)) {\n          (*(code *)(PTR_DAT_000f52e8 + 0x1394))(pPVar4,uVar1);\n        }\n        if (uVar1 != 0) goto LAB_0007b848;\n      }" else (compound_statement "{\n        uVar1 = (*(code *)(PTR_DAT_000f52e8 + 0x150))(pPVar4,pPVar4->setSuper,1);\n        if (((uVar1 & 0xff) == 0xd) || ((uVar1 & 0xff) == 10)) {\n          (*(code *)(PTR_DAT_000f52e8 + 0x1394))(pPVar4,uVar1);\n        }\n        if (uVar1 != 0) goto LAB_0007b848;\n      }" { (expression_statement "uVar1 = (*(code *)(PTR_DAT_000f52e8 + 0x150))(pPVar4,pPVar4->setSuper,1);" (assignment_expression "uVar1 = (*(code *)(PTR_DAT_000f52e8 + 0x150))(pPVar4,pPVar4->setSuper,1)" identifier = (call_expression "(*(code *)(PTR_DAT_000f52e8 + 0x150))(pPVar4,pPVar4->setSuper,1)" (parenthesized_expression "(*(code *)(PTR_DAT_000f52e8 + 0x150))" ( (pointer_expression "*(code *)(PTR_DAT_000f52e8 + 0x150)" * (cast_expression "(code *)(PTR_DAT_000f52e8 + 0x150)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000f52e8 + 0x150)" ( (binary_expression "PTR_DAT_000f52e8 + 0x150" identifier + number_literal) )))) )) (argument_list "(pPVar4,pPVar4->setSuper,1)" ( identifier , (field_expression "pPVar4->setSuper" identifier -> field_identifier) , number_literal )))) ;) (if_statement "if (((uVar1 & 0xff) == 0xd) || ((uVar1 & 0xff) == 10)) {\n          (*(code *)(PTR_DAT_000f52e8 + 0x1394))(pPVar4,uVar1);\n        }" if (parenthesized_expression "(((uVar1 & 0xff) == 0xd) || ((uVar1 & 0xff) == 10))" ( (binary_expression "((uVar1 & 0xff) == 0xd) || ((uVar1 & 0xff) == 10)" (parenthesized_expression "((uVar1 & 0xff) == 0xd)" ( (binary_expression "(uVar1 & 0xff) == 0xd" (parenthesized_expression "(uVar1 & 0xff)" ( (binary_expression "uVar1 & 0xff" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "((uVar1 & 0xff) == 10)" ( (binary_expression "(uVar1 & 0xff) == 10" (parenthesized_expression "(uVar1 & 0xff)" ( (binary_expression "uVar1 & 0xff" identifier & number_literal) )) == number_literal) ))) )) (compound_statement "{\n          (*(code *)(PTR_DAT_000f52e8 + 0x1394))(pPVar4,uVar1);\n        }" { (expression_statement "(*(code *)(PTR_DAT_000f52e8 + 0x1394))(pPVar4,uVar1);" (call_expression "(*(code *)(PTR_DAT_000f52e8 + 0x1394))(pPVar4,uVar1)" (parenthesized_expression "(*(code *)(PTR_DAT_000f52e8 + 0x1394))" ( (pointer_expression "*(code *)(PTR_DAT_000f52e8 + 0x1394)" * (cast_expression "(code *)(PTR_DAT_000f52e8 + 0x1394)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000f52e8 + 0x1394)" ( (binary_expression "PTR_DAT_000f52e8 + 0x1394" identifier + number_literal) )))) )) (argument_list "(pPVar4,uVar1)" ( identifier , identifier ))) ;) })) (if_statement "if (uVar1 != 0) goto LAB_0007b848;" if (parenthesized_expression "(uVar1 != 0)" ( (binary_expression "uVar1 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0007b848;" goto statement_identifier ;)) }))) }) (else_clause "else {\nLAB_0007b848:\n      if (bCleanup == 0) {\n        if (p->sharable == '\0') {\n          return uVar1;\n        }\n        iVar2 = p->wantToLock + -1;\n        p->wantToLock = iVar2;\n        if (iVar2 != 0) {\n          return uVar1;\n        }\n        goto LAB_0007b86c;\n      }\n    }" else (compound_statement "{\nLAB_0007b848:\n      if (bCleanup == 0) {\n        if (p->sharable == '\0') {\n          return uVar1;\n        }\n        iVar2 = p->wantToLock + -1;\n        p->wantToLock = iVar2;\n        if (iVar2 != 0) {\n          return uVar1;\n        }\n        goto LAB_0007b86c;\n      }\n    }" { (labeled_statement "LAB_0007b848:\n      if (bCleanup == 0) {\n        if (p->sharable == '\0') {\n          return uVar1;\n        }\n        iVar2 = p->wantToLock + -1;\n        p->wantToLock = iVar2;\n        if (iVar2 != 0) {\n          return uVar1;\n        }\n        goto LAB_0007b86c;\n      }" statement_identifier : (if_statement "if (bCleanup == 0) {\n        if (p->sharable == '\0') {\n          return uVar1;\n        }\n        iVar2 = p->wantToLock + -1;\n        p->wantToLock = iVar2;\n        if (iVar2 != 0) {\n          return uVar1;\n        }\n        goto LAB_0007b86c;\n      }" if (parenthesized_expression "(bCleanup == 0)" ( (binary_expression "bCleanup == 0" identifier == number_literal) )) (compound_statement "{\n        if (p->sharable == '\0') {\n          return uVar1;\n        }\n        iVar2 = p->wantToLock + -1;\n        p->wantToLock = iVar2;\n        if (iVar2 != 0) {\n          return uVar1;\n        }\n        goto LAB_0007b86c;\n      }" { (if_statement "if (p->sharable == '\0') {\n          return uVar1;\n        }" if (parenthesized_expression "(p->sharable == '\0')" ( (binary_expression "p->sharable == '\0'" (field_expression "p->sharable" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          return uVar1;\n        }" { (return_statement "return uVar1;" return identifier ;) })) (expression_statement "iVar2 = p->wantToLock + -1;" (assignment_expression "iVar2 = p->wantToLock + -1" identifier = (binary_expression "p->wantToLock + -1" (field_expression "p->wantToLock" identifier -> field_identifier) + number_literal)) ;) (expression_statement "p->wantToLock = iVar2;" (assignment_expression "p->wantToLock = iVar2" (field_expression "p->wantToLock" identifier -> field_identifier) = identifier) ;) (if_statement "if (iVar2 != 0) {\n          return uVar1;\n        }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n          return uVar1;\n        }" { (return_statement "return uVar1;" return identifier ;) })) (goto_statement "goto LAB_0007b86c;" goto statement_identifier ;) }))) }))) (expression_statement "pBVar3 = pBVar5->pHasContent;" (assignment_expression "pBVar3 = pBVar5->pHasContent" identifier = (field_expression "pBVar5->pHasContent" identifier -> field_identifier)) ;) (expression_statement "pcVar6 = (code *)(PTR_LAB_000f52ec + -0x672c);" (assignment_expression "pcVar6 = (code *)(PTR_LAB_000f52ec + -0x672c)" identifier = (cast_expression "(code *)(PTR_LAB_000f52ec + -0x672c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52ec + -0x672c)" ( (binary_expression "PTR_LAB_000f52ec + -0x672c" identifier + number_literal) )))) ;) (expression_statement "p->iDataVersion = p->iDataVersion - 1;" (assignment_expression "p->iDataVersion = p->iDataVersion - 1" (field_expression "p->iDataVersion" identifier -> field_identifier) = (binary_expression "p->iDataVersion - 1" (field_expression "p->iDataVersion" identifier -> field_identifier) - number_literal)) ;) (expression_statement "pBVar5->inTransaction = '\x01';" (assignment_expression "pBVar5->inTransaction = '\x01'" (field_expression "pBVar5->inTransaction" identifier -> field_identifier) = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "(*pcVar6)(pBVar3);" (call_expression "(*pcVar6)(pBVar3)" (parenthesized_expression "(*pcVar6)" ( (pointer_expression "*pcVar6" * identifier) )) (argument_list "(pBVar3)" ( identifier ))) ;) (expression_statement "pBVar5->pHasContent = (Bitvec *)0x0;" (assignment_expression "pBVar5->pHasContent = (Bitvec *)0x0" (field_expression "pBVar5->pHasContent" identifier -> field_identifier) = (cast_expression "(Bitvec *)0x0" ( (type_descriptor "Bitvec *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "btreeEndTransaction(p);" (call_expression "btreeEndTransaction(p)" identifier (argument_list "(p)" ( identifier ))) ;) (if_statement "if (p->sharable != '\0') {\n    uVar1 = p->wantToLock - 1;\n    p->wantToLock = uVar1;\n    if (uVar1 == 0) {\nLAB_0007b86c:\n      (*(code *)(PTR_LAB_000f52ec + -0x2fa0))(p);\n      return uVar1;\n    }\n  }" if (parenthesized_expression "(p->sharable != '\0')" ( (binary_expression "p->sharable != '\0'" (field_expression "p->sharable" identifier -> field_identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    uVar1 = p->wantToLock - 1;\n    p->wantToLock = uVar1;\n    if (uVar1 == 0) {\nLAB_0007b86c:\n      (*(code *)(PTR_LAB_000f52ec + -0x2fa0))(p);\n      return uVar1;\n    }\n  }" { (expression_statement "uVar1 = p->wantToLock - 1;" (assignment_expression "uVar1 = p->wantToLock - 1" identifier = (binary_expression "p->wantToLock - 1" (field_expression "p->wantToLock" identifier -> field_identifier) - number_literal)) ;) (expression_statement "p->wantToLock = uVar1;" (assignment_expression "p->wantToLock = uVar1" (field_expression "p->wantToLock" identifier -> field_identifier) = identifier) ;) (if_statement "if (uVar1 == 0) {\nLAB_0007b86c:\n      (*(code *)(PTR_LAB_000f52ec + -0x2fa0))(p);\n      return uVar1;\n    }" if (parenthesized_expression "(uVar1 == 0)" ( (binary_expression "uVar1 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0007b86c:\n      (*(code *)(PTR_LAB_000f52ec + -0x2fa0))(p);\n      return uVar1;\n    }" { (labeled_statement "LAB_0007b86c:\n      (*(code *)(PTR_LAB_000f52ec + -0x2fa0))(p);" statement_identifier : (expression_statement "(*(code *)(PTR_LAB_000f52ec + -0x2fa0))(p);" (call_expression "(*(code *)(PTR_LAB_000f52ec + -0x2fa0))(p)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52ec + -0x2fa0))" ( (pointer_expression "*(code *)(PTR_LAB_000f52ec + -0x2fa0)" * (cast_expression "(code *)(PTR_LAB_000f52ec + -0x2fa0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52ec + -0x2fa0)" ( (binary_expression "PTR_LAB_000f52ec + -0x2fa0" identifier + number_literal) )))) )) (argument_list "(p)" ( identifier ))) ;)) (return_statement "return uVar1;" return identifier ;) })) })) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "uint FUN_0007b714(int param_1,int param_2)\n\n{\n  uint uVar1;\n  int iVar2;\n  int *piVar3;\n  code *pcVar4;\n  \n  if (*(char *)(param_1 + 9) != '\0') {\n    (*(code *)(PTR_LAB_000f52ec + -0x3088))();\n  }\n  if (*(char *)(param_1 + 8) == '\x02') {\n    piVar3 = *(int **)(param_1 + 4);\n    iVar2 = *piVar3;\n    uVar1 = *(uint *)(iVar2 + 0x28);\n    if (uVar1 == 0) {\n      *(int *)(iVar2 + 100) = *(int *)(iVar2 + 100) + 1;\n      if (((*(char *)(iVar2 + 0x10) == '\x02') && (*(char *)(iVar2 + 4) != '\0')) &&\n         (*(char *)(iVar2 + 5) == '\x01')) {\n        *(undefined1 *)(iVar2 + 0x10) = 1;\n      }\n      else {\n        uVar1 = (*(code *)(PTR_LAB_000f52e8 + 0x150))(iVar2,*(undefined1 *)(iVar2 + 0x13),1);\n        if (((uVar1 & 0xff) == 0xd) || ((uVar1 & 0xff) == 10)) {\n          (*(code *)(PTR_LAB_000f52e8 + 0x1394))(iVar2,uVar1);\n        }\n        if (uVar1 != 0) goto LAB_0007b848;\n      }\n    }\n    else {\nLAB_0007b848:\n      if (param_2 == 0) {\n        if (*(char *)(param_1 + 9) == '\0') {\n          return uVar1;\n        }\n        iVar2 = *(int *)(param_1 + 0xc) + -1;\n        *(int *)(param_1 + 0xc) = iVar2;\n        if (iVar2 != 0) {\n          return uVar1;\n        }\n        goto LAB_0007b86c;\n      }\n    }\n    iVar2 = piVar3[0x10];\n    pcVar4 = (code *)(PTR_LAB_000f52ec + -0x672c);\n    *(int *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + -1;\n    *(undefined1 *)(piVar3 + 5) = 1;\n    (*pcVar4)(iVar2);\n    piVar3[0x10] = 0;\n  }\n  FUN_0007b584(param_1);\n  if (*(char *)(param_1 + 9) != '\0') {\n    uVar1 = *(int *)(param_1 + 0xc) - 1;\n    *(uint *)(param_1 + 0xc) = uVar1;\n    if (uVar1 == 0) {\nLAB_0007b86c:\n      (*(code *)(PTR_LAB_000f52ec + -0x2fa0))(param_1);\n      return uVar1;\n    }\n  }\n  return 0;\n}\n\n" (function_definition "uint FUN_0007b714(int param_1,int param_2)\n\n{\n  uint uVar1;\n  int iVar2;\n  int *piVar3;\n  code *pcVar4;\n  \n  if (*(char *)(param_1 + 9) != '\0') {\n    (*(code *)(PTR_LAB_000f52ec + -0x3088))();\n  }\n  if (*(char *)(param_1 + 8) == '\x02') {\n    piVar3 = *(int **)(param_1 + 4);\n    iVar2 = *piVar3;\n    uVar1 = *(uint *)(iVar2 + 0x28);\n    if (uVar1 == 0) {\n      *(int *)(iVar2 + 100) = *(int *)(iVar2 + 100) + 1;\n      if (((*(char *)(iVar2 + 0x10) == '\x02') && (*(char *)(iVar2 + 4) != '\0')) &&\n         (*(char *)(iVar2 + 5) == '\x01')) {\n        *(undefined1 *)(iVar2 + 0x10) = 1;\n      }\n      else {\n        uVar1 = (*(code *)(PTR_LAB_000f52e8 + 0x150))(iVar2,*(undefined1 *)(iVar2 + 0x13),1);\n        if (((uVar1 & 0xff) == 0xd) || ((uVar1 & 0xff) == 10)) {\n          (*(code *)(PTR_LAB_000f52e8 + 0x1394))(iVar2,uVar1);\n        }\n        if (uVar1 != 0) goto LAB_0007b848;\n      }\n    }\n    else {\nLAB_0007b848:\n      if (param_2 == 0) {\n        if (*(char *)(param_1 + 9) == '\0') {\n          return uVar1;\n        }\n        iVar2 = *(int *)(param_1 + 0xc) + -1;\n        *(int *)(param_1 + 0xc) = iVar2;\n        if (iVar2 != 0) {\n          return uVar1;\n        }\n        goto LAB_0007b86c;\n      }\n    }\n    iVar2 = piVar3[0x10];\n    pcVar4 = (code *)(PTR_LAB_000f52ec + -0x672c);\n    *(int *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + -1;\n    *(undefined1 *)(piVar3 + 5) = 1;\n    (*pcVar4)(iVar2);\n    piVar3[0x10] = 0;\n  }\n  FUN_0007b584(param_1);\n  if (*(char *)(param_1 + 9) != '\0') {\n    uVar1 = *(int *)(param_1 + 0xc) - 1;\n    *(uint *)(param_1 + 0xc) = uVar1;\n    if (uVar1 == 0) {\nLAB_0007b86c:\n      (*(code *)(PTR_LAB_000f52ec + -0x2fa0))(param_1);\n      return uVar1;\n    }\n  }\n  return 0;\n}" type_identifier (function_declarator "FUN_0007b714(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  uint uVar1;\n  int iVar2;\n  int *piVar3;\n  code *pcVar4;\n  \n  if (*(char *)(param_1 + 9) != '\0') {\n    (*(code *)(PTR_LAB_000f52ec + -0x3088))();\n  }\n  if (*(char *)(param_1 + 8) == '\x02') {\n    piVar3 = *(int **)(param_1 + 4);\n    iVar2 = *piVar3;\n    uVar1 = *(uint *)(iVar2 + 0x28);\n    if (uVar1 == 0) {\n      *(int *)(iVar2 + 100) = *(int *)(iVar2 + 100) + 1;\n      if (((*(char *)(iVar2 + 0x10) == '\x02') && (*(char *)(iVar2 + 4) != '\0')) &&\n         (*(char *)(iVar2 + 5) == '\x01')) {\n        *(undefined1 *)(iVar2 + 0x10) = 1;\n      }\n      else {\n        uVar1 = (*(code *)(PTR_LAB_000f52e8 + 0x150))(iVar2,*(undefined1 *)(iVar2 + 0x13),1);\n        if (((uVar1 & 0xff) == 0xd) || ((uVar1 & 0xff) == 10)) {\n          (*(code *)(PTR_LAB_000f52e8 + 0x1394))(iVar2,uVar1);\n        }\n        if (uVar1 != 0) goto LAB_0007b848;\n      }\n    }\n    else {\nLAB_0007b848:\n      if (param_2 == 0) {\n        if (*(char *)(param_1 + 9) == '\0') {\n          return uVar1;\n        }\n        iVar2 = *(int *)(param_1 + 0xc) + -1;\n        *(int *)(param_1 + 0xc) = iVar2;\n        if (iVar2 != 0) {\n          return uVar1;\n        }\n        goto LAB_0007b86c;\n      }\n    }\n    iVar2 = piVar3[0x10];\n    pcVar4 = (code *)(PTR_LAB_000f52ec + -0x672c);\n    *(int *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + -1;\n    *(undefined1 *)(piVar3 + 5) = 1;\n    (*pcVar4)(iVar2);\n    piVar3[0x10] = 0;\n  }\n  FUN_0007b584(param_1);\n  if (*(char *)(param_1 + 9) != '\0') {\n    uVar1 = *(int *)(param_1 + 0xc) - 1;\n    *(uint *)(param_1 + 0xc) = uVar1;\n    if (uVar1 == 0) {\nLAB_0007b86c:\n      (*(code *)(PTR_LAB_000f52ec + -0x2fa0))(param_1);\n      return uVar1;\n    }\n  }\n  return 0;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "code *pcVar4;" type_identifier (pointer_declarator "*pcVar4" * identifier) ;) (if_statement "if (*(char *)(param_1 + 9) != '\0') {\n    (*(code *)(PTR_LAB_000f52ec + -0x3088))();\n  }" if (parenthesized_expression "(*(char *)(param_1 + 9) != '\0')" ( (binary_expression "*(char *)(param_1 + 9) != '\0'" (pointer_expression "*(char *)(param_1 + 9)" * (cast_expression "(char *)(param_1 + 9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    (*(code *)(PTR_LAB_000f52ec + -0x3088))();\n  }" { (expression_statement "(*(code *)(PTR_LAB_000f52ec + -0x3088))();" (call_expression "(*(code *)(PTR_LAB_000f52ec + -0x3088))()" (parenthesized_expression "(*(code *)(PTR_LAB_000f52ec + -0x3088))" ( (pointer_expression "*(code *)(PTR_LAB_000f52ec + -0x3088)" * (cast_expression "(code *)(PTR_LAB_000f52ec + -0x3088)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52ec + -0x3088)" ( (binary_expression "PTR_LAB_000f52ec + -0x3088" identifier + number_literal) )))) )) (argument_list "()" ( ))) ;) })) (if_statement "if (*(char *)(param_1 + 8) == '\x02') {\n    piVar3 = *(int **)(param_1 + 4);\n    iVar2 = *piVar3;\n    uVar1 = *(uint *)(iVar2 + 0x28);\n    if (uVar1 == 0) {\n      *(int *)(iVar2 + 100) = *(int *)(iVar2 + 100) + 1;\n      if (((*(char *)(iVar2 + 0x10) == '\x02') && (*(char *)(iVar2 + 4) != '\0')) &&\n         (*(char *)(iVar2 + 5) == '\x01')) {\n        *(undefined1 *)(iVar2 + 0x10) = 1;\n      }\n      else {\n        uVar1 = (*(code *)(PTR_LAB_000f52e8 + 0x150))(iVar2,*(undefined1 *)(iVar2 + 0x13),1);\n        if (((uVar1 & 0xff) == 0xd) || ((uVar1 & 0xff) == 10)) {\n          (*(code *)(PTR_LAB_000f52e8 + 0x1394))(iVar2,uVar1);\n        }\n        if (uVar1 != 0) goto LAB_0007b848;\n      }\n    }\n    else {\nLAB_0007b848:\n      if (param_2 == 0) {\n        if (*(char *)(param_1 + 9) == '\0') {\n          return uVar1;\n        }\n        iVar2 = *(int *)(param_1 + 0xc) + -1;\n        *(int *)(param_1 + 0xc) = iVar2;\n        if (iVar2 != 0) {\n          return uVar1;\n        }\n        goto LAB_0007b86c;\n      }\n    }\n    iVar2 = piVar3[0x10];\n    pcVar4 = (code *)(PTR_LAB_000f52ec + -0x672c);\n    *(int *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + -1;\n    *(undefined1 *)(piVar3 + 5) = 1;\n    (*pcVar4)(iVar2);\n    piVar3[0x10] = 0;\n  }" if (parenthesized_expression "(*(char *)(param_1 + 8) == '\x02')" ( (binary_expression "*(char *)(param_1 + 8) == '\x02'" (pointer_expression "*(char *)(param_1 + 8)" * (cast_expression "(char *)(param_1 + 8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) == (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n    piVar3 = *(int **)(param_1 + 4);\n    iVar2 = *piVar3;\n    uVar1 = *(uint *)(iVar2 + 0x28);\n    if (uVar1 == 0) {\n      *(int *)(iVar2 + 100) = *(int *)(iVar2 + 100) + 1;\n      if (((*(char *)(iVar2 + 0x10) == '\x02') && (*(char *)(iVar2 + 4) != '\0')) &&\n         (*(char *)(iVar2 + 5) == '\x01')) {\n        *(undefined1 *)(iVar2 + 0x10) = 1;\n      }\n      else {\n        uVar1 = (*(code *)(PTR_LAB_000f52e8 + 0x150))(iVar2,*(undefined1 *)(iVar2 + 0x13),1);\n        if (((uVar1 & 0xff) == 0xd) || ((uVar1 & 0xff) == 10)) {\n          (*(code *)(PTR_LAB_000f52e8 + 0x1394))(iVar2,uVar1);\n        }\n        if (uVar1 != 0) goto LAB_0007b848;\n      }\n    }\n    else {\nLAB_0007b848:\n      if (param_2 == 0) {\n        if (*(char *)(param_1 + 9) == '\0') {\n          return uVar1;\n        }\n        iVar2 = *(int *)(param_1 + 0xc) + -1;\n        *(int *)(param_1 + 0xc) = iVar2;\n        if (iVar2 != 0) {\n          return uVar1;\n        }\n        goto LAB_0007b86c;\n      }\n    }\n    iVar2 = piVar3[0x10];\n    pcVar4 = (code *)(PTR_LAB_000f52ec + -0x672c);\n    *(int *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + -1;\n    *(undefined1 *)(piVar3 + 5) = 1;\n    (*pcVar4)(iVar2);\n    piVar3[0x10] = 0;\n  }" { (expression_statement "piVar3 = *(int **)(param_1 + 4);" (assignment_expression "piVar3 = *(int **)(param_1 + 4)" identifier = (pointer_expression "*(int **)(param_1 + 4)" * (cast_expression "(int **)(param_1 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (expression_statement "iVar2 = *piVar3;" (assignment_expression "iVar2 = *piVar3" identifier = (pointer_expression "*piVar3" * identifier)) ;) (expression_statement "uVar1 = *(uint *)(iVar2 + 0x28);" (assignment_expression "uVar1 = *(uint *)(iVar2 + 0x28)" identifier = (pointer_expression "*(uint *)(iVar2 + 0x28)" * (cast_expression "(uint *)(iVar2 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x28)" ( (binary_expression "iVar2 + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (uVar1 == 0) {\n      *(int *)(iVar2 + 100) = *(int *)(iVar2 + 100) + 1;\n      if (((*(char *)(iVar2 + 0x10) == '\x02') && (*(char *)(iVar2 + 4) != '\0')) &&\n         (*(char *)(iVar2 + 5) == '\x01')) {\n        *(undefined1 *)(iVar2 + 0x10) = 1;\n      }\n      else {\n        uVar1 = (*(code *)(PTR_LAB_000f52e8 + 0x150))(iVar2,*(undefined1 *)(iVar2 + 0x13),1);\n        if (((uVar1 & 0xff) == 0xd) || ((uVar1 & 0xff) == 10)) {\n          (*(code *)(PTR_LAB_000f52e8 + 0x1394))(iVar2,uVar1);\n        }\n        if (uVar1 != 0) goto LAB_0007b848;\n      }\n    }\n    else {\nLAB_0007b848:\n      if (param_2 == 0) {\n        if (*(char *)(param_1 + 9) == '\0') {\n          return uVar1;\n        }\n        iVar2 = *(int *)(param_1 + 0xc) + -1;\n        *(int *)(param_1 + 0xc) = iVar2;\n        if (iVar2 != 0) {\n          return uVar1;\n        }\n        goto LAB_0007b86c;\n      }\n    }" if (parenthesized_expression "(uVar1 == 0)" ( (binary_expression "uVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      *(int *)(iVar2 + 100) = *(int *)(iVar2 + 100) + 1;\n      if (((*(char *)(iVar2 + 0x10) == '\x02') && (*(char *)(iVar2 + 4) != '\0')) &&\n         (*(char *)(iVar2 + 5) == '\x01')) {\n        *(undefined1 *)(iVar2 + 0x10) = 1;\n      }\n      else {\n        uVar1 = (*(code *)(PTR_LAB_000f52e8 + 0x150))(iVar2,*(undefined1 *)(iVar2 + 0x13),1);\n        if (((uVar1 & 0xff) == 0xd) || ((uVar1 & 0xff) == 10)) {\n          (*(code *)(PTR_LAB_000f52e8 + 0x1394))(iVar2,uVar1);\n        }\n        if (uVar1 != 0) goto LAB_0007b848;\n      }\n    }" { (expression_statement "*(int *)(iVar2 + 100) = *(int *)(iVar2 + 100) + 1;" (assignment_expression "*(int *)(iVar2 + 100) = *(int *)(iVar2 + 100) + 1" (pointer_expression "*(int *)(iVar2 + 100)" * (cast_expression "(int *)(iVar2 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 100)" ( (binary_expression "iVar2 + 100" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar2 + 100) + 1" (pointer_expression "*(int *)(iVar2 + 100)" * (cast_expression "(int *)(iVar2 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 100)" ( (binary_expression "iVar2 + 100" identifier + number_literal) )))) + number_literal)) ;) (if_statement "if (((*(char *)(iVar2 + 0x10) == '\x02') && (*(char *)(iVar2 + 4) != '\0')) &&\n         (*(char *)(iVar2 + 5) == '\x01')) {\n        *(undefined1 *)(iVar2 + 0x10) = 1;\n      }\n      else {\n        uVar1 = (*(code *)(PTR_LAB_000f52e8 + 0x150))(iVar2,*(undefined1 *)(iVar2 + 0x13),1);\n        if (((uVar1 & 0xff) == 0xd) || ((uVar1 & 0xff) == 10)) {\n          (*(code *)(PTR_LAB_000f52e8 + 0x1394))(iVar2,uVar1);\n        }\n        if (uVar1 != 0) goto LAB_0007b848;\n      }" if (parenthesized_expression "(((*(char *)(iVar2 + 0x10) == '\x02') && (*(char *)(iVar2 + 4) != '\0')) &&\n         (*(char *)(iVar2 + 5) == '\x01'))" ( (binary_expression "((*(char *)(iVar2 + 0x10) == '\x02') && (*(char *)(iVar2 + 4) != '\0')) &&\n         (*(char *)(iVar2 + 5) == '\x01')" (parenthesized_expression "((*(char *)(iVar2 + 0x10) == '\x02') && (*(char *)(iVar2 + 4) != '\0'))" ( (binary_expression "(*(char *)(iVar2 + 0x10) == '\x02') && (*(char *)(iVar2 + 4) != '\0')" (parenthesized_expression "(*(char *)(iVar2 + 0x10) == '\x02')" ( (binary_expression "*(char *)(iVar2 + 0x10) == '\x02'" (pointer_expression "*(char *)(iVar2 + 0x10)" * (cast_expression "(char *)(iVar2 + 0x10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x10)" ( (binary_expression "iVar2 + 0x10" identifier + number_literal) )))) == (char_literal "'\x02'" ' escape_sequence ')) )) && (parenthesized_expression "(*(char *)(iVar2 + 4) != '\0')" ( (binary_expression "*(char *)(iVar2 + 4) != '\0'" (pointer_expression "*(char *)(iVar2 + 4)" * (cast_expression "(char *)(iVar2 + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 4)" ( (binary_expression "iVar2 + 4" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) ))) )) && (parenthesized_expression "(*(char *)(iVar2 + 5) == '\x01')" ( (binary_expression "*(char *)(iVar2 + 5) == '\x01'" (pointer_expression "*(char *)(iVar2 + 5)" * (cast_expression "(char *)(iVar2 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 5)" ( (binary_expression "iVar2 + 5" identifier + number_literal) )))) == (char_literal "'\x01'" ' escape_sequence ')) ))) )) (compound_statement "{\n        *(undefined1 *)(iVar2 + 0x10) = 1;\n      }" { (expression_statement "*(undefined1 *)(iVar2 + 0x10) = 1;" (assignment_expression "*(undefined1 *)(iVar2 + 0x10) = 1" (pointer_expression "*(undefined1 *)(iVar2 + 0x10)" * (cast_expression "(undefined1 *)(iVar2 + 0x10)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x10)" ( (binary_expression "iVar2 + 0x10" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n        uVar1 = (*(code *)(PTR_LAB_000f52e8 + 0x150))(iVar2,*(undefined1 *)(iVar2 + 0x13),1);\n        if (((uVar1 & 0xff) == 0xd) || ((uVar1 & 0xff) == 10)) {\n          (*(code *)(PTR_LAB_000f52e8 + 0x1394))(iVar2,uVar1);\n        }\n        if (uVar1 != 0) goto LAB_0007b848;\n      }" else (compound_statement "{\n        uVar1 = (*(code *)(PTR_LAB_000f52e8 + 0x150))(iVar2,*(undefined1 *)(iVar2 + 0x13),1);\n        if (((uVar1 & 0xff) == 0xd) || ((uVar1 & 0xff) == 10)) {\n          (*(code *)(PTR_LAB_000f52e8 + 0x1394))(iVar2,uVar1);\n        }\n        if (uVar1 != 0) goto LAB_0007b848;\n      }" { (expression_statement "uVar1 = (*(code *)(PTR_LAB_000f52e8 + 0x150))(iVar2,*(undefined1 *)(iVar2 + 0x13),1);" (assignment_expression "uVar1 = (*(code *)(PTR_LAB_000f52e8 + 0x150))(iVar2,*(undefined1 *)(iVar2 + 0x13),1)" identifier = (call_expression "(*(code *)(PTR_LAB_000f52e8 + 0x150))(iVar2,*(undefined1 *)(iVar2 + 0x13),1)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52e8 + 0x150))" ( (pointer_expression "*(code *)(PTR_LAB_000f52e8 + 0x150)" * (cast_expression "(code *)(PTR_LAB_000f52e8 + 0x150)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52e8 + 0x150)" ( (binary_expression "PTR_LAB_000f52e8 + 0x150" identifier + number_literal) )))) )) (argument_list "(iVar2,*(undefined1 *)(iVar2 + 0x13),1)" ( identifier , (pointer_expression "*(undefined1 *)(iVar2 + 0x13)" * (cast_expression "(undefined1 *)(iVar2 + 0x13)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x13)" ( (binary_expression "iVar2 + 0x13" identifier + number_literal) )))) , number_literal )))) ;) (if_statement "if (((uVar1 & 0xff) == 0xd) || ((uVar1 & 0xff) == 10)) {\n          (*(code *)(PTR_LAB_000f52e8 + 0x1394))(iVar2,uVar1);\n        }" if (parenthesized_expression "(((uVar1 & 0xff) == 0xd) || ((uVar1 & 0xff) == 10))" ( (binary_expression "((uVar1 & 0xff) == 0xd) || ((uVar1 & 0xff) == 10)" (parenthesized_expression "((uVar1 & 0xff) == 0xd)" ( (binary_expression "(uVar1 & 0xff) == 0xd" (parenthesized_expression "(uVar1 & 0xff)" ( (binary_expression "uVar1 & 0xff" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "((uVar1 & 0xff) == 10)" ( (binary_expression "(uVar1 & 0xff) == 10" (parenthesized_expression "(uVar1 & 0xff)" ( (binary_expression "uVar1 & 0xff" identifier & number_literal) )) == number_literal) ))) )) (compound_statement "{\n          (*(code *)(PTR_LAB_000f52e8 + 0x1394))(iVar2,uVar1);\n        }" { (expression_statement "(*(code *)(PTR_LAB_000f52e8 + 0x1394))(iVar2,uVar1);" (call_expression "(*(code *)(PTR_LAB_000f52e8 + 0x1394))(iVar2,uVar1)" (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 "(iVar2,uVar1)" ( identifier , identifier ))) ;) })) (if_statement "if (uVar1 != 0) goto LAB_0007b848;" if (parenthesized_expression "(uVar1 != 0)" ( (binary_expression "uVar1 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0007b848;" goto statement_identifier ;)) }))) }) (else_clause "else {\nLAB_0007b848:\n      if (param_2 == 0) {\n        if (*(char *)(param_1 + 9) == '\0') {\n          return uVar1;\n        }\n        iVar2 = *(int *)(param_1 + 0xc) + -1;\n        *(int *)(param_1 + 0xc) = iVar2;\n        if (iVar2 != 0) {\n          return uVar1;\n        }\n        goto LAB_0007b86c;\n      }\n    }" else (compound_statement "{\nLAB_0007b848:\n      if (param_2 == 0) {\n        if (*(char *)(param_1 + 9) == '\0') {\n          return uVar1;\n        }\n        iVar2 = *(int *)(param_1 + 0xc) + -1;\n        *(int *)(param_1 + 0xc) = iVar2;\n        if (iVar2 != 0) {\n          return uVar1;\n        }\n        goto LAB_0007b86c;\n      }\n    }" { (labeled_statement "LAB_0007b848:\n      if (param_2 == 0) {\n        if (*(char *)(param_1 + 9) == '\0') {\n          return uVar1;\n        }\n        iVar2 = *(int *)(param_1 + 0xc) + -1;\n        *(int *)(param_1 + 0xc) = iVar2;\n        if (iVar2 != 0) {\n          return uVar1;\n        }\n        goto LAB_0007b86c;\n      }" statement_identifier : (if_statement "if (param_2 == 0) {\n        if (*(char *)(param_1 + 9) == '\0') {\n          return uVar1;\n        }\n        iVar2 = *(int *)(param_1 + 0xc) + -1;\n        *(int *)(param_1 + 0xc) = iVar2;\n        if (iVar2 != 0) {\n          return uVar1;\n        }\n        goto LAB_0007b86c;\n      }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n        if (*(char *)(param_1 + 9) == '\0') {\n          return uVar1;\n        }\n        iVar2 = *(int *)(param_1 + 0xc) + -1;\n        *(int *)(param_1 + 0xc) = iVar2;\n        if (iVar2 != 0) {\n          return uVar1;\n        }\n        goto LAB_0007b86c;\n      }" { (if_statement "if (*(char *)(param_1 + 9) == '\0') {\n          return uVar1;\n        }" if (parenthesized_expression "(*(char *)(param_1 + 9) == '\0')" ( (binary_expression "*(char *)(param_1 + 9) == '\0'" (pointer_expression "*(char *)(param_1 + 9)" * (cast_expression "(char *)(param_1 + 9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          return uVar1;\n        }" { (return_statement "return uVar1;" return identifier ;) })) (expression_statement "iVar2 = *(int *)(param_1 + 0xc) + -1;" (assignment_expression "iVar2 = *(int *)(param_1 + 0xc) + -1" identifier = (binary_expression "*(int *)(param_1 + 0xc) + -1" (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)(param_1 + 0xc) = iVar2;" (assignment_expression "*(int *)(param_1 + 0xc) = iVar2" (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar2 != 0) {\n          return uVar1;\n        }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n          return uVar1;\n        }" { (return_statement "return uVar1;" return identifier ;) })) (goto_statement "goto LAB_0007b86c;" goto statement_identifier ;) }))) }))) (expression_statement "iVar2 = piVar3[0x10];" (assignment_expression "iVar2 = piVar3[0x10]" identifier = (subscript_expression "piVar3[0x10]" identifier [ number_literal ])) ;) (expression_statement "pcVar4 = (code *)(PTR_LAB_000f52ec + -0x672c);" (assignment_expression "pcVar4 = (code *)(PTR_LAB_000f52ec + -0x672c)" identifier = (cast_expression "(code *)(PTR_LAB_000f52ec + -0x672c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52ec + -0x672c)" ( (binary_expression "PTR_LAB_000f52ec + -0x672c" identifier + number_literal) )))) ;) (expression_statement "*(int *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + -1;" (assignment_expression "*(int *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + -1" (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 0x14) + -1" (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(undefined1 *)(piVar3 + 5) = 1;" (assignment_expression "*(undefined1 *)(piVar3 + 5) = 1" (pointer_expression "*(undefined1 *)(piVar3 + 5)" * (cast_expression "(undefined1 *)(piVar3 + 5)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar3 + 5)" ( (binary_expression "piVar3 + 5" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(*pcVar4)(iVar2);" (call_expression "(*pcVar4)(iVar2)" (parenthesized_expression "(*pcVar4)" ( (pointer_expression "*pcVar4" * identifier) )) (argument_list "(iVar2)" ( identifier ))) ;) (expression_statement "piVar3[0x10] = 0;" (assignment_expression "piVar3[0x10] = 0" (subscript_expression "piVar3[0x10]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "FUN_0007b584(param_1);" (call_expression "FUN_0007b584(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (if_statement "if (*(char *)(param_1 + 9) != '\0') {\n    uVar1 = *(int *)(param_1 + 0xc) - 1;\n    *(uint *)(param_1 + 0xc) = uVar1;\n    if (uVar1 == 0) {\nLAB_0007b86c:\n      (*(code *)(PTR_LAB_000f52ec + -0x2fa0))(param_1);\n      return uVar1;\n    }\n  }" if (parenthesized_expression "(*(char *)(param_1 + 9) != '\0')" ( (binary_expression "*(char *)(param_1 + 9) != '\0'" (pointer_expression "*(char *)(param_1 + 9)" * (cast_expression "(char *)(param_1 + 9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    uVar1 = *(int *)(param_1 + 0xc) - 1;\n    *(uint *)(param_1 + 0xc) = uVar1;\n    if (uVar1 == 0) {\nLAB_0007b86c:\n      (*(code *)(PTR_LAB_000f52ec + -0x2fa0))(param_1);\n      return uVar1;\n    }\n  }" { (expression_statement "uVar1 = *(int *)(param_1 + 0xc) - 1;" (assignment_expression "uVar1 = *(int *)(param_1 + 0xc) - 1" identifier = (binary_expression "*(int *)(param_1 + 0xc) - 1" (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) - number_literal)) ;) (expression_statement "*(uint *)(param_1 + 0xc) = uVar1;" (assignment_expression "*(uint *)(param_1 + 0xc) = uVar1" (pointer_expression "*(uint *)(param_1 + 0xc)" * (cast_expression "(uint *)(param_1 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = identifier) ;) (if_statement "if (uVar1 == 0) {\nLAB_0007b86c:\n      (*(code *)(PTR_LAB_000f52ec + -0x2fa0))(param_1);\n      return uVar1;\n    }" if (parenthesized_expression "(uVar1 == 0)" ( (binary_expression "uVar1 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0007b86c:\n      (*(code *)(PTR_LAB_000f52ec + -0x2fa0))(param_1);\n      return uVar1;\n    }" { (labeled_statement "LAB_0007b86c:\n      (*(code *)(PTR_LAB_000f52ec + -0x2fa0))(param_1);" statement_identifier : (expression_statement "(*(code *)(PTR_LAB_000f52ec + -0x2fa0))(param_1);" (call_expression "(*(code *)(PTR_LAB_000f52ec + -0x2fa0))(param_1)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52ec + -0x2fa0))" ( (pointer_expression "*(code *)(PTR_LAB_000f52ec + -0x2fa0)" * (cast_expression "(code *)(PTR_LAB_000f52ec + -0x2fa0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52ec + -0x2fa0)" ( (binary_expression "PTR_LAB_000f52ec + -0x2fa0" identifier + number_literal) )))) )) (argument_list "(param_1)" ( identifier ))) ;)) (return_statement "return uVar1;" return 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 IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * 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 { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * 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 IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) ))) )) && (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 { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) }) (else_clause else (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 , (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) )) == 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 ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) }))) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return IDENT ;) })) (goto_statement goto statement_identifier ;) }))) }))) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) })) (expression_statement (call_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 { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( IDENT ))) ;)) (return_statement return IDENT ;) })) })) (return_statement return LIT ;) })))
(function_definition "uint FUN_0007b714(int param_1,int param_2)\n\n{\n  uint uVar1;\n  int iVar2;\n  int *piVar3;\n  code *pcVar4;\n  \n  if (*(char *)(param_1 + 9) != '\0') {\n    (*(code *)(PTR_LAB_000f52ec + -0x3088))();\n  }\n  if (*(char *)(param_1 + 8) == '\x02') {\n    piVar3 = *(int **)(param_1 + 4);\n    iVar2 = *piVar3;\n    uVar1 = *(uint *)(iVar2 + 0x28);\n    if (uVar1 == 0) {\n      *(int *)(iVar2 + 100) = *(int *)(iVar2 + 100) + 1;\n      if (((*(char *)(iVar2 + 0x10) == '\x02') && (*(char *)(iVar2 + 4) != '\0')) &&\n         (*(char *)(iVar2 + 5) == '\x01')) {\n        *(undefined1 *)(iVar2 + 0x10) = 1;\n      }\n      else {\n        uVar1 = (*(code *)(PTR_LAB_000f52e8 + 0x150))(iVar2,*(undefined1 *)(iVar2 + 0x13),1);\n        if (((uVar1 & 0xff) == 0xd) || ((uVar1 & 0xff) == 10)) {\n          (*(code *)(PTR_LAB_000f52e8 + 0x1394))(iVar2,uVar1);\n        }\n        if (uVar1 != 0) goto LAB_0007b848;\n      }\n    }\n    else {\nLAB_0007b848:\n      if (param_2 == 0) {\n        if (*(char *)(param_1 + 9) == '\0') {\n          return uVar1;\n        }\n        iVar2 = *(int *)(param_1 + 0xc) + -1;\n        *(int *)(param_1 + 0xc) = iVar2;\n        if (iVar2 != 0) {\n          return uVar1;\n        }\n        goto LAB_0007b86c;\n      }\n    }\n    iVar2 = piVar3[0x10];\n    pcVar4 = (code *)(PTR_LAB_000f52ec + -0x672c);\n    *(int *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + -1;\n    *(undefined1 *)(piVar3 + 5) = 1;\n    (*pcVar4)(iVar2);\n    piVar3[0x10] = 0;\n  }\n  FUN_0007b584(param_1);\n  if (*(char *)(param_1 + 9) != '\0') {\n    uVar1 = *(int *)(param_1 + 0xc) - 1;\n    *(uint *)(param_1 + 0xc) = uVar1;\n    if (uVar1 == 0) {\nLAB_0007b86c:\n      (*(code *)(PTR_LAB_000f52ec + -0x2fa0))(param_1);\n      return uVar1;\n    }\n  }\n  return 0;\n}" (type_identifier "uint") (function_declarator "FUN_0007b714(int param_1,int param_2)" (identifier "FUN_0007b714") (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  uint uVar1;\n  int iVar2;\n  int *piVar3;\n  code *pcVar4;\n  \n  if (*(char *)(param_1 + 9) != '\0') {\n    (*(code *)(PTR_LAB_000f52ec + -0x3088))();\n  }\n  if (*(char *)(param_1 + 8) == '\x02') {\n    piVar3 = *(int **)(param_1 + 4);\n    iVar2 = *piVar3;\n    uVar1 = *(uint *)(iVar2 + 0x28);\n    if (uVar1 == 0) {\n      *(int *)(iVar2 + 100) = *(int *)(iVar2 + 100) + 1;\n      if (((*(char *)(iVar2 + 0x10) == '\x02') && (*(char *)(iVar2 + 4) != '\0')) &&\n         (*(char *)(iVar2 + 5) == '\x01')) {\n        *(undefined1 *)(iVar2 + 0x10) = 1;\n      }\n      else {\n        uVar1 = (*(code *)(PTR_LAB_000f52e8 + 0x150))(iVar2,*(undefined1 *)(iVar2 + 0x13),1);\n        if (((uVar1 & 0xff) == 0xd) || ((uVar1 & 0xff) == 10)) {\n          (*(code *)(PTR_LAB_000f52e8 + 0x1394))(iVar2,uVar1);\n        }\n        if (uVar1 != 0) goto LAB_0007b848;\n      }\n    }\n    else {\nLAB_0007b848:\n      if (param_2 == 0) {\n        if (*(char *)(param_1 + 9) == '\0') {\n          return uVar1;\n        }\n        iVar2 = *(int *)(param_1 + 0xc) + -1;\n        *(int *)(param_1 + 0xc) = iVar2;\n        if (iVar2 != 0) {\n          return uVar1;\n        }\n        goto LAB_0007b86c;\n      }\n    }\n    iVar2 = piVar3[0x10];\n    pcVar4 = (code *)(PTR_LAB_000f52ec + -0x672c);\n    *(int *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + -1;\n    *(undefined1 *)(piVar3 + 5) = 1;\n    (*pcVar4)(iVar2);\n    piVar3[0x10] = 0;\n  }\n  FUN_0007b584(param_1);\n  if (*(char *)(param_1 + 9) != '\0') {\n    uVar1 = *(int *)(param_1 + 0xc) - 1;\n    *(uint *)(param_1 + 0xc) = uVar1;\n    if (uVar1 == 0) {\nLAB_0007b86c:\n      (*(code *)(PTR_LAB_000f52ec + -0x2fa0))(param_1);\n      return uVar1;\n    }\n  }\n  return 0;\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int *piVar3;" (primitive_type "int") (pointer_declarator "*piVar3" (* "*") (identifier "piVar3")) (; ";")) (declaration "code *pcVar4;" (type_identifier "code") (pointer_declarator "*pcVar4" (* "*") (identifier "pcVar4")) (; ";")) (if_statement "if (*(char *)(param_1 + 9) != '\0') {\n    (*(code *)(PTR_LAB_000f52ec + -0x3088))();\n  }" (if "if") (parenthesized_expression "(*(char *)(param_1 + 9) != '\0')" (( "(") (binary_expression "*(char *)(param_1 + 9) != '\0'" (pointer_expression "*(char *)(param_1 + 9)" (* "*") (cast_expression "(char *)(param_1 + 9)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 9)" (( "(") (binary_expression "param_1 + 9" (identifier "param_1") (+ "+") (number_literal "9")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    (*(code *)(PTR_LAB_000f52ec + -0x3088))();\n  }" ({ "{") (expression_statement "(*(code *)(PTR_LAB_000f52ec + -0x3088))();" (call_expression "(*(code *)(PTR_LAB_000f52ec + -0x3088))()" (parenthesized_expression "(*(code *)(PTR_LAB_000f52ec + -0x3088))" (( "(") (pointer_expression "*(code *)(PTR_LAB_000f52ec + -0x3088)" (* "*") (cast_expression "(code *)(PTR_LAB_000f52ec + -0x3088)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_000f52ec + -0x3088)" (( "(") (binary_expression "PTR_LAB_000f52ec + -0x3088" (identifier "PTR_LAB_000f52ec") (+ "+") (number_literal "-0x3088")) () ")")))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if (*(char *)(param_1 + 8) == '\x02') {\n    piVar3 = *(int **)(param_1 + 4);\n    iVar2 = *piVar3;\n    uVar1 = *(uint *)(iVar2 + 0x28);\n    if (uVar1 == 0) {\n      *(int *)(iVar2 + 100) = *(int *)(iVar2 + 100) + 1;\n      if (((*(char *)(iVar2 + 0x10) == '\x02') && (*(char *)(iVar2 + 4) != '\0')) &&\n         (*(char *)(iVar2 + 5) == '\x01')) {\n        *(undefined1 *)(iVar2 + 0x10) = 1;\n      }\n      else {\n        uVar1 = (*(code *)(PTR_LAB_000f52e8 + 0x150))(iVar2,*(undefined1 *)(iVar2 + 0x13),1);\n        if (((uVar1 & 0xff) == 0xd) || ((uVar1 & 0xff) == 10)) {\n          (*(code *)(PTR_LAB_000f52e8 + 0x1394))(iVar2,uVar1);\n        }\n        if (uVar1 != 0) goto LAB_0007b848;\n      }\n    }\n    else {\nLAB_0007b848:\n      if (param_2 == 0) {\n        if (*(char *)(param_1 + 9) == '\0') {\n          return uVar1;\n        }\n        iVar2 = *(int *)(param_1 + 0xc) + -1;\n        *(int *)(param_1 + 0xc) = iVar2;\n        if (iVar2 != 0) {\n          return uVar1;\n        }\n        goto LAB_0007b86c;\n      }\n    }\n    iVar2 = piVar3[0x10];\n    pcVar4 = (code *)(PTR_LAB_000f52ec + -0x672c);\n    *(int *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + -1;\n    *(undefined1 *)(piVar3 + 5) = 1;\n    (*pcVar4)(iVar2);\n    piVar3[0x10] = 0;\n  }" (if "if") (parenthesized_expression "(*(char *)(param_1 + 8) == '\x02')" (( "(") (binary_expression "*(char *)(param_1 + 8) == '\x02'" (pointer_expression "*(char *)(param_1 + 8)" (* "*") (cast_expression "(char *)(param_1 + 8)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (== "==") (char_literal "'\x02'" (' "'") (escape_sequence "\x02") (' "'"))) () ")")) (compound_statement "{\n    piVar3 = *(int **)(param_1 + 4);\n    iVar2 = *piVar3;\n    uVar1 = *(uint *)(iVar2 + 0x28);\n    if (uVar1 == 0) {\n      *(int *)(iVar2 + 100) = *(int *)(iVar2 + 100) + 1;\n      if (((*(char *)(iVar2 + 0x10) == '\x02') && (*(char *)(iVar2 + 4) != '\0')) &&\n         (*(char *)(iVar2 + 5) == '\x01')) {\n        *(undefined1 *)(iVar2 + 0x10) = 1;\n      }\n      else {\n        uVar1 = (*(code *)(PTR_LAB_000f52e8 + 0x150))(iVar2,*(undefined1 *)(iVar2 + 0x13),1);\n        if (((uVar1 & 0xff) == 0xd) || ((uVar1 & 0xff) == 10)) {\n          (*(code *)(PTR_LAB_000f52e8 + 0x1394))(iVar2,uVar1);\n        }\n        if (uVar1 != 0) goto LAB_0007b848;\n      }\n    }\n    else {\nLAB_0007b848:\n      if (param_2 == 0) {\n        if (*(char *)(param_1 + 9) == '\0') {\n          return uVar1;\n        }\n        iVar2 = *(int *)(param_1 + 0xc) + -1;\n        *(int *)(param_1 + 0xc) = iVar2;\n        if (iVar2 != 0) {\n          return uVar1;\n        }\n        goto LAB_0007b86c;\n      }\n    }\n    iVar2 = piVar3[0x10];\n    pcVar4 = (code *)(PTR_LAB_000f52ec + -0x672c);\n    *(int *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + -1;\n    *(undefined1 *)(piVar3 + 5) = 1;\n    (*pcVar4)(iVar2);\n    piVar3[0x10] = 0;\n  }" ({ "{") (expression_statement "piVar3 = *(int **)(param_1 + 4);" (assignment_expression "piVar3 = *(int **)(param_1 + 4)" (identifier "piVar3") (= "=") (pointer_expression "*(int **)(param_1 + 4)" (* "*") (cast_expression "(int **)(param_1 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "iVar2 = *piVar3;" (assignment_expression "iVar2 = *piVar3" (identifier "iVar2") (= "=") (pointer_expression "*piVar3" (* "*") (identifier "piVar3"))) (; ";")) (expression_statement "uVar1 = *(uint *)(iVar2 + 0x28);" (assignment_expression "uVar1 = *(uint *)(iVar2 + 0x28)" (identifier "uVar1") (= "=") (pointer_expression "*(uint *)(iVar2 + 0x28)" (* "*") (cast_expression "(uint *)(iVar2 + 0x28)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x28)" (( "(") (binary_expression "iVar2 + 0x28" (identifier "iVar2") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (if_statement "if (uVar1 == 0) {\n      *(int *)(iVar2 + 100) = *(int *)(iVar2 + 100) + 1;\n      if (((*(char *)(iVar2 + 0x10) == '\x02') && (*(char *)(iVar2 + 4) != '\0')) &&\n         (*(char *)(iVar2 + 5) == '\x01')) {\n        *(undefined1 *)(iVar2 + 0x10) = 1;\n      }\n      else {\n        uVar1 = (*(code *)(PTR_LAB_000f52e8 + 0x150))(iVar2,*(undefined1 *)(iVar2 + 0x13),1);\n        if (((uVar1 & 0xff) == 0xd) || ((uVar1 & 0xff) == 10)) {\n          (*(code *)(PTR_LAB_000f52e8 + 0x1394))(iVar2,uVar1);\n        }\n        if (uVar1 != 0) goto LAB_0007b848;\n      }\n    }\n    else {\nLAB_0007b848:\n      if (param_2 == 0) {\n        if (*(char *)(param_1 + 9) == '\0') {\n          return uVar1;\n        }\n        iVar2 = *(int *)(param_1 + 0xc) + -1;\n        *(int *)(param_1 + 0xc) = iVar2;\n        if (iVar2 != 0) {\n          return uVar1;\n        }\n        goto LAB_0007b86c;\n      }\n    }" (if "if") (parenthesized_expression "(uVar1 == 0)" (( "(") (binary_expression "uVar1 == 0" (identifier "uVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      *(int *)(iVar2 + 100) = *(int *)(iVar2 + 100) + 1;\n      if (((*(char *)(iVar2 + 0x10) == '\x02') && (*(char *)(iVar2 + 4) != '\0')) &&\n         (*(char *)(iVar2 + 5) == '\x01')) {\n        *(undefined1 *)(iVar2 + 0x10) = 1;\n      }\n      else {\n        uVar1 = (*(code *)(PTR_LAB_000f52e8 + 0x150))(iVar2,*(undefined1 *)(iVar2 + 0x13),1);\n        if (((uVar1 & 0xff) == 0xd) || ((uVar1 & 0xff) == 10)) {\n          (*(code *)(PTR_LAB_000f52e8 + 0x1394))(iVar2,uVar1);\n        }\n        if (uVar1 != 0) goto LAB_0007b848;\n      }\n    }" ({ "{") (expression_statement "*(int *)(iVar2 + 100) = *(int *)(iVar2 + 100) + 1;" (assignment_expression "*(int *)(iVar2 + 100) = *(int *)(iVar2 + 100) + 1" (pointer_expression "*(int *)(iVar2 + 100)" (* "*") (cast_expression "(int *)(iVar2 + 100)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 100)" (( "(") (binary_expression "iVar2 + 100" (identifier "iVar2") (+ "+") (number_literal "100")) () ")")))) (= "=") (binary_expression "*(int *)(iVar2 + 100) + 1" (pointer_expression "*(int *)(iVar2 + 100)" (* "*") (cast_expression "(int *)(iVar2 + 100)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 100)" (( "(") (binary_expression "iVar2 + 100" (identifier "iVar2") (+ "+") (number_literal "100")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (((*(char *)(iVar2 + 0x10) == '\x02') && (*(char *)(iVar2 + 4) != '\0')) &&\n         (*(char *)(iVar2 + 5) == '\x01')) {\n        *(undefined1 *)(iVar2 + 0x10) = 1;\n      }\n      else {\n        uVar1 = (*(code *)(PTR_LAB_000f52e8 + 0x150))(iVar2,*(undefined1 *)(iVar2 + 0x13),1);\n        if (((uVar1 & 0xff) == 0xd) || ((uVar1 & 0xff) == 10)) {\n          (*(code *)(PTR_LAB_000f52e8 + 0x1394))(iVar2,uVar1);\n        }\n        if (uVar1 != 0) goto LAB_0007b848;\n      }" (if "if") (parenthesized_expression "(((*(char *)(iVar2 + 0x10) == '\x02') && (*(char *)(iVar2 + 4) != '\0')) &&\n         (*(char *)(iVar2 + 5) == '\x01'))" (( "(") (binary_expression "((*(char *)(iVar2 + 0x10) == '\x02') && (*(char *)(iVar2 + 4) != '\0')) &&\n         (*(char *)(iVar2 + 5) == '\x01')" (parenthesized_expression "((*(char *)(iVar2 + 0x10) == '\x02') && (*(char *)(iVar2 + 4) != '\0'))" (( "(") (binary_expression "(*(char *)(iVar2 + 0x10) == '\x02') && (*(char *)(iVar2 + 4) != '\0')" (parenthesized_expression "(*(char *)(iVar2 + 0x10) == '\x02')" (( "(") (binary_expression "*(char *)(iVar2 + 0x10) == '\x02'" (pointer_expression "*(char *)(iVar2 + 0x10)" (* "*") (cast_expression "(char *)(iVar2 + 0x10)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x10)" (( "(") (binary_expression "iVar2 + 0x10" (identifier "iVar2") (+ "+") (number_literal "0x10")) () ")")))) (== "==") (char_literal "'\x02'" (' "'") (escape_sequence "\x02") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(*(char *)(iVar2 + 4) != '\0')" (( "(") (binary_expression "*(char *)(iVar2 + 4) != '\0'" (pointer_expression "*(char *)(iVar2 + 4)" (* "*") (cast_expression "(char *)(iVar2 + 4)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 4)" (( "(") (binary_expression "iVar2 + 4" (identifier "iVar2") (+ "+") (number_literal "4")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(*(char *)(iVar2 + 5) == '\x01')" (( "(") (binary_expression "*(char *)(iVar2 + 5) == '\x01'" (pointer_expression "*(char *)(iVar2 + 5)" (* "*") (cast_expression "(char *)(iVar2 + 5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 5)" (( "(") (binary_expression "iVar2 + 5" (identifier "iVar2") (+ "+") (number_literal "5")) () ")")))) (== "==") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) () ")"))) () ")")) (compound_statement "{\n        *(undefined1 *)(iVar2 + 0x10) = 1;\n      }" ({ "{") (expression_statement "*(undefined1 *)(iVar2 + 0x10) = 1;" (assignment_expression "*(undefined1 *)(iVar2 + 0x10) = 1" (pointer_expression "*(undefined1 *)(iVar2 + 0x10)" (* "*") (cast_expression "(undefined1 *)(iVar2 + 0x10)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x10)" (( "(") (binary_expression "iVar2 + 0x10" (identifier "iVar2") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n        uVar1 = (*(code *)(PTR_LAB_000f52e8 + 0x150))(iVar2,*(undefined1 *)(iVar2 + 0x13),1);\n        if (((uVar1 & 0xff) == 0xd) || ((uVar1 & 0xff) == 10)) {\n          (*(code *)(PTR_LAB_000f52e8 + 0x1394))(iVar2,uVar1);\n        }\n        if (uVar1 != 0) goto LAB_0007b848;\n      }" (else "else") (compound_statement "{\n        uVar1 = (*(code *)(PTR_LAB_000f52e8 + 0x150))(iVar2,*(undefined1 *)(iVar2 + 0x13),1);\n        if (((uVar1 & 0xff) == 0xd) || ((uVar1 & 0xff) == 10)) {\n          (*(code *)(PTR_LAB_000f52e8 + 0x1394))(iVar2,uVar1);\n        }\n        if (uVar1 != 0) goto LAB_0007b848;\n      }" ({ "{") (expression_statement "uVar1 = (*(code *)(PTR_LAB_000f52e8 + 0x150))(iVar2,*(undefined1 *)(iVar2 + 0x13),1);" (assignment_expression "uVar1 = (*(code *)(PTR_LAB_000f52e8 + 0x150))(iVar2,*(undefined1 *)(iVar2 + 0x13),1)" (identifier "uVar1") (= "=") (call_expression "(*(code *)(PTR_LAB_000f52e8 + 0x150))(iVar2,*(undefined1 *)(iVar2 + 0x13),1)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52e8 + 0x150))" (( "(") (pointer_expression "*(code *)(PTR_LAB_000f52e8 + 0x150)" (* "*") (cast_expression "(code *)(PTR_LAB_000f52e8 + 0x150)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_000f52e8 + 0x150)" (( "(") (binary_expression "PTR_LAB_000f52e8 + 0x150" (identifier "PTR_LAB_000f52e8") (+ "+") (number_literal "0x150")) () ")")))) () ")")) (argument_list "(iVar2,*(undefined1 *)(iVar2 + 0x13),1)" (( "(") (identifier "iVar2") (, ",") (pointer_expression "*(undefined1 *)(iVar2 + 0x13)" (* "*") (cast_expression "(undefined1 *)(iVar2 + 0x13)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x13)" (( "(") (binary_expression "iVar2 + 0x13" (identifier "iVar2") (+ "+") (number_literal "0x13")) () ")")))) (, ",") (number_literal "1") () ")")))) (; ";")) (if_statement "if (((uVar1 & 0xff) == 0xd) || ((uVar1 & 0xff) == 10)) {\n          (*(code *)(PTR_LAB_000f52e8 + 0x1394))(iVar2,uVar1);\n        }" (if "if") (parenthesized_expression "(((uVar1 & 0xff) == 0xd) || ((uVar1 & 0xff) == 10))" (( "(") (binary_expression "((uVar1 & 0xff) == 0xd) || ((uVar1 & 0xff) == 10)" (parenthesized_expression "((uVar1 & 0xff) == 0xd)" (( "(") (binary_expression "(uVar1 & 0xff) == 0xd" (parenthesized_expression "(uVar1 & 0xff)" (( "(") (binary_expression "uVar1 & 0xff" (identifier "uVar1") (& "&") (number_literal "0xff")) () ")")) (== "==") (number_literal "0xd")) () ")")) (|| "||") (parenthesized_expression "((uVar1 & 0xff) == 10)" (( "(") (binary_expression "(uVar1 & 0xff) == 10" (parenthesized_expression "(uVar1 & 0xff)" (( "(") (binary_expression "uVar1 & 0xff" (identifier "uVar1") (& "&") (number_literal "0xff")) () ")")) (== "==") (number_literal "10")) () ")"))) () ")")) (compound_statement "{\n          (*(code *)(PTR_LAB_000f52e8 + 0x1394))(iVar2,uVar1);\n        }" ({ "{") (expression_statement "(*(code *)(PTR_LAB_000f52e8 + 0x1394))(iVar2,uVar1);" (call_expression "(*(code *)(PTR_LAB_000f52e8 + 0x1394))(iVar2,uVar1)" (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 "(iVar2,uVar1)" (( "(") (identifier "iVar2") (, ",") (identifier "uVar1") () ")"))) (; ";")) (} "}"))) (if_statement "if (uVar1 != 0) goto LAB_0007b848;" (if "if") (parenthesized_expression "(uVar1 != 0)" (( "(") (binary_expression "uVar1 != 0" (identifier "uVar1") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0007b848;" (goto "goto") (statement_identifier "LAB_0007b848") (; ";"))) (} "}")))) (} "}")) (else_clause "else {\nLAB_0007b848:\n      if (param_2 == 0) {\n        if (*(char *)(param_1 + 9) == '\0') {\n          return uVar1;\n        }\n        iVar2 = *(int *)(param_1 + 0xc) + -1;\n        *(int *)(param_1 + 0xc) = iVar2;\n        if (iVar2 != 0) {\n          return uVar1;\n        }\n        goto LAB_0007b86c;\n      }\n    }" (else "else") (compound_statement "{\nLAB_0007b848:\n      if (param_2 == 0) {\n        if (*(char *)(param_1 + 9) == '\0') {\n          return uVar1;\n        }\n        iVar2 = *(int *)(param_1 + 0xc) + -1;\n        *(int *)(param_1 + 0xc) = iVar2;\n        if (iVar2 != 0) {\n          return uVar1;\n        }\n        goto LAB_0007b86c;\n      }\n    }" ({ "{") (labeled_statement "LAB_0007b848:\n      if (param_2 == 0) {\n        if (*(char *)(param_1 + 9) == '\0') {\n          return uVar1;\n        }\n        iVar2 = *(int *)(param_1 + 0xc) + -1;\n        *(int *)(param_1 + 0xc) = iVar2;\n        if (iVar2 != 0) {\n          return uVar1;\n        }\n        goto LAB_0007b86c;\n      }" (statement_identifier "LAB_0007b848") (: ":") (if_statement "if (param_2 == 0) {\n        if (*(char *)(param_1 + 9) == '\0') {\n          return uVar1;\n        }\n        iVar2 = *(int *)(param_1 + 0xc) + -1;\n        *(int *)(param_1 + 0xc) = iVar2;\n        if (iVar2 != 0) {\n          return uVar1;\n        }\n        goto LAB_0007b86c;\n      }" (if "if") (parenthesized_expression "(param_2 == 0)" (( "(") (binary_expression "param_2 == 0" (identifier "param_2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        if (*(char *)(param_1 + 9) == '\0') {\n          return uVar1;\n        }\n        iVar2 = *(int *)(param_1 + 0xc) + -1;\n        *(int *)(param_1 + 0xc) = iVar2;\n        if (iVar2 != 0) {\n          return uVar1;\n        }\n        goto LAB_0007b86c;\n      }" ({ "{") (if_statement "if (*(char *)(param_1 + 9) == '\0') {\n          return uVar1;\n        }" (if "if") (parenthesized_expression "(*(char *)(param_1 + 9) == '\0')" (( "(") (binary_expression "*(char *)(param_1 + 9) == '\0'" (pointer_expression "*(char *)(param_1 + 9)" (* "*") (cast_expression "(char *)(param_1 + 9)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 9)" (( "(") (binary_expression "param_1 + 9" (identifier "param_1") (+ "+") (number_literal "9")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          return uVar1;\n        }" ({ "{") (return_statement "return uVar1;" (return "return") (identifier "uVar1") (; ";")) (} "}"))) (expression_statement "iVar2 = *(int *)(param_1 + 0xc) + -1;" (assignment_expression "iVar2 = *(int *)(param_1 + 0xc) + -1" (identifier "iVar2") (= "=") (binary_expression "*(int *)(param_1 + 0xc) + -1" (pointer_expression "*(int *)(param_1 + 0xc)" (* "*") (cast_expression "(int *)(param_1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "*(int *)(param_1 + 0xc) = iVar2;" (assignment_expression "*(int *)(param_1 + 0xc) = iVar2" (pointer_expression "*(int *)(param_1 + 0xc)" (* "*") (cast_expression "(int *)(param_1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "iVar2")) (; ";")) (if_statement "if (iVar2 != 0) {\n          return uVar1;\n        }" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          return uVar1;\n        }" ({ "{") (return_statement "return uVar1;" (return "return") (identifier "uVar1") (; ";")) (} "}"))) (goto_statement "goto LAB_0007b86c;" (goto "goto") (statement_identifier "LAB_0007b86c") (; ";")) (} "}")))) (} "}")))) (expression_statement "iVar2 = piVar3[0x10];" (assignment_expression "iVar2 = piVar3[0x10]" (identifier "iVar2") (= "=") (subscript_expression "piVar3[0x10]" (identifier "piVar3") ([ "[") (number_literal "0x10") (] "]"))) (; ";")) (expression_statement "pcVar4 = (code *)(PTR_LAB_000f52ec + -0x672c);" (assignment_expression "pcVar4 = (code *)(PTR_LAB_000f52ec + -0x672c)" (identifier "pcVar4") (= "=") (cast_expression "(code *)(PTR_LAB_000f52ec + -0x672c)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_000f52ec + -0x672c)" (( "(") (binary_expression "PTR_LAB_000f52ec + -0x672c" (identifier "PTR_LAB_000f52ec") (+ "+") (number_literal "-0x672c")) () ")")))) (; ";")) (expression_statement "*(int *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + -1;" (assignment_expression "*(int *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + -1" (pointer_expression "*(int *)(param_1 + 0x14)" (* "*") (cast_expression "(int *)(param_1 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 0x14) + -1" (pointer_expression "*(int *)(param_1 + 0x14)" (* "*") (cast_expression "(int *)(param_1 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")")))) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "*(undefined1 *)(piVar3 + 5) = 1;" (assignment_expression "*(undefined1 *)(piVar3 + 5) = 1" (pointer_expression "*(undefined1 *)(piVar3 + 5)" (* "*") (cast_expression "(undefined1 *)(piVar3 + 5)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar3 + 5)" (( "(") (binary_expression "piVar3 + 5" (identifier "piVar3") (+ "+") (number_literal "5")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "(*pcVar4)(iVar2);" (call_expression "(*pcVar4)(iVar2)" (parenthesized_expression "(*pcVar4)" (( "(") (pointer_expression "*pcVar4" (* "*") (identifier "pcVar4")) () ")")) (argument_list "(iVar2)" (( "(") (identifier "iVar2") () ")"))) (; ";")) (expression_statement "piVar3[0x10] = 0;" (assignment_expression "piVar3[0x10] = 0" (subscript_expression "piVar3[0x10]" (identifier "piVar3") ([ "[") (number_literal "0x10") (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "FUN_0007b584(param_1);" (call_expression "FUN_0007b584(param_1)" (identifier "FUN_0007b584") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (if_statement "if (*(char *)(param_1 + 9) != '\0') {\n    uVar1 = *(int *)(param_1 + 0xc) - 1;\n    *(uint *)(param_1 + 0xc) = uVar1;\n    if (uVar1 == 0) {\nLAB_0007b86c:\n      (*(code *)(PTR_LAB_000f52ec + -0x2fa0))(param_1);\n      return uVar1;\n    }\n  }" (if "if") (parenthesized_expression "(*(char *)(param_1 + 9) != '\0')" (( "(") (binary_expression "*(char *)(param_1 + 9) != '\0'" (pointer_expression "*(char *)(param_1 + 9)" (* "*") (cast_expression "(char *)(param_1 + 9)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 9)" (( "(") (binary_expression "param_1 + 9" (identifier "param_1") (+ "+") (number_literal "9")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    uVar1 = *(int *)(param_1 + 0xc) - 1;\n    *(uint *)(param_1 + 0xc) = uVar1;\n    if (uVar1 == 0) {\nLAB_0007b86c:\n      (*(code *)(PTR_LAB_000f52ec + -0x2fa0))(param_1);\n      return uVar1;\n    }\n  }" ({ "{") (expression_statement "uVar1 = *(int *)(param_1 + 0xc) - 1;" (assignment_expression "uVar1 = *(int *)(param_1 + 0xc) - 1" (identifier "uVar1") (= "=") (binary_expression "*(int *)(param_1 + 0xc) - 1" (pointer_expression "*(int *)(param_1 + 0xc)" (* "*") (cast_expression "(int *)(param_1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (- "-") (number_literal "1"))) (; ";")) (expression_statement "*(uint *)(param_1 + 0xc) = uVar1;" (assignment_expression "*(uint *)(param_1 + 0xc) = uVar1" (pointer_expression "*(uint *)(param_1 + 0xc)" (* "*") (cast_expression "(uint *)(param_1 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "uVar1")) (; ";")) (if_statement "if (uVar1 == 0) {\nLAB_0007b86c:\n      (*(code *)(PTR_LAB_000f52ec + -0x2fa0))(param_1);\n      return uVar1;\n    }" (if "if") (parenthesized_expression "(uVar1 == 0)" (( "(") (binary_expression "uVar1 == 0" (identifier "uVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0007b86c:\n      (*(code *)(PTR_LAB_000f52ec + -0x2fa0))(param_1);\n      return uVar1;\n    }" ({ "{") (labeled_statement "LAB_0007b86c:\n      (*(code *)(PTR_LAB_000f52ec + -0x2fa0))(param_1);" (statement_identifier "LAB_0007b86c") (: ":") (expression_statement "(*(code *)(PTR_LAB_000f52ec + -0x2fa0))(param_1);" (call_expression "(*(code *)(PTR_LAB_000f52ec + -0x2fa0))(param_1)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52ec + -0x2fa0))" (( "(") (pointer_expression "*(code *)(PTR_LAB_000f52ec + -0x2fa0)" (* "*") (cast_expression "(code *)(PTR_LAB_000f52ec + -0x2fa0)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_000f52ec + -0x2fa0)" (( "(") (binary_expression "PTR_LAB_000f52ec + -0x2fa0" (identifier "PTR_LAB_000f52ec") (+ "+") (number_literal "-0x2fa0")) () ")")))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";"))) (return_statement "return uVar1;" (return "return") (identifier "uVar1") (; ";")) (} "}"))) (} "}"))) (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: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (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 (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) arguments: (argument_list))))) (if_statement condition: (parenthesized_expression (binary_expression left: (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 (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (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: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence)))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence)))))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) alternative: (else_clause (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) (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))))) (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: (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)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))))))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (identifier)))) (goto_statement label: (statement_identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (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)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) (expression_statement (call_expression function: (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 (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) arguments: (argument_list (identifier))))) (return_statement (identifier)))))) (return_statement (number_literal)))))

uint MASKED(int param_1,int param_2)

{
  uint uVar1;
  int iVar2;
  int *piVar3;
  code *pcVar4;
  
  if (*(char *)(param_1 + 9) != '\0') {
    (*(code *)(PTR_LAB_000f52ec + -0x3088))();
  }
  if (*(char *)(param_1 + 8) == '\x02') {
    piVar3 = *(int **)(param_1 + 4);
    iVar2 = *piVar3;
    uVar1 = *(uint *)(iVar2 + 0x28);
    if (uVar1 == 0) {
      *(int *)(iVar2 + 100) = *(int *)(iVar2 + 100) + 1;
      if (((*(char *)(iVar2 + 0x10) == '\x02') && (*(char *)(iVar2 + 4) != '\0')) &&
         (*(char *)(iVar2 + 5) == '\x01')) {
        *(undefined1 *)(iVar2 + 0x10) = 1;
      }
      else {
        uVar1 = (*(code *)(PTR_LAB_000f52e8 + 0x150))(iVar2,*(undefined1 *)(iVar2 + 0x13),1);
        if (((uVar1 & 0xff) == 0xd) || ((uVar1 & 0xff) == 10)) {
          (*(code *)(PTR_LAB_000f52e8 + 0x1394))(iVar2,uVar1);
        }
        if (uVar1 != 0) goto LAB_0007b848;
      }
    }
    else {
LAB_0007b848:
      if (param_2 == 0) {
        if (*(char *)(param_1 + 9) == '\0') {
          return uVar1;
        }
        iVar2 = *(int *)(param_1 + 0xc) + -1;
        *(int *)(param_1 + 0xc) = iVar2;
        if (iVar2 != 0) {
          return uVar1;
        }
        goto LAB_0007b86c;
      }
    }
    iVar2 = piVar3[0x10];
    pcVar4 = (code *)(PTR_LAB_000f52ec + -0x672c);
    *(int *)(param_1 + 0x14) = *(int *)(param_1 + 0x14) + -1;
    *(undefined1 *)(piVar3 + 5) = 1;
    (*pcVar4)(iVar2);
    piVar3[0x10] = 0;
  }
  FUN_0007b584(param_1);
  if (*(char *)(param_1 + 9) != '\0') {
    uVar1 = *(int *)(param_1 + 0xc) - 1;
    *(uint *)(param_1 + 0xc) = uVar1;
    if (uVar1 == 0) {
LAB_0007b86c:
      (*(code *)(PTR_LAB_000f52ec + -0x2fa0))(param_1);
      return uVar1;
    }
  }
  return 0;
}

