
bfd_boolean sym_id_arc_is_present(Sym_Table *sym_tab,Sym *from,Sym *to)

{
  Arc *pAVar1;
  Sym *parent;
  
  parent = sym_tab->base;
  if (parent < sym_tab->limit) {
    do {
      if (((parent->addr <= from->addr) && (from->addr <= parent->end_addr)) &&
         (pAVar1 = arc_lookup(parent,to), pAVar1 != (Arc *)0x0)) {
        return 1;
      }
      parent = parent + 1;
    } while (parent < sym_tab->limit);
  }
  return 0;
}



undefined8 FUN_0010ce00(long param_1,ulong *param_2,undefined8 param_3)

{
  long lVar1;
  ulong *puVar2;
  
  puVar2 = *(ulong **)(param_1 + 8);
  if (puVar2 < *(ulong **)(param_1 + 0x10)) {
    do {
      if (((*puVar2 <= *param_2) && (*param_2 <= puVar2[1])) &&
         (lVar1 = FUN_00104450(puVar2,param_3), lVar1 != 0)) {
        return 1;
      }
      puVar2 = puVar2 + 0x2b;
    } while (puVar2 < *(ulong **)(param_1 + 0x10));
  }
  return 0;
}


PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x8
MOV RBX,qword ptr [RDI + 0x8]
CMP RBX,qword ptr [RDI + 0x10]
JNC 0x0010ce60
MOV RBP,RDI
MOV R12,RSI
MOV R13,RDX
JMP 0x0010ce2d
ADD RBX,0x158
CMP qword ptr [RBP + 0x10],RBX
JBE 0x0010ce60
MOV RAX,qword ptr [R12]
CMP RAX,qword ptr [RBX]
JC 0x0010ce20
CMP RAX,qword ptr [RBX + 0x8]
JA 0x0010ce20
MOV RSI,R13
MOV RDI,RBX
CALL 0x00104450
TEST RAX,RAX
JZ 0x0010ce20
ADD RSP,0x8
MOV EAX,0x1
POP RBX
POP RBP
POP R12
POP R13
RET
ADD RSP,0x8
XOR EAX,EAX
POP RBX
POP RBP
POP R12
POP R13
RET
(translation_unit "undefined8 FUN_0010ce00(long param_1,ulong *param_2,undefined8 param_3)\n\n{\n  long lVar1;\n  ulong *puVar2;\n  \n  puVar2 = *(ulong **)(param_1 + 8);\n  if (puVar2 < *(ulong **)(param_1 + 0x10)) {\n    do {\n      if (((*puVar2 <= *param_2) && (*param_2 <= puVar2[1])) &&\n         (lVar1 = FUN_00104450(puVar2,param_3), lVar1 != 0)) {\n        return 1;\n      }\n      puVar2 = puVar2 + 0x2b;\n    } while (puVar2 < *(ulong **)(param_1 + 0x10));\n  }\n  return 0;\n}\n\n" (function_definition "undefined8 FUN_0010ce00(long param_1,ulong *param_2,undefined8 param_3)\n\n{\n  long lVar1;\n  ulong *puVar2;\n  \n  puVar2 = *(ulong **)(param_1 + 8);\n  if (puVar2 < *(ulong **)(param_1 + 0x10)) {\n    do {\n      if (((*puVar2 <= *param_2) && (*param_2 <= puVar2[1])) &&\n         (lVar1 = FUN_00104450(puVar2,param_3), lVar1 != 0)) {\n        return 1;\n      }\n      puVar2 = puVar2 + 0x2b;\n    } while (puVar2 < *(ulong **)(param_1 + 0x10));\n  }\n  return 0;\n}" type_identifier (function_declarator "FUN_0010ce00(long param_1,ulong *param_2,undefined8 param_3)" identifier (parameter_list "(long param_1,ulong *param_2,undefined8 param_3)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "ulong *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined8 param_3" type_identifier identifier) ))) (compound_statement "{\n  long lVar1;\n  ulong *puVar2;\n  \n  puVar2 = *(ulong **)(param_1 + 8);\n  if (puVar2 < *(ulong **)(param_1 + 0x10)) {\n    do {\n      if (((*puVar2 <= *param_2) && (*param_2 <= puVar2[1])) &&\n         (lVar1 = FUN_00104450(puVar2,param_3), lVar1 != 0)) {\n        return 1;\n      }\n      puVar2 = puVar2 + 0x2b;\n    } while (puVar2 < *(ulong **)(param_1 + 0x10));\n  }\n  return 0;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (expression_statement "puVar2 = *(ulong **)(param_1 + 8);" (assignment_expression "puVar2 = *(ulong **)(param_1 + 8)" identifier = (pointer_expression "*(ulong **)(param_1 + 8)" * (cast_expression "(ulong **)(param_1 + 8)" ( (type_descriptor "ulong **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (if_statement "if (puVar2 < *(ulong **)(param_1 + 0x10)) {\n    do {\n      if (((*puVar2 <= *param_2) && (*param_2 <= puVar2[1])) &&\n         (lVar1 = FUN_00104450(puVar2,param_3), lVar1 != 0)) {\n        return 1;\n      }\n      puVar2 = puVar2 + 0x2b;\n    } while (puVar2 < *(ulong **)(param_1 + 0x10));\n  }" if (parenthesized_expression "(puVar2 < *(ulong **)(param_1 + 0x10))" ( (binary_expression "puVar2 < *(ulong **)(param_1 + 0x10)" identifier < (pointer_expression "*(ulong **)(param_1 + 0x10)" * (cast_expression "(ulong **)(param_1 + 0x10)" ( (type_descriptor "ulong **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) )) (compound_statement "{\n    do {\n      if (((*puVar2 <= *param_2) && (*param_2 <= puVar2[1])) &&\n         (lVar1 = FUN_00104450(puVar2,param_3), lVar1 != 0)) {\n        return 1;\n      }\n      puVar2 = puVar2 + 0x2b;\n    } while (puVar2 < *(ulong **)(param_1 + 0x10));\n  }" { (do_statement "do {\n      if (((*puVar2 <= *param_2) && (*param_2 <= puVar2[1])) &&\n         (lVar1 = FUN_00104450(puVar2,param_3), lVar1 != 0)) {\n        return 1;\n      }\n      puVar2 = puVar2 + 0x2b;\n    } while (puVar2 < *(ulong **)(param_1 + 0x10));" do (compound_statement "{\n      if (((*puVar2 <= *param_2) && (*param_2 <= puVar2[1])) &&\n         (lVar1 = FUN_00104450(puVar2,param_3), lVar1 != 0)) {\n        return 1;\n      }\n      puVar2 = puVar2 + 0x2b;\n    }" { (if_statement "if (((*puVar2 <= *param_2) && (*param_2 <= puVar2[1])) &&\n         (lVar1 = FUN_00104450(puVar2,param_3), lVar1 != 0)) {\n        return 1;\n      }" if (parenthesized_expression "(((*puVar2 <= *param_2) && (*param_2 <= puVar2[1])) &&\n         (lVar1 = FUN_00104450(puVar2,param_3), lVar1 != 0))" ( (binary_expression "((*puVar2 <= *param_2) && (*param_2 <= puVar2[1])) &&\n         (lVar1 = FUN_00104450(puVar2,param_3), lVar1 != 0)" (parenthesized_expression "((*puVar2 <= *param_2) && (*param_2 <= puVar2[1]))" ( (binary_expression "(*puVar2 <= *param_2) && (*param_2 <= puVar2[1])" (parenthesized_expression "(*puVar2 <= *param_2)" ( (binary_expression "*puVar2 <= *param_2" (pointer_expression "*puVar2" * identifier) <= (pointer_expression "*param_2" * identifier)) )) && (parenthesized_expression "(*param_2 <= puVar2[1])" ( (binary_expression "*param_2 <= puVar2[1]" (pointer_expression "*param_2" * identifier) <= (subscript_expression "puVar2[1]" identifier [ number_literal ])) ))) )) && (parenthesized_expression "(lVar1 = FUN_00104450(puVar2,param_3), lVar1 != 0)" ( (comma_expression "lVar1 = FUN_00104450(puVar2,param_3), lVar1 != 0" (assignment_expression "lVar1 = FUN_00104450(puVar2,param_3)" identifier = (call_expression "FUN_00104450(puVar2,param_3)" identifier (argument_list "(puVar2,param_3)" ( identifier , identifier )))) , (binary_expression "lVar1 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n        return 1;\n      }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "puVar2 = puVar2 + 0x2b;" (assignment_expression "puVar2 = puVar2 + 0x2b" identifier = (binary_expression "puVar2 + 0x2b" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar2 < *(ulong **)(param_1 + 0x10))" ( (binary_expression "puVar2 < *(ulong **)(param_1 + 0x10)" identifier < (pointer_expression "*(ulong **)(param_1 + 0x10)" * (cast_expression "(ulong **)(param_1 + 0x10)" ( (type_descriptor "ulong **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) )) ;) })) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "bfd_boolean sym_id_arc_is_present(Sym_Table *sym_tab,Sym *from,Sym *to)\n\n{\n  Arc *pAVar1;\n  Sym *parent;\n  \n  parent = sym_tab->base;\n  if (parent < sym_tab->limit) {\n    do {\n      if (((parent->addr <= from->addr) && (from->addr <= parent->end_addr)) &&\n         (pAVar1 = arc_lookup(parent,to), pAVar1 != (Arc *)0x0)) {\n        return 1;\n      }\n      parent = parent + 1;\n    } while (parent < sym_tab->limit);\n  }\n  return 0;\n}\n\n" (function_definition "bfd_boolean sym_id_arc_is_present(Sym_Table *sym_tab,Sym *from,Sym *to)\n\n{\n  Arc *pAVar1;\n  Sym *parent;\n  \n  parent = sym_tab->base;\n  if (parent < sym_tab->limit) {\n    do {\n      if (((parent->addr <= from->addr) && (from->addr <= parent->end_addr)) &&\n         (pAVar1 = arc_lookup(parent,to), pAVar1 != (Arc *)0x0)) {\n        return 1;\n      }\n      parent = parent + 1;\n    } while (parent < sym_tab->limit);\n  }\n  return 0;\n}" type_identifier (function_declarator "sym_id_arc_is_present(Sym_Table *sym_tab,Sym *from,Sym *to)" identifier (parameter_list "(Sym_Table *sym_tab,Sym *from,Sym *to)" ( (parameter_declaration "Sym_Table *sym_tab" type_identifier (pointer_declarator "*sym_tab" * identifier)) , (parameter_declaration "Sym *from" type_identifier (pointer_declarator "*from" * identifier)) , (parameter_declaration "Sym *to" type_identifier (pointer_declarator "*to" * identifier)) ))) (compound_statement "{\n  Arc *pAVar1;\n  Sym *parent;\n  \n  parent = sym_tab->base;\n  if (parent < sym_tab->limit) {\n    do {\n      if (((parent->addr <= from->addr) && (from->addr <= parent->end_addr)) &&\n         (pAVar1 = arc_lookup(parent,to), pAVar1 != (Arc *)0x0)) {\n        return 1;\n      }\n      parent = parent + 1;\n    } while (parent < sym_tab->limit);\n  }\n  return 0;\n}" { (declaration "Arc *pAVar1;" type_identifier (pointer_declarator "*pAVar1" * identifier) ;) (declaration "Sym *parent;" type_identifier (pointer_declarator "*parent" * identifier) ;) (expression_statement "parent = sym_tab->base;" (assignment_expression "parent = sym_tab->base" identifier = (field_expression "sym_tab->base" identifier -> field_identifier)) ;) (if_statement "if (parent < sym_tab->limit) {\n    do {\n      if (((parent->addr <= from->addr) && (from->addr <= parent->end_addr)) &&\n         (pAVar1 = arc_lookup(parent,to), pAVar1 != (Arc *)0x0)) {\n        return 1;\n      }\n      parent = parent + 1;\n    } while (parent < sym_tab->limit);\n  }" if (parenthesized_expression "(parent < sym_tab->limit)" ( (binary_expression "parent < sym_tab->limit" identifier < (field_expression "sym_tab->limit" identifier -> field_identifier)) )) (compound_statement "{\n    do {\n      if (((parent->addr <= from->addr) && (from->addr <= parent->end_addr)) &&\n         (pAVar1 = arc_lookup(parent,to), pAVar1 != (Arc *)0x0)) {\n        return 1;\n      }\n      parent = parent + 1;\n    } while (parent < sym_tab->limit);\n  }" { (do_statement "do {\n      if (((parent->addr <= from->addr) && (from->addr <= parent->end_addr)) &&\n         (pAVar1 = arc_lookup(parent,to), pAVar1 != (Arc *)0x0)) {\n        return 1;\n      }\n      parent = parent + 1;\n    } while (parent < sym_tab->limit);" do (compound_statement "{\n      if (((parent->addr <= from->addr) && (from->addr <= parent->end_addr)) &&\n         (pAVar1 = arc_lookup(parent,to), pAVar1 != (Arc *)0x0)) {\n        return 1;\n      }\n      parent = parent + 1;\n    }" { (if_statement "if (((parent->addr <= from->addr) && (from->addr <= parent->end_addr)) &&\n         (pAVar1 = arc_lookup(parent,to), pAVar1 != (Arc *)0x0)) {\n        return 1;\n      }" if (parenthesized_expression "(((parent->addr <= from->addr) && (from->addr <= parent->end_addr)) &&\n         (pAVar1 = arc_lookup(parent,to), pAVar1 != (Arc *)0x0))" ( (binary_expression "((parent->addr <= from->addr) && (from->addr <= parent->end_addr)) &&\n         (pAVar1 = arc_lookup(parent,to), pAVar1 != (Arc *)0x0)" (parenthesized_expression "((parent->addr <= from->addr) && (from->addr <= parent->end_addr))" ( (binary_expression "(parent->addr <= from->addr) && (from->addr <= parent->end_addr)" (parenthesized_expression "(parent->addr <= from->addr)" ( (binary_expression "parent->addr <= from->addr" (field_expression "parent->addr" identifier -> field_identifier) <= (field_expression "from->addr" identifier -> field_identifier)) )) && (parenthesized_expression "(from->addr <= parent->end_addr)" ( (binary_expression "from->addr <= parent->end_addr" (field_expression "from->addr" identifier -> field_identifier) <= (field_expression "parent->end_addr" identifier -> field_identifier)) ))) )) && (parenthesized_expression "(pAVar1 = arc_lookup(parent,to), pAVar1 != (Arc *)0x0)" ( (comma_expression "pAVar1 = arc_lookup(parent,to), pAVar1 != (Arc *)0x0" (assignment_expression "pAVar1 = arc_lookup(parent,to)" identifier = (call_expression "arc_lookup(parent,to)" identifier (argument_list "(parent,to)" ( identifier , identifier )))) , (binary_expression "pAVar1 != (Arc *)0x0" identifier != (cast_expression "(Arc *)0x0" ( (type_descriptor "Arc *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n        return 1;\n      }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "parent = parent + 1;" (assignment_expression "parent = parent + 1" identifier = (binary_expression "parent + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(parent < sym_tab->limit)" ( (binary_expression "parent < sym_tab->limit" identifier < (field_expression "sym_tab->limit" identifier -> field_identifier)) )) ;) })) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "undefined8 FUN_0010ce00(long param_1,ulong *param_2,undefined8 param_3)\n\n{\n  long lVar1;\n  ulong *puVar2;\n  \n  puVar2 = *(ulong **)(param_1 + 8);\n  if (puVar2 < *(ulong **)(param_1 + 0x10)) {\n    do {\n      if (((*puVar2 <= *param_2) && (*param_2 <= puVar2[1])) &&\n         (lVar1 = FUN_00104450(puVar2,param_3), lVar1 != 0)) {\n        return 1;\n      }\n      puVar2 = puVar2 + 0x2b;\n    } while (puVar2 < *(ulong **)(param_1 + 0x10));\n  }\n  return 0;\n}\n\n" (function_definition "undefined8 FUN_0010ce00(long param_1,ulong *param_2,undefined8 param_3)\n\n{\n  long lVar1;\n  ulong *puVar2;\n  \n  puVar2 = *(ulong **)(param_1 + 8);\n  if (puVar2 < *(ulong **)(param_1 + 0x10)) {\n    do {\n      if (((*puVar2 <= *param_2) && (*param_2 <= puVar2[1])) &&\n         (lVar1 = FUN_00104450(puVar2,param_3), lVar1 != 0)) {\n        return 1;\n      }\n      puVar2 = puVar2 + 0x2b;\n    } while (puVar2 < *(ulong **)(param_1 + 0x10));\n  }\n  return 0;\n}" type_identifier (function_declarator "FUN_0010ce00(long param_1,ulong *param_2,undefined8 param_3)" identifier (parameter_list "(long param_1,ulong *param_2,undefined8 param_3)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "ulong *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined8 param_3" type_identifier identifier) ))) (compound_statement "{\n  long lVar1;\n  ulong *puVar2;\n  \n  puVar2 = *(ulong **)(param_1 + 8);\n  if (puVar2 < *(ulong **)(param_1 + 0x10)) {\n    do {\n      if (((*puVar2 <= *param_2) && (*param_2 <= puVar2[1])) &&\n         (lVar1 = FUN_00104450(puVar2,param_3), lVar1 != 0)) {\n        return 1;\n      }\n      puVar2 = puVar2 + 0x2b;\n    } while (puVar2 < *(ulong **)(param_1 + 0x10));\n  }\n  return 0;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (expression_statement "puVar2 = *(ulong **)(param_1 + 8);" (assignment_expression "puVar2 = *(ulong **)(param_1 + 8)" identifier = (pointer_expression "*(ulong **)(param_1 + 8)" * (cast_expression "(ulong **)(param_1 + 8)" ( (type_descriptor "ulong **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (if_statement "if (puVar2 < *(ulong **)(param_1 + 0x10)) {\n    do {\n      if (((*puVar2 <= *param_2) && (*param_2 <= puVar2[1])) &&\n         (lVar1 = FUN_00104450(puVar2,param_3), lVar1 != 0)) {\n        return 1;\n      }\n      puVar2 = puVar2 + 0x2b;\n    } while (puVar2 < *(ulong **)(param_1 + 0x10));\n  }" if (parenthesized_expression "(puVar2 < *(ulong **)(param_1 + 0x10))" ( (binary_expression "puVar2 < *(ulong **)(param_1 + 0x10)" identifier < (pointer_expression "*(ulong **)(param_1 + 0x10)" * (cast_expression "(ulong **)(param_1 + 0x10)" ( (type_descriptor "ulong **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) )) (compound_statement "{\n    do {\n      if (((*puVar2 <= *param_2) && (*param_2 <= puVar2[1])) &&\n         (lVar1 = FUN_00104450(puVar2,param_3), lVar1 != 0)) {\n        return 1;\n      }\n      puVar2 = puVar2 + 0x2b;\n    } while (puVar2 < *(ulong **)(param_1 + 0x10));\n  }" { (do_statement "do {\n      if (((*puVar2 <= *param_2) && (*param_2 <= puVar2[1])) &&\n         (lVar1 = FUN_00104450(puVar2,param_3), lVar1 != 0)) {\n        return 1;\n      }\n      puVar2 = puVar2 + 0x2b;\n    } while (puVar2 < *(ulong **)(param_1 + 0x10));" do (compound_statement "{\n      if (((*puVar2 <= *param_2) && (*param_2 <= puVar2[1])) &&\n         (lVar1 = FUN_00104450(puVar2,param_3), lVar1 != 0)) {\n        return 1;\n      }\n      puVar2 = puVar2 + 0x2b;\n    }" { (if_statement "if (((*puVar2 <= *param_2) && (*param_2 <= puVar2[1])) &&\n         (lVar1 = FUN_00104450(puVar2,param_3), lVar1 != 0)) {\n        return 1;\n      }" if (parenthesized_expression "(((*puVar2 <= *param_2) && (*param_2 <= puVar2[1])) &&\n         (lVar1 = FUN_00104450(puVar2,param_3), lVar1 != 0))" ( (binary_expression "((*puVar2 <= *param_2) && (*param_2 <= puVar2[1])) &&\n         (lVar1 = FUN_00104450(puVar2,param_3), lVar1 != 0)" (parenthesized_expression "((*puVar2 <= *param_2) && (*param_2 <= puVar2[1]))" ( (binary_expression "(*puVar2 <= *param_2) && (*param_2 <= puVar2[1])" (parenthesized_expression "(*puVar2 <= *param_2)" ( (binary_expression "*puVar2 <= *param_2" (pointer_expression "*puVar2" * identifier) <= (pointer_expression "*param_2" * identifier)) )) && (parenthesized_expression "(*param_2 <= puVar2[1])" ( (binary_expression "*param_2 <= puVar2[1]" (pointer_expression "*param_2" * identifier) <= (subscript_expression "puVar2[1]" identifier [ number_literal ])) ))) )) && (parenthesized_expression "(lVar1 = FUN_00104450(puVar2,param_3), lVar1 != 0)" ( (comma_expression "lVar1 = FUN_00104450(puVar2,param_3), lVar1 != 0" (assignment_expression "lVar1 = FUN_00104450(puVar2,param_3)" identifier = (call_expression "FUN_00104450(puVar2,param_3)" identifier (argument_list "(puVar2,param_3)" ( identifier , identifier )))) , (binary_expression "lVar1 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n        return 1;\n      }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "puVar2 = puVar2 + 0x2b;" (assignment_expression "puVar2 = puVar2 + 0x2b" identifier = (binary_expression "puVar2 + 0x2b" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar2 < *(ulong **)(param_1 + 0x10))" ( (binary_expression "puVar2 < *(ulong **)(param_1 + 0x10)" identifier < (pointer_expression "*(ulong **)(param_1 + 0x10)" * (cast_expression "(ulong **)(param_1 + 0x10)" ( (type_descriptor "ulong **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) )) ;) })) (return_statement "return 0;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) <= (pointer_expression * IDENT)) )) && (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) <= (subscript_expression IDENT [ LIT ])) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) , (binary_expression IDENT != LIT)) ))) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) ;) })) (return_statement return LIT ;) })))
(function_definition "undefined8 FUN_0010ce00(long param_1,ulong *param_2,undefined8 param_3)\n\n{\n  long lVar1;\n  ulong *puVar2;\n  \n  puVar2 = *(ulong **)(param_1 + 8);\n  if (puVar2 < *(ulong **)(param_1 + 0x10)) {\n    do {\n      if (((*puVar2 <= *param_2) && (*param_2 <= puVar2[1])) &&\n         (lVar1 = FUN_00104450(puVar2,param_3), lVar1 != 0)) {\n        return 1;\n      }\n      puVar2 = puVar2 + 0x2b;\n    } while (puVar2 < *(ulong **)(param_1 + 0x10));\n  }\n  return 0;\n}" (type_identifier "undefined8") (function_declarator "FUN_0010ce00(long param_1,ulong *param_2,undefined8 param_3)" (identifier "FUN_0010ce00") (parameter_list "(long param_1,ulong *param_2,undefined8 param_3)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "ulong *param_2" (type_identifier "ulong") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "undefined8 param_3" (type_identifier "undefined8") (identifier "param_3")) () ")"))) (compound_statement "{\n  long lVar1;\n  ulong *puVar2;\n  \n  puVar2 = *(ulong **)(param_1 + 8);\n  if (puVar2 < *(ulong **)(param_1 + 0x10)) {\n    do {\n      if (((*puVar2 <= *param_2) && (*param_2 <= puVar2[1])) &&\n         (lVar1 = FUN_00104450(puVar2,param_3), lVar1 != 0)) {\n        return 1;\n      }\n      puVar2 = puVar2 + 0x2b;\n    } while (puVar2 < *(ulong **)(param_1 + 0x10));\n  }\n  return 0;\n}" ({ "{") (declaration "long lVar1;" (sized_type_specifier "long" (long "long")) (identifier "lVar1") (; ";")) (declaration "ulong *puVar2;" (type_identifier "ulong") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (expression_statement "puVar2 = *(ulong **)(param_1 + 8);" (assignment_expression "puVar2 = *(ulong **)(param_1 + 8)" (identifier "puVar2") (= "=") (pointer_expression "*(ulong **)(param_1 + 8)" (* "*") (cast_expression "(ulong **)(param_1 + 8)" (( "(") (type_descriptor "ulong **" (type_identifier "ulong") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (puVar2 < *(ulong **)(param_1 + 0x10)) {\n    do {\n      if (((*puVar2 <= *param_2) && (*param_2 <= puVar2[1])) &&\n         (lVar1 = FUN_00104450(puVar2,param_3), lVar1 != 0)) {\n        return 1;\n      }\n      puVar2 = puVar2 + 0x2b;\n    } while (puVar2 < *(ulong **)(param_1 + 0x10));\n  }" (if "if") (parenthesized_expression "(puVar2 < *(ulong **)(param_1 + 0x10))" (( "(") (binary_expression "puVar2 < *(ulong **)(param_1 + 0x10)" (identifier "puVar2") (< "<") (pointer_expression "*(ulong **)(param_1 + 0x10)" (* "*") (cast_expression "(ulong **)(param_1 + 0x10)" (( "(") (type_descriptor "ulong **" (type_identifier "ulong") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) () ")")) (compound_statement "{\n    do {\n      if (((*puVar2 <= *param_2) && (*param_2 <= puVar2[1])) &&\n         (lVar1 = FUN_00104450(puVar2,param_3), lVar1 != 0)) {\n        return 1;\n      }\n      puVar2 = puVar2 + 0x2b;\n    } while (puVar2 < *(ulong **)(param_1 + 0x10));\n  }" ({ "{") (do_statement "do {\n      if (((*puVar2 <= *param_2) && (*param_2 <= puVar2[1])) &&\n         (lVar1 = FUN_00104450(puVar2,param_3), lVar1 != 0)) {\n        return 1;\n      }\n      puVar2 = puVar2 + 0x2b;\n    } while (puVar2 < *(ulong **)(param_1 + 0x10));" (do "do") (compound_statement "{\n      if (((*puVar2 <= *param_2) && (*param_2 <= puVar2[1])) &&\n         (lVar1 = FUN_00104450(puVar2,param_3), lVar1 != 0)) {\n        return 1;\n      }\n      puVar2 = puVar2 + 0x2b;\n    }" ({ "{") (if_statement "if (((*puVar2 <= *param_2) && (*param_2 <= puVar2[1])) &&\n         (lVar1 = FUN_00104450(puVar2,param_3), lVar1 != 0)) {\n        return 1;\n      }" (if "if") (parenthesized_expression "(((*puVar2 <= *param_2) && (*param_2 <= puVar2[1])) &&\n         (lVar1 = FUN_00104450(puVar2,param_3), lVar1 != 0))" (( "(") (binary_expression "((*puVar2 <= *param_2) && (*param_2 <= puVar2[1])) &&\n         (lVar1 = FUN_00104450(puVar2,param_3), lVar1 != 0)" (parenthesized_expression "((*puVar2 <= *param_2) && (*param_2 <= puVar2[1]))" (( "(") (binary_expression "(*puVar2 <= *param_2) && (*param_2 <= puVar2[1])" (parenthesized_expression "(*puVar2 <= *param_2)" (( "(") (binary_expression "*puVar2 <= *param_2" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (<= "<=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) () ")")) (&& "&&") (parenthesized_expression "(*param_2 <= puVar2[1])" (( "(") (binary_expression "*param_2 <= puVar2[1]" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (<= "<=") (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(lVar1 = FUN_00104450(puVar2,param_3), lVar1 != 0)" (( "(") (comma_expression "lVar1 = FUN_00104450(puVar2,param_3), lVar1 != 0" (assignment_expression "lVar1 = FUN_00104450(puVar2,param_3)" (identifier "lVar1") (= "=") (call_expression "FUN_00104450(puVar2,param_3)" (identifier "FUN_00104450") (argument_list "(puVar2,param_3)" (( "(") (identifier "puVar2") (, ",") (identifier "param_3") () ")")))) (, ",") (binary_expression "lVar1 != 0" (identifier "lVar1") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n        return 1;\n      }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (expression_statement "puVar2 = puVar2 + 0x2b;" (assignment_expression "puVar2 = puVar2 + 0x2b" (identifier "puVar2") (= "=") (binary_expression "puVar2 + 0x2b" (identifier "puVar2") (+ "+") (number_literal "0x2b"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar2 < *(ulong **)(param_1 + 0x10))" (( "(") (binary_expression "puVar2 < *(ulong **)(param_1 + 0x10)" (identifier "puVar2") (< "<") (pointer_expression "*(ulong **)(param_1 + 0x10)" (* "*") (cast_expression "(ulong **)(param_1 + 0x10)" (( "(") (type_descriptor "ulong **" (type_identifier "ulong") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) () ")")) (; ";")) (} "}"))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))

type_1 function_1(type_2 *sym_tab,type_3 *from,type_3 *to)

{
  type_4 *var_3;
  type_3 *var_1;
  
  var_1 = sym_tab->base;
  if (var_1 < sym_tab->limit) {
    do {
      if (((var_1->addr <= from->addr) && (from->addr <= var_1->end_addr)) &&
         (var_3 = var_2(var_1,to), var_3 != (type_4 *)0x0)) {
        return 1;
      }
      var_1 = var_1 + 1;
    } while (var_1 < sym_tab->limit);
  }
  return 0;
}


(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (sized_type_specifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (subscript_expression argument: (identifier) index: (number_literal)))))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) right: (binary_expression left: (identifier) right: (number_literal)))))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (return_statement (number_literal)))))

undefined8 MASKED(long param_1,ulong *param_2,undefined8 param_3)

{
  long lVar1;
  ulong *puVar2;
  
  puVar2 = *(ulong **)(param_1 + 8);
  if (puVar2 < *(ulong **)(param_1 + 0x10)) {
    do {
      if (((*puVar2 <= *param_2) && (*param_2 <= puVar2[1])) &&
         (lVar1 = FUN_00104450(puVar2,param_3), lVar1 != 0)) {
        return 1;
      }
      puVar2 = puVar2 + 0x2b;
    } while (puVar2 < *(ulong **)(param_1 + 0x10));
  }
  return 0;
}

