
int sqlite3LockAndPrepare
              (sqlite3 *db,char *zSql,int nBytes,u32 prepFlags,Vdbe *pOld,sqlite3_stmt **ppStmt,
              char **pzTail)

{
  int iVar1;
  uint uVar2;
  code *pcVar3;
  int iStack_34;
  
  pcVar3 = (code *)(PTR_LAB_0015b740 + -0x14b4);
  *ppStmt = (sqlite3_stmt *)0x0;
  iVar1 = (*pcVar3)();
  if ((iVar1 == 0) || (zSql == (char *)0x0)) {
                    /* WARNING: Could not recover jumptable at 0x000f6e10. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    iVar1 = (*(code *)(PTR_LAB_0015b710 + 0x7fdc))(0x1e4d1);
    return iVar1;
  }
  (*(code *)PTR_sqlite3_mutex_enter_0015b6b0)(db->mutex);
  if (db->noSharedCache == '\0') {
    (*(code *)(PTR_LAB_0015b6d8 + 0x3e04))(db);
  }
  iStack_34 = 2;
  pcVar3 = (code *)(PTR_LAB_0015b700 + -0x5f2c);
  while( true ) {
    do {
      uVar2 = sqlite3Prepare(db,zSql,nBytes,prepFlags,pOld,ppStmt,pzTail);
    } while (uVar2 == 0x201);
    if (uVar2 != 0x11) break;
    if (db->nSchemaLock == 0) {
      (*pcVar3)(db);
    }
    if (iStack_34 == 1) break;
    iStack_34 = 1;
  }
  if (db->noSharedCache == '\0') {
    (*(code *)(PTR_LAB_0015b6d8 + 0x3ed4))(db);
    if (db->mallocFailed != '\0') {
      iVar1 = FUN_000f6dc0();
      return iVar1;
    }
LAB_000f6d6c:
    if (uVar2 != 0xc0a) {
      uVar2 = uVar2 & db->errMask;
      goto LAB_000f6d80;
    }
  }
  else if (db->mallocFailed == '\0') goto LAB_000f6d6c;
  uVar2 = (*(code *)(PTR_LAB_0015b6c0 + 0x7588))(db);
LAB_000f6d80:
  (*(code *)PTR_sqlite3_mutex_leave_0015b6b4)(db->mutex);
  return uVar2;
}



uint FUN_000f6c34(int param_1,int param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5,
                 undefined4 *param_6,undefined4 param_7)

{
  char cVar1;
  int iVar2;
  uint uVar3;
  code *pcVar4;
  int local_34;
  
  pcVar4 = (code *)(PTR_LAB_0015b740 + -0x14b4);
  *param_6 = 0;
  iVar2 = (*pcVar4)();
  if ((iVar2 == 0) || (param_2 == 0)) {
                    /* WARNING: Could not recover jumptable at 0x000f6e10. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    uVar3 = (*(code *)(PTR_LAB_0015b710 + 0x7fdc))(0x1e4d1);
    return uVar3;
  }
  (*(code *)PTR_sqlite3_mutex_enter_0015b6b0)(*(undefined4 *)(param_1 + 0xc));
  if (*(char *)(param_1 + 0x59) == '\0') {
    (*(code *)(PTR_LAB_0015b6d8 + 0x3e04))(param_1);
  }
  local_34 = 2;
  pcVar4 = (code *)(PTR_LAB_0015b700 + -0x5f2c);
  while( true ) {
    do {
      uVar3 = FUN_000f6474(param_1,param_2,param_3,param_4,param_5,param_6,param_7);
    } while (uVar3 == 0x201);
    if (uVar3 != 0x11) break;
    if (*(int *)(param_1 + 0x38) == 0) {
      (*pcVar4)(param_1);
    }
    if (local_34 == 1) break;
    local_34 = 1;
  }
  if (*(char *)(param_1 + 0x59) == '\0') {
    (*(code *)(PTR_LAB_0015b6d8 + 0x3ed4))(param_1);
    cVar1 = *(char *)(param_1 + 0x51);
  }
  else {
    cVar1 = *(char *)(param_1 + 0x51);
  }
  if ((cVar1 == '\0') && (uVar3 != 0xc0a)) {
    uVar3 = uVar3 & *(uint *)(param_1 + 0x44);
  }
  else {
    uVar3 = (*(code *)(PTR_LAB_0015b6c0 + 0x7588))(param_1);
  }
  (*(code *)PTR_sqlite3_mutex_leave_0015b6b4)(*(undefined4 *)(param_1 + 0xc));
  return uVar3;
}


lui gp,0x7
addiu gp,gp,-0x3684
addu gp,gp,t9
addiu sp,sp,-0x60
lw t9,-0x7e70(gp)
sw s1,0x3c(sp)
addiu t9,t9,-0x14b4
sw gp,0x20(sp)
sw s6,0x50(sp)
sw s5,0x4c(sp)
sw s4,0x48(sp)
or s4,a3,zero
sw s3,0x44(sp)
or s3,a2,zero
sw s2,0x40(sp)
or s2,a1,zero
sw s0,0x38(sp)
or s0,a0,zero
sw ra,0x5c(sp)
sw s8,0x58(sp)
sw s7,0x54(sp)
lw s1,0x74(sp)
lw s5,0x70(sp)
lw s6,0x78(sp)
jalr t9
_sw zero,0x0(s1)
beq v0,zero,0x000f6dd8
_lw gp,0x20(sp)
beq s2,zero,0x000f6dd8
_lw t9,-0x7f00(gp)
jalr t9
_lw a0,0xc(s0)
lbu v0,0x59(s0)
beq v0,zero,0x000f6e40
_lw gp,0x20(sp)
li v0,0x2
li s7,0x201
sw v0,0x2c(sp)
lw v0,-0x7d30(gp)
addiu s8,v0,0x6474
lw v0,-0x7eb0(gp)
addiu v0,v0,-0x5f2c
sw v0,0x34(sp)
or a0,s0,zero
sw s6,0x18(sp)
sw s1,0x14(sp)
or a3,s4,zero
sw s5,0x10(sp)
or a2,s3,zero
or t9,s8,zero
bal 0x000f6474
_or a1,s2,zero
beq v0,s7,0x000f6ce0
_lw gp,0x20(sp)
li v1,0x11
bne v0,v1,0x000f6d54
_nop
lw v1,0x38(s0)
bne v1,zero,0x000f6d38
_or a0,s0,zero
lw t9,0x34(sp)
jalr t9
_sw v0,0x30(sp)
lw gp,0x20(sp)
lw v0,0x30(sp)
lw v1,0x2c(sp)
li a0,0x1
beq v1,a0,0x000f6d54
_nop
li v0,0x1
b 0x000f6ce0
_sw v0,0x2c(sp)
lbu v1,0x59(s0)
beq v1,zero,0x000f6e18
_lw t9,-0x7ed8(gp)
lbu v1,0x51(s0)
bne v1,zero,0x000f6dc0
_lw t9,-0x7ef0(gp)
li v1,0xc0a
beq v0,v1,0x000f6dc0
_lw t9,-0x7ef0(gp)
lw s1,0x44(s0)
and s1,v0,s1
lw t9,-0x7efc(gp)
jalr t9
_lw a0,0xc(s0)
or v0,s1,zero
lw ra,0x5c(sp)
lw s8,0x58(sp)
lw s7,0x54(sp)
lw s6,0x50(sp)
lw s5,0x4c(sp)
lw s4,0x48(sp)
lw s3,0x44(sp)
lw s2,0x40(sp)
lw s1,0x3c(sp)
lw s0,0x38(sp)
jr ra
_addiu sp,sp,0x60
addiu t9,t9,0x7588
jalr t9
_or a0,s0,zero
lw gp,0x20(sp)
b 0x000f6d80
_or s1,v0,zero
lw t9,-0x7ea0(gp)
lui a0,0x1
lw ra,0x5c(sp)
lw s8,0x58(sp)
ori a0,a0,0xe4d1
lw s7,0x54(sp)
addiu t9,t9,0x7fdc
lw s6,0x50(sp)
lw s5,0x4c(sp)
lw s4,0x48(sp)
lw s3,0x44(sp)
lw s2,0x40(sp)
lw s1,0x3c(sp)
lw s0,0x38(sp)
jr t9
_addiu sp,sp,0x60
or a0,s0,zero
addiu t9,t9,0x3ed4
jalr t9
_sw v0,0x2c(sp)
lbu v1,0x51(s0)
lw gp,0x20(sp)
beq v1,zero,0x000f6d6c
_lw v0,0x2c(sp)
b 0x000f6dc0
_lw t9,-0x7ef0(gp)
lw t9,-0x7ed8(gp)
addiu t9,t9,0x3e04
jalr t9
_or a0,s0,zero
b 0x000f6cc0
_lw gp,0x20(sp)
(translation_unit "uint FUN_000f6c34(int param_1,int param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5,\n                 undefined4 *param_6,undefined4 param_7)\n\n{\n  char cVar1;\n  int iVar2;\n  uint uVar3;\n  code *pcVar4;\n  int local_34;\n  \n  pcVar4 = (code *)(PTR_LAB_0015b740 + -0x14b4);\n  *param_6 = 0;\n  iVar2 = (*pcVar4)();\n  if ((iVar2 == 0) || (param_2 == 0)) {\n                    /* WARNING: Could not recover jumptable at 0x000f6e10. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    uVar3 = (*(code *)(PTR_LAB_0015b710 + 0x7fdc))(0x1e4d1);\n    return uVar3;\n  }\n  (*(code *)PTR_sqlite3_mutex_enter_0015b6b0)(*(undefined4 *)(param_1 + 0xc));\n  if (*(char *)(param_1 + 0x59) == '\0') {\n    (*(code *)(PTR_LAB_0015b6d8 + 0x3e04))(param_1);\n  }\n  local_34 = 2;\n  pcVar4 = (code *)(PTR_LAB_0015b700 + -0x5f2c);\n  while( true ) {\n    do {\n      uVar3 = FUN_000f6474(param_1,param_2,param_3,param_4,param_5,param_6,param_7);\n    } while (uVar3 == 0x201);\n    if (uVar3 != 0x11) break;\n    if (*(int *)(param_1 + 0x38) == 0) {\n      (*pcVar4)(param_1);\n    }\n    if (local_34 == 1) break;\n    local_34 = 1;\n  }\n  if (*(char *)(param_1 + 0x59) == '\0') {\n    (*(code *)(PTR_LAB_0015b6d8 + 0x3ed4))(param_1);\n    cVar1 = *(char *)(param_1 + 0x51);\n  }\n  else {\n    cVar1 = *(char *)(param_1 + 0x51);\n  }\n  if ((cVar1 == '\0') && (uVar3 != 0xc0a)) {\n    uVar3 = uVar3 & *(uint *)(param_1 + 0x44);\n  }\n  else {\n    uVar3 = (*(code *)(PTR_LAB_0015b6c0 + 0x7588))(param_1);\n  }\n  (*(code *)PTR_sqlite3_mutex_leave_0015b6b4)(*(undefined4 *)(param_1 + 0xc));\n  return uVar3;\n}\n\n" (function_definition "uint FUN_000f6c34(int param_1,int param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5,\n                 undefined4 *param_6,undefined4 param_7)\n\n{\n  char cVar1;\n  int iVar2;\n  uint uVar3;\n  code *pcVar4;\n  int local_34;\n  \n  pcVar4 = (code *)(PTR_LAB_0015b740 + -0x14b4);\n  *param_6 = 0;\n  iVar2 = (*pcVar4)();\n  if ((iVar2 == 0) || (param_2 == 0)) {\n                    /* WARNING: Could not recover jumptable at 0x000f6e10. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    uVar3 = (*(code *)(PTR_LAB_0015b710 + 0x7fdc))(0x1e4d1);\n    return uVar3;\n  }\n  (*(code *)PTR_sqlite3_mutex_enter_0015b6b0)(*(undefined4 *)(param_1 + 0xc));\n  if (*(char *)(param_1 + 0x59) == '\0') {\n    (*(code *)(PTR_LAB_0015b6d8 + 0x3e04))(param_1);\n  }\n  local_34 = 2;\n  pcVar4 = (code *)(PTR_LAB_0015b700 + -0x5f2c);\n  while( true ) {\n    do {\n      uVar3 = FUN_000f6474(param_1,param_2,param_3,param_4,param_5,param_6,param_7);\n    } while (uVar3 == 0x201);\n    if (uVar3 != 0x11) break;\n    if (*(int *)(param_1 + 0x38) == 0) {\n      (*pcVar4)(param_1);\n    }\n    if (local_34 == 1) break;\n    local_34 = 1;\n  }\n  if (*(char *)(param_1 + 0x59) == '\0') {\n    (*(code *)(PTR_LAB_0015b6d8 + 0x3ed4))(param_1);\n    cVar1 = *(char *)(param_1 + 0x51);\n  }\n  else {\n    cVar1 = *(char *)(param_1 + 0x51);\n  }\n  if ((cVar1 == '\0') && (uVar3 != 0xc0a)) {\n    uVar3 = uVar3 & *(uint *)(param_1 + 0x44);\n  }\n  else {\n    uVar3 = (*(code *)(PTR_LAB_0015b6c0 + 0x7588))(param_1);\n  }\n  (*(code *)PTR_sqlite3_mutex_leave_0015b6b4)(*(undefined4 *)(param_1 + 0xc));\n  return uVar3;\n}" type_identifier (function_declarator "FUN_000f6c34(int param_1,int param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5,\n                 undefined4 *param_6,undefined4 param_7)" identifier (parameter_list "(int param_1,int param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5,\n                 undefined4 *param_6,undefined4 param_7)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) , (parameter_declaration "undefined4 *param_6" type_identifier (pointer_declarator "*param_6" * identifier)) , (parameter_declaration "undefined4 param_7" type_identifier identifier) ))) (compound_statement "{\n  char cVar1;\n  int iVar2;\n  uint uVar3;\n  code *pcVar4;\n  int local_34;\n  \n  pcVar4 = (code *)(PTR_LAB_0015b740 + -0x14b4);\n  *param_6 = 0;\n  iVar2 = (*pcVar4)();\n  if ((iVar2 == 0) || (param_2 == 0)) {\n                    /* WARNING: Could not recover jumptable at 0x000f6e10. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    uVar3 = (*(code *)(PTR_LAB_0015b710 + 0x7fdc))(0x1e4d1);\n    return uVar3;\n  }\n  (*(code *)PTR_sqlite3_mutex_enter_0015b6b0)(*(undefined4 *)(param_1 + 0xc));\n  if (*(char *)(param_1 + 0x59) == '\0') {\n    (*(code *)(PTR_LAB_0015b6d8 + 0x3e04))(param_1);\n  }\n  local_34 = 2;\n  pcVar4 = (code *)(PTR_LAB_0015b700 + -0x5f2c);\n  while( true ) {\n    do {\n      uVar3 = FUN_000f6474(param_1,param_2,param_3,param_4,param_5,param_6,param_7);\n    } while (uVar3 == 0x201);\n    if (uVar3 != 0x11) break;\n    if (*(int *)(param_1 + 0x38) == 0) {\n      (*pcVar4)(param_1);\n    }\n    if (local_34 == 1) break;\n    local_34 = 1;\n  }\n  if (*(char *)(param_1 + 0x59) == '\0') {\n    (*(code *)(PTR_LAB_0015b6d8 + 0x3ed4))(param_1);\n    cVar1 = *(char *)(param_1 + 0x51);\n  }\n  else {\n    cVar1 = *(char *)(param_1 + 0x51);\n  }\n  if ((cVar1 == '\0') && (uVar3 != 0xc0a)) {\n    uVar3 = uVar3 & *(uint *)(param_1 + 0x44);\n  }\n  else {\n    uVar3 = (*(code *)(PTR_LAB_0015b6c0 + 0x7588))(param_1);\n  }\n  (*(code *)PTR_sqlite3_mutex_leave_0015b6b4)(*(undefined4 *)(param_1 + 0xc));\n  return uVar3;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "code *pcVar4;" type_identifier (pointer_declarator "*pcVar4" * identifier) ;) (declaration "int local_34;" primitive_type identifier ;) (expression_statement "pcVar4 = (code *)(PTR_LAB_0015b740 + -0x14b4);" (assignment_expression "pcVar4 = (code *)(PTR_LAB_0015b740 + -0x14b4)" identifier = (cast_expression "(code *)(PTR_LAB_0015b740 + -0x14b4)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b740 + -0x14b4)" ( (binary_expression "PTR_LAB_0015b740 + -0x14b4" identifier + number_literal) )))) ;) (expression_statement "*param_6 = 0;" (assignment_expression "*param_6 = 0" (pointer_expression "*param_6" * identifier) = number_literal) ;) (expression_statement "iVar2 = (*pcVar4)();" (assignment_expression "iVar2 = (*pcVar4)()" identifier = (call_expression "(*pcVar4)()" (parenthesized_expression "(*pcVar4)" ( (pointer_expression "*pcVar4" * identifier) )) (argument_list "()" ( )))) ;) (if_statement "if ((iVar2 == 0) || (param_2 == 0)) {\n                    /* WARNING: Could not recover jumptable at 0x000f6e10. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    uVar3 = (*(code *)(PTR_LAB_0015b710 + 0x7fdc))(0x1e4d1);\n    return uVar3;\n  }" if (parenthesized_expression "((iVar2 == 0) || (param_2 == 0))" ( (binary_expression "(iVar2 == 0) || (param_2 == 0)" (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) || (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) ))) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x000f6e10. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    uVar3 = (*(code *)(PTR_LAB_0015b710 + 0x7fdc))(0x1e4d1);\n    return uVar3;\n  }" { comment comment (expression_statement "uVar3 = (*(code *)(PTR_LAB_0015b710 + 0x7fdc))(0x1e4d1);" (assignment_expression "uVar3 = (*(code *)(PTR_LAB_0015b710 + 0x7fdc))(0x1e4d1)" identifier = (call_expression "(*(code *)(PTR_LAB_0015b710 + 0x7fdc))(0x1e4d1)" (parenthesized_expression "(*(code *)(PTR_LAB_0015b710 + 0x7fdc))" ( (pointer_expression "*(code *)(PTR_LAB_0015b710 + 0x7fdc)" * (cast_expression "(code *)(PTR_LAB_0015b710 + 0x7fdc)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b710 + 0x7fdc)" ( (binary_expression "PTR_LAB_0015b710 + 0x7fdc" identifier + number_literal) )))) )) (argument_list "(0x1e4d1)" ( number_literal )))) ;) (return_statement "return uVar3;" return identifier ;) })) (expression_statement "(*(code *)PTR_sqlite3_mutex_enter_0015b6b0)(*(undefined4 *)(param_1 + 0xc));" (call_expression "(*(code *)PTR_sqlite3_mutex_enter_0015b6b0)(*(undefined4 *)(param_1 + 0xc))" (parenthesized_expression "(*(code *)PTR_sqlite3_mutex_enter_0015b6b0)" ( (pointer_expression "*(code *)PTR_sqlite3_mutex_enter_0015b6b0" * (cast_expression "(code *)PTR_sqlite3_mutex_enter_0015b6b0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)(param_1 + 0xc))" ( (pointer_expression "*(undefined4 *)(param_1 + 0xc)" * (cast_expression "(undefined4 *)(param_1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) ))) ;) (if_statement "if (*(char *)(param_1 + 0x59) == '\0') {\n    (*(code *)(PTR_LAB_0015b6d8 + 0x3e04))(param_1);\n  }" if (parenthesized_expression "(*(char *)(param_1 + 0x59) == '\0')" ( (binary_expression "*(char *)(param_1 + 0x59) == '\0'" (pointer_expression "*(char *)(param_1 + 0x59)" * (cast_expression "(char *)(param_1 + 0x59)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x59)" ( (binary_expression "param_1 + 0x59" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    (*(code *)(PTR_LAB_0015b6d8 + 0x3e04))(param_1);\n  }" { (expression_statement "(*(code *)(PTR_LAB_0015b6d8 + 0x3e04))(param_1);" (call_expression "(*(code *)(PTR_LAB_0015b6d8 + 0x3e04))(param_1)" (parenthesized_expression "(*(code *)(PTR_LAB_0015b6d8 + 0x3e04))" ( (pointer_expression "*(code *)(PTR_LAB_0015b6d8 + 0x3e04)" * (cast_expression "(code *)(PTR_LAB_0015b6d8 + 0x3e04)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b6d8 + 0x3e04)" ( (binary_expression "PTR_LAB_0015b6d8 + 0x3e04" identifier + number_literal) )))) )) (argument_list "(param_1)" ( identifier ))) ;) })) (expression_statement "local_34 = 2;" (assignment_expression "local_34 = 2" identifier = number_literal) ;) (expression_statement "pcVar4 = (code *)(PTR_LAB_0015b700 + -0x5f2c);" (assignment_expression "pcVar4 = (code *)(PTR_LAB_0015b700 + -0x5f2c)" identifier = (cast_expression "(code *)(PTR_LAB_0015b700 + -0x5f2c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b700 + -0x5f2c)" ( (binary_expression "PTR_LAB_0015b700 + -0x5f2c" identifier + number_literal) )))) ;) (while_statement "while( true ) {\n    do {\n      uVar3 = FUN_000f6474(param_1,param_2,param_3,param_4,param_5,param_6,param_7);\n    } while (uVar3 == 0x201);\n    if (uVar3 != 0x11) break;\n    if (*(int *)(param_1 + 0x38) == 0) {\n      (*pcVar4)(param_1);\n    }\n    if (local_34 == 1) break;\n    local_34 = 1;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    do {\n      uVar3 = FUN_000f6474(param_1,param_2,param_3,param_4,param_5,param_6,param_7);\n    } while (uVar3 == 0x201);\n    if (uVar3 != 0x11) break;\n    if (*(int *)(param_1 + 0x38) == 0) {\n      (*pcVar4)(param_1);\n    }\n    if (local_34 == 1) break;\n    local_34 = 1;\n  }" { (do_statement "do {\n      uVar3 = FUN_000f6474(param_1,param_2,param_3,param_4,param_5,param_6,param_7);\n    } while (uVar3 == 0x201);" do (compound_statement "{\n      uVar3 = FUN_000f6474(param_1,param_2,param_3,param_4,param_5,param_6,param_7);\n    }" { (expression_statement "uVar3 = FUN_000f6474(param_1,param_2,param_3,param_4,param_5,param_6,param_7);" (assignment_expression "uVar3 = FUN_000f6474(param_1,param_2,param_3,param_4,param_5,param_6,param_7)" identifier = (call_expression "FUN_000f6474(param_1,param_2,param_3,param_4,param_5,param_6,param_7)" identifier (argument_list "(param_1,param_2,param_3,param_4,param_5,param_6,param_7)" ( identifier , identifier , identifier , identifier , identifier , identifier , identifier )))) ;) }) while (parenthesized_expression "(uVar3 == 0x201)" ( (binary_expression "uVar3 == 0x201" identifier == number_literal) )) ;) (if_statement "if (uVar3 != 0x11) break;" if (parenthesized_expression "(uVar3 != 0x11)" ( (binary_expression "uVar3 != 0x11" identifier != number_literal) )) (break_statement "break;" break ;)) (if_statement "if (*(int *)(param_1 + 0x38) == 0) {\n      (*pcVar4)(param_1);\n    }" if (parenthesized_expression "(*(int *)(param_1 + 0x38) == 0)" ( (binary_expression "*(int *)(param_1 + 0x38) == 0" (pointer_expression "*(int *)(param_1 + 0x38)" * (cast_expression "(int *)(param_1 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      (*pcVar4)(param_1);\n    }" { (expression_statement "(*pcVar4)(param_1);" (call_expression "(*pcVar4)(param_1)" (parenthesized_expression "(*pcVar4)" ( (pointer_expression "*pcVar4" * identifier) )) (argument_list "(param_1)" ( identifier ))) ;) })) (if_statement "if (local_34 == 1) break;" if (parenthesized_expression "(local_34 == 1)" ( (binary_expression "local_34 == 1" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "local_34 = 1;" (assignment_expression "local_34 = 1" identifier = number_literal) ;) })) (if_statement "if (*(char *)(param_1 + 0x59) == '\0') {\n    (*(code *)(PTR_LAB_0015b6d8 + 0x3ed4))(param_1);\n    cVar1 = *(char *)(param_1 + 0x51);\n  }\n  else {\n    cVar1 = *(char *)(param_1 + 0x51);\n  }" if (parenthesized_expression "(*(char *)(param_1 + 0x59) == '\0')" ( (binary_expression "*(char *)(param_1 + 0x59) == '\0'" (pointer_expression "*(char *)(param_1 + 0x59)" * (cast_expression "(char *)(param_1 + 0x59)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x59)" ( (binary_expression "param_1 + 0x59" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    (*(code *)(PTR_LAB_0015b6d8 + 0x3ed4))(param_1);\n    cVar1 = *(char *)(param_1 + 0x51);\n  }" { (expression_statement "(*(code *)(PTR_LAB_0015b6d8 + 0x3ed4))(param_1);" (call_expression "(*(code *)(PTR_LAB_0015b6d8 + 0x3ed4))(param_1)" (parenthesized_expression "(*(code *)(PTR_LAB_0015b6d8 + 0x3ed4))" ( (pointer_expression "*(code *)(PTR_LAB_0015b6d8 + 0x3ed4)" * (cast_expression "(code *)(PTR_LAB_0015b6d8 + 0x3ed4)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b6d8 + 0x3ed4)" ( (binary_expression "PTR_LAB_0015b6d8 + 0x3ed4" identifier + number_literal) )))) )) (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "cVar1 = *(char *)(param_1 + 0x51);" (assignment_expression "cVar1 = *(char *)(param_1 + 0x51)" identifier = (pointer_expression "*(char *)(param_1 + 0x51)" * (cast_expression "(char *)(param_1 + 0x51)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x51)" ( (binary_expression "param_1 + 0x51" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    cVar1 = *(char *)(param_1 + 0x51);\n  }" else (compound_statement "{\n    cVar1 = *(char *)(param_1 + 0x51);\n  }" { (expression_statement "cVar1 = *(char *)(param_1 + 0x51);" (assignment_expression "cVar1 = *(char *)(param_1 + 0x51)" identifier = (pointer_expression "*(char *)(param_1 + 0x51)" * (cast_expression "(char *)(param_1 + 0x51)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x51)" ( (binary_expression "param_1 + 0x51" identifier + number_literal) ))))) ;) }))) (if_statement "if ((cVar1 == '\0') && (uVar3 != 0xc0a)) {\n    uVar3 = uVar3 & *(uint *)(param_1 + 0x44);\n  }\n  else {\n    uVar3 = (*(code *)(PTR_LAB_0015b6c0 + 0x7588))(param_1);\n  }" if (parenthesized_expression "((cVar1 == '\0') && (uVar3 != 0xc0a))" ( (binary_expression "(cVar1 == '\0') && (uVar3 != 0xc0a)" (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(uVar3 != 0xc0a)" ( (binary_expression "uVar3 != 0xc0a" identifier != number_literal) ))) )) (compound_statement "{\n    uVar3 = uVar3 & *(uint *)(param_1 + 0x44);\n  }" { (expression_statement "uVar3 = uVar3 & *(uint *)(param_1 + 0x44);" (assignment_expression "uVar3 = uVar3 & *(uint *)(param_1 + 0x44)" identifier = (binary_expression "uVar3 & *(uint *)(param_1 + 0x44)" identifier & (pointer_expression "*(uint *)(param_1 + 0x44)" * (cast_expression "(uint *)(param_1 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) )))))) ;) }) (else_clause "else {\n    uVar3 = (*(code *)(PTR_LAB_0015b6c0 + 0x7588))(param_1);\n  }" else (compound_statement "{\n    uVar3 = (*(code *)(PTR_LAB_0015b6c0 + 0x7588))(param_1);\n  }" { (expression_statement "uVar3 = (*(code *)(PTR_LAB_0015b6c0 + 0x7588))(param_1);" (assignment_expression "uVar3 = (*(code *)(PTR_LAB_0015b6c0 + 0x7588))(param_1)" identifier = (call_expression "(*(code *)(PTR_LAB_0015b6c0 + 0x7588))(param_1)" (parenthesized_expression "(*(code *)(PTR_LAB_0015b6c0 + 0x7588))" ( (pointer_expression "*(code *)(PTR_LAB_0015b6c0 + 0x7588)" * (cast_expression "(code *)(PTR_LAB_0015b6c0 + 0x7588)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b6c0 + 0x7588)" ( (binary_expression "PTR_LAB_0015b6c0 + 0x7588" identifier + number_literal) )))) )) (argument_list "(param_1)" ( identifier )))) ;) }))) (expression_statement "(*(code *)PTR_sqlite3_mutex_leave_0015b6b4)(*(undefined4 *)(param_1 + 0xc));" (call_expression "(*(code *)PTR_sqlite3_mutex_leave_0015b6b4)(*(undefined4 *)(param_1 + 0xc))" (parenthesized_expression "(*(code *)PTR_sqlite3_mutex_leave_0015b6b4)" ( (pointer_expression "*(code *)PTR_sqlite3_mutex_leave_0015b6b4" * (cast_expression "(code *)PTR_sqlite3_mutex_leave_0015b6b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)(param_1 + 0xc))" ( (pointer_expression "*(undefined4 *)(param_1 + 0xc)" * (cast_expression "(undefined4 *)(param_1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) ))) ;) (return_statement "return uVar3;" return identifier ;) })))
(translation_unit "int sqlite3LockAndPrepare\n              (sqlite3 *db,char *zSql,int nBytes,u32 prepFlags,Vdbe *pOld,sqlite3_stmt **ppStmt,\n              char **pzTail)\n\n{\n  int iVar1;\n  uint uVar2;\n  code *pcVar3;\n  int iStack_34;\n  \n  pcVar3 = (code *)(PTR_LAB_0015b740 + -0x14b4);\n  *ppStmt = (sqlite3_stmt *)0x0;\n  iVar1 = (*pcVar3)();\n  if ((iVar1 == 0) || (zSql == (char *)0x0)) {\n                    /* WARNING: Could not recover jumptable at 0x000f6e10. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    iVar1 = (*(code *)(PTR_LAB_0015b710 + 0x7fdc))(0x1e4d1);\n    return iVar1;\n  }\n  (*(code *)PTR_sqlite3_mutex_enter_0015b6b0)(db->mutex);\n  if (db->noSharedCache == '\0') {\n    (*(code *)(PTR_LAB_0015b6d8 + 0x3e04))(db);\n  }\n  iStack_34 = 2;\n  pcVar3 = (code *)(PTR_LAB_0015b700 + -0x5f2c);\n  while( true ) {\n    do {\n      uVar2 = sqlite3Prepare(db,zSql,nBytes,prepFlags,pOld,ppStmt,pzTail);\n    } while (uVar2 == 0x201);\n    if (uVar2 != 0x11) break;\n    if (db->nSchemaLock == 0) {\n      (*pcVar3)(db);\n    }\n    if (iStack_34 == 1) break;\n    iStack_34 = 1;\n  }\n  if (db->noSharedCache == '\0') {\n    (*(code *)(PTR_LAB_0015b6d8 + 0x3ed4))(db);\n    if (db->mallocFailed != '\0') {\n      iVar1 = FUN_000f6dc0();\n      return iVar1;\n    }\nLAB_000f6d6c:\n    if (uVar2 != 0xc0a) {\n      uVar2 = uVar2 & db->errMask;\n      goto LAB_000f6d80;\n    }\n  }\n  else if (db->mallocFailed == '\0') goto LAB_000f6d6c;\n  uVar2 = (*(code *)(PTR_LAB_0015b6c0 + 0x7588))(db);\nLAB_000f6d80:\n  (*(code *)PTR_sqlite3_mutex_leave_0015b6b4)(db->mutex);\n  return uVar2;\n}\n\n" (function_definition "int sqlite3LockAndPrepare\n              (sqlite3 *db,char *zSql,int nBytes,u32 prepFlags,Vdbe *pOld,sqlite3_stmt **ppStmt,\n              char **pzTail)\n\n{\n  int iVar1;\n  uint uVar2;\n  code *pcVar3;\n  int iStack_34;\n  \n  pcVar3 = (code *)(PTR_LAB_0015b740 + -0x14b4);\n  *ppStmt = (sqlite3_stmt *)0x0;\n  iVar1 = (*pcVar3)();\n  if ((iVar1 == 0) || (zSql == (char *)0x0)) {\n                    /* WARNING: Could not recover jumptable at 0x000f6e10. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    iVar1 = (*(code *)(PTR_LAB_0015b710 + 0x7fdc))(0x1e4d1);\n    return iVar1;\n  }\n  (*(code *)PTR_sqlite3_mutex_enter_0015b6b0)(db->mutex);\n  if (db->noSharedCache == '\0') {\n    (*(code *)(PTR_LAB_0015b6d8 + 0x3e04))(db);\n  }\n  iStack_34 = 2;\n  pcVar3 = (code *)(PTR_LAB_0015b700 + -0x5f2c);\n  while( true ) {\n    do {\n      uVar2 = sqlite3Prepare(db,zSql,nBytes,prepFlags,pOld,ppStmt,pzTail);\n    } while (uVar2 == 0x201);\n    if (uVar2 != 0x11) break;\n    if (db->nSchemaLock == 0) {\n      (*pcVar3)(db);\n    }\n    if (iStack_34 == 1) break;\n    iStack_34 = 1;\n  }\n  if (db->noSharedCache == '\0') {\n    (*(code *)(PTR_LAB_0015b6d8 + 0x3ed4))(db);\n    if (db->mallocFailed != '\0') {\n      iVar1 = FUN_000f6dc0();\n      return iVar1;\n    }\nLAB_000f6d6c:\n    if (uVar2 != 0xc0a) {\n      uVar2 = uVar2 & db->errMask;\n      goto LAB_000f6d80;\n    }\n  }\n  else if (db->mallocFailed == '\0') goto LAB_000f6d6c;\n  uVar2 = (*(code *)(PTR_LAB_0015b6c0 + 0x7588))(db);\nLAB_000f6d80:\n  (*(code *)PTR_sqlite3_mutex_leave_0015b6b4)(db->mutex);\n  return uVar2;\n}" primitive_type (function_declarator "sqlite3LockAndPrepare\n              (sqlite3 *db,char *zSql,int nBytes,u32 prepFlags,Vdbe *pOld,sqlite3_stmt **ppStmt,\n              char **pzTail)" identifier (parameter_list "(sqlite3 *db,char *zSql,int nBytes,u32 prepFlags,Vdbe *pOld,sqlite3_stmt **ppStmt,\n              char **pzTail)" ( (parameter_declaration "sqlite3 *db" type_identifier (pointer_declarator "*db" * identifier)) , (parameter_declaration "char *zSql" primitive_type (pointer_declarator "*zSql" * identifier)) , (parameter_declaration "int nBytes" primitive_type identifier) , (parameter_declaration "u32 prepFlags" type_identifier identifier) , (parameter_declaration "Vdbe *pOld" type_identifier (pointer_declarator "*pOld" * identifier)) , (parameter_declaration "sqlite3_stmt **ppStmt" type_identifier (pointer_declarator "**ppStmt" * (pointer_declarator "*ppStmt" * identifier))) , (parameter_declaration "char **pzTail" primitive_type (pointer_declarator "**pzTail" * (pointer_declarator "*pzTail" * identifier))) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  code *pcVar3;\n  int iStack_34;\n  \n  pcVar3 = (code *)(PTR_LAB_0015b740 + -0x14b4);\n  *ppStmt = (sqlite3_stmt *)0x0;\n  iVar1 = (*pcVar3)();\n  if ((iVar1 == 0) || (zSql == (char *)0x0)) {\n                    /* WARNING: Could not recover jumptable at 0x000f6e10. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    iVar1 = (*(code *)(PTR_LAB_0015b710 + 0x7fdc))(0x1e4d1);\n    return iVar1;\n  }\n  (*(code *)PTR_sqlite3_mutex_enter_0015b6b0)(db->mutex);\n  if (db->noSharedCache == '\0') {\n    (*(code *)(PTR_LAB_0015b6d8 + 0x3e04))(db);\n  }\n  iStack_34 = 2;\n  pcVar3 = (code *)(PTR_LAB_0015b700 + -0x5f2c);\n  while( true ) {\n    do {\n      uVar2 = sqlite3Prepare(db,zSql,nBytes,prepFlags,pOld,ppStmt,pzTail);\n    } while (uVar2 == 0x201);\n    if (uVar2 != 0x11) break;\n    if (db->nSchemaLock == 0) {\n      (*pcVar3)(db);\n    }\n    if (iStack_34 == 1) break;\n    iStack_34 = 1;\n  }\n  if (db->noSharedCache == '\0') {\n    (*(code *)(PTR_LAB_0015b6d8 + 0x3ed4))(db);\n    if (db->mallocFailed != '\0') {\n      iVar1 = FUN_000f6dc0();\n      return iVar1;\n    }\nLAB_000f6d6c:\n    if (uVar2 != 0xc0a) {\n      uVar2 = uVar2 & db->errMask;\n      goto LAB_000f6d80;\n    }\n  }\n  else if (db->mallocFailed == '\0') goto LAB_000f6d6c;\n  uVar2 = (*(code *)(PTR_LAB_0015b6c0 + 0x7588))(db);\nLAB_000f6d80:\n  (*(code *)PTR_sqlite3_mutex_leave_0015b6b4)(db->mutex);\n  return uVar2;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "code *pcVar3;" type_identifier (pointer_declarator "*pcVar3" * identifier) ;) (declaration "int iStack_34;" primitive_type identifier ;) (expression_statement "pcVar3 = (code *)(PTR_LAB_0015b740 + -0x14b4);" (assignment_expression "pcVar3 = (code *)(PTR_LAB_0015b740 + -0x14b4)" identifier = (cast_expression "(code *)(PTR_LAB_0015b740 + -0x14b4)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b740 + -0x14b4)" ( (binary_expression "PTR_LAB_0015b740 + -0x14b4" identifier + number_literal) )))) ;) (expression_statement "*ppStmt = (sqlite3_stmt *)0x0;" (assignment_expression "*ppStmt = (sqlite3_stmt *)0x0" (pointer_expression "*ppStmt" * identifier) = (cast_expression "(sqlite3_stmt *)0x0" ( (type_descriptor "sqlite3_stmt *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar1 = (*pcVar3)();" (assignment_expression "iVar1 = (*pcVar3)()" identifier = (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( )))) ;) (if_statement "if ((iVar1 == 0) || (zSql == (char *)0x0)) {\n                    /* WARNING: Could not recover jumptable at 0x000f6e10. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    iVar1 = (*(code *)(PTR_LAB_0015b710 + 0x7fdc))(0x1e4d1);\n    return iVar1;\n  }" if (parenthesized_expression "((iVar1 == 0) || (zSql == (char *)0x0))" ( (binary_expression "(iVar1 == 0) || (zSql == (char *)0x0)" (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) || (parenthesized_expression "(zSql == (char *)0x0)" ( (binary_expression "zSql == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x000f6e10. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    iVar1 = (*(code *)(PTR_LAB_0015b710 + 0x7fdc))(0x1e4d1);\n    return iVar1;\n  }" { comment comment (expression_statement "iVar1 = (*(code *)(PTR_LAB_0015b710 + 0x7fdc))(0x1e4d1);" (assignment_expression "iVar1 = (*(code *)(PTR_LAB_0015b710 + 0x7fdc))(0x1e4d1)" identifier = (call_expression "(*(code *)(PTR_LAB_0015b710 + 0x7fdc))(0x1e4d1)" (parenthesized_expression "(*(code *)(PTR_LAB_0015b710 + 0x7fdc))" ( (pointer_expression "*(code *)(PTR_LAB_0015b710 + 0x7fdc)" * (cast_expression "(code *)(PTR_LAB_0015b710 + 0x7fdc)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b710 + 0x7fdc)" ( (binary_expression "PTR_LAB_0015b710 + 0x7fdc" identifier + number_literal) )))) )) (argument_list "(0x1e4d1)" ( number_literal )))) ;) (return_statement "return iVar1;" return identifier ;) })) (expression_statement "(*(code *)PTR_sqlite3_mutex_enter_0015b6b0)(db->mutex);" (call_expression "(*(code *)PTR_sqlite3_mutex_enter_0015b6b0)(db->mutex)" (parenthesized_expression "(*(code *)PTR_sqlite3_mutex_enter_0015b6b0)" ( (pointer_expression "*(code *)PTR_sqlite3_mutex_enter_0015b6b0" * (cast_expression "(code *)PTR_sqlite3_mutex_enter_0015b6b0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(db->mutex)" ( (field_expression "db->mutex" identifier -> field_identifier) ))) ;) (if_statement "if (db->noSharedCache == '\0') {\n    (*(code *)(PTR_LAB_0015b6d8 + 0x3e04))(db);\n  }" if (parenthesized_expression "(db->noSharedCache == '\0')" ( (binary_expression "db->noSharedCache == '\0'" (field_expression "db->noSharedCache" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    (*(code *)(PTR_LAB_0015b6d8 + 0x3e04))(db);\n  }" { (expression_statement "(*(code *)(PTR_LAB_0015b6d8 + 0x3e04))(db);" (call_expression "(*(code *)(PTR_LAB_0015b6d8 + 0x3e04))(db)" (parenthesized_expression "(*(code *)(PTR_LAB_0015b6d8 + 0x3e04))" ( (pointer_expression "*(code *)(PTR_LAB_0015b6d8 + 0x3e04)" * (cast_expression "(code *)(PTR_LAB_0015b6d8 + 0x3e04)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b6d8 + 0x3e04)" ( (binary_expression "PTR_LAB_0015b6d8 + 0x3e04" identifier + number_literal) )))) )) (argument_list "(db)" ( identifier ))) ;) })) (expression_statement "iStack_34 = 2;" (assignment_expression "iStack_34 = 2" identifier = number_literal) ;) (expression_statement "pcVar3 = (code *)(PTR_LAB_0015b700 + -0x5f2c);" (assignment_expression "pcVar3 = (code *)(PTR_LAB_0015b700 + -0x5f2c)" identifier = (cast_expression "(code *)(PTR_LAB_0015b700 + -0x5f2c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b700 + -0x5f2c)" ( (binary_expression "PTR_LAB_0015b700 + -0x5f2c" identifier + number_literal) )))) ;) (while_statement "while( true ) {\n    do {\n      uVar2 = sqlite3Prepare(db,zSql,nBytes,prepFlags,pOld,ppStmt,pzTail);\n    } while (uVar2 == 0x201);\n    if (uVar2 != 0x11) break;\n    if (db->nSchemaLock == 0) {\n      (*pcVar3)(db);\n    }\n    if (iStack_34 == 1) break;\n    iStack_34 = 1;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    do {\n      uVar2 = sqlite3Prepare(db,zSql,nBytes,prepFlags,pOld,ppStmt,pzTail);\n    } while (uVar2 == 0x201);\n    if (uVar2 != 0x11) break;\n    if (db->nSchemaLock == 0) {\n      (*pcVar3)(db);\n    }\n    if (iStack_34 == 1) break;\n    iStack_34 = 1;\n  }" { (do_statement "do {\n      uVar2 = sqlite3Prepare(db,zSql,nBytes,prepFlags,pOld,ppStmt,pzTail);\n    } while (uVar2 == 0x201);" do (compound_statement "{\n      uVar2 = sqlite3Prepare(db,zSql,nBytes,prepFlags,pOld,ppStmt,pzTail);\n    }" { (expression_statement "uVar2 = sqlite3Prepare(db,zSql,nBytes,prepFlags,pOld,ppStmt,pzTail);" (assignment_expression "uVar2 = sqlite3Prepare(db,zSql,nBytes,prepFlags,pOld,ppStmt,pzTail)" identifier = (call_expression "sqlite3Prepare(db,zSql,nBytes,prepFlags,pOld,ppStmt,pzTail)" identifier (argument_list "(db,zSql,nBytes,prepFlags,pOld,ppStmt,pzTail)" ( identifier , identifier , identifier , identifier , identifier , identifier , identifier )))) ;) }) while (parenthesized_expression "(uVar2 == 0x201)" ( (binary_expression "uVar2 == 0x201" identifier == number_literal) )) ;) (if_statement "if (uVar2 != 0x11) break;" if (parenthesized_expression "(uVar2 != 0x11)" ( (binary_expression "uVar2 != 0x11" identifier != number_literal) )) (break_statement "break;" break ;)) (if_statement "if (db->nSchemaLock == 0) {\n      (*pcVar3)(db);\n    }" if (parenthesized_expression "(db->nSchemaLock == 0)" ( (binary_expression "db->nSchemaLock == 0" (field_expression "db->nSchemaLock" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n      (*pcVar3)(db);\n    }" { (expression_statement "(*pcVar3)(db);" (call_expression "(*pcVar3)(db)" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "(db)" ( identifier ))) ;) })) (if_statement "if (iStack_34 == 1) break;" if (parenthesized_expression "(iStack_34 == 1)" ( (binary_expression "iStack_34 == 1" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iStack_34 = 1;" (assignment_expression "iStack_34 = 1" identifier = number_literal) ;) })) (if_statement "if (db->noSharedCache == '\0') {\n    (*(code *)(PTR_LAB_0015b6d8 + 0x3ed4))(db);\n    if (db->mallocFailed != '\0') {\n      iVar1 = FUN_000f6dc0();\n      return iVar1;\n    }\nLAB_000f6d6c:\n    if (uVar2 != 0xc0a) {\n      uVar2 = uVar2 & db->errMask;\n      goto LAB_000f6d80;\n    }\n  }\n  else if (db->mallocFailed == '\0') goto LAB_000f6d6c;" if (parenthesized_expression "(db->noSharedCache == '\0')" ( (binary_expression "db->noSharedCache == '\0'" (field_expression "db->noSharedCache" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    (*(code *)(PTR_LAB_0015b6d8 + 0x3ed4))(db);\n    if (db->mallocFailed != '\0') {\n      iVar1 = FUN_000f6dc0();\n      return iVar1;\n    }\nLAB_000f6d6c:\n    if (uVar2 != 0xc0a) {\n      uVar2 = uVar2 & db->errMask;\n      goto LAB_000f6d80;\n    }\n  }" { (expression_statement "(*(code *)(PTR_LAB_0015b6d8 + 0x3ed4))(db);" (call_expression "(*(code *)(PTR_LAB_0015b6d8 + 0x3ed4))(db)" (parenthesized_expression "(*(code *)(PTR_LAB_0015b6d8 + 0x3ed4))" ( (pointer_expression "*(code *)(PTR_LAB_0015b6d8 + 0x3ed4)" * (cast_expression "(code *)(PTR_LAB_0015b6d8 + 0x3ed4)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b6d8 + 0x3ed4)" ( (binary_expression "PTR_LAB_0015b6d8 + 0x3ed4" identifier + number_literal) )))) )) (argument_list "(db)" ( identifier ))) ;) (if_statement "if (db->mallocFailed != '\0') {\n      iVar1 = FUN_000f6dc0();\n      return iVar1;\n    }" if (parenthesized_expression "(db->mallocFailed != '\0')" ( (binary_expression "db->mallocFailed != '\0'" (field_expression "db->mallocFailed" identifier -> field_identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      iVar1 = FUN_000f6dc0();\n      return iVar1;\n    }" { (expression_statement "iVar1 = FUN_000f6dc0();" (assignment_expression "iVar1 = FUN_000f6dc0()" identifier = (call_expression "FUN_000f6dc0()" identifier (argument_list "()" ( )))) ;) (return_statement "return iVar1;" return identifier ;) })) (labeled_statement "LAB_000f6d6c:\n    if (uVar2 != 0xc0a) {\n      uVar2 = uVar2 & db->errMask;\n      goto LAB_000f6d80;\n    }" statement_identifier : (if_statement "if (uVar2 != 0xc0a) {\n      uVar2 = uVar2 & db->errMask;\n      goto LAB_000f6d80;\n    }" if (parenthesized_expression "(uVar2 != 0xc0a)" ( (binary_expression "uVar2 != 0xc0a" identifier != number_literal) )) (compound_statement "{\n      uVar2 = uVar2 & db->errMask;\n      goto LAB_000f6d80;\n    }" { (expression_statement "uVar2 = uVar2 & db->errMask;" (assignment_expression "uVar2 = uVar2 & db->errMask" identifier = (binary_expression "uVar2 & db->errMask" identifier & (field_expression "db->errMask" identifier -> field_identifier))) ;) (goto_statement "goto LAB_000f6d80;" goto statement_identifier ;) }))) }) (else_clause "else if (db->mallocFailed == '\0') goto LAB_000f6d6c;" else (if_statement "if (db->mallocFailed == '\0') goto LAB_000f6d6c;" if (parenthesized_expression "(db->mallocFailed == '\0')" ( (binary_expression "db->mallocFailed == '\0'" (field_expression "db->mallocFailed" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_000f6d6c;" goto statement_identifier ;)))) (expression_statement "uVar2 = (*(code *)(PTR_LAB_0015b6c0 + 0x7588))(db);" (assignment_expression "uVar2 = (*(code *)(PTR_LAB_0015b6c0 + 0x7588))(db)" identifier = (call_expression "(*(code *)(PTR_LAB_0015b6c0 + 0x7588))(db)" (parenthesized_expression "(*(code *)(PTR_LAB_0015b6c0 + 0x7588))" ( (pointer_expression "*(code *)(PTR_LAB_0015b6c0 + 0x7588)" * (cast_expression "(code *)(PTR_LAB_0015b6c0 + 0x7588)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b6c0 + 0x7588)" ( (binary_expression "PTR_LAB_0015b6c0 + 0x7588" identifier + number_literal) )))) )) (argument_list "(db)" ( identifier )))) ;) (labeled_statement "LAB_000f6d80:\n  (*(code *)PTR_sqlite3_mutex_leave_0015b6b4)(db->mutex);" statement_identifier : (expression_statement "(*(code *)PTR_sqlite3_mutex_leave_0015b6b4)(db->mutex);" (call_expression "(*(code *)PTR_sqlite3_mutex_leave_0015b6b4)(db->mutex)" (parenthesized_expression "(*(code *)PTR_sqlite3_mutex_leave_0015b6b4)" ( (pointer_expression "*(code *)PTR_sqlite3_mutex_leave_0015b6b4" * (cast_expression "(code *)PTR_sqlite3_mutex_leave_0015b6b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(db->mutex)" ( (field_expression "db->mutex" identifier -> field_identifier) ))) ;)) (return_statement "return uVar2;" return identifier ;) })))
(translation_unit "uint FUN_000f6c34(int param_1,int param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5,\n                 undefined4 *param_6,undefined4 param_7)\n\n{\n  char cVar1;\n  int iVar2;\n  uint uVar3;\n  code *pcVar4;\n  int local_34;\n  \n  pcVar4 = (code *)(PTR_LAB_0015b740 + -0x14b4);\n  *param_6 = 0;\n  iVar2 = (*pcVar4)();\n  if ((iVar2 == 0) || (param_2 == 0)) {\n                    \n                    \n    uVar3 = (*(code *)(PTR_LAB_0015b710 + 0x7fdc))(0x1e4d1);\n    return uVar3;\n  }\n  (*(code *)PTR_sqlite3_mutex_enter_0015b6b0)(*(undefined4 *)(param_1 + 0xc));\n  if (*(char *)(param_1 + 0x59) == '\0') {\n    (*(code *)(PTR_LAB_0015b6d8 + 0x3e04))(param_1);\n  }\n  local_34 = 2;\n  pcVar4 = (code *)(PTR_LAB_0015b700 + -0x5f2c);\n  while( true ) {\n    do {\n      uVar3 = FUN_000f6474(param_1,param_2,param_3,param_4,param_5,param_6,param_7);\n    } while (uVar3 == 0x201);\n    if (uVar3 != 0x11) break;\n    if (*(int *)(param_1 + 0x38) == 0) {\n      (*pcVar4)(param_1);\n    }\n    if (local_34 == 1) break;\n    local_34 = 1;\n  }\n  if (*(char *)(param_1 + 0x59) == '\0') {\n    (*(code *)(PTR_LAB_0015b6d8 + 0x3ed4))(param_1);\n    cVar1 = *(char *)(param_1 + 0x51);\n  }\n  else {\n    cVar1 = *(char *)(param_1 + 0x51);\n  }\n  if ((cVar1 == '\0') && (uVar3 != 0xc0a)) {\n    uVar3 = uVar3 & *(uint *)(param_1 + 0x44);\n  }\n  else {\n    uVar3 = (*(code *)(PTR_LAB_0015b6c0 + 0x7588))(param_1);\n  }\n  (*(code *)PTR_sqlite3_mutex_leave_0015b6b4)(*(undefined4 *)(param_1 + 0xc));\n  return uVar3;\n}\n\n" (function_definition "uint FUN_000f6c34(int param_1,int param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5,\n                 undefined4 *param_6,undefined4 param_7)\n\n{\n  char cVar1;\n  int iVar2;\n  uint uVar3;\n  code *pcVar4;\n  int local_34;\n  \n  pcVar4 = (code *)(PTR_LAB_0015b740 + -0x14b4);\n  *param_6 = 0;\n  iVar2 = (*pcVar4)();\n  if ((iVar2 == 0) || (param_2 == 0)) {\n                    \n                    \n    uVar3 = (*(code *)(PTR_LAB_0015b710 + 0x7fdc))(0x1e4d1);\n    return uVar3;\n  }\n  (*(code *)PTR_sqlite3_mutex_enter_0015b6b0)(*(undefined4 *)(param_1 + 0xc));\n  if (*(char *)(param_1 + 0x59) == '\0') {\n    (*(code *)(PTR_LAB_0015b6d8 + 0x3e04))(param_1);\n  }\n  local_34 = 2;\n  pcVar4 = (code *)(PTR_LAB_0015b700 + -0x5f2c);\n  while( true ) {\n    do {\n      uVar3 = FUN_000f6474(param_1,param_2,param_3,param_4,param_5,param_6,param_7);\n    } while (uVar3 == 0x201);\n    if (uVar3 != 0x11) break;\n    if (*(int *)(param_1 + 0x38) == 0) {\n      (*pcVar4)(param_1);\n    }\n    if (local_34 == 1) break;\n    local_34 = 1;\n  }\n  if (*(char *)(param_1 + 0x59) == '\0') {\n    (*(code *)(PTR_LAB_0015b6d8 + 0x3ed4))(param_1);\n    cVar1 = *(char *)(param_1 + 0x51);\n  }\n  else {\n    cVar1 = *(char *)(param_1 + 0x51);\n  }\n  if ((cVar1 == '\0') && (uVar3 != 0xc0a)) {\n    uVar3 = uVar3 & *(uint *)(param_1 + 0x44);\n  }\n  else {\n    uVar3 = (*(code *)(PTR_LAB_0015b6c0 + 0x7588))(param_1);\n  }\n  (*(code *)PTR_sqlite3_mutex_leave_0015b6b4)(*(undefined4 *)(param_1 + 0xc));\n  return uVar3;\n}" type_identifier (function_declarator "FUN_000f6c34(int param_1,int param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5,\n                 undefined4 *param_6,undefined4 param_7)" identifier (parameter_list "(int param_1,int param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5,\n                 undefined4 *param_6,undefined4 param_7)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) , (parameter_declaration "undefined4 *param_6" type_identifier (pointer_declarator "*param_6" * identifier)) , (parameter_declaration "undefined4 param_7" type_identifier identifier) ))) (compound_statement "{\n  char cVar1;\n  int iVar2;\n  uint uVar3;\n  code *pcVar4;\n  int local_34;\n  \n  pcVar4 = (code *)(PTR_LAB_0015b740 + -0x14b4);\n  *param_6 = 0;\n  iVar2 = (*pcVar4)();\n  if ((iVar2 == 0) || (param_2 == 0)) {\n                    \n                    \n    uVar3 = (*(code *)(PTR_LAB_0015b710 + 0x7fdc))(0x1e4d1);\n    return uVar3;\n  }\n  (*(code *)PTR_sqlite3_mutex_enter_0015b6b0)(*(undefined4 *)(param_1 + 0xc));\n  if (*(char *)(param_1 + 0x59) == '\0') {\n    (*(code *)(PTR_LAB_0015b6d8 + 0x3e04))(param_1);\n  }\n  local_34 = 2;\n  pcVar4 = (code *)(PTR_LAB_0015b700 + -0x5f2c);\n  while( true ) {\n    do {\n      uVar3 = FUN_000f6474(param_1,param_2,param_3,param_4,param_5,param_6,param_7);\n    } while (uVar3 == 0x201);\n    if (uVar3 != 0x11) break;\n    if (*(int *)(param_1 + 0x38) == 0) {\n      (*pcVar4)(param_1);\n    }\n    if (local_34 == 1) break;\n    local_34 = 1;\n  }\n  if (*(char *)(param_1 + 0x59) == '\0') {\n    (*(code *)(PTR_LAB_0015b6d8 + 0x3ed4))(param_1);\n    cVar1 = *(char *)(param_1 + 0x51);\n  }\n  else {\n    cVar1 = *(char *)(param_1 + 0x51);\n  }\n  if ((cVar1 == '\0') && (uVar3 != 0xc0a)) {\n    uVar3 = uVar3 & *(uint *)(param_1 + 0x44);\n  }\n  else {\n    uVar3 = (*(code *)(PTR_LAB_0015b6c0 + 0x7588))(param_1);\n  }\n  (*(code *)PTR_sqlite3_mutex_leave_0015b6b4)(*(undefined4 *)(param_1 + 0xc));\n  return uVar3;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "code *pcVar4;" type_identifier (pointer_declarator "*pcVar4" * identifier) ;) (declaration "int local_34;" primitive_type identifier ;) (expression_statement "pcVar4 = (code *)(PTR_LAB_0015b740 + -0x14b4);" (assignment_expression "pcVar4 = (code *)(PTR_LAB_0015b740 + -0x14b4)" identifier = (cast_expression "(code *)(PTR_LAB_0015b740 + -0x14b4)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b740 + -0x14b4)" ( (binary_expression "PTR_LAB_0015b740 + -0x14b4" identifier + number_literal) )))) ;) (expression_statement "*param_6 = 0;" (assignment_expression "*param_6 = 0" (pointer_expression "*param_6" * identifier) = number_literal) ;) (expression_statement "iVar2 = (*pcVar4)();" (assignment_expression "iVar2 = (*pcVar4)()" identifier = (call_expression "(*pcVar4)()" (parenthesized_expression "(*pcVar4)" ( (pointer_expression "*pcVar4" * identifier) )) (argument_list "()" ( )))) ;) (if_statement "if ((iVar2 == 0) || (param_2 == 0)) {\n                    \n                    \n    uVar3 = (*(code *)(PTR_LAB_0015b710 + 0x7fdc))(0x1e4d1);\n    return uVar3;\n  }" if (parenthesized_expression "((iVar2 == 0) || (param_2 == 0))" ( (binary_expression "(iVar2 == 0) || (param_2 == 0)" (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) || (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) ))) )) (compound_statement "{\n                    \n                    \n    uVar3 = (*(code *)(PTR_LAB_0015b710 + 0x7fdc))(0x1e4d1);\n    return uVar3;\n  }" { (expression_statement "uVar3 = (*(code *)(PTR_LAB_0015b710 + 0x7fdc))(0x1e4d1);" (assignment_expression "uVar3 = (*(code *)(PTR_LAB_0015b710 + 0x7fdc))(0x1e4d1)" identifier = (call_expression "(*(code *)(PTR_LAB_0015b710 + 0x7fdc))(0x1e4d1)" (parenthesized_expression "(*(code *)(PTR_LAB_0015b710 + 0x7fdc))" ( (pointer_expression "*(code *)(PTR_LAB_0015b710 + 0x7fdc)" * (cast_expression "(code *)(PTR_LAB_0015b710 + 0x7fdc)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b710 + 0x7fdc)" ( (binary_expression "PTR_LAB_0015b710 + 0x7fdc" identifier + number_literal) )))) )) (argument_list "(0x1e4d1)" ( number_literal )))) ;) (return_statement "return uVar3;" return identifier ;) })) (expression_statement "(*(code *)PTR_sqlite3_mutex_enter_0015b6b0)(*(undefined4 *)(param_1 + 0xc));" (call_expression "(*(code *)PTR_sqlite3_mutex_enter_0015b6b0)(*(undefined4 *)(param_1 + 0xc))" (parenthesized_expression "(*(code *)PTR_sqlite3_mutex_enter_0015b6b0)" ( (pointer_expression "*(code *)PTR_sqlite3_mutex_enter_0015b6b0" * (cast_expression "(code *)PTR_sqlite3_mutex_enter_0015b6b0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)(param_1 + 0xc))" ( (pointer_expression "*(undefined4 *)(param_1 + 0xc)" * (cast_expression "(undefined4 *)(param_1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) ))) ;) (if_statement "if (*(char *)(param_1 + 0x59) == '\0') {\n    (*(code *)(PTR_LAB_0015b6d8 + 0x3e04))(param_1);\n  }" if (parenthesized_expression "(*(char *)(param_1 + 0x59) == '\0')" ( (binary_expression "*(char *)(param_1 + 0x59) == '\0'" (pointer_expression "*(char *)(param_1 + 0x59)" * (cast_expression "(char *)(param_1 + 0x59)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x59)" ( (binary_expression "param_1 + 0x59" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    (*(code *)(PTR_LAB_0015b6d8 + 0x3e04))(param_1);\n  }" { (expression_statement "(*(code *)(PTR_LAB_0015b6d8 + 0x3e04))(param_1);" (call_expression "(*(code *)(PTR_LAB_0015b6d8 + 0x3e04))(param_1)" (parenthesized_expression "(*(code *)(PTR_LAB_0015b6d8 + 0x3e04))" ( (pointer_expression "*(code *)(PTR_LAB_0015b6d8 + 0x3e04)" * (cast_expression "(code *)(PTR_LAB_0015b6d8 + 0x3e04)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b6d8 + 0x3e04)" ( (binary_expression "PTR_LAB_0015b6d8 + 0x3e04" identifier + number_literal) )))) )) (argument_list "(param_1)" ( identifier ))) ;) })) (expression_statement "local_34 = 2;" (assignment_expression "local_34 = 2" identifier = number_literal) ;) (expression_statement "pcVar4 = (code *)(PTR_LAB_0015b700 + -0x5f2c);" (assignment_expression "pcVar4 = (code *)(PTR_LAB_0015b700 + -0x5f2c)" identifier = (cast_expression "(code *)(PTR_LAB_0015b700 + -0x5f2c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b700 + -0x5f2c)" ( (binary_expression "PTR_LAB_0015b700 + -0x5f2c" identifier + number_literal) )))) ;) (while_statement "while( true ) {\n    do {\n      uVar3 = FUN_000f6474(param_1,param_2,param_3,param_4,param_5,param_6,param_7);\n    } while (uVar3 == 0x201);\n    if (uVar3 != 0x11) break;\n    if (*(int *)(param_1 + 0x38) == 0) {\n      (*pcVar4)(param_1);\n    }\n    if (local_34 == 1) break;\n    local_34 = 1;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    do {\n      uVar3 = FUN_000f6474(param_1,param_2,param_3,param_4,param_5,param_6,param_7);\n    } while (uVar3 == 0x201);\n    if (uVar3 != 0x11) break;\n    if (*(int *)(param_1 + 0x38) == 0) {\n      (*pcVar4)(param_1);\n    }\n    if (local_34 == 1) break;\n    local_34 = 1;\n  }" { (do_statement "do {\n      uVar3 = FUN_000f6474(param_1,param_2,param_3,param_4,param_5,param_6,param_7);\n    } while (uVar3 == 0x201);" do (compound_statement "{\n      uVar3 = FUN_000f6474(param_1,param_2,param_3,param_4,param_5,param_6,param_7);\n    }" { (expression_statement "uVar3 = FUN_000f6474(param_1,param_2,param_3,param_4,param_5,param_6,param_7);" (assignment_expression "uVar3 = FUN_000f6474(param_1,param_2,param_3,param_4,param_5,param_6,param_7)" identifier = (call_expression "FUN_000f6474(param_1,param_2,param_3,param_4,param_5,param_6,param_7)" identifier (argument_list "(param_1,param_2,param_3,param_4,param_5,param_6,param_7)" ( identifier , identifier , identifier , identifier , identifier , identifier , identifier )))) ;) }) while (parenthesized_expression "(uVar3 == 0x201)" ( (binary_expression "uVar3 == 0x201" identifier == number_literal) )) ;) (if_statement "if (uVar3 != 0x11) break;" if (parenthesized_expression "(uVar3 != 0x11)" ( (binary_expression "uVar3 != 0x11" identifier != number_literal) )) (break_statement "break;" break ;)) (if_statement "if (*(int *)(param_1 + 0x38) == 0) {\n      (*pcVar4)(param_1);\n    }" if (parenthesized_expression "(*(int *)(param_1 + 0x38) == 0)" ( (binary_expression "*(int *)(param_1 + 0x38) == 0" (pointer_expression "*(int *)(param_1 + 0x38)" * (cast_expression "(int *)(param_1 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      (*pcVar4)(param_1);\n    }" { (expression_statement "(*pcVar4)(param_1);" (call_expression "(*pcVar4)(param_1)" (parenthesized_expression "(*pcVar4)" ( (pointer_expression "*pcVar4" * identifier) )) (argument_list "(param_1)" ( identifier ))) ;) })) (if_statement "if (local_34 == 1) break;" if (parenthesized_expression "(local_34 == 1)" ( (binary_expression "local_34 == 1" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "local_34 = 1;" (assignment_expression "local_34 = 1" identifier = number_literal) ;) })) (if_statement "if (*(char *)(param_1 + 0x59) == '\0') {\n    (*(code *)(PTR_LAB_0015b6d8 + 0x3ed4))(param_1);\n    cVar1 = *(char *)(param_1 + 0x51);\n  }\n  else {\n    cVar1 = *(char *)(param_1 + 0x51);\n  }" if (parenthesized_expression "(*(char *)(param_1 + 0x59) == '\0')" ( (binary_expression "*(char *)(param_1 + 0x59) == '\0'" (pointer_expression "*(char *)(param_1 + 0x59)" * (cast_expression "(char *)(param_1 + 0x59)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x59)" ( (binary_expression "param_1 + 0x59" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    (*(code *)(PTR_LAB_0015b6d8 + 0x3ed4))(param_1);\n    cVar1 = *(char *)(param_1 + 0x51);\n  }" { (expression_statement "(*(code *)(PTR_LAB_0015b6d8 + 0x3ed4))(param_1);" (call_expression "(*(code *)(PTR_LAB_0015b6d8 + 0x3ed4))(param_1)" (parenthesized_expression "(*(code *)(PTR_LAB_0015b6d8 + 0x3ed4))" ( (pointer_expression "*(code *)(PTR_LAB_0015b6d8 + 0x3ed4)" * (cast_expression "(code *)(PTR_LAB_0015b6d8 + 0x3ed4)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b6d8 + 0x3ed4)" ( (binary_expression "PTR_LAB_0015b6d8 + 0x3ed4" identifier + number_literal) )))) )) (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "cVar1 = *(char *)(param_1 + 0x51);" (assignment_expression "cVar1 = *(char *)(param_1 + 0x51)" identifier = (pointer_expression "*(char *)(param_1 + 0x51)" * (cast_expression "(char *)(param_1 + 0x51)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x51)" ( (binary_expression "param_1 + 0x51" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    cVar1 = *(char *)(param_1 + 0x51);\n  }" else (compound_statement "{\n    cVar1 = *(char *)(param_1 + 0x51);\n  }" { (expression_statement "cVar1 = *(char *)(param_1 + 0x51);" (assignment_expression "cVar1 = *(char *)(param_1 + 0x51)" identifier = (pointer_expression "*(char *)(param_1 + 0x51)" * (cast_expression "(char *)(param_1 + 0x51)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x51)" ( (binary_expression "param_1 + 0x51" identifier + number_literal) ))))) ;) }))) (if_statement "if ((cVar1 == '\0') && (uVar3 != 0xc0a)) {\n    uVar3 = uVar3 & *(uint *)(param_1 + 0x44);\n  }\n  else {\n    uVar3 = (*(code *)(PTR_LAB_0015b6c0 + 0x7588))(param_1);\n  }" if (parenthesized_expression "((cVar1 == '\0') && (uVar3 != 0xc0a))" ( (binary_expression "(cVar1 == '\0') && (uVar3 != 0xc0a)" (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(uVar3 != 0xc0a)" ( (binary_expression "uVar3 != 0xc0a" identifier != number_literal) ))) )) (compound_statement "{\n    uVar3 = uVar3 & *(uint *)(param_1 + 0x44);\n  }" { (expression_statement "uVar3 = uVar3 & *(uint *)(param_1 + 0x44);" (assignment_expression "uVar3 = uVar3 & *(uint *)(param_1 + 0x44)" identifier = (binary_expression "uVar3 & *(uint *)(param_1 + 0x44)" identifier & (pointer_expression "*(uint *)(param_1 + 0x44)" * (cast_expression "(uint *)(param_1 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) )))))) ;) }) (else_clause "else {\n    uVar3 = (*(code *)(PTR_LAB_0015b6c0 + 0x7588))(param_1);\n  }" else (compound_statement "{\n    uVar3 = (*(code *)(PTR_LAB_0015b6c0 + 0x7588))(param_1);\n  }" { (expression_statement "uVar3 = (*(code *)(PTR_LAB_0015b6c0 + 0x7588))(param_1);" (assignment_expression "uVar3 = (*(code *)(PTR_LAB_0015b6c0 + 0x7588))(param_1)" identifier = (call_expression "(*(code *)(PTR_LAB_0015b6c0 + 0x7588))(param_1)" (parenthesized_expression "(*(code *)(PTR_LAB_0015b6c0 + 0x7588))" ( (pointer_expression "*(code *)(PTR_LAB_0015b6c0 + 0x7588)" * (cast_expression "(code *)(PTR_LAB_0015b6c0 + 0x7588)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b6c0 + 0x7588)" ( (binary_expression "PTR_LAB_0015b6c0 + 0x7588" identifier + number_literal) )))) )) (argument_list "(param_1)" ( identifier )))) ;) }))) (expression_statement "(*(code *)PTR_sqlite3_mutex_leave_0015b6b4)(*(undefined4 *)(param_1 + 0xc));" (call_expression "(*(code *)PTR_sqlite3_mutex_leave_0015b6b4)(*(undefined4 *)(param_1 + 0xc))" (parenthesized_expression "(*(code *)PTR_sqlite3_mutex_leave_0015b6b4)" ( (pointer_expression "*(code *)PTR_sqlite3_mutex_leave_0015b6b4" * (cast_expression "(code *)PTR_sqlite3_mutex_leave_0015b6b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)(param_1 + 0xc))" ( (pointer_expression "*(undefined4 *)(param_1 + 0xc)" * (cast_expression "(undefined4 *)(param_1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) ))) ;) (return_statement "return uVar3;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( LIT )))) ;) (return_statement return IDENT ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (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 ( IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT )))) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT & (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + 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 )))) ;) }))) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (return_statement return IDENT ;) })))
(function_definition "uint FUN_000f6c34(int param_1,int param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5,\n                 undefined4 *param_6,undefined4 param_7)\n\n{\n  char cVar1;\n  int iVar2;\n  uint uVar3;\n  code *pcVar4;\n  int local_34;\n  \n  pcVar4 = (code *)(PTR_LAB_0015b740 + -0x14b4);\n  *param_6 = 0;\n  iVar2 = (*pcVar4)();\n  if ((iVar2 == 0) || (param_2 == 0)) {\n                    \n                    \n    uVar3 = (*(code *)(PTR_LAB_0015b710 + 0x7fdc))(0x1e4d1);\n    return uVar3;\n  }\n  (*(code *)PTR_sqlite3_mutex_enter_0015b6b0)(*(undefined4 *)(param_1 + 0xc));\n  if (*(char *)(param_1 + 0x59) == '\0') {\n    (*(code *)(PTR_LAB_0015b6d8 + 0x3e04))(param_1);\n  }\n  local_34 = 2;\n  pcVar4 = (code *)(PTR_LAB_0015b700 + -0x5f2c);\n  while( true ) {\n    do {\n      uVar3 = FUN_000f6474(param_1,param_2,param_3,param_4,param_5,param_6,param_7);\n    } while (uVar3 == 0x201);\n    if (uVar3 != 0x11) break;\n    if (*(int *)(param_1 + 0x38) == 0) {\n      (*pcVar4)(param_1);\n    }\n    if (local_34 == 1) break;\n    local_34 = 1;\n  }\n  if (*(char *)(param_1 + 0x59) == '\0') {\n    (*(code *)(PTR_LAB_0015b6d8 + 0x3ed4))(param_1);\n    cVar1 = *(char *)(param_1 + 0x51);\n  }\n  else {\n    cVar1 = *(char *)(param_1 + 0x51);\n  }\n  if ((cVar1 == '\0') && (uVar3 != 0xc0a)) {\n    uVar3 = uVar3 & *(uint *)(param_1 + 0x44);\n  }\n  else {\n    uVar3 = (*(code *)(PTR_LAB_0015b6c0 + 0x7588))(param_1);\n  }\n  (*(code *)PTR_sqlite3_mutex_leave_0015b6b4)(*(undefined4 *)(param_1 + 0xc));\n  return uVar3;\n}" (type_identifier "uint") (function_declarator "FUN_000f6c34(int param_1,int param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5,\n                 undefined4 *param_6,undefined4 param_7)" (identifier "FUN_000f6c34") (parameter_list "(int param_1,int param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5,\n                 undefined4 *param_6,undefined4 param_7)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "undefined4 param_3" (type_identifier "undefined4") (identifier "param_3")) (, ",") (parameter_declaration "undefined4 param_4" (type_identifier "undefined4") (identifier "param_4")) (, ",") (parameter_declaration "undefined4 param_5" (type_identifier "undefined4") (identifier "param_5")) (, ",") (parameter_declaration "undefined4 *param_6" (type_identifier "undefined4") (pointer_declarator "*param_6" (* "*") (identifier "param_6"))) (, ",") (parameter_declaration "undefined4 param_7" (type_identifier "undefined4") (identifier "param_7")) () ")"))) (compound_statement "{\n  char cVar1;\n  int iVar2;\n  uint uVar3;\n  code *pcVar4;\n  int local_34;\n  \n  pcVar4 = (code *)(PTR_LAB_0015b740 + -0x14b4);\n  *param_6 = 0;\n  iVar2 = (*pcVar4)();\n  if ((iVar2 == 0) || (param_2 == 0)) {\n                    \n                    \n    uVar3 = (*(code *)(PTR_LAB_0015b710 + 0x7fdc))(0x1e4d1);\n    return uVar3;\n  }\n  (*(code *)PTR_sqlite3_mutex_enter_0015b6b0)(*(undefined4 *)(param_1 + 0xc));\n  if (*(char *)(param_1 + 0x59) == '\0') {\n    (*(code *)(PTR_LAB_0015b6d8 + 0x3e04))(param_1);\n  }\n  local_34 = 2;\n  pcVar4 = (code *)(PTR_LAB_0015b700 + -0x5f2c);\n  while( true ) {\n    do {\n      uVar3 = FUN_000f6474(param_1,param_2,param_3,param_4,param_5,param_6,param_7);\n    } while (uVar3 == 0x201);\n    if (uVar3 != 0x11) break;\n    if (*(int *)(param_1 + 0x38) == 0) {\n      (*pcVar4)(param_1);\n    }\n    if (local_34 == 1) break;\n    local_34 = 1;\n  }\n  if (*(char *)(param_1 + 0x59) == '\0') {\n    (*(code *)(PTR_LAB_0015b6d8 + 0x3ed4))(param_1);\n    cVar1 = *(char *)(param_1 + 0x51);\n  }\n  else {\n    cVar1 = *(char *)(param_1 + 0x51);\n  }\n  if ((cVar1 == '\0') && (uVar3 != 0xc0a)) {\n    uVar3 = uVar3 & *(uint *)(param_1 + 0x44);\n  }\n  else {\n    uVar3 = (*(code *)(PTR_LAB_0015b6c0 + 0x7588))(param_1);\n  }\n  (*(code *)PTR_sqlite3_mutex_leave_0015b6b4)(*(undefined4 *)(param_1 + 0xc));\n  return uVar3;\n}" ({ "{") (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "code *pcVar4;" (type_identifier "code") (pointer_declarator "*pcVar4" (* "*") (identifier "pcVar4")) (; ";")) (declaration "int local_34;" (primitive_type "int") (identifier "local_34") (; ";")) (expression_statement "pcVar4 = (code *)(PTR_LAB_0015b740 + -0x14b4);" (assignment_expression "pcVar4 = (code *)(PTR_LAB_0015b740 + -0x14b4)" (identifier "pcVar4") (= "=") (cast_expression "(code *)(PTR_LAB_0015b740 + -0x14b4)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_0015b740 + -0x14b4)" (( "(") (binary_expression "PTR_LAB_0015b740 + -0x14b4" (identifier "PTR_LAB_0015b740") (+ "+") (number_literal "-0x14b4")) () ")")))) (; ";")) (expression_statement "*param_6 = 0;" (assignment_expression "*param_6 = 0" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar2 = (*pcVar4)();" (assignment_expression "iVar2 = (*pcVar4)()" (identifier "iVar2") (= "=") (call_expression "(*pcVar4)()" (parenthesized_expression "(*pcVar4)" (( "(") (pointer_expression "*pcVar4" (* "*") (identifier "pcVar4")) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if ((iVar2 == 0) || (param_2 == 0)) {\n                    \n                    \n    uVar3 = (*(code *)(PTR_LAB_0015b710 + 0x7fdc))(0x1e4d1);\n    return uVar3;\n  }" (if "if") (parenthesized_expression "((iVar2 == 0) || (param_2 == 0))" (( "(") (binary_expression "(iVar2 == 0) || (param_2 == 0)" (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(param_2 == 0)" (( "(") (binary_expression "param_2 == 0" (identifier "param_2") (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n                    \n                    \n    uVar3 = (*(code *)(PTR_LAB_0015b710 + 0x7fdc))(0x1e4d1);\n    return uVar3;\n  }" ({ "{") (expression_statement "uVar3 = (*(code *)(PTR_LAB_0015b710 + 0x7fdc))(0x1e4d1);" (assignment_expression "uVar3 = (*(code *)(PTR_LAB_0015b710 + 0x7fdc))(0x1e4d1)" (identifier "uVar3") (= "=") (call_expression "(*(code *)(PTR_LAB_0015b710 + 0x7fdc))(0x1e4d1)" (parenthesized_expression "(*(code *)(PTR_LAB_0015b710 + 0x7fdc))" (( "(") (pointer_expression "*(code *)(PTR_LAB_0015b710 + 0x7fdc)" (* "*") (cast_expression "(code *)(PTR_LAB_0015b710 + 0x7fdc)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_0015b710 + 0x7fdc)" (( "(") (binary_expression "PTR_LAB_0015b710 + 0x7fdc" (identifier "PTR_LAB_0015b710") (+ "+") (number_literal "0x7fdc")) () ")")))) () ")")) (argument_list "(0x1e4d1)" (( "(") (number_literal "0x1e4d1") () ")")))) (; ";")) (return_statement "return uVar3;" (return "return") (identifier "uVar3") (; ";")) (} "}"))) (expression_statement "(*(code *)PTR_sqlite3_mutex_enter_0015b6b0)(*(undefined4 *)(param_1 + 0xc));" (call_expression "(*(code *)PTR_sqlite3_mutex_enter_0015b6b0)(*(undefined4 *)(param_1 + 0xc))" (parenthesized_expression "(*(code *)PTR_sqlite3_mutex_enter_0015b6b0)" (( "(") (pointer_expression "*(code *)PTR_sqlite3_mutex_enter_0015b6b0" (* "*") (cast_expression "(code *)PTR_sqlite3_mutex_enter_0015b6b0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_sqlite3_mutex_enter_0015b6b0"))) () ")")) (argument_list "(*(undefined4 *)(param_1 + 0xc))" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0xc)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) () ")"))) (; ";")) (if_statement "if (*(char *)(param_1 + 0x59) == '\0') {\n    (*(code *)(PTR_LAB_0015b6d8 + 0x3e04))(param_1);\n  }" (if "if") (parenthesized_expression "(*(char *)(param_1 + 0x59) == '\0')" (( "(") (binary_expression "*(char *)(param_1 + 0x59) == '\0'" (pointer_expression "*(char *)(param_1 + 0x59)" (* "*") (cast_expression "(char *)(param_1 + 0x59)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x59)" (( "(") (binary_expression "param_1 + 0x59" (identifier "param_1") (+ "+") (number_literal "0x59")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    (*(code *)(PTR_LAB_0015b6d8 + 0x3e04))(param_1);\n  }" ({ "{") (expression_statement "(*(code *)(PTR_LAB_0015b6d8 + 0x3e04))(param_1);" (call_expression "(*(code *)(PTR_LAB_0015b6d8 + 0x3e04))(param_1)" (parenthesized_expression "(*(code *)(PTR_LAB_0015b6d8 + 0x3e04))" (( "(") (pointer_expression "*(code *)(PTR_LAB_0015b6d8 + 0x3e04)" (* "*") (cast_expression "(code *)(PTR_LAB_0015b6d8 + 0x3e04)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_0015b6d8 + 0x3e04)" (( "(") (binary_expression "PTR_LAB_0015b6d8 + 0x3e04" (identifier "PTR_LAB_0015b6d8") (+ "+") (number_literal "0x3e04")) () ")")))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (} "}"))) (expression_statement "local_34 = 2;" (assignment_expression "local_34 = 2" (identifier "local_34") (= "=") (number_literal "2")) (; ";")) (expression_statement "pcVar4 = (code *)(PTR_LAB_0015b700 + -0x5f2c);" (assignment_expression "pcVar4 = (code *)(PTR_LAB_0015b700 + -0x5f2c)" (identifier "pcVar4") (= "=") (cast_expression "(code *)(PTR_LAB_0015b700 + -0x5f2c)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_0015b700 + -0x5f2c)" (( "(") (binary_expression "PTR_LAB_0015b700 + -0x5f2c" (identifier "PTR_LAB_0015b700") (+ "+") (number_literal "-0x5f2c")) () ")")))) (; ";")) (while_statement "while( true ) {\n    do {\n      uVar3 = FUN_000f6474(param_1,param_2,param_3,param_4,param_5,param_6,param_7);\n    } while (uVar3 == 0x201);\n    if (uVar3 != 0x11) break;\n    if (*(int *)(param_1 + 0x38) == 0) {\n      (*pcVar4)(param_1);\n    }\n    if (local_34 == 1) break;\n    local_34 = 1;\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    do {\n      uVar3 = FUN_000f6474(param_1,param_2,param_3,param_4,param_5,param_6,param_7);\n    } while (uVar3 == 0x201);\n    if (uVar3 != 0x11) break;\n    if (*(int *)(param_1 + 0x38) == 0) {\n      (*pcVar4)(param_1);\n    }\n    if (local_34 == 1) break;\n    local_34 = 1;\n  }" ({ "{") (do_statement "do {\n      uVar3 = FUN_000f6474(param_1,param_2,param_3,param_4,param_5,param_6,param_7);\n    } while (uVar3 == 0x201);" (do "do") (compound_statement "{\n      uVar3 = FUN_000f6474(param_1,param_2,param_3,param_4,param_5,param_6,param_7);\n    }" ({ "{") (expression_statement "uVar3 = FUN_000f6474(param_1,param_2,param_3,param_4,param_5,param_6,param_7);" (assignment_expression "uVar3 = FUN_000f6474(param_1,param_2,param_3,param_4,param_5,param_6,param_7)" (identifier "uVar3") (= "=") (call_expression "FUN_000f6474(param_1,param_2,param_3,param_4,param_5,param_6,param_7)" (identifier "FUN_000f6474") (argument_list "(param_1,param_2,param_3,param_4,param_5,param_6,param_7)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "param_4") (, ",") (identifier "param_5") (, ",") (identifier "param_6") (, ",") (identifier "param_7") () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar3 == 0x201)" (( "(") (binary_expression "uVar3 == 0x201" (identifier "uVar3") (== "==") (number_literal "0x201")) () ")")) (; ";")) (if_statement "if (uVar3 != 0x11) break;" (if "if") (parenthesized_expression "(uVar3 != 0x11)" (( "(") (binary_expression "uVar3 != 0x11" (identifier "uVar3") (!= "!=") (number_literal "0x11")) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if (*(int *)(param_1 + 0x38) == 0) {\n      (*pcVar4)(param_1);\n    }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x38) == 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x38) == 0" (pointer_expression "*(int *)(param_1 + 0x38)" (* "*") (cast_expression "(int *)(param_1 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x38)" (( "(") (binary_expression "param_1 + 0x38" (identifier "param_1") (+ "+") (number_literal "0x38")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      (*pcVar4)(param_1);\n    }" ({ "{") (expression_statement "(*pcVar4)(param_1);" (call_expression "(*pcVar4)(param_1)" (parenthesized_expression "(*pcVar4)" (( "(") (pointer_expression "*pcVar4" (* "*") (identifier "pcVar4")) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (} "}"))) (if_statement "if (local_34 == 1) break;" (if "if") (parenthesized_expression "(local_34 == 1)" (( "(") (binary_expression "local_34 == 1" (identifier "local_34") (== "==") (number_literal "1")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "local_34 = 1;" (assignment_expression "local_34 = 1" (identifier "local_34") (= "=") (number_literal "1")) (; ";")) (} "}"))) (if_statement "if (*(char *)(param_1 + 0x59) == '\0') {\n    (*(code *)(PTR_LAB_0015b6d8 + 0x3ed4))(param_1);\n    cVar1 = *(char *)(param_1 + 0x51);\n  }\n  else {\n    cVar1 = *(char *)(param_1 + 0x51);\n  }" (if "if") (parenthesized_expression "(*(char *)(param_1 + 0x59) == '\0')" (( "(") (binary_expression "*(char *)(param_1 + 0x59) == '\0'" (pointer_expression "*(char *)(param_1 + 0x59)" (* "*") (cast_expression "(char *)(param_1 + 0x59)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x59)" (( "(") (binary_expression "param_1 + 0x59" (identifier "param_1") (+ "+") (number_literal "0x59")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    (*(code *)(PTR_LAB_0015b6d8 + 0x3ed4))(param_1);\n    cVar1 = *(char *)(param_1 + 0x51);\n  }" ({ "{") (expression_statement "(*(code *)(PTR_LAB_0015b6d8 + 0x3ed4))(param_1);" (call_expression "(*(code *)(PTR_LAB_0015b6d8 + 0x3ed4))(param_1)" (parenthesized_expression "(*(code *)(PTR_LAB_0015b6d8 + 0x3ed4))" (( "(") (pointer_expression "*(code *)(PTR_LAB_0015b6d8 + 0x3ed4)" (* "*") (cast_expression "(code *)(PTR_LAB_0015b6d8 + 0x3ed4)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_0015b6d8 + 0x3ed4)" (( "(") (binary_expression "PTR_LAB_0015b6d8 + 0x3ed4" (identifier "PTR_LAB_0015b6d8") (+ "+") (number_literal "0x3ed4")) () ")")))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (expression_statement "cVar1 = *(char *)(param_1 + 0x51);" (assignment_expression "cVar1 = *(char *)(param_1 + 0x51)" (identifier "cVar1") (= "=") (pointer_expression "*(char *)(param_1 + 0x51)" (* "*") (cast_expression "(char *)(param_1 + 0x51)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x51)" (( "(") (binary_expression "param_1 + 0x51" (identifier "param_1") (+ "+") (number_literal "0x51")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n    cVar1 = *(char *)(param_1 + 0x51);\n  }" (else "else") (compound_statement "{\n    cVar1 = *(char *)(param_1 + 0x51);\n  }" ({ "{") (expression_statement "cVar1 = *(char *)(param_1 + 0x51);" (assignment_expression "cVar1 = *(char *)(param_1 + 0x51)" (identifier "cVar1") (= "=") (pointer_expression "*(char *)(param_1 + 0x51)" (* "*") (cast_expression "(char *)(param_1 + 0x51)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x51)" (( "(") (binary_expression "param_1 + 0x51" (identifier "param_1") (+ "+") (number_literal "0x51")) () ")"))))) (; ";")) (} "}")))) (if_statement "if ((cVar1 == '\0') && (uVar3 != 0xc0a)) {\n    uVar3 = uVar3 & *(uint *)(param_1 + 0x44);\n  }\n  else {\n    uVar3 = (*(code *)(PTR_LAB_0015b6c0 + 0x7588))(param_1);\n  }" (if "if") (parenthesized_expression "((cVar1 == '\0') && (uVar3 != 0xc0a))" (( "(") (binary_expression "(cVar1 == '\0') && (uVar3 != 0xc0a)" (parenthesized_expression "(cVar1 == '\0')" (( "(") (binary_expression "cVar1 == '\0'" (identifier "cVar1") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(uVar3 != 0xc0a)" (( "(") (binary_expression "uVar3 != 0xc0a" (identifier "uVar3") (!= "!=") (number_literal "0xc0a")) () ")"))) () ")")) (compound_statement "{\n    uVar3 = uVar3 & *(uint *)(param_1 + 0x44);\n  }" ({ "{") (expression_statement "uVar3 = uVar3 & *(uint *)(param_1 + 0x44);" (assignment_expression "uVar3 = uVar3 & *(uint *)(param_1 + 0x44)" (identifier "uVar3") (= "=") (binary_expression "uVar3 & *(uint *)(param_1 + 0x44)" (identifier "uVar3") (& "&") (pointer_expression "*(uint *)(param_1 + 0x44)" (* "*") (cast_expression "(uint *)(param_1 + 0x44)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x44)" (( "(") (binary_expression "param_1 + 0x44" (identifier "param_1") (+ "+") (number_literal "0x44")) () ")")))))) (; ";")) (} "}")) (else_clause "else {\n    uVar3 = (*(code *)(PTR_LAB_0015b6c0 + 0x7588))(param_1);\n  }" (else "else") (compound_statement "{\n    uVar3 = (*(code *)(PTR_LAB_0015b6c0 + 0x7588))(param_1);\n  }" ({ "{") (expression_statement "uVar3 = (*(code *)(PTR_LAB_0015b6c0 + 0x7588))(param_1);" (assignment_expression "uVar3 = (*(code *)(PTR_LAB_0015b6c0 + 0x7588))(param_1)" (identifier "uVar3") (= "=") (call_expression "(*(code *)(PTR_LAB_0015b6c0 + 0x7588))(param_1)" (parenthesized_expression "(*(code *)(PTR_LAB_0015b6c0 + 0x7588))" (( "(") (pointer_expression "*(code *)(PTR_LAB_0015b6c0 + 0x7588)" (* "*") (cast_expression "(code *)(PTR_LAB_0015b6c0 + 0x7588)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_0015b6c0 + 0x7588)" (( "(") (binary_expression "PTR_LAB_0015b6c0 + 0x7588" (identifier "PTR_LAB_0015b6c0") (+ "+") (number_literal "0x7588")) () ")")))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (} "}")))) (expression_statement "(*(code *)PTR_sqlite3_mutex_leave_0015b6b4)(*(undefined4 *)(param_1 + 0xc));" (call_expression "(*(code *)PTR_sqlite3_mutex_leave_0015b6b4)(*(undefined4 *)(param_1 + 0xc))" (parenthesized_expression "(*(code *)PTR_sqlite3_mutex_leave_0015b6b4)" (( "(") (pointer_expression "*(code *)PTR_sqlite3_mutex_leave_0015b6b4" (* "*") (cast_expression "(code *)PTR_sqlite3_mutex_leave_0015b6b4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_sqlite3_mutex_leave_0015b6b4"))) () ")")) (argument_list "(*(undefined4 *)(param_1 + 0xc))" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0xc)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) () ")"))) (; ";")) (return_statement "return uVar3;" (return "return") (identifier "uVar3") (; ";")) (} "}")))
(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)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) arguments: (argument_list (number_literal))))) (return_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: (identifier)))) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (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 (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (identifier) (identifier) (identifier) (identifier)))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) 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)))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (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)))))))) (return_statement (identifier)))))

uint MASKED(int param_1,int param_2,undefined4 param_3,undefined4 param_4,undefined4 param_5,
                 undefined4 *param_6,undefined4 param_7)

{
  char cVar1;
  int iVar2;
  uint uVar3;
  code *pcVar4;
  int local_34;
  
  pcVar4 = (code *)(PTR_LAB_0015b740 + -0x14b4);
  *param_6 = 0;
  iVar2 = (*pcVar4)();
  if ((iVar2 == 0) || (param_2 == 0)) {
                    /* WARNING: Could not recover jumptable at 0x000f6e10. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    uVar3 = (*(code *)(PTR_LAB_0015b710 + 0x7fdc))(0x1e4d1);
    return uVar3;
  }
  (*(code *)PTR_sqlite3_mutex_enter_0015b6b0)(*(undefined4 *)(param_1 + 0xc));
  if (*(char *)(param_1 + 0x59) == '\0') {
    (*(code *)(PTR_LAB_0015b6d8 + 0x3e04))(param_1);
  }
  local_34 = 2;
  pcVar4 = (code *)(PTR_LAB_0015b700 + -0x5f2c);
  while( true ) {
    do {
      uVar3 = FUN_000f6474(param_1,param_2,param_3,param_4,param_5,param_6,param_7);
    } while (uVar3 == 0x201);
    if (uVar3 != 0x11) break;
    if (*(int *)(param_1 + 0x38) == 0) {
      (*pcVar4)(param_1);
    }
    if (local_34 == 1) break;
    local_34 = 1;
  }
  if (*(char *)(param_1 + 0x59) == '\0') {
    (*(code *)(PTR_LAB_0015b6d8 + 0x3ed4))(param_1);
    cVar1 = *(char *)(param_1 + 0x51);
  }
  else {
    cVar1 = *(char *)(param_1 + 0x51);
  }
  if ((cVar1 == '\0') && (uVar3 != 0xc0a)) {
    uVar3 = uVar3 & *(uint *)(param_1 + 0x44);
  }
  else {
    uVar3 = (*(code *)(PTR_LAB_0015b6c0 + 0x7588))(param_1);
  }
  (*(code *)PTR_sqlite3_mutex_leave_0015b6b4)(*(undefined4 *)(param_1 + 0xc));
  return uVar3;
}

