
/* WARNING: Unknown calling convention */

int objdump_symbol_at_address(bfd_vma vma,disassemble_info *inf)

{
  bfd_vma *pbVar1;
  asymbol *paVar2;
  uint uVar3;
  uint in_stack_ffffffe8;
  
  paVar2 = find_symbol_for_address
                     ((ulonglong)in_stack_ffffffe8 << 0x20,(disassemble_info *)vma,vma._4_4_);
  uVar3 = 0;
  if (paVar2 != (asymbol *)0x0) {
    uVar3 = (uint)paVar2->value;
    pbVar1 = &paVar2->section->vma;
    uVar3 = (uint)(vma == CONCAT44(*(int *)((int)&paVar2->value + 4) +
                                   *(int *)((int)&paVar2->section->vma + 4) +
                                   (uint)CARRY4(uVar3,(uint)*pbVar1),uVar3 + (int)*pbVar1));
  }
  return uVar3;
}



bool FUN_00015ef0(int param_1,int param_2)

{
  uint *puVar1;
  int iVar2;
  bool bVar3;
  
  iVar2 = FUN_00015560(0);
  bVar3 = false;
  if (iVar2 != 0) {
    puVar1 = (uint *)(*(int *)(iVar2 + 0x14) + 0x1c);
    bVar3 = param_1 == *(uint *)(iVar2 + 8) + *puVar1 &&
            param_2 ==
            *(int *)(iVar2 + 0xc) + *(int *)(*(int *)(iVar2 + 0x14) + 0x20) +
            (uint)CARRY4(*(uint *)(iVar2 + 8),*puVar1);
  }
  return bVar3;
}


PUSH ESI
PUSH EBX
SUB ESP,0x10
MOV ESI,dword ptr [ESP + 0x1c]
MOV EBX,dword ptr [ESP + 0x20]
PUSH 0x0
MOV ECX,dword ptr [ESP + 0x28]
MOV EDX,EBX
MOV EAX,ESI
CALL 0x00015560
ADD ESP,0x10
MOV EDX,EAX
XOR EAX,EAX
TEST EDX,EDX
JZ 0x00015f31
MOV ECX,dword ptr [EDX + 0x14]
MOV EAX,dword ptr [EDX + 0x8]
MOV EDX,dword ptr [EDX + 0xc]
ADD EAX,dword ptr [ECX + 0x1c]
ADC EDX,dword ptr [ECX + 0x20]
XOR EBX,EDX
XOR ESI,EAX
XOR EAX,EAX
OR ESI,EBX
SETZ AL
ADD ESP,0x4
POP EBX
POP ESI
RET
(translation_unit "bool FUN_00015ef0(int param_1,int param_2)\n\n{\n  uint *puVar1;\n  int iVar2;\n  bool bVar3;\n  \n  iVar2 = FUN_00015560(0);\n  bVar3 = false;\n  if (iVar2 != 0) {\n    puVar1 = (uint *)(*(int *)(iVar2 + 0x14) + 0x1c);\n    bVar3 = param_1 == *(uint *)(iVar2 + 8) + *puVar1 &&\n            param_2 ==\n            *(int *)(iVar2 + 0xc) + *(int *)(*(int *)(iVar2 + 0x14) + 0x20) +\n            (uint)CARRY4(*(uint *)(iVar2 + 8),*puVar1);\n  }\n  return bVar3;\n}\n\n" (function_definition "bool FUN_00015ef0(int param_1,int param_2)\n\n{\n  uint *puVar1;\n  int iVar2;\n  bool bVar3;\n  \n  iVar2 = FUN_00015560(0);\n  bVar3 = false;\n  if (iVar2 != 0) {\n    puVar1 = (uint *)(*(int *)(iVar2 + 0x14) + 0x1c);\n    bVar3 = param_1 == *(uint *)(iVar2 + 8) + *puVar1 &&\n            param_2 ==\n            *(int *)(iVar2 + 0xc) + *(int *)(*(int *)(iVar2 + 0x14) + 0x20) +\n            (uint)CARRY4(*(uint *)(iVar2 + 8),*puVar1);\n  }\n  return bVar3;\n}" primitive_type (function_declarator "FUN_00015ef0(int param_1,int param_2)" identifier (parameter_list "(int param_1,int param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  uint *puVar1;\n  int iVar2;\n  bool bVar3;\n  \n  iVar2 = FUN_00015560(0);\n  bVar3 = false;\n  if (iVar2 != 0) {\n    puVar1 = (uint *)(*(int *)(iVar2 + 0x14) + 0x1c);\n    bVar3 = param_1 == *(uint *)(iVar2 + 8) + *puVar1 &&\n            param_2 ==\n            *(int *)(iVar2 + 0xc) + *(int *)(*(int *)(iVar2 + 0x14) + 0x20) +\n            (uint)CARRY4(*(uint *)(iVar2 + 8),*puVar1);\n  }\n  return bVar3;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "bool bVar3;" primitive_type identifier ;) (expression_statement "iVar2 = FUN_00015560(0);" (assignment_expression "iVar2 = FUN_00015560(0)" identifier = (call_expression "FUN_00015560(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" identifier = false) ;) (if_statement "if (iVar2 != 0) {\n    puVar1 = (uint *)(*(int *)(iVar2 + 0x14) + 0x1c);\n    bVar3 = param_1 == *(uint *)(iVar2 + 8) + *puVar1 &&\n            param_2 ==\n            *(int *)(iVar2 + 0xc) + *(int *)(*(int *)(iVar2 + 0x14) + 0x20) +\n            (uint)CARRY4(*(uint *)(iVar2 + 8),*puVar1);\n  }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n    puVar1 = (uint *)(*(int *)(iVar2 + 0x14) + 0x1c);\n    bVar3 = param_1 == *(uint *)(iVar2 + 8) + *puVar1 &&\n            param_2 ==\n            *(int *)(iVar2 + 0xc) + *(int *)(*(int *)(iVar2 + 0x14) + 0x20) +\n            (uint)CARRY4(*(uint *)(iVar2 + 8),*puVar1);\n  }" { (expression_statement "puVar1 = (uint *)(*(int *)(iVar2 + 0x14) + 0x1c);" (assignment_expression "puVar1 = (uint *)(*(int *)(iVar2 + 0x14) + 0x1c)" identifier = (cast_expression "(uint *)(*(int *)(iVar2 + 0x14) + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar2 + 0x14) + 0x1c)" ( (binary_expression "*(int *)(iVar2 + 0x14) + 0x1c" (pointer_expression "*(int *)(iVar2 + 0x14)" * (cast_expression "(int *)(iVar2 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x14)" ( (binary_expression "iVar2 + 0x14" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "bVar3 = param_1 == *(uint *)(iVar2 + 8) + *puVar1 &&\n            param_2 ==\n            *(int *)(iVar2 + 0xc) + *(int *)(*(int *)(iVar2 + 0x14) + 0x20) +\n            (uint)CARRY4(*(uint *)(iVar2 + 8),*puVar1);" (assignment_expression "bVar3 = param_1 == *(uint *)(iVar2 + 8) + *puVar1 &&\n            param_2 ==\n            *(int *)(iVar2 + 0xc) + *(int *)(*(int *)(iVar2 + 0x14) + 0x20) +\n            (uint)CARRY4(*(uint *)(iVar2 + 8),*puVar1)" identifier = (binary_expression "param_1 == *(uint *)(iVar2 + 8) + *puVar1 &&\n            param_2 ==\n            *(int *)(iVar2 + 0xc) + *(int *)(*(int *)(iVar2 + 0x14) + 0x20) +\n            (uint)CARRY4(*(uint *)(iVar2 + 8),*puVar1)" (binary_expression "param_1 == *(uint *)(iVar2 + 8) + *puVar1" identifier == (binary_expression "*(uint *)(iVar2 + 8) + *puVar1" (pointer_expression "*(uint *)(iVar2 + 8)" * (cast_expression "(uint *)(iVar2 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 8)" ( (binary_expression "iVar2 + 8" identifier + number_literal) )))) + (pointer_expression "*puVar1" * identifier))) && (binary_expression "param_2 ==\n            *(int *)(iVar2 + 0xc) + *(int *)(*(int *)(iVar2 + 0x14) + 0x20) +\n            (uint)CARRY4(*(uint *)(iVar2 + 8),*puVar1)" identifier == (binary_expression "*(int *)(iVar2 + 0xc) + *(int *)(*(int *)(iVar2 + 0x14) + 0x20) +\n            (uint)CARRY4(*(uint *)(iVar2 + 8),*puVar1)" (binary_expression "*(int *)(iVar2 + 0xc) + *(int *)(*(int *)(iVar2 + 0x14) + 0x20)" (pointer_expression "*(int *)(iVar2 + 0xc)" * (cast_expression "(int *)(iVar2 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) )))) + (pointer_expression "*(int *)(*(int *)(iVar2 + 0x14) + 0x20)" * (cast_expression "(int *)(*(int *)(iVar2 + 0x14) + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar2 + 0x14) + 0x20)" ( (binary_expression "*(int *)(iVar2 + 0x14) + 0x20" (pointer_expression "*(int *)(iVar2 + 0x14)" * (cast_expression "(int *)(iVar2 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x14)" ( (binary_expression "iVar2 + 0x14" identifier + number_literal) )))) + number_literal) ))))) + (cast_expression "(uint)CARRY4(*(uint *)(iVar2 + 8),*puVar1)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(*(uint *)(iVar2 + 8),*puVar1)" identifier (argument_list "(*(uint *)(iVar2 + 8),*puVar1)" ( (pointer_expression "*(uint *)(iVar2 + 8)" * (cast_expression "(uint *)(iVar2 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 8)" ( (binary_expression "iVar2 + 8" identifier + number_literal) )))) , (pointer_expression "*puVar1" * identifier) )))))))) ;) })) (return_statement "return bVar3;" return identifier ;) })))
(translation_unit "/* WARNING: Unknown calling convention */\n\nint objdump_symbol_at_address(bfd_vma vma,disassemble_info *inf)\n\n{\n  bfd_vma *pbVar1;\n  asymbol *paVar2;\n  uint uVar3;\n  uint in_stack_ffffffe8;\n  \n  paVar2 = find_symbol_for_address\n                     ((ulonglong)in_stack_ffffffe8 << 0x20,(disassemble_info *)vma,vma._4_4_);\n  uVar3 = 0;\n  if (paVar2 != (asymbol *)0x0) {\n    uVar3 = (uint)paVar2->value;\n    pbVar1 = &paVar2->section->vma;\n    uVar3 = (uint)(vma == CONCAT44(*(int *)((int)&paVar2->value + 4) +\n                                   *(int *)((int)&paVar2->section->vma + 4) +\n                                   (uint)CARRY4(uVar3,(uint)*pbVar1),uVar3 + (int)*pbVar1));\n  }\n  return uVar3;\n}\n\n" comment (function_definition "int objdump_symbol_at_address(bfd_vma vma,disassemble_info *inf)\n\n{\n  bfd_vma *pbVar1;\n  asymbol *paVar2;\n  uint uVar3;\n  uint in_stack_ffffffe8;\n  \n  paVar2 = find_symbol_for_address\n                     ((ulonglong)in_stack_ffffffe8 << 0x20,(disassemble_info *)vma,vma._4_4_);\n  uVar3 = 0;\n  if (paVar2 != (asymbol *)0x0) {\n    uVar3 = (uint)paVar2->value;\n    pbVar1 = &paVar2->section->vma;\n    uVar3 = (uint)(vma == CONCAT44(*(int *)((int)&paVar2->value + 4) +\n                                   *(int *)((int)&paVar2->section->vma + 4) +\n                                   (uint)CARRY4(uVar3,(uint)*pbVar1),uVar3 + (int)*pbVar1));\n  }\n  return uVar3;\n}" primitive_type (function_declarator "objdump_symbol_at_address(bfd_vma vma,disassemble_info *inf)" identifier (parameter_list "(bfd_vma vma,disassemble_info *inf)" ( (parameter_declaration "bfd_vma vma" type_identifier identifier) , (parameter_declaration "disassemble_info *inf" type_identifier (pointer_declarator "*inf" * identifier)) ))) (compound_statement "{\n  bfd_vma *pbVar1;\n  asymbol *paVar2;\n  uint uVar3;\n  uint in_stack_ffffffe8;\n  \n  paVar2 = find_symbol_for_address\n                     ((ulonglong)in_stack_ffffffe8 << 0x20,(disassemble_info *)vma,vma._4_4_);\n  uVar3 = 0;\n  if (paVar2 != (asymbol *)0x0) {\n    uVar3 = (uint)paVar2->value;\n    pbVar1 = &paVar2->section->vma;\n    uVar3 = (uint)(vma == CONCAT44(*(int *)((int)&paVar2->value + 4) +\n                                   *(int *)((int)&paVar2->section->vma + 4) +\n                                   (uint)CARRY4(uVar3,(uint)*pbVar1),uVar3 + (int)*pbVar1));\n  }\n  return uVar3;\n}" { (declaration "bfd_vma *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "asymbol *paVar2;" type_identifier (pointer_declarator "*paVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint in_stack_ffffffe8;" type_identifier identifier ;) (expression_statement "paVar2 = find_symbol_for_address\n                     ((ulonglong)in_stack_ffffffe8 << 0x20,(disassemble_info *)vma,vma._4_4_);" (assignment_expression "paVar2 = find_symbol_for_address\n                     ((ulonglong)in_stack_ffffffe8 << 0x20,(disassemble_info *)vma,vma._4_4_)" identifier = (call_expression "find_symbol_for_address\n                     ((ulonglong)in_stack_ffffffe8 << 0x20,(disassemble_info *)vma,vma._4_4_)" identifier (argument_list "((ulonglong)in_stack_ffffffe8 << 0x20,(disassemble_info *)vma,vma._4_4_)" ( (binary_expression "(ulonglong)in_stack_ffffffe8 << 0x20" (cast_expression "(ulonglong)in_stack_ffffffe8" ( (type_descriptor "ulonglong" type_identifier) ) identifier) << number_literal) , (cast_expression "(disassemble_info *)vma" ( (type_descriptor "disassemble_info *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (field_expression "vma._4_4_" identifier . field_identifier) )))) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (if_statement "if (paVar2 != (asymbol *)0x0) {\n    uVar3 = (uint)paVar2->value;\n    pbVar1 = &paVar2->section->vma;\n    uVar3 = (uint)(vma == CONCAT44(*(int *)((int)&paVar2->value + 4) +\n                                   *(int *)((int)&paVar2->section->vma + 4) +\n                                   (uint)CARRY4(uVar3,(uint)*pbVar1),uVar3 + (int)*pbVar1));\n  }" if (parenthesized_expression "(paVar2 != (asymbol *)0x0)" ( (binary_expression "paVar2 != (asymbol *)0x0" identifier != (cast_expression "(asymbol *)0x0" ( (type_descriptor "asymbol *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar3 = (uint)paVar2->value;\n    pbVar1 = &paVar2->section->vma;\n    uVar3 = (uint)(vma == CONCAT44(*(int *)((int)&paVar2->value + 4) +\n                                   *(int *)((int)&paVar2->section->vma + 4) +\n                                   (uint)CARRY4(uVar3,(uint)*pbVar1),uVar3 + (int)*pbVar1));\n  }" { (expression_statement "uVar3 = (uint)paVar2->value;" (assignment_expression "uVar3 = (uint)paVar2->value" identifier = (cast_expression "(uint)paVar2->value" ( (type_descriptor "uint" type_identifier) ) (field_expression "paVar2->value" identifier -> field_identifier))) ;) (expression_statement "pbVar1 = &paVar2->section->vma;" (assignment_expression "pbVar1 = &paVar2->section->vma" identifier = (pointer_expression "&paVar2->section->vma" & (field_expression "paVar2->section->vma" (field_expression "paVar2->section" identifier -> field_identifier) -> field_identifier))) ;) (expression_statement "uVar3 = (uint)(vma == CONCAT44(*(int *)((int)&paVar2->value + 4) +\n                                   *(int *)((int)&paVar2->section->vma + 4) +\n                                   (uint)CARRY4(uVar3,(uint)*pbVar1),uVar3 + (int)*pbVar1));" (assignment_expression "uVar3 = (uint)(vma == CONCAT44(*(int *)((int)&paVar2->value + 4) +\n                                   *(int *)((int)&paVar2->section->vma + 4) +\n                                   (uint)CARRY4(uVar3,(uint)*pbVar1),uVar3 + (int)*pbVar1))" identifier = (call_expression "(uint)(vma == CONCAT44(*(int *)((int)&paVar2->value + 4) +\n                                   *(int *)((int)&paVar2->section->vma + 4) +\n                                   (uint)CARRY4(uVar3,(uint)*pbVar1),uVar3 + (int)*pbVar1))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(vma == CONCAT44(*(int *)((int)&paVar2->value + 4) +\n                                   *(int *)((int)&paVar2->section->vma + 4) +\n                                   (uint)CARRY4(uVar3,(uint)*pbVar1),uVar3 + (int)*pbVar1))" ( (binary_expression "vma == CONCAT44(*(int *)((int)&paVar2->value + 4) +\n                                   *(int *)((int)&paVar2->section->vma + 4) +\n                                   (uint)CARRY4(uVar3,(uint)*pbVar1),uVar3 + (int)*pbVar1)" identifier == (call_expression "CONCAT44(*(int *)((int)&paVar2->value + 4) +\n                                   *(int *)((int)&paVar2->section->vma + 4) +\n                                   (uint)CARRY4(uVar3,(uint)*pbVar1),uVar3 + (int)*pbVar1)" identifier (argument_list "(*(int *)((int)&paVar2->value + 4) +\n                                   *(int *)((int)&paVar2->section->vma + 4) +\n                                   (uint)CARRY4(uVar3,(uint)*pbVar1),uVar3 + (int)*pbVar1)" ( (binary_expression "*(int *)((int)&paVar2->value + 4) +\n                                   *(int *)((int)&paVar2->section->vma + 4) +\n                                   (uint)CARRY4(uVar3,(uint)*pbVar1)" (binary_expression "*(int *)((int)&paVar2->value + 4) +\n                                   *(int *)((int)&paVar2->section->vma + 4)" (pointer_expression "*(int *)((int)&paVar2->value + 4)" * (cast_expression "(int *)((int)&paVar2->value + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&paVar2->value + 4)" ( (binary_expression "(int)&paVar2->value + 4" (cast_expression "(int)&paVar2->value" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&paVar2->value" & (field_expression "paVar2->value" identifier -> field_identifier))) + number_literal) )))) + (pointer_expression "*(int *)((int)&paVar2->section->vma + 4)" * (cast_expression "(int *)((int)&paVar2->section->vma + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&paVar2->section->vma + 4)" ( (binary_expression "(int)&paVar2->section->vma + 4" (cast_expression "(int)&paVar2->section->vma" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&paVar2->section->vma" & (field_expression "paVar2->section->vma" (field_expression "paVar2->section" identifier -> field_identifier) -> field_identifier))) + number_literal) ))))) + (cast_expression "(uint)CARRY4(uVar3,(uint)*pbVar1)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar3,(uint)*pbVar1)" identifier (argument_list "(uVar3,(uint)*pbVar1)" ( identifier , (binary_expression "(uint)*pbVar1" (parenthesized_expression "(uint)" ( identifier )) * identifier) ))))) , (binary_expression "uVar3 + (int)*pbVar1" identifier + (cast_expression "(int)*pbVar1" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*pbVar1" * identifier))) )))) )))) ;) })) (return_statement "return uVar3;" return identifier ;) })))
(translation_unit "bool FUN_00015ef0(int param_1,int param_2)\n\n{\n  uint *puVar1;\n  int iVar2;\n  bool bVar3;\n  \n  iVar2 = FUN_00015560(0);\n  bVar3 = false;\n  if (iVar2 != 0) {\n    puVar1 = (uint *)(*(int *)(iVar2 + 0x14) + 0x1c);\n    bVar3 = param_1 == *(uint *)(iVar2 + 8) + *puVar1 &&\n            param_2 ==\n            *(int *)(iVar2 + 0xc) + *(int *)(*(int *)(iVar2 + 0x14) + 0x20) +\n            (uint)CARRY4(*(uint *)(iVar2 + 8),*puVar1);\n  }\n  return bVar3;\n}\n\n" (function_definition "bool FUN_00015ef0(int param_1,int param_2)\n\n{\n  uint *puVar1;\n  int iVar2;\n  bool bVar3;\n  \n  iVar2 = FUN_00015560(0);\n  bVar3 = false;\n  if (iVar2 != 0) {\n    puVar1 = (uint *)(*(int *)(iVar2 + 0x14) + 0x1c);\n    bVar3 = param_1 == *(uint *)(iVar2 + 8) + *puVar1 &&\n            param_2 ==\n            *(int *)(iVar2 + 0xc) + *(int *)(*(int *)(iVar2 + 0x14) + 0x20) +\n            (uint)CARRY4(*(uint *)(iVar2 + 8),*puVar1);\n  }\n  return bVar3;\n}" primitive_type (function_declarator "FUN_00015ef0(int param_1,int param_2)" identifier (parameter_list "(int param_1,int param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  uint *puVar1;\n  int iVar2;\n  bool bVar3;\n  \n  iVar2 = FUN_00015560(0);\n  bVar3 = false;\n  if (iVar2 != 0) {\n    puVar1 = (uint *)(*(int *)(iVar2 + 0x14) + 0x1c);\n    bVar3 = param_1 == *(uint *)(iVar2 + 8) + *puVar1 &&\n            param_2 ==\n            *(int *)(iVar2 + 0xc) + *(int *)(*(int *)(iVar2 + 0x14) + 0x20) +\n            (uint)CARRY4(*(uint *)(iVar2 + 8),*puVar1);\n  }\n  return bVar3;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "bool bVar3;" primitive_type identifier ;) (expression_statement "iVar2 = FUN_00015560(0);" (assignment_expression "iVar2 = FUN_00015560(0)" identifier = (call_expression "FUN_00015560(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" identifier = false) ;) (if_statement "if (iVar2 != 0) {\n    puVar1 = (uint *)(*(int *)(iVar2 + 0x14) + 0x1c);\n    bVar3 = param_1 == *(uint *)(iVar2 + 8) + *puVar1 &&\n            param_2 ==\n            *(int *)(iVar2 + 0xc) + *(int *)(*(int *)(iVar2 + 0x14) + 0x20) +\n            (uint)CARRY4(*(uint *)(iVar2 + 8),*puVar1);\n  }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n    puVar1 = (uint *)(*(int *)(iVar2 + 0x14) + 0x1c);\n    bVar3 = param_1 == *(uint *)(iVar2 + 8) + *puVar1 &&\n            param_2 ==\n            *(int *)(iVar2 + 0xc) + *(int *)(*(int *)(iVar2 + 0x14) + 0x20) +\n            (uint)CARRY4(*(uint *)(iVar2 + 8),*puVar1);\n  }" { (expression_statement "puVar1 = (uint *)(*(int *)(iVar2 + 0x14) + 0x1c);" (assignment_expression "puVar1 = (uint *)(*(int *)(iVar2 + 0x14) + 0x1c)" identifier = (cast_expression "(uint *)(*(int *)(iVar2 + 0x14) + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar2 + 0x14) + 0x1c)" ( (binary_expression "*(int *)(iVar2 + 0x14) + 0x1c" (pointer_expression "*(int *)(iVar2 + 0x14)" * (cast_expression "(int *)(iVar2 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x14)" ( (binary_expression "iVar2 + 0x14" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "bVar3 = param_1 == *(uint *)(iVar2 + 8) + *puVar1 &&\n            param_2 ==\n            *(int *)(iVar2 + 0xc) + *(int *)(*(int *)(iVar2 + 0x14) + 0x20) +\n            (uint)CARRY4(*(uint *)(iVar2 + 8),*puVar1);" (assignment_expression "bVar3 = param_1 == *(uint *)(iVar2 + 8) + *puVar1 &&\n            param_2 ==\n            *(int *)(iVar2 + 0xc) + *(int *)(*(int *)(iVar2 + 0x14) + 0x20) +\n            (uint)CARRY4(*(uint *)(iVar2 + 8),*puVar1)" identifier = (binary_expression "param_1 == *(uint *)(iVar2 + 8) + *puVar1 &&\n            param_2 ==\n            *(int *)(iVar2 + 0xc) + *(int *)(*(int *)(iVar2 + 0x14) + 0x20) +\n            (uint)CARRY4(*(uint *)(iVar2 + 8),*puVar1)" (binary_expression "param_1 == *(uint *)(iVar2 + 8) + *puVar1" identifier == (binary_expression "*(uint *)(iVar2 + 8) + *puVar1" (pointer_expression "*(uint *)(iVar2 + 8)" * (cast_expression "(uint *)(iVar2 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 8)" ( (binary_expression "iVar2 + 8" identifier + number_literal) )))) + (pointer_expression "*puVar1" * identifier))) && (binary_expression "param_2 ==\n            *(int *)(iVar2 + 0xc) + *(int *)(*(int *)(iVar2 + 0x14) + 0x20) +\n            (uint)CARRY4(*(uint *)(iVar2 + 8),*puVar1)" identifier == (binary_expression "*(int *)(iVar2 + 0xc) + *(int *)(*(int *)(iVar2 + 0x14) + 0x20) +\n            (uint)CARRY4(*(uint *)(iVar2 + 8),*puVar1)" (binary_expression "*(int *)(iVar2 + 0xc) + *(int *)(*(int *)(iVar2 + 0x14) + 0x20)" (pointer_expression "*(int *)(iVar2 + 0xc)" * (cast_expression "(int *)(iVar2 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) )))) + (pointer_expression "*(int *)(*(int *)(iVar2 + 0x14) + 0x20)" * (cast_expression "(int *)(*(int *)(iVar2 + 0x14) + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar2 + 0x14) + 0x20)" ( (binary_expression "*(int *)(iVar2 + 0x14) + 0x20" (pointer_expression "*(int *)(iVar2 + 0x14)" * (cast_expression "(int *)(iVar2 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x14)" ( (binary_expression "iVar2 + 0x14" identifier + number_literal) )))) + number_literal) ))))) + (cast_expression "(uint)CARRY4(*(uint *)(iVar2 + 8),*puVar1)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(*(uint *)(iVar2 + 8),*puVar1)" identifier (argument_list "(*(uint *)(iVar2 + 8),*puVar1)" ( (pointer_expression "*(uint *)(iVar2 + 8)" * (cast_expression "(uint *)(iVar2 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 8)" ( (binary_expression "iVar2 + 8" identifier + number_literal) )))) , (pointer_expression "*puVar1" * identifier) )))))))) ;) })) (return_statement "return bVar3;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT == (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (pointer_expression * IDENT))) && (binary_expression IDENT == (binary_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 * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) + (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * IDENT) )))))))) ;) })) (return_statement return IDENT ;) })))
(function_definition "bool FUN_00015ef0(int param_1,int param_2)\n\n{\n  uint *puVar1;\n  int iVar2;\n  bool bVar3;\n  \n  iVar2 = FUN_00015560(0);\n  bVar3 = false;\n  if (iVar2 != 0) {\n    puVar1 = (uint *)(*(int *)(iVar2 + 0x14) + 0x1c);\n    bVar3 = param_1 == *(uint *)(iVar2 + 8) + *puVar1 &&\n            param_2 ==\n            *(int *)(iVar2 + 0xc) + *(int *)(*(int *)(iVar2 + 0x14) + 0x20) +\n            (uint)CARRY4(*(uint *)(iVar2 + 8),*puVar1);\n  }\n  return bVar3;\n}" (primitive_type "bool") (function_declarator "FUN_00015ef0(int param_1,int param_2)" (identifier "FUN_00015ef0") (parameter_list "(int param_1,int param_2)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) () ")"))) (compound_statement "{\n  uint *puVar1;\n  int iVar2;\n  bool bVar3;\n  \n  iVar2 = FUN_00015560(0);\n  bVar3 = false;\n  if (iVar2 != 0) {\n    puVar1 = (uint *)(*(int *)(iVar2 + 0x14) + 0x1c);\n    bVar3 = param_1 == *(uint *)(iVar2 + 8) + *puVar1 &&\n            param_2 ==\n            *(int *)(iVar2 + 0xc) + *(int *)(*(int *)(iVar2 + 0x14) + 0x20) +\n            (uint)CARRY4(*(uint *)(iVar2 + 8),*puVar1);\n  }\n  return bVar3;\n}" ({ "{") (declaration "uint *puVar1;" (type_identifier "uint") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "bool bVar3;" (primitive_type "bool") (identifier "bVar3") (; ";")) (expression_statement "iVar2 = FUN_00015560(0);" (assignment_expression "iVar2 = FUN_00015560(0)" (identifier "iVar2") (= "=") (call_expression "FUN_00015560(0)" (identifier "FUN_00015560") (argument_list "(0)" (( "(") (number_literal "0") () ")")))) (; ";")) (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" (identifier "bVar3") (= "=") (false "false")) (; ";")) (if_statement "if (iVar2 != 0) {\n    puVar1 = (uint *)(*(int *)(iVar2 + 0x14) + 0x1c);\n    bVar3 = param_1 == *(uint *)(iVar2 + 8) + *puVar1 &&\n            param_2 ==\n            *(int *)(iVar2 + 0xc) + *(int *)(*(int *)(iVar2 + 0x14) + 0x20) +\n            (uint)CARRY4(*(uint *)(iVar2 + 8),*puVar1);\n  }" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    puVar1 = (uint *)(*(int *)(iVar2 + 0x14) + 0x1c);\n    bVar3 = param_1 == *(uint *)(iVar2 + 8) + *puVar1 &&\n            param_2 ==\n            *(int *)(iVar2 + 0xc) + *(int *)(*(int *)(iVar2 + 0x14) + 0x20) +\n            (uint)CARRY4(*(uint *)(iVar2 + 8),*puVar1);\n  }" ({ "{") (expression_statement "puVar1 = (uint *)(*(int *)(iVar2 + 0x14) + 0x1c);" (assignment_expression "puVar1 = (uint *)(*(int *)(iVar2 + 0x14) + 0x1c)" (identifier "puVar1") (= "=") (cast_expression "(uint *)(*(int *)(iVar2 + 0x14) + 0x1c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar2 + 0x14) + 0x1c)" (( "(") (binary_expression "*(int *)(iVar2 + 0x14) + 0x1c" (pointer_expression "*(int *)(iVar2 + 0x14)" (* "*") (cast_expression "(int *)(iVar2 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x14)" (( "(") (binary_expression "iVar2 + 0x14" (identifier "iVar2") (+ "+") (number_literal "0x14")) () ")")))) (+ "+") (number_literal "0x1c")) () ")")))) (; ";")) (expression_statement "bVar3 = param_1 == *(uint *)(iVar2 + 8) + *puVar1 &&\n            param_2 ==\n            *(int *)(iVar2 + 0xc) + *(int *)(*(int *)(iVar2 + 0x14) + 0x20) +\n            (uint)CARRY4(*(uint *)(iVar2 + 8),*puVar1);" (assignment_expression "bVar3 = param_1 == *(uint *)(iVar2 + 8) + *puVar1 &&\n            param_2 ==\n            *(int *)(iVar2 + 0xc) + *(int *)(*(int *)(iVar2 + 0x14) + 0x20) +\n            (uint)CARRY4(*(uint *)(iVar2 + 8),*puVar1)" (identifier "bVar3") (= "=") (binary_expression "param_1 == *(uint *)(iVar2 + 8) + *puVar1 &&\n            param_2 ==\n            *(int *)(iVar2 + 0xc) + *(int *)(*(int *)(iVar2 + 0x14) + 0x20) +\n            (uint)CARRY4(*(uint *)(iVar2 + 8),*puVar1)" (binary_expression "param_1 == *(uint *)(iVar2 + 8) + *puVar1" (identifier "param_1") (== "==") (binary_expression "*(uint *)(iVar2 + 8) + *puVar1" (pointer_expression "*(uint *)(iVar2 + 8)" (* "*") (cast_expression "(uint *)(iVar2 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 8)" (( "(") (binary_expression "iVar2 + 8" (identifier "iVar2") (+ "+") (number_literal "8")) () ")")))) (+ "+") (pointer_expression "*puVar1" (* "*") (identifier "puVar1")))) (&& "&&") (binary_expression "param_2 ==\n            *(int *)(iVar2 + 0xc) + *(int *)(*(int *)(iVar2 + 0x14) + 0x20) +\n            (uint)CARRY4(*(uint *)(iVar2 + 8),*puVar1)" (identifier "param_2") (== "==") (binary_expression "*(int *)(iVar2 + 0xc) + *(int *)(*(int *)(iVar2 + 0x14) + 0x20) +\n            (uint)CARRY4(*(uint *)(iVar2 + 8),*puVar1)" (binary_expression "*(int *)(iVar2 + 0xc) + *(int *)(*(int *)(iVar2 + 0x14) + 0x20)" (pointer_expression "*(int *)(iVar2 + 0xc)" (* "*") (cast_expression "(int *)(iVar2 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0xc)" (( "(") (binary_expression "iVar2 + 0xc" (identifier "iVar2") (+ "+") (number_literal "0xc")) () ")")))) (+ "+") (pointer_expression "*(int *)(*(int *)(iVar2 + 0x14) + 0x20)" (* "*") (cast_expression "(int *)(*(int *)(iVar2 + 0x14) + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar2 + 0x14) + 0x20)" (( "(") (binary_expression "*(int *)(iVar2 + 0x14) + 0x20" (pointer_expression "*(int *)(iVar2 + 0x14)" (* "*") (cast_expression "(int *)(iVar2 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x14)" (( "(") (binary_expression "iVar2 + 0x14" (identifier "iVar2") (+ "+") (number_literal "0x14")) () ")")))) (+ "+") (number_literal "0x20")) () ")"))))) (+ "+") (cast_expression "(uint)CARRY4(*(uint *)(iVar2 + 8),*puVar1)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CARRY4(*(uint *)(iVar2 + 8),*puVar1)" (identifier "CARRY4") (argument_list "(*(uint *)(iVar2 + 8),*puVar1)" (( "(") (pointer_expression "*(uint *)(iVar2 + 8)" (* "*") (cast_expression "(uint *)(iVar2 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 8)" (( "(") (binary_expression "iVar2 + 8" (identifier "iVar2") (+ "+") (number_literal "8")) () ")")))) (, ",") (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) () ")")))))))) (; ";")) (} "}"))) (return_statement "return bVar3;" (return "return") (identifier "bVar3") (; ";")) (} "}")))

/* WARNING: Unknown calling convention */

int function_1(type_1 var_3,type_2 *inf)

{
  type_1 *var_6;
  type_3 *var_2;
  type_4 var_7;
  type_4 in_stack_ffffffe8;
  
  var_2 = var_1
                     ((type_5)in_stack_ffffffe8 << 0x20,(type_2 *)var_3,var_3._4_4_);
  var_7 = 0;
  if (var_2 != (type_3 *)0x0) {
    var_7 = (type_4)var_2->value;
    var_6 = &var_2->section->var_3;
    var_7 = (type_4)(var_3 == var_4(*(int *)((int)&var_2->value + 4) +
                                   *(int *)((int)&var_2->section->var_3 + 4) +
                                   (type_4)var_5(var_7,(type_4)*var_6),var_7 + (int)*var_6));
  }
  return var_7;
}


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

bool MASKED(int param_1,int param_2)

{
  uint *puVar1;
  int iVar2;
  bool bVar3;
  
  iVar2 = FUN_00015560(0);
  bVar3 = false;
  if (iVar2 != 0) {
    puVar1 = (uint *)(*(int *)(iVar2 + 0x14) + 0x1c);
    bVar3 = param_1 == *(uint *)(iVar2 + 8) + *puVar1 &&
            param_2 ==
            *(int *)(iVar2 + 0xc) + *(int *)(*(int *)(iVar2 + 0x14) + 0x20) +
            (uint)CARRY4(*(uint *)(iVar2 + 8),*puVar1);
  }
  return bVar3;
}

