
int sqlite3ResolveSelfReference(Parse *pParse,Table *pTab,int type,Expr *pExpr,ExprList *pList)

{
  undefined *puVar1;
  int iVar2;
  int iVar3;
  NameContext sNC;
  SrcList sSrc;
  
  puVar1 = PTR___stack_chk_guard_00190e24;
  sNC.pParse = (Parse *)0x0;
  sNC.pSrcList = (SrcList *)0x0;
  sNC.uNC.pEList = (ExprList *)0x0;
  sNC.pNext = (NameContext *)0x0;
  sNC.nRef = 0;
  sNC.nErr = 0;
  sNC.ncFlags = 0;
  sNC._26_2_ = 0;
  sNC.pWinSelect = (Select *)0x0;
  iVar2 = *(int *)PTR___stack_chk_guard_00190e24;
  sNC.pSrcList = (SrcList *)(*(code *)PTR_memset_00190d58)(&sSrc,0,0x50);
  if (pTab != (Table *)0x0) {
    sSrc.a[0].zName = pTab->zName;
    sSrc.nSrc = 1;
    sSrc.a[0].iCursor = -1;
    sSrc.a[0].pTab = pTab;
  }
  sNC.ncFlags = (u16)type;
  sNC.pParse = pParse;
  iVar3 = sqlite3ResolveExprNames(&sNC,pExpr);
  if ((iVar3 == 0) && (pList != (ExprList *)0x0)) {
    iVar3 = sqlite3ResolveExprListNames(&sNC,pList);
  }
  if (iVar2 == *(int *)puVar1) {
    return iVar3;
  }
  iVar2 = (*(code *)PTR___stack_chk_fail_00190df8)();
  return iVar2;
}



void FUN_000964d4(undefined4 param_1,undefined4 *param_2,undefined2 param_3,int param_4,int param_5)

{
  int iVar1;
  int *piVar2;
  undefined *puVar3;
  undefined4 local_98;
  undefined4 local_94;
  undefined4 local_90;
  undefined4 local_8c;
  undefined4 local_88;
  undefined4 local_84;
  undefined4 local_80;
  undefined4 local_7c;
  undefined4 local_78 [4];
  undefined4 local_68;
  undefined4 *local_60;
  undefined4 local_48;
  int *local_24;
  
  puVar3 = PTR___stack_chk_guard_00190e24;
  local_98 = 0;
  local_94 = 0;
  local_90 = 0;
  local_8c = 0;
  local_88 = 0;
  local_84 = 0;
  local_80 = 0;
  local_7c = 0;
  local_24 = *(int **)PTR___stack_chk_guard_00190e24;
  local_94 = (*(code *)PTR_memset_00190d58)(local_78,0,0x50);
  if (param_2 != (undefined4 *)0x0) {
    local_68 = *param_2;
    local_78[0] = 1;
    local_48 = 0xffffffff;
    local_60 = param_2;
  }
  local_80 = CONCAT22(param_3,local_80._2_2_);
  local_98 = param_1;
  iVar1 = FUN_00096280(&local_98);
  if ((iVar1 == 0) && (param_5 != 0)) {
    FUN_00096408(&local_98);
    param_4 = param_5;
  }
  if (local_24 == *(int **)puVar3) {
    return;
  }
  piVar2 = local_24;
  puVar3 = PTR___stack_chk_fail_00190df8;
  (*(code *)PTR___stack_chk_fail_00190df8)();
  (*(code *)(*(int *)(puVar3 + 0xfa590) + -0x5338))(param_4);
  if (*(int *)(param_4 + 0x18) <= *(int *)(*piVar2 + 0x78)) {
    return;
  }
  FUN_00095160(piVar2,*(int *)(puVar3 + 0xfa348) + -0x5974);
  return;
}


lui gp,0x10
addiu gp,gp,0x244c
addu gp,gp,t9
addiu sp,sp,-0xb0
lw t9,-0x7bc8(gp)
addiu v1,sp,0x38
sw s2,0x98(sp)
sw gp,0x10(sp)
sw s6,0xa8(sp)
or s6,a3,zero
sw s5,0xa4(sp)
or s5,a0,zero
sw s4,0xa0(sp)
or s4,a2,zero
sw s3,0x9c(sp)
li a2,0x50
sw s1,0x94(sp)
or s1,a1,zero
sw s0,0x90(sp)
addiu s0,sp,0x18
sw ra,0xac(sp)
or a1,zero,zero
lw s2,-0x7afc(gp)
or a0,v1,zero
lw s3,0xc0(sp)
sw zero,0x18(sp)
sw zero,0x4(s0)
sw zero,0x8(s0)
sw zero,0xc(s0)
sw zero,0x10(s0)
sw zero,0x14(s0)
sw zero,0x18(s0)
sw zero,0x1c(s0)
lw v0,0x0(s2)
sw v0,0x8c(sp)
jalr t9
_nop
lw gp,0x10(sp)
beq s1,zero,0x00096590
_or v1,v0,zero
lw v0,0x0(s1)
li a0,0x1
sw s1,0x50(sp)
sw a0,0x38(sp)
sw v0,0x48(sp)
li v0,-0x1
sw v0,0x68(sp)
lw t9,-0x7d44(gp)
or a1,s6,zero
or a0,s0,zero
sw s5,0x18(sp)
sw v1,0x1c(sp)
addiu t9,t9,0x6280
bal 0x00096280
_sh s4,0x30(sp)
bne v0,zero,0x000965d4
_lw gp,0x10(sp)
beq s3,zero,0x000965d4
_lw t9,-0x7d44(gp)
or a1,s3,zero
addiu t9,t9,0x6408
bal 0x00096408
_or a0,s0,zero
lw gp,0x10(sp)
lw a0,0x8c(sp)
lw v1,0x0(s2)
bne a0,v1,0x00096608
_lw ra,0xac(sp)
lw s6,0xa8(sp)
lw s5,0xa4(sp)
lw s4,0xa0(sp)
lw s3,0x9c(sp)
lw s2,0x98(sp)
lw s1,0x94(sp)
lw s0,0x90(sp)
jr ra
_addiu sp,sp,0xb0
lw t9,-0x7b28(gp)
jalr t9
_nop
lui gp,0x10
addiu gp,gp,0x230c
addu gp,gp,t9
addiu sp,sp,-0x28
lw t9,-0x7d7c(gp)
addiu t9,t9,-0x5338
sw s1,0x20(sp)
or s1,a0,zero
sw gp,0x10(sp)
sw s0,0x1c(sp)
or a0,a1,zero
sw ra,0x24(sp)
jalr t9
_or s0,a1,zero
lw v1,0x0(s1)
lw v0,0x18(s0)
lw a2,0x78(v1)
slt v0,a2,v0
bne v0,zero,0x00096678
_lw gp,0x10(sp)
lw ra,0x24(sp)
lw s1,0x20(sp)
lw s0,0x1c(sp)
jr ra
_addiu sp,sp,0x28
lw a1,-0x7fc4(gp)
or a0,s1,zero
lw t9,-0x7d44(gp)
lw ra,0x24(sp)
lw s1,0x20(sp)
addiu a1,a1,-0x5974
lw s0,0x1c(sp)
addiu t9,t9,0x5160
b 0x00095160
_addiu sp,sp,0x28
(translation_unit "void FUN_000964d4(undefined4 param_1,undefined4 *param_2,undefined2 param_3,int param_4,int param_5)\n\n{\n  int iVar1;\n  int *piVar2;\n  undefined *puVar3;\n  undefined4 local_98;\n  undefined4 local_94;\n  undefined4 local_90;\n  undefined4 local_8c;\n  undefined4 local_88;\n  undefined4 local_84;\n  undefined4 local_80;\n  undefined4 local_7c;\n  undefined4 local_78 [4];\n  undefined4 local_68;\n  undefined4 *local_60;\n  undefined4 local_48;\n  int *local_24;\n  \n  puVar3 = PTR___stack_chk_guard_00190e24;\n  local_98 = 0;\n  local_94 = 0;\n  local_90 = 0;\n  local_8c = 0;\n  local_88 = 0;\n  local_84 = 0;\n  local_80 = 0;\n  local_7c = 0;\n  local_24 = *(int **)PTR___stack_chk_guard_00190e24;\n  local_94 = (*(code *)PTR_memset_00190d58)(local_78,0,0x50);\n  if (param_2 != (undefined4 *)0x0) {\n    local_68 = *param_2;\n    local_78[0] = 1;\n    local_48 = 0xffffffff;\n    local_60 = param_2;\n  }\n  local_80 = CONCAT22(param_3,local_80._2_2_);\n  local_98 = param_1;\n  iVar1 = FUN_00096280(&local_98);\n  if ((iVar1 == 0) && (param_5 != 0)) {\n    FUN_00096408(&local_98);\n    param_4 = param_5;\n  }\n  if (local_24 == *(int **)puVar3) {\n    return;\n  }\n  piVar2 = local_24;\n  puVar3 = PTR___stack_chk_fail_00190df8;\n  (*(code *)PTR___stack_chk_fail_00190df8)();\n  (*(code *)(*(int *)(puVar3 + 0xfa590) + -0x5338))(param_4);\n  if (*(int *)(param_4 + 0x18) <= *(int *)(*piVar2 + 0x78)) {\n    return;\n  }\n  FUN_00095160(piVar2,*(int *)(puVar3 + 0xfa348) + -0x5974);\n  return;\n}\n\n" (function_definition "void FUN_000964d4(undefined4 param_1,undefined4 *param_2,undefined2 param_3,int param_4,int param_5)\n\n{\n  int iVar1;\n  int *piVar2;\n  undefined *puVar3;\n  undefined4 local_98;\n  undefined4 local_94;\n  undefined4 local_90;\n  undefined4 local_8c;\n  undefined4 local_88;\n  undefined4 local_84;\n  undefined4 local_80;\n  undefined4 local_7c;\n  undefined4 local_78 [4];\n  undefined4 local_68;\n  undefined4 *local_60;\n  undefined4 local_48;\n  int *local_24;\n  \n  puVar3 = PTR___stack_chk_guard_00190e24;\n  local_98 = 0;\n  local_94 = 0;\n  local_90 = 0;\n  local_8c = 0;\n  local_88 = 0;\n  local_84 = 0;\n  local_80 = 0;\n  local_7c = 0;\n  local_24 = *(int **)PTR___stack_chk_guard_00190e24;\n  local_94 = (*(code *)PTR_memset_00190d58)(local_78,0,0x50);\n  if (param_2 != (undefined4 *)0x0) {\n    local_68 = *param_2;\n    local_78[0] = 1;\n    local_48 = 0xffffffff;\n    local_60 = param_2;\n  }\n  local_80 = CONCAT22(param_3,local_80._2_2_);\n  local_98 = param_1;\n  iVar1 = FUN_00096280(&local_98);\n  if ((iVar1 == 0) && (param_5 != 0)) {\n    FUN_00096408(&local_98);\n    param_4 = param_5;\n  }\n  if (local_24 == *(int **)puVar3) {\n    return;\n  }\n  piVar2 = local_24;\n  puVar3 = PTR___stack_chk_fail_00190df8;\n  (*(code *)PTR___stack_chk_fail_00190df8)();\n  (*(code *)(*(int *)(puVar3 + 0xfa590) + -0x5338))(param_4);\n  if (*(int *)(param_4 + 0x18) <= *(int *)(*piVar2 + 0x78)) {\n    return;\n  }\n  FUN_00095160(piVar2,*(int *)(puVar3 + 0xfa348) + -0x5974);\n  return;\n}" primitive_type (function_declarator "FUN_000964d4(undefined4 param_1,undefined4 *param_2,undefined2 param_3,int param_4,int param_5)" identifier (parameter_list "(undefined4 param_1,undefined4 *param_2,undefined2 param_3,int param_4,int param_5)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined2 param_3" type_identifier identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "int param_5" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  int *piVar2;\n  undefined *puVar3;\n  undefined4 local_98;\n  undefined4 local_94;\n  undefined4 local_90;\n  undefined4 local_8c;\n  undefined4 local_88;\n  undefined4 local_84;\n  undefined4 local_80;\n  undefined4 local_7c;\n  undefined4 local_78 [4];\n  undefined4 local_68;\n  undefined4 *local_60;\n  undefined4 local_48;\n  int *local_24;\n  \n  puVar3 = PTR___stack_chk_guard_00190e24;\n  local_98 = 0;\n  local_94 = 0;\n  local_90 = 0;\n  local_8c = 0;\n  local_88 = 0;\n  local_84 = 0;\n  local_80 = 0;\n  local_7c = 0;\n  local_24 = *(int **)PTR___stack_chk_guard_00190e24;\n  local_94 = (*(code *)PTR_memset_00190d58)(local_78,0,0x50);\n  if (param_2 != (undefined4 *)0x0) {\n    local_68 = *param_2;\n    local_78[0] = 1;\n    local_48 = 0xffffffff;\n    local_60 = param_2;\n  }\n  local_80 = CONCAT22(param_3,local_80._2_2_);\n  local_98 = param_1;\n  iVar1 = FUN_00096280(&local_98);\n  if ((iVar1 == 0) && (param_5 != 0)) {\n    FUN_00096408(&local_98);\n    param_4 = param_5;\n  }\n  if (local_24 == *(int **)puVar3) {\n    return;\n  }\n  piVar2 = local_24;\n  puVar3 = PTR___stack_chk_fail_00190df8;\n  (*(code *)PTR___stack_chk_fail_00190df8)();\n  (*(code *)(*(int *)(puVar3 + 0xfa590) + -0x5338))(param_4);\n  if (*(int *)(param_4 + 0x18) <= *(int *)(*piVar2 + 0x78)) {\n    return;\n  }\n  FUN_00095160(piVar2,*(int *)(puVar3 + 0xfa348) + -0x5974);\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined4 local_98;" type_identifier identifier ;) (declaration "undefined4 local_94;" type_identifier identifier ;) (declaration "undefined4 local_90;" type_identifier identifier ;) (declaration "undefined4 local_8c;" type_identifier identifier ;) (declaration "undefined4 local_88;" type_identifier identifier ;) (declaration "undefined4 local_84;" type_identifier identifier ;) (declaration "undefined4 local_80;" type_identifier identifier ;) (declaration "undefined4 local_7c;" type_identifier identifier ;) (declaration "undefined4 local_78 [4];" type_identifier (array_declarator "local_78 [4]" identifier [ number_literal ]) ;) (declaration "undefined4 local_68;" type_identifier identifier ;) (declaration "undefined4 *local_60;" type_identifier (pointer_declarator "*local_60" * identifier) ;) (declaration "undefined4 local_48;" type_identifier identifier ;) (declaration "int *local_24;" primitive_type (pointer_declarator "*local_24" * identifier) ;) (expression_statement "puVar3 = PTR___stack_chk_guard_00190e24;" (assignment_expression "puVar3 = PTR___stack_chk_guard_00190e24" identifier = identifier) ;) (expression_statement "local_98 = 0;" (assignment_expression "local_98 = 0" identifier = number_literal) ;) (expression_statement "local_94 = 0;" (assignment_expression "local_94 = 0" identifier = number_literal) ;) (expression_statement "local_90 = 0;" (assignment_expression "local_90 = 0" identifier = number_literal) ;) (expression_statement "local_8c = 0;" (assignment_expression "local_8c = 0" identifier = number_literal) ;) (expression_statement "local_88 = 0;" (assignment_expression "local_88 = 0" identifier = number_literal) ;) (expression_statement "local_84 = 0;" (assignment_expression "local_84 = 0" identifier = number_literal) ;) (expression_statement "local_80 = 0;" (assignment_expression "local_80 = 0" identifier = number_literal) ;) (expression_statement "local_7c = 0;" (assignment_expression "local_7c = 0" identifier = number_literal) ;) (expression_statement "local_24 = *(int **)PTR___stack_chk_guard_00190e24;" (assignment_expression "local_24 = *(int **)PTR___stack_chk_guard_00190e24" identifier = (pointer_expression "*(int **)PTR___stack_chk_guard_00190e24" * (cast_expression "(int **)PTR___stack_chk_guard_00190e24" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "local_94 = (*(code *)PTR_memset_00190d58)(local_78,0,0x50);" (assignment_expression "local_94 = (*(code *)PTR_memset_00190d58)(local_78,0,0x50)" identifier = (call_expression "(*(code *)PTR_memset_00190d58)(local_78,0,0x50)" (parenthesized_expression "(*(code *)PTR_memset_00190d58)" ( (pointer_expression "*(code *)PTR_memset_00190d58" * (cast_expression "(code *)PTR_memset_00190d58" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_78,0,0x50)" ( identifier , number_literal , number_literal )))) ;) (if_statement "if (param_2 != (undefined4 *)0x0) {\n    local_68 = *param_2;\n    local_78[0] = 1;\n    local_48 = 0xffffffff;\n    local_60 = param_2;\n  }" if (parenthesized_expression "(param_2 != (undefined4 *)0x0)" ( (binary_expression "param_2 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    local_68 = *param_2;\n    local_78[0] = 1;\n    local_48 = 0xffffffff;\n    local_60 = param_2;\n  }" { (expression_statement "local_68 = *param_2;" (assignment_expression "local_68 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "local_78[0] = 1;" (assignment_expression "local_78[0] = 1" (subscript_expression "local_78[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_48 = 0xffffffff;" (assignment_expression "local_48 = 0xffffffff" identifier = number_literal) ;) (expression_statement "local_60 = param_2;" (assignment_expression "local_60 = param_2" identifier = identifier) ;) })) (expression_statement "local_80 = CONCAT22(param_3,local_80._2_2_);" (assignment_expression "local_80 = CONCAT22(param_3,local_80._2_2_)" identifier = (call_expression "CONCAT22(param_3,local_80._2_2_)" identifier (argument_list "(param_3,local_80._2_2_)" ( identifier , (field_expression "local_80._2_2_" identifier . field_identifier) )))) ;) (expression_statement "local_98 = param_1;" (assignment_expression "local_98 = param_1" identifier = identifier) ;) (expression_statement "iVar1 = FUN_00096280(&local_98);" (assignment_expression "iVar1 = FUN_00096280(&local_98)" identifier = (call_expression "FUN_00096280(&local_98)" identifier (argument_list "(&local_98)" ( (pointer_expression "&local_98" & identifier) )))) ;) (if_statement "if ((iVar1 == 0) && (param_5 != 0)) {\n    FUN_00096408(&local_98);\n    param_4 = param_5;\n  }" if (parenthesized_expression "((iVar1 == 0) && (param_5 != 0))" ( (binary_expression "(iVar1 == 0) && (param_5 != 0)" (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) && (parenthesized_expression "(param_5 != 0)" ( (binary_expression "param_5 != 0" identifier != number_literal) ))) )) (compound_statement "{\n    FUN_00096408(&local_98);\n    param_4 = param_5;\n  }" { (expression_statement "FUN_00096408(&local_98);" (call_expression "FUN_00096408(&local_98)" identifier (argument_list "(&local_98)" ( (pointer_expression "&local_98" & identifier) ))) ;) (expression_statement "param_4 = param_5;" (assignment_expression "param_4 = param_5" identifier = identifier) ;) })) (if_statement "if (local_24 == *(int **)puVar3) {\n    return;\n  }" if (parenthesized_expression "(local_24 == *(int **)puVar3)" ( (binary_expression "local_24 == *(int **)puVar3" identifier == (pointer_expression "*(int **)puVar3" * (cast_expression "(int **)puVar3" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "piVar2 = local_24;" (assignment_expression "piVar2 = local_24" identifier = identifier) ;) (expression_statement "puVar3 = PTR___stack_chk_fail_00190df8;" (assignment_expression "puVar3 = PTR___stack_chk_fail_00190df8" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_00190df8)();" (call_expression "(*(code *)PTR___stack_chk_fail_00190df8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00190df8)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_00190df8" * (cast_expression "(code *)PTR___stack_chk_fail_00190df8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "(*(code *)(*(int *)(puVar3 + 0xfa590) + -0x5338))(param_4);" (call_expression "(*(code *)(*(int *)(puVar3 + 0xfa590) + -0x5338))(param_4)" (parenthesized_expression "(*(code *)(*(int *)(puVar3 + 0xfa590) + -0x5338))" ( (pointer_expression "*(code *)(*(int *)(puVar3 + 0xfa590) + -0x5338)" * (cast_expression "(code *)(*(int *)(puVar3 + 0xfa590) + -0x5338)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar3 + 0xfa590) + -0x5338)" ( (binary_expression "*(int *)(puVar3 + 0xfa590) + -0x5338" (pointer_expression "*(int *)(puVar3 + 0xfa590)" * (cast_expression "(int *)(puVar3 + 0xfa590)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0xfa590)" ( (binary_expression "puVar3 + 0xfa590" identifier + number_literal) )))) + number_literal) )))) )) (argument_list "(param_4)" ( identifier ))) ;) (if_statement "if (*(int *)(param_4 + 0x18) <= *(int *)(*piVar2 + 0x78)) {\n    return;\n  }" if (parenthesized_expression "(*(int *)(param_4 + 0x18) <= *(int *)(*piVar2 + 0x78))" ( (binary_expression "*(int *)(param_4 + 0x18) <= *(int *)(*piVar2 + 0x78)" (pointer_expression "*(int *)(param_4 + 0x18)" * (cast_expression "(int *)(param_4 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0x18)" ( (binary_expression "param_4 + 0x18" identifier + number_literal) )))) <= (pointer_expression "*(int *)(*piVar2 + 0x78)" * (cast_expression "(int *)(*piVar2 + 0x78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar2 + 0x78)" ( (binary_expression "*piVar2 + 0x78" (pointer_expression "*piVar2" * identifier) + number_literal) ))))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "FUN_00095160(piVar2,*(int *)(puVar3 + 0xfa348) + -0x5974);" (call_expression "FUN_00095160(piVar2,*(int *)(puVar3 + 0xfa348) + -0x5974)" identifier (argument_list "(piVar2,*(int *)(puVar3 + 0xfa348) + -0x5974)" ( identifier , (binary_expression "*(int *)(puVar3 + 0xfa348) + -0x5974" (pointer_expression "*(int *)(puVar3 + 0xfa348)" * (cast_expression "(int *)(puVar3 + 0xfa348)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0xfa348)" ( (binary_expression "puVar3 + 0xfa348" identifier + number_literal) )))) + number_literal) ))) ;) (return_statement "return;" return ;) })))
(translation_unit "int sqlite3ResolveSelfReference(Parse *pParse,Table *pTab,int type,Expr *pExpr,ExprList *pList)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  NameContext sNC;\n  SrcList sSrc;\n  \n  puVar1 = PTR___stack_chk_guard_00190e24;\n  sNC.pParse = (Parse *)0x0;\n  sNC.pSrcList = (SrcList *)0x0;\n  sNC.uNC.pEList = (ExprList *)0x0;\n  sNC.pNext = (NameContext *)0x0;\n  sNC.nRef = 0;\n  sNC.nErr = 0;\n  sNC.ncFlags = 0;\n  sNC._26_2_ = 0;\n  sNC.pWinSelect = (Select *)0x0;\n  iVar2 = *(int *)PTR___stack_chk_guard_00190e24;\n  sNC.pSrcList = (SrcList *)(*(code *)PTR_memset_00190d58)(&sSrc,0,0x50);\n  if (pTab != (Table *)0x0) {\n    sSrc.a[0].zName = pTab->zName;\n    sSrc.nSrc = 1;\n    sSrc.a[0].iCursor = -1;\n    sSrc.a[0].pTab = pTab;\n  }\n  sNC.ncFlags = (u16)type;\n  sNC.pParse = pParse;\n  iVar3 = sqlite3ResolveExprNames(&sNC,pExpr);\n  if ((iVar3 == 0) && (pList != (ExprList *)0x0)) {\n    iVar3 = sqlite3ResolveExprListNames(&sNC,pList);\n  }\n  if (iVar2 == *(int *)puVar1) {\n    return iVar3;\n  }\n  iVar2 = (*(code *)PTR___stack_chk_fail_00190df8)();\n  return iVar2;\n}\n\n" (function_definition "int sqlite3ResolveSelfReference(Parse *pParse,Table *pTab,int type,Expr *pExpr,ExprList *pList)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  NameContext sNC;\n  SrcList sSrc;\n  \n  puVar1 = PTR___stack_chk_guard_00190e24;\n  sNC.pParse = (Parse *)0x0;\n  sNC.pSrcList = (SrcList *)0x0;\n  sNC.uNC.pEList = (ExprList *)0x0;\n  sNC.pNext = (NameContext *)0x0;\n  sNC.nRef = 0;\n  sNC.nErr = 0;\n  sNC.ncFlags = 0;\n  sNC._26_2_ = 0;\n  sNC.pWinSelect = (Select *)0x0;\n  iVar2 = *(int *)PTR___stack_chk_guard_00190e24;\n  sNC.pSrcList = (SrcList *)(*(code *)PTR_memset_00190d58)(&sSrc,0,0x50);\n  if (pTab != (Table *)0x0) {\n    sSrc.a[0].zName = pTab->zName;\n    sSrc.nSrc = 1;\n    sSrc.a[0].iCursor = -1;\n    sSrc.a[0].pTab = pTab;\n  }\n  sNC.ncFlags = (u16)type;\n  sNC.pParse = pParse;\n  iVar3 = sqlite3ResolveExprNames(&sNC,pExpr);\n  if ((iVar3 == 0) && (pList != (ExprList *)0x0)) {\n    iVar3 = sqlite3ResolveExprListNames(&sNC,pList);\n  }\n  if (iVar2 == *(int *)puVar1) {\n    return iVar3;\n  }\n  iVar2 = (*(code *)PTR___stack_chk_fail_00190df8)();\n  return iVar2;\n}" primitive_type (function_declarator "sqlite3ResolveSelfReference(Parse *pParse,Table *pTab,int type,Expr *pExpr,ExprList *pList)" identifier (parameter_list "(Parse *pParse,Table *pTab,int type,Expr *pExpr,ExprList *pList)" ( (parameter_declaration "Parse *pParse" type_identifier (pointer_declarator "*pParse" * identifier)) , (parameter_declaration "Table *pTab" type_identifier (pointer_declarator "*pTab" * identifier)) , (parameter_declaration "int type" primitive_type identifier) , (parameter_declaration "Expr *pExpr" type_identifier (pointer_declarator "*pExpr" * identifier)) , (parameter_declaration "ExprList *pList" type_identifier (pointer_declarator "*pList" * identifier)) ))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  NameContext sNC;\n  SrcList sSrc;\n  \n  puVar1 = PTR___stack_chk_guard_00190e24;\n  sNC.pParse = (Parse *)0x0;\n  sNC.pSrcList = (SrcList *)0x0;\n  sNC.uNC.pEList = (ExprList *)0x0;\n  sNC.pNext = (NameContext *)0x0;\n  sNC.nRef = 0;\n  sNC.nErr = 0;\n  sNC.ncFlags = 0;\n  sNC._26_2_ = 0;\n  sNC.pWinSelect = (Select *)0x0;\n  iVar2 = *(int *)PTR___stack_chk_guard_00190e24;\n  sNC.pSrcList = (SrcList *)(*(code *)PTR_memset_00190d58)(&sSrc,0,0x50);\n  if (pTab != (Table *)0x0) {\n    sSrc.a[0].zName = pTab->zName;\n    sSrc.nSrc = 1;\n    sSrc.a[0].iCursor = -1;\n    sSrc.a[0].pTab = pTab;\n  }\n  sNC.ncFlags = (u16)type;\n  sNC.pParse = pParse;\n  iVar3 = sqlite3ResolveExprNames(&sNC,pExpr);\n  if ((iVar3 == 0) && (pList != (ExprList *)0x0)) {\n    iVar3 = sqlite3ResolveExprListNames(&sNC,pList);\n  }\n  if (iVar2 == *(int *)puVar1) {\n    return iVar3;\n  }\n  iVar2 = (*(code *)PTR___stack_chk_fail_00190df8)();\n  return iVar2;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "NameContext sNC;" type_identifier identifier ;) (declaration "SrcList sSrc;" type_identifier identifier ;) (expression_statement "puVar1 = PTR___stack_chk_guard_00190e24;" (assignment_expression "puVar1 = PTR___stack_chk_guard_00190e24" identifier = identifier) ;) (expression_statement "sNC.pParse = (Parse *)0x0;" (assignment_expression "sNC.pParse = (Parse *)0x0" (field_expression "sNC.pParse" identifier . field_identifier) = (cast_expression "(Parse *)0x0" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "sNC.pSrcList = (SrcList *)0x0;" (assignment_expression "sNC.pSrcList = (SrcList *)0x0" (field_expression "sNC.pSrcList" identifier . field_identifier) = (cast_expression "(SrcList *)0x0" ( (type_descriptor "SrcList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "sNC.uNC.pEList = (ExprList *)0x0;" (assignment_expression "sNC.uNC.pEList = (ExprList *)0x0" (field_expression "sNC.uNC.pEList" (field_expression "sNC.uNC" identifier . field_identifier) . field_identifier) = (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "sNC.pNext = (NameContext *)0x0;" (assignment_expression "sNC.pNext = (NameContext *)0x0" (field_expression "sNC.pNext" identifier . field_identifier) = (cast_expression "(NameContext *)0x0" ( (type_descriptor "NameContext *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "sNC.nRef = 0;" (assignment_expression "sNC.nRef = 0" (field_expression "sNC.nRef" identifier . field_identifier) = number_literal) ;) (expression_statement "sNC.nErr = 0;" (assignment_expression "sNC.nErr = 0" (field_expression "sNC.nErr" identifier . field_identifier) = number_literal) ;) (expression_statement "sNC.ncFlags = 0;" (assignment_expression "sNC.ncFlags = 0" (field_expression "sNC.ncFlags" identifier . field_identifier) = number_literal) ;) (expression_statement "sNC._26_2_ = 0;" (assignment_expression "sNC._26_2_ = 0" (field_expression "sNC._26_2_" identifier . field_identifier) = number_literal) ;) (expression_statement "sNC.pWinSelect = (Select *)0x0;" (assignment_expression "sNC.pWinSelect = (Select *)0x0" (field_expression "sNC.pWinSelect" identifier . field_identifier) = (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar2 = *(int *)PTR___stack_chk_guard_00190e24;" (assignment_expression "iVar2 = *(int *)PTR___stack_chk_guard_00190e24" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_00190e24" * (cast_expression "(int *)PTR___stack_chk_guard_00190e24" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "sNC.pSrcList = (SrcList *)(*(code *)PTR_memset_00190d58)(&sSrc,0,0x50);" (assignment_expression "sNC.pSrcList = (SrcList *)(*(code *)PTR_memset_00190d58)(&sSrc,0,0x50)" (field_expression "sNC.pSrcList" identifier . field_identifier) = (cast_expression "(SrcList *)(*(code *)PTR_memset_00190d58)(&sSrc,0,0x50)" ( (type_descriptor "SrcList *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_memset_00190d58)(&sSrc,0,0x50)" (parenthesized_expression "(*(code *)PTR_memset_00190d58)" ( (pointer_expression "*(code *)PTR_memset_00190d58" * (cast_expression "(code *)PTR_memset_00190d58" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&sSrc,0,0x50)" ( (pointer_expression "&sSrc" & identifier) , number_literal , number_literal ))))) ;) (if_statement "if (pTab != (Table *)0x0) {\n    sSrc.a[0].zName = pTab->zName;\n    sSrc.nSrc = 1;\n    sSrc.a[0].iCursor = -1;\n    sSrc.a[0].pTab = pTab;\n  }" if (parenthesized_expression "(pTab != (Table *)0x0)" ( (binary_expression "pTab != (Table *)0x0" identifier != (cast_expression "(Table *)0x0" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    sSrc.a[0].zName = pTab->zName;\n    sSrc.nSrc = 1;\n    sSrc.a[0].iCursor = -1;\n    sSrc.a[0].pTab = pTab;\n  }" { (expression_statement "sSrc.a[0].zName = pTab->zName;" (assignment_expression "sSrc.a[0].zName = pTab->zName" (field_expression "sSrc.a[0].zName" (subscript_expression "sSrc.a[0]" (field_expression "sSrc.a" identifier . field_identifier) [ number_literal ]) . field_identifier) = (field_expression "pTab->zName" identifier -> field_identifier)) ;) (expression_statement "sSrc.nSrc = 1;" (assignment_expression "sSrc.nSrc = 1" (field_expression "sSrc.nSrc" identifier . field_identifier) = number_literal) ;) (expression_statement "sSrc.a[0].iCursor = -1;" (assignment_expression "sSrc.a[0].iCursor = -1" (field_expression "sSrc.a[0].iCursor" (subscript_expression "sSrc.a[0]" (field_expression "sSrc.a" identifier . field_identifier) [ number_literal ]) . field_identifier) = number_literal) ;) (expression_statement "sSrc.a[0].pTab = pTab;" (assignment_expression "sSrc.a[0].pTab = pTab" (field_expression "sSrc.a[0].pTab" (subscript_expression "sSrc.a[0]" (field_expression "sSrc.a" identifier . field_identifier) [ number_literal ]) . field_identifier) = identifier) ;) })) (expression_statement "sNC.ncFlags = (u16)type;" (assignment_expression "sNC.ncFlags = (u16)type" (field_expression "sNC.ncFlags" identifier . field_identifier) = (cast_expression "(u16)type" ( (type_descriptor "u16" type_identifier) ) identifier)) ;) (expression_statement "sNC.pParse = pParse;" (assignment_expression "sNC.pParse = pParse" (field_expression "sNC.pParse" identifier . field_identifier) = identifier) ;) (expression_statement "iVar3 = sqlite3ResolveExprNames(&sNC,pExpr);" (assignment_expression "iVar3 = sqlite3ResolveExprNames(&sNC,pExpr)" identifier = (call_expression "sqlite3ResolveExprNames(&sNC,pExpr)" identifier (argument_list "(&sNC,pExpr)" ( (pointer_expression "&sNC" & identifier) , identifier )))) ;) (if_statement "if ((iVar3 == 0) && (pList != (ExprList *)0x0)) {\n    iVar3 = sqlite3ResolveExprListNames(&sNC,pList);\n  }" if (parenthesized_expression "((iVar3 == 0) && (pList != (ExprList *)0x0))" ( (binary_expression "(iVar3 == 0) && (pList != (ExprList *)0x0)" (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) && (parenthesized_expression "(pList != (ExprList *)0x0)" ( (binary_expression "pList != (ExprList *)0x0" identifier != (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n    iVar3 = sqlite3ResolveExprListNames(&sNC,pList);\n  }" { (expression_statement "iVar3 = sqlite3ResolveExprListNames(&sNC,pList);" (assignment_expression "iVar3 = sqlite3ResolveExprListNames(&sNC,pList)" identifier = (call_expression "sqlite3ResolveExprListNames(&sNC,pList)" identifier (argument_list "(&sNC,pList)" ( (pointer_expression "&sNC" & identifier) , identifier )))) ;) })) (if_statement "if (iVar2 == *(int *)puVar1) {\n    return iVar3;\n  }" if (parenthesized_expression "(iVar2 == *(int *)puVar1)" ( (binary_expression "iVar2 == *(int *)puVar1" identifier == (pointer_expression "*(int *)puVar1" * (cast_expression "(int *)puVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return iVar3;\n  }" { (return_statement "return iVar3;" return identifier ;) })) (expression_statement "iVar2 = (*(code *)PTR___stack_chk_fail_00190df8)();" (assignment_expression "iVar2 = (*(code *)PTR___stack_chk_fail_00190df8)()" identifier = (call_expression "(*(code *)PTR___stack_chk_fail_00190df8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00190df8)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_00190df8" * (cast_expression "(code *)PTR___stack_chk_fail_00190df8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( )))) ;) (return_statement "return iVar2;" return identifier ;) })))
(translation_unit "void FUN_000964d4(undefined4 param_1,undefined4 *param_2,undefined2 param_3,int param_4,int param_5)\n\n{\n  int iVar1;\n  int *piVar2;\n  undefined *puVar3;\n  undefined4 local_98;\n  undefined4 local_94;\n  undefined4 local_90;\n  undefined4 local_8c;\n  undefined4 local_88;\n  undefined4 local_84;\n  undefined4 local_80;\n  undefined4 local_7c;\n  undefined4 local_78 [4];\n  undefined4 local_68;\n  undefined4 *local_60;\n  undefined4 local_48;\n  int *local_24;\n  \n  puVar3 = PTR___stack_chk_guard_00190e24;\n  local_98 = 0;\n  local_94 = 0;\n  local_90 = 0;\n  local_8c = 0;\n  local_88 = 0;\n  local_84 = 0;\n  local_80 = 0;\n  local_7c = 0;\n  local_24 = *(int **)PTR___stack_chk_guard_00190e24;\n  local_94 = (*(code *)PTR_memset_00190d58)(local_78,0,0x50);\n  if (param_2 != (undefined4 *)0x0) {\n    local_68 = *param_2;\n    local_78[0] = 1;\n    local_48 = 0xffffffff;\n    local_60 = param_2;\n  }\n  local_80 = CONCAT22(param_3,local_80._2_2_);\n  local_98 = param_1;\n  iVar1 = FUN_00096280(&local_98);\n  if ((iVar1 == 0) && (param_5 != 0)) {\n    FUN_00096408(&local_98);\n    param_4 = param_5;\n  }\n  if (local_24 == *(int **)puVar3) {\n    return;\n  }\n  piVar2 = local_24;\n  puVar3 = PTR___stack_chk_fail_00190df8;\n  (*(code *)PTR___stack_chk_fail_00190df8)();\n  (*(code *)(*(int *)(puVar3 + 0xfa590) + -0x5338))(param_4);\n  if (*(int *)(param_4 + 0x18) <= *(int *)(*piVar2 + 0x78)) {\n    return;\n  }\n  FUN_00095160(piVar2,*(int *)(puVar3 + 0xfa348) + -0x5974);\n  return;\n}\n\n" (function_definition "void FUN_000964d4(undefined4 param_1,undefined4 *param_2,undefined2 param_3,int param_4,int param_5)\n\n{\n  int iVar1;\n  int *piVar2;\n  undefined *puVar3;\n  undefined4 local_98;\n  undefined4 local_94;\n  undefined4 local_90;\n  undefined4 local_8c;\n  undefined4 local_88;\n  undefined4 local_84;\n  undefined4 local_80;\n  undefined4 local_7c;\n  undefined4 local_78 [4];\n  undefined4 local_68;\n  undefined4 *local_60;\n  undefined4 local_48;\n  int *local_24;\n  \n  puVar3 = PTR___stack_chk_guard_00190e24;\n  local_98 = 0;\n  local_94 = 0;\n  local_90 = 0;\n  local_8c = 0;\n  local_88 = 0;\n  local_84 = 0;\n  local_80 = 0;\n  local_7c = 0;\n  local_24 = *(int **)PTR___stack_chk_guard_00190e24;\n  local_94 = (*(code *)PTR_memset_00190d58)(local_78,0,0x50);\n  if (param_2 != (undefined4 *)0x0) {\n    local_68 = *param_2;\n    local_78[0] = 1;\n    local_48 = 0xffffffff;\n    local_60 = param_2;\n  }\n  local_80 = CONCAT22(param_3,local_80._2_2_);\n  local_98 = param_1;\n  iVar1 = FUN_00096280(&local_98);\n  if ((iVar1 == 0) && (param_5 != 0)) {\n    FUN_00096408(&local_98);\n    param_4 = param_5;\n  }\n  if (local_24 == *(int **)puVar3) {\n    return;\n  }\n  piVar2 = local_24;\n  puVar3 = PTR___stack_chk_fail_00190df8;\n  (*(code *)PTR___stack_chk_fail_00190df8)();\n  (*(code *)(*(int *)(puVar3 + 0xfa590) + -0x5338))(param_4);\n  if (*(int *)(param_4 + 0x18) <= *(int *)(*piVar2 + 0x78)) {\n    return;\n  }\n  FUN_00095160(piVar2,*(int *)(puVar3 + 0xfa348) + -0x5974);\n  return;\n}" primitive_type (function_declarator "FUN_000964d4(undefined4 param_1,undefined4 *param_2,undefined2 param_3,int param_4,int param_5)" identifier (parameter_list "(undefined4 param_1,undefined4 *param_2,undefined2 param_3,int param_4,int param_5)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined2 param_3" type_identifier identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "int param_5" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  int *piVar2;\n  undefined *puVar3;\n  undefined4 local_98;\n  undefined4 local_94;\n  undefined4 local_90;\n  undefined4 local_8c;\n  undefined4 local_88;\n  undefined4 local_84;\n  undefined4 local_80;\n  undefined4 local_7c;\n  undefined4 local_78 [4];\n  undefined4 local_68;\n  undefined4 *local_60;\n  undefined4 local_48;\n  int *local_24;\n  \n  puVar3 = PTR___stack_chk_guard_00190e24;\n  local_98 = 0;\n  local_94 = 0;\n  local_90 = 0;\n  local_8c = 0;\n  local_88 = 0;\n  local_84 = 0;\n  local_80 = 0;\n  local_7c = 0;\n  local_24 = *(int **)PTR___stack_chk_guard_00190e24;\n  local_94 = (*(code *)PTR_memset_00190d58)(local_78,0,0x50);\n  if (param_2 != (undefined4 *)0x0) {\n    local_68 = *param_2;\n    local_78[0] = 1;\n    local_48 = 0xffffffff;\n    local_60 = param_2;\n  }\n  local_80 = CONCAT22(param_3,local_80._2_2_);\n  local_98 = param_1;\n  iVar1 = FUN_00096280(&local_98);\n  if ((iVar1 == 0) && (param_5 != 0)) {\n    FUN_00096408(&local_98);\n    param_4 = param_5;\n  }\n  if (local_24 == *(int **)puVar3) {\n    return;\n  }\n  piVar2 = local_24;\n  puVar3 = PTR___stack_chk_fail_00190df8;\n  (*(code *)PTR___stack_chk_fail_00190df8)();\n  (*(code *)(*(int *)(puVar3 + 0xfa590) + -0x5338))(param_4);\n  if (*(int *)(param_4 + 0x18) <= *(int *)(*piVar2 + 0x78)) {\n    return;\n  }\n  FUN_00095160(piVar2,*(int *)(puVar3 + 0xfa348) + -0x5974);\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined4 local_98;" type_identifier identifier ;) (declaration "undefined4 local_94;" type_identifier identifier ;) (declaration "undefined4 local_90;" type_identifier identifier ;) (declaration "undefined4 local_8c;" type_identifier identifier ;) (declaration "undefined4 local_88;" type_identifier identifier ;) (declaration "undefined4 local_84;" type_identifier identifier ;) (declaration "undefined4 local_80;" type_identifier identifier ;) (declaration "undefined4 local_7c;" type_identifier identifier ;) (declaration "undefined4 local_78 [4];" type_identifier (array_declarator "local_78 [4]" identifier [ number_literal ]) ;) (declaration "undefined4 local_68;" type_identifier identifier ;) (declaration "undefined4 *local_60;" type_identifier (pointer_declarator "*local_60" * identifier) ;) (declaration "undefined4 local_48;" type_identifier identifier ;) (declaration "int *local_24;" primitive_type (pointer_declarator "*local_24" * identifier) ;) (expression_statement "puVar3 = PTR___stack_chk_guard_00190e24;" (assignment_expression "puVar3 = PTR___stack_chk_guard_00190e24" identifier = identifier) ;) (expression_statement "local_98 = 0;" (assignment_expression "local_98 = 0" identifier = number_literal) ;) (expression_statement "local_94 = 0;" (assignment_expression "local_94 = 0" identifier = number_literal) ;) (expression_statement "local_90 = 0;" (assignment_expression "local_90 = 0" identifier = number_literal) ;) (expression_statement "local_8c = 0;" (assignment_expression "local_8c = 0" identifier = number_literal) ;) (expression_statement "local_88 = 0;" (assignment_expression "local_88 = 0" identifier = number_literal) ;) (expression_statement "local_84 = 0;" (assignment_expression "local_84 = 0" identifier = number_literal) ;) (expression_statement "local_80 = 0;" (assignment_expression "local_80 = 0" identifier = number_literal) ;) (expression_statement "local_7c = 0;" (assignment_expression "local_7c = 0" identifier = number_literal) ;) (expression_statement "local_24 = *(int **)PTR___stack_chk_guard_00190e24;" (assignment_expression "local_24 = *(int **)PTR___stack_chk_guard_00190e24" identifier = (pointer_expression "*(int **)PTR___stack_chk_guard_00190e24" * (cast_expression "(int **)PTR___stack_chk_guard_00190e24" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "local_94 = (*(code *)PTR_memset_00190d58)(local_78,0,0x50);" (assignment_expression "local_94 = (*(code *)PTR_memset_00190d58)(local_78,0,0x50)" identifier = (call_expression "(*(code *)PTR_memset_00190d58)(local_78,0,0x50)" (parenthesized_expression "(*(code *)PTR_memset_00190d58)" ( (pointer_expression "*(code *)PTR_memset_00190d58" * (cast_expression "(code *)PTR_memset_00190d58" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_78,0,0x50)" ( identifier , number_literal , number_literal )))) ;) (if_statement "if (param_2 != (undefined4 *)0x0) {\n    local_68 = *param_2;\n    local_78[0] = 1;\n    local_48 = 0xffffffff;\n    local_60 = param_2;\n  }" if (parenthesized_expression "(param_2 != (undefined4 *)0x0)" ( (binary_expression "param_2 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    local_68 = *param_2;\n    local_78[0] = 1;\n    local_48 = 0xffffffff;\n    local_60 = param_2;\n  }" { (expression_statement "local_68 = *param_2;" (assignment_expression "local_68 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "local_78[0] = 1;" (assignment_expression "local_78[0] = 1" (subscript_expression "local_78[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_48 = 0xffffffff;" (assignment_expression "local_48 = 0xffffffff" identifier = number_literal) ;) (expression_statement "local_60 = param_2;" (assignment_expression "local_60 = param_2" identifier = identifier) ;) })) (expression_statement "local_80 = CONCAT22(param_3,local_80._2_2_);" (assignment_expression "local_80 = CONCAT22(param_3,local_80._2_2_)" identifier = (call_expression "CONCAT22(param_3,local_80._2_2_)" identifier (argument_list "(param_3,local_80._2_2_)" ( identifier , (field_expression "local_80._2_2_" identifier . field_identifier) )))) ;) (expression_statement "local_98 = param_1;" (assignment_expression "local_98 = param_1" identifier = identifier) ;) (expression_statement "iVar1 = FUN_00096280(&local_98);" (assignment_expression "iVar1 = FUN_00096280(&local_98)" identifier = (call_expression "FUN_00096280(&local_98)" identifier (argument_list "(&local_98)" ( (pointer_expression "&local_98" & identifier) )))) ;) (if_statement "if ((iVar1 == 0) && (param_5 != 0)) {\n    FUN_00096408(&local_98);\n    param_4 = param_5;\n  }" if (parenthesized_expression "((iVar1 == 0) && (param_5 != 0))" ( (binary_expression "(iVar1 == 0) && (param_5 != 0)" (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) && (parenthesized_expression "(param_5 != 0)" ( (binary_expression "param_5 != 0" identifier != number_literal) ))) )) (compound_statement "{\n    FUN_00096408(&local_98);\n    param_4 = param_5;\n  }" { (expression_statement "FUN_00096408(&local_98);" (call_expression "FUN_00096408(&local_98)" identifier (argument_list "(&local_98)" ( (pointer_expression "&local_98" & identifier) ))) ;) (expression_statement "param_4 = param_5;" (assignment_expression "param_4 = param_5" identifier = identifier) ;) })) (if_statement "if (local_24 == *(int **)puVar3) {\n    return;\n  }" if (parenthesized_expression "(local_24 == *(int **)puVar3)" ( (binary_expression "local_24 == *(int **)puVar3" identifier == (pointer_expression "*(int **)puVar3" * (cast_expression "(int **)puVar3" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "piVar2 = local_24;" (assignment_expression "piVar2 = local_24" identifier = identifier) ;) (expression_statement "puVar3 = PTR___stack_chk_fail_00190df8;" (assignment_expression "puVar3 = PTR___stack_chk_fail_00190df8" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_00190df8)();" (call_expression "(*(code *)PTR___stack_chk_fail_00190df8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00190df8)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_00190df8" * (cast_expression "(code *)PTR___stack_chk_fail_00190df8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "(*(code *)(*(int *)(puVar3 + 0xfa590) + -0x5338))(param_4);" (call_expression "(*(code *)(*(int *)(puVar3 + 0xfa590) + -0x5338))(param_4)" (parenthesized_expression "(*(code *)(*(int *)(puVar3 + 0xfa590) + -0x5338))" ( (pointer_expression "*(code *)(*(int *)(puVar3 + 0xfa590) + -0x5338)" * (cast_expression "(code *)(*(int *)(puVar3 + 0xfa590) + -0x5338)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar3 + 0xfa590) + -0x5338)" ( (binary_expression "*(int *)(puVar3 + 0xfa590) + -0x5338" (pointer_expression "*(int *)(puVar3 + 0xfa590)" * (cast_expression "(int *)(puVar3 + 0xfa590)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0xfa590)" ( (binary_expression "puVar3 + 0xfa590" identifier + number_literal) )))) + number_literal) )))) )) (argument_list "(param_4)" ( identifier ))) ;) (if_statement "if (*(int *)(param_4 + 0x18) <= *(int *)(*piVar2 + 0x78)) {\n    return;\n  }" if (parenthesized_expression "(*(int *)(param_4 + 0x18) <= *(int *)(*piVar2 + 0x78))" ( (binary_expression "*(int *)(param_4 + 0x18) <= *(int *)(*piVar2 + 0x78)" (pointer_expression "*(int *)(param_4 + 0x18)" * (cast_expression "(int *)(param_4 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0x18)" ( (binary_expression "param_4 + 0x18" identifier + number_literal) )))) <= (pointer_expression "*(int *)(*piVar2 + 0x78)" * (cast_expression "(int *)(*piVar2 + 0x78)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar2 + 0x78)" ( (binary_expression "*piVar2 + 0x78" (pointer_expression "*piVar2" * identifier) + number_literal) ))))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "FUN_00095160(piVar2,*(int *)(puVar3 + 0xfa348) + -0x5974);" (call_expression "FUN_00095160(piVar2,*(int *)(puVar3 + 0xfa348) + -0x5974)" identifier (argument_list "(piVar2,*(int *)(puVar3 + 0xfa348) + -0x5974)" ( identifier , (binary_expression "*(int *)(puVar3 + 0xfa348) + -0x5974" (pointer_expression "*(int *)(puVar3 + 0xfa348)" * (cast_expression "(int *)(puVar3 + 0xfa348)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0xfa348)" ( (binary_expression "puVar3 + 0xfa348" identifier + number_literal) )))) + number_literal) ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , LIT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (field_expression IDENT . field_identifier) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) )) (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) <= (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (compound_statement { (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))) ;) (return_statement return ;) })))
(function_definition "void FUN_000964d4(undefined4 param_1,undefined4 *param_2,undefined2 param_3,int param_4,int param_5)\n\n{\n  int iVar1;\n  int *piVar2;\n  undefined *puVar3;\n  undefined4 local_98;\n  undefined4 local_94;\n  undefined4 local_90;\n  undefined4 local_8c;\n  undefined4 local_88;\n  undefined4 local_84;\n  undefined4 local_80;\n  undefined4 local_7c;\n  undefined4 local_78 [4];\n  undefined4 local_68;\n  undefined4 *local_60;\n  undefined4 local_48;\n  int *local_24;\n  \n  puVar3 = PTR___stack_chk_guard_00190e24;\n  local_98 = 0;\n  local_94 = 0;\n  local_90 = 0;\n  local_8c = 0;\n  local_88 = 0;\n  local_84 = 0;\n  local_80 = 0;\n  local_7c = 0;\n  local_24 = *(int **)PTR___stack_chk_guard_00190e24;\n  local_94 = (*(code *)PTR_memset_00190d58)(local_78,0,0x50);\n  if (param_2 != (undefined4 *)0x0) {\n    local_68 = *param_2;\n    local_78[0] = 1;\n    local_48 = 0xffffffff;\n    local_60 = param_2;\n  }\n  local_80 = CONCAT22(param_3,local_80._2_2_);\n  local_98 = param_1;\n  iVar1 = FUN_00096280(&local_98);\n  if ((iVar1 == 0) && (param_5 != 0)) {\n    FUN_00096408(&local_98);\n    param_4 = param_5;\n  }\n  if (local_24 == *(int **)puVar3) {\n    return;\n  }\n  piVar2 = local_24;\n  puVar3 = PTR___stack_chk_fail_00190df8;\n  (*(code *)PTR___stack_chk_fail_00190df8)();\n  (*(code *)(*(int *)(puVar3 + 0xfa590) + -0x5338))(param_4);\n  if (*(int *)(param_4 + 0x18) <= *(int *)(*piVar2 + 0x78)) {\n    return;\n  }\n  FUN_00095160(piVar2,*(int *)(puVar3 + 0xfa348) + -0x5974);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_000964d4(undefined4 param_1,undefined4 *param_2,undefined2 param_3,int param_4,int param_5)" (identifier "FUN_000964d4") (parameter_list "(undefined4 param_1,undefined4 *param_2,undefined2 param_3,int param_4,int param_5)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 *param_2" (type_identifier "undefined4") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "undefined2 param_3" (type_identifier "undefined2") (identifier "param_3")) (, ",") (parameter_declaration "int param_4" (primitive_type "int") (identifier "param_4")) (, ",") (parameter_declaration "int param_5" (primitive_type "int") (identifier "param_5")) () ")"))) (compound_statement "{\n  int iVar1;\n  int *piVar2;\n  undefined *puVar3;\n  undefined4 local_98;\n  undefined4 local_94;\n  undefined4 local_90;\n  undefined4 local_8c;\n  undefined4 local_88;\n  undefined4 local_84;\n  undefined4 local_80;\n  undefined4 local_7c;\n  undefined4 local_78 [4];\n  undefined4 local_68;\n  undefined4 *local_60;\n  undefined4 local_48;\n  int *local_24;\n  \n  puVar3 = PTR___stack_chk_guard_00190e24;\n  local_98 = 0;\n  local_94 = 0;\n  local_90 = 0;\n  local_8c = 0;\n  local_88 = 0;\n  local_84 = 0;\n  local_80 = 0;\n  local_7c = 0;\n  local_24 = *(int **)PTR___stack_chk_guard_00190e24;\n  local_94 = (*(code *)PTR_memset_00190d58)(local_78,0,0x50);\n  if (param_2 != (undefined4 *)0x0) {\n    local_68 = *param_2;\n    local_78[0] = 1;\n    local_48 = 0xffffffff;\n    local_60 = param_2;\n  }\n  local_80 = CONCAT22(param_3,local_80._2_2_);\n  local_98 = param_1;\n  iVar1 = FUN_00096280(&local_98);\n  if ((iVar1 == 0) && (param_5 != 0)) {\n    FUN_00096408(&local_98);\n    param_4 = param_5;\n  }\n  if (local_24 == *(int **)puVar3) {\n    return;\n  }\n  piVar2 = local_24;\n  puVar3 = PTR___stack_chk_fail_00190df8;\n  (*(code *)PTR___stack_chk_fail_00190df8)();\n  (*(code *)(*(int *)(puVar3 + 0xfa590) + -0x5338))(param_4);\n  if (*(int *)(param_4 + 0x18) <= *(int *)(*piVar2 + 0x78)) {\n    return;\n  }\n  FUN_00095160(piVar2,*(int *)(puVar3 + 0xfa348) + -0x5974);\n  return;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "int *piVar2;" (primitive_type "int") (pointer_declarator "*piVar2" (* "*") (identifier "piVar2")) (; ";")) (declaration "undefined *puVar3;" (type_identifier "undefined") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "undefined4 local_98;" (type_identifier "undefined4") (identifier "local_98") (; ";")) (declaration "undefined4 local_94;" (type_identifier "undefined4") (identifier "local_94") (; ";")) (declaration "undefined4 local_90;" (type_identifier "undefined4") (identifier "local_90") (; ";")) (declaration "undefined4 local_8c;" (type_identifier "undefined4") (identifier "local_8c") (; ";")) (declaration "undefined4 local_88;" (type_identifier "undefined4") (identifier "local_88") (; ";")) (declaration "undefined4 local_84;" (type_identifier "undefined4") (identifier "local_84") (; ";")) (declaration "undefined4 local_80;" (type_identifier "undefined4") (identifier "local_80") (; ";")) (declaration "undefined4 local_7c;" (type_identifier "undefined4") (identifier "local_7c") (; ";")) (declaration "undefined4 local_78 [4];" (type_identifier "undefined4") (array_declarator "local_78 [4]" (identifier "local_78") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "undefined4 local_68;" (type_identifier "undefined4") (identifier "local_68") (; ";")) (declaration "undefined4 *local_60;" (type_identifier "undefined4") (pointer_declarator "*local_60" (* "*") (identifier "local_60")) (; ";")) (declaration "undefined4 local_48;" (type_identifier "undefined4") (identifier "local_48") (; ";")) (declaration "int *local_24;" (primitive_type "int") (pointer_declarator "*local_24" (* "*") (identifier "local_24")) (; ";")) (expression_statement "puVar3 = PTR___stack_chk_guard_00190e24;" (assignment_expression "puVar3 = PTR___stack_chk_guard_00190e24" (identifier "puVar3") (= "=") (identifier "PTR___stack_chk_guard_00190e24")) (; ";")) (expression_statement "local_98 = 0;" (assignment_expression "local_98 = 0" (identifier "local_98") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_94 = 0;" (assignment_expression "local_94 = 0" (identifier "local_94") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_90 = 0;" (assignment_expression "local_90 = 0" (identifier "local_90") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_8c = 0;" (assignment_expression "local_8c = 0" (identifier "local_8c") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_88 = 0;" (assignment_expression "local_88 = 0" (identifier "local_88") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_84 = 0;" (assignment_expression "local_84 = 0" (identifier "local_84") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_80 = 0;" (assignment_expression "local_80 = 0" (identifier "local_80") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_7c = 0;" (assignment_expression "local_7c = 0" (identifier "local_7c") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_24 = *(int **)PTR___stack_chk_guard_00190e24;" (assignment_expression "local_24 = *(int **)PTR___stack_chk_guard_00190e24" (identifier "local_24") (= "=") (pointer_expression "*(int **)PTR___stack_chk_guard_00190e24" (* "*") (cast_expression "(int **)PTR___stack_chk_guard_00190e24" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "PTR___stack_chk_guard_00190e24")))) (; ";")) (expression_statement "local_94 = (*(code *)PTR_memset_00190d58)(local_78,0,0x50);" (assignment_expression "local_94 = (*(code *)PTR_memset_00190d58)(local_78,0,0x50)" (identifier "local_94") (= "=") (call_expression "(*(code *)PTR_memset_00190d58)(local_78,0,0x50)" (parenthesized_expression "(*(code *)PTR_memset_00190d58)" (( "(") (pointer_expression "*(code *)PTR_memset_00190d58" (* "*") (cast_expression "(code *)PTR_memset_00190d58" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memset_00190d58"))) () ")")) (argument_list "(local_78,0,0x50)" (( "(") (identifier "local_78") (, ",") (number_literal "0") (, ",") (number_literal "0x50") () ")")))) (; ";")) (if_statement "if (param_2 != (undefined4 *)0x0) {\n    local_68 = *param_2;\n    local_78[0] = 1;\n    local_48 = 0xffffffff;\n    local_60 = param_2;\n  }" (if "if") (parenthesized_expression "(param_2 != (undefined4 *)0x0)" (( "(") (binary_expression "param_2 != (undefined4 *)0x0" (identifier "param_2") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    local_68 = *param_2;\n    local_78[0] = 1;\n    local_48 = 0xffffffff;\n    local_60 = param_2;\n  }" ({ "{") (expression_statement "local_68 = *param_2;" (assignment_expression "local_68 = *param_2" (identifier "local_68") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "local_78[0] = 1;" (assignment_expression "local_78[0] = 1" (subscript_expression "local_78[0]" (identifier "local_78") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "local_48 = 0xffffffff;" (assignment_expression "local_48 = 0xffffffff" (identifier "local_48") (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "local_60 = param_2;" (assignment_expression "local_60 = param_2" (identifier "local_60") (= "=") (identifier "param_2")) (; ";")) (} "}"))) (expression_statement "local_80 = CONCAT22(param_3,local_80._2_2_);" (assignment_expression "local_80 = CONCAT22(param_3,local_80._2_2_)" (identifier "local_80") (= "=") (call_expression "CONCAT22(param_3,local_80._2_2_)" (identifier "CONCAT22") (argument_list "(param_3,local_80._2_2_)" (( "(") (identifier "param_3") (, ",") (field_expression "local_80._2_2_" (identifier "local_80") (. ".") (field_identifier "_2_2_")) () ")")))) (; ";")) (expression_statement "local_98 = param_1;" (assignment_expression "local_98 = param_1" (identifier "local_98") (= "=") (identifier "param_1")) (; ";")) (expression_statement "iVar1 = FUN_00096280(&local_98);" (assignment_expression "iVar1 = FUN_00096280(&local_98)" (identifier "iVar1") (= "=") (call_expression "FUN_00096280(&local_98)" (identifier "FUN_00096280") (argument_list "(&local_98)" (( "(") (pointer_expression "&local_98" (& "&") (identifier "local_98")) () ")")))) (; ";")) (if_statement "if ((iVar1 == 0) && (param_5 != 0)) {\n    FUN_00096408(&local_98);\n    param_4 = param_5;\n  }" (if "if") (parenthesized_expression "((iVar1 == 0) && (param_5 != 0))" (( "(") (binary_expression "(iVar1 == 0) && (param_5 != 0)" (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(param_5 != 0)" (( "(") (binary_expression "param_5 != 0" (identifier "param_5") (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    FUN_00096408(&local_98);\n    param_4 = param_5;\n  }" ({ "{") (expression_statement "FUN_00096408(&local_98);" (call_expression "FUN_00096408(&local_98)" (identifier "FUN_00096408") (argument_list "(&local_98)" (( "(") (pointer_expression "&local_98" (& "&") (identifier "local_98")) () ")"))) (; ";")) (expression_statement "param_4 = param_5;" (assignment_expression "param_4 = param_5" (identifier "param_4") (= "=") (identifier "param_5")) (; ";")) (} "}"))) (if_statement "if (local_24 == *(int **)puVar3) {\n    return;\n  }" (if "if") (parenthesized_expression "(local_24 == *(int **)puVar3)" (( "(") (binary_expression "local_24 == *(int **)puVar3" (identifier "local_24") (== "==") (pointer_expression "*(int **)puVar3" (* "*") (cast_expression "(int **)puVar3" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar3")))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "piVar2 = local_24;" (assignment_expression "piVar2 = local_24" (identifier "piVar2") (= "=") (identifier "local_24")) (; ";")) (expression_statement "puVar3 = PTR___stack_chk_fail_00190df8;" (assignment_expression "puVar3 = PTR___stack_chk_fail_00190df8" (identifier "puVar3") (= "=") (identifier "PTR___stack_chk_fail_00190df8")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_00190df8)();" (call_expression "(*(code *)PTR___stack_chk_fail_00190df8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00190df8)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_00190df8" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_00190df8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_00190df8"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "(*(code *)(*(int *)(puVar3 + 0xfa590) + -0x5338))(param_4);" (call_expression "(*(code *)(*(int *)(puVar3 + 0xfa590) + -0x5338))(param_4)" (parenthesized_expression "(*(code *)(*(int *)(puVar3 + 0xfa590) + -0x5338))" (( "(") (pointer_expression "*(code *)(*(int *)(puVar3 + 0xfa590) + -0x5338)" (* "*") (cast_expression "(code *)(*(int *)(puVar3 + 0xfa590) + -0x5338)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar3 + 0xfa590) + -0x5338)" (( "(") (binary_expression "*(int *)(puVar3 + 0xfa590) + -0x5338" (pointer_expression "*(int *)(puVar3 + 0xfa590)" (* "*") (cast_expression "(int *)(puVar3 + 0xfa590)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + 0xfa590)" (( "(") (binary_expression "puVar3 + 0xfa590" (identifier "puVar3") (+ "+") (number_literal "0xfa590")) () ")")))) (+ "+") (number_literal "-0x5338")) () ")")))) () ")")) (argument_list "(param_4)" (( "(") (identifier "param_4") () ")"))) (; ";")) (if_statement "if (*(int *)(param_4 + 0x18) <= *(int *)(*piVar2 + 0x78)) {\n    return;\n  }" (if "if") (parenthesized_expression "(*(int *)(param_4 + 0x18) <= *(int *)(*piVar2 + 0x78))" (( "(") (binary_expression "*(int *)(param_4 + 0x18) <= *(int *)(*piVar2 + 0x78)" (pointer_expression "*(int *)(param_4 + 0x18)" (* "*") (cast_expression "(int *)(param_4 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 0x18)" (( "(") (binary_expression "param_4 + 0x18" (identifier "param_4") (+ "+") (number_literal "0x18")) () ")")))) (<= "<=") (pointer_expression "*(int *)(*piVar2 + 0x78)" (* "*") (cast_expression "(int *)(*piVar2 + 0x78)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar2 + 0x78)" (( "(") (binary_expression "*piVar2 + 0x78" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (+ "+") (number_literal "0x78")) () ")"))))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "FUN_00095160(piVar2,*(int *)(puVar3 + 0xfa348) + -0x5974);" (call_expression "FUN_00095160(piVar2,*(int *)(puVar3 + 0xfa348) + -0x5974)" (identifier "FUN_00095160") (argument_list "(piVar2,*(int *)(puVar3 + 0xfa348) + -0x5974)" (( "(") (identifier "piVar2") (, ",") (binary_expression "*(int *)(puVar3 + 0xfa348) + -0x5974" (pointer_expression "*(int *)(puVar3 + 0xfa348)" (* "*") (cast_expression "(int *)(puVar3 + 0xfa348)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + 0xfa348)" (( "(") (binary_expression "puVar3 + 0xfa348" (identifier "puVar3") (+ "+") (number_literal "0xfa348")) () ")")))) (+ "+") (number_literal "-0x5974")) () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

int function_1(type_1 *pParse,type_2 *var_1,int type,type_3 *pExpr,type_4 *var_4)

{
  type_5 *puVar1;
  int var_6;
  int var_3;
  type_6 sNC;
  type_7 sSrc;
  
  puVar1 = PTR___stack_chk_guard_00190e24;
  sNC.pParse = (type_1 *)0x0;
  sNC.pSrcList = (type_7 *)0x0;
  sNC.uNC.pEList = (type_4 *)0x0;
  sNC.pNext = (type_6 *)0x0;
  sNC.nRef = 0;
  sNC.nErr = 0;
  sNC.ncFlags = 0;
  sNC._26_2_ = 0;
  sNC.pWinSelect = (type_8 *)0x0;
  var_6 = *(int *)PTR___stack_chk_guard_00190e24;
  sNC.pSrcList = (type_7 *)(*(type_9 *)PTR_memset_00190d58)(&sSrc,0,0x50);
  if (var_1 != (type_2 *)0x0) {
    sSrc.a[0].zName = var_1->zName;
    sSrc.nSrc = 1;
    sSrc.a[0].iCursor = -1;
    sSrc.a[0].var_1 = var_1;
  }
  sNC.ncFlags = (type_10)type;
  sNC.pParse = pParse;
  var_3 = var_2(&sNC,pExpr);
  if ((var_3 == 0) && (var_4 != (type_4 *)0x0)) {
    var_3 = var_5(&sNC,var_4);
  }
  if (var_6 == *(int *)puVar1) {
    return var_3;
  }
  var_6 = (*(type_9 *)PTR___stack_chk_fail_00190df8)();
  return var_6;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))) (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: (identifier)))) arguments: (argument_list (identifier) (number_literal) (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (field_expression argument: (identifier) field: (field_identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)))))) (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 (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))) consequence: (compound_statement (return_statement))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))) arguments: (argument_list (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) consequence: (compound_statement (return_statement))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (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))))) (return_statement))))

void MASKED(undefined4 param_1,undefined4 *param_2,undefined2 param_3,int param_4,int param_5)

{
  int iVar1;
  int *piVar2;
  undefined *puVar3;
  undefined4 local_98;
  undefined4 local_94;
  undefined4 local_90;
  undefined4 local_8c;
  undefined4 local_88;
  undefined4 local_84;
  undefined4 local_80;
  undefined4 local_7c;
  undefined4 local_78 [4];
  undefined4 local_68;
  undefined4 *local_60;
  undefined4 local_48;
  int *local_24;
  
  puVar3 = PTR___stack_chk_guard_00190e24;
  local_98 = 0;
  local_94 = 0;
  local_90 = 0;
  local_8c = 0;
  local_88 = 0;
  local_84 = 0;
  local_80 = 0;
  local_7c = 0;
  local_24 = *(int **)PTR___stack_chk_guard_00190e24;
  local_94 = (*(code *)PTR_memset_00190d58)(local_78,0,0x50);
  if (param_2 != (undefined4 *)0x0) {
    local_68 = *param_2;
    local_78[0] = 1;
    local_48 = 0xffffffff;
    local_60 = param_2;
  }
  local_80 = CONCAT22(param_3,local_80._2_2_);
  local_98 = param_1;
  iVar1 = FUN_00096280(&local_98);
  if ((iVar1 == 0) && (param_5 != 0)) {
    FUN_00096408(&local_98);
    param_4 = param_5;
  }
  if (local_24 == *(int **)puVar3) {
    return;
  }
  piVar2 = local_24;
  puVar3 = PTR___stack_chk_fail_00190df8;
  (*(code *)PTR___stack_chk_fail_00190df8)();
  (*(code *)(*(int *)(puVar3 + 0xfa590) + -0x5338))(param_4);
  if (*(int *)(param_4 + 0x18) <= *(int *)(*piVar2 + 0x78)) {
    return;
  }
  FUN_00095160(piVar2,*(int *)(puVar3 + 0xfa348) + -0x5974);
  return;
}

