
/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */
/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */
/* WARNING: Struct "Output_section_headers": ignoring overlapping field "layout_" */
/* WARNING: Enum "DT": Some values do not have unique names */
/* WARNING: Struct "Output_reduced_debug_abbrev_section": ignoring overlapping field "data_" */
/* WARNING: Struct "Output_reduced_debug_info_section": ignoring overlapping field "data_" */
/* DWARF original prototype: Should_include do_should_include_member(Sized_relobj_file<64,_true> *
   this, Symbol_table * symtab, Layout * layout, Read_symbols_data * sd, string * why) */

Should_include __thiscall
gold::Sized_relobj_file<64,_true>::do_should_include_member
          (Sized_relobj_file<64,_true> *this,Symbol_table *symtab,Layout *layout,
          Read_symbols_data *sd,string *why)

{
  uint uVar1;
  Should_include SVar2;
  int *piVar3;
  uint uVar4;
  uchar *puVar5;
  Symbol *symbol;
  size_t tmpbuflen;
  char *tmpbuf;
  char **local_30;
  
  uVar1 = sd->symbols_size - sd->external_symbols_offset;
  tmpbuf = (char *)0x0;
  tmpbuflen = 0;
  puVar5 = sd->symbol_names->data_;
  piVar3 = (int *)(sd->symbols->data_ + sd->external_symbols_offset);
  if (0x17 < uVar1) {
    local_30 = &tmpbuf;
    uVar4 = 0;
    do {
      uVar4 = uVar4 + 1;
      if ((*(short *)((int)piVar3 + 6) != 0) &&
         (SVar2 = (*(code *)PTR_should_include_member_004c345c)
                            (symtab,layout,puVar5 + *piVar3,&symbol,why,local_30,&tmpbuflen),
         SVar2 == SHOULD_INCLUDE_YES)) {
        if (tmpbuf == (char *)0x0) {
          return SHOULD_INCLUDE_YES;
        }
        local_30 = (char **)SVar2;
        (*(code *)PTR_free_004c5c18)();
        return (Should_include)local_30;
      }
      piVar3 = piVar3 + 6;
    } while (uVar4 < uVar1 / 0x18);
    if (tmpbuf != (char *)0x0) {
      (*(code *)PTR_free_004c5c18)();
      return SHOULD_INCLUDE_UNKNOWN;
    }
  }
  return SHOULD_INCLUDE_UNKNOWN;
}



int FUN_001d14f4(undefined4 param_1,undefined4 param_2,undefined4 param_3,int param_4,
                undefined4 param_5)

{
  uint uVar1;
  int iVar2;
  int *piVar3;
  uint uVar4;
  int iVar5;
  undefined1 auStack_40 [4];
  undefined4 local_3c;
  int local_38 [2];
  int *local_30;
  
  uVar1 = *(int *)(param_4 + 0x10) - *(int *)(param_4 + 0x14);
  local_38[0] = 0;
  local_3c = 0;
  iVar5 = *(int *)(*(int *)(param_4 + 0x18) + 8);
  piVar3 = (int *)(*(int *)(*(int *)(param_4 + 0xc) + 8) + *(int *)(param_4 + 0x14));
  if (0x17 < uVar1) {
    local_30 = local_38;
    uVar4 = 0;
    do {
      uVar4 = uVar4 + 1;
      if ((*(short *)((int)piVar3 + 6) != 0) &&
         (iVar2 = (*(code *)PTR_should_include_member_004c345c)
                            (param_2,param_3,iVar5 + *piVar3,auStack_40,param_5,local_30,&local_3c),
         iVar2 == 1)) {
        if (local_38[0] == 0) {
          return 1;
        }
        local_30 = (int *)iVar2;
        (*(code *)PTR_free_004c5c18)();
        return (int)local_30;
      }
      piVar3 = piVar3 + 6;
    } while (uVar4 < uVar1 / 0x18);
    if (local_38[0] != 0) {
      (*(code *)PTR_free_004c5c18)();
      return 2;
    }
  }
  return 2;
}


lui gp,0x2f
addiu gp,gp,0x7d4c
addu gp,gp,t9
addiu sp,sp,-0x68
lw t0,0xc(a3)
lw v1,0x14(a3)
lw v0,0x10(a3)
lw a0,0x18(a3)
sw s7,0x5c(sp)
lui s7,0xaaaa
subu v0,v0,v1
sw s0,0x40(sp)
sw gp,0x20(sp)
ori s7,s7,0xaaab
sw s2,0x48(sp)
multu v0,s7
sw ra,0x64(sp)
sltiu v0,v0,0x18
sw s8,0x60(sp)
sw s6,0x58(sp)
sw s5,0x54(sp)
sw s4,0x50(sp)
sw s3,0x4c(sp)
sw s1,0x44(sp)
sw zero,0x30(sp)
sw zero,0x2c(sp)
lw s0,0x8(t0)
lw s2,0x8(a0)
bne v0,zero,0x001d162c
_addu s0,s0,v1
mfhi s7
addiu v0,sp,0x30
or s1,zero,zero
addiu s6,sp,0x2c
sw v0,0x38(sp)
addiu s3,sp,0x28
li s4,0x1
or s5,a2,zero
srl s7,s7,0x4
or s8,a1,zero
lhu v0,0x6(s0)
addiu s1,s1,0x1
lw t9,-0x5de4(gp)
or a3,s3,zero
or a1,s5,zero
beq v0,zero,0x001d15d8
_or a0,s8,zero
lw v0,0x38(sp)
lw a2,0x0(s0)
sw s6,0x18(sp)
sw v0,0x14(sp)
lw v0,0x78(sp)
addu a2,s2,a2
jalr t9
_sw v0,0x10(sp)
beq v0,s4,0x001d1660
_lw gp,0x20(sp)
sltu v0,s1,s7
bne v0,zero,0x001d1594
_addiu s0,s0,0x18
lw a0,0x30(sp)
beq a0,zero,0x001d162c
_lw t9,-0x3628(gp)
jalr t9
_nop
li v0,0x2
lw ra,0x64(sp)
lw s8,0x60(sp)
lw s7,0x5c(sp)
lw s6,0x58(sp)
lw s5,0x54(sp)
lw s4,0x50(sp)
lw s3,0x4c(sp)
lw s2,0x48(sp)
lw s1,0x44(sp)
lw s0,0x40(sp)
jr ra
_addiu sp,sp,0x68
lw ra,0x64(sp)
li v0,0x2
lw s8,0x60(sp)
lw s7,0x5c(sp)
lw s6,0x58(sp)
lw s5,0x54(sp)
lw s4,0x50(sp)
lw s3,0x4c(sp)
lw s2,0x48(sp)
lw s1,0x44(sp)
lw s0,0x40(sp)
jr ra
_addiu sp,sp,0x68
lw a0,0x30(sp)
beq a0,zero,0x001d15fc
_lw t9,-0x3628(gp)
jalr t9
_sw v0,0x38(sp)
lw ra,0x64(sp)
lw v0,0x38(sp)
lw s8,0x60(sp)
lw s7,0x5c(sp)
lw s6,0x58(sp)
lw s5,0x54(sp)
lw s4,0x50(sp)
lw s3,0x4c(sp)
lw s2,0x48(sp)
lw s1,0x44(sp)
lw s0,0x40(sp)
jr ra
_addiu sp,sp,0x68
(translation_unit "int FUN_001d14f4(undefined4 param_1,undefined4 param_2,undefined4 param_3,int param_4,\n                undefined4 param_5)\n\n{\n  uint uVar1;\n  int iVar2;\n  int *piVar3;\n  uint uVar4;\n  int iVar5;\n  undefined1 auStack_40 [4];\n  undefined4 local_3c;\n  int local_38 [2];\n  int *local_30;\n  \n  uVar1 = *(int *)(param_4 + 0x10) - *(int *)(param_4 + 0x14);\n  local_38[0] = 0;\n  local_3c = 0;\n  iVar5 = *(int *)(*(int *)(param_4 + 0x18) + 8);\n  piVar3 = (int *)(*(int *)(*(int *)(param_4 + 0xc) + 8) + *(int *)(param_4 + 0x14));\n  if (0x17 < uVar1) {\n    local_30 = local_38;\n    uVar4 = 0;\n    do {\n      uVar4 = uVar4 + 1;\n      if ((*(short *)((int)piVar3 + 6) != 0) &&\n         (iVar2 = (*(code *)PTR_should_include_member_004c345c)\n                            (param_2,param_3,iVar5 + *piVar3,auStack_40,param_5,local_30,&local_3c),\n         iVar2 == 1)) {\n        if (local_38[0] == 0) {\n          return 1;\n        }\n        local_30 = (int *)iVar2;\n        (*(code *)PTR_free_004c5c18)();\n        return (int)local_30;\n      }\n      piVar3 = piVar3 + 6;\n    } while (uVar4 < uVar1 / 0x18);\n    if (local_38[0] != 0) {\n      (*(code *)PTR_free_004c5c18)();\n      return 2;\n    }\n  }\n  return 2;\n}\n\n" (function_definition "int FUN_001d14f4(undefined4 param_1,undefined4 param_2,undefined4 param_3,int param_4,\n                undefined4 param_5)\n\n{\n  uint uVar1;\n  int iVar2;\n  int *piVar3;\n  uint uVar4;\n  int iVar5;\n  undefined1 auStack_40 [4];\n  undefined4 local_3c;\n  int local_38 [2];\n  int *local_30;\n  \n  uVar1 = *(int *)(param_4 + 0x10) - *(int *)(param_4 + 0x14);\n  local_38[0] = 0;\n  local_3c = 0;\n  iVar5 = *(int *)(*(int *)(param_4 + 0x18) + 8);\n  piVar3 = (int *)(*(int *)(*(int *)(param_4 + 0xc) + 8) + *(int *)(param_4 + 0x14));\n  if (0x17 < uVar1) {\n    local_30 = local_38;\n    uVar4 = 0;\n    do {\n      uVar4 = uVar4 + 1;\n      if ((*(short *)((int)piVar3 + 6) != 0) &&\n         (iVar2 = (*(code *)PTR_should_include_member_004c345c)\n                            (param_2,param_3,iVar5 + *piVar3,auStack_40,param_5,local_30,&local_3c),\n         iVar2 == 1)) {\n        if (local_38[0] == 0) {\n          return 1;\n        }\n        local_30 = (int *)iVar2;\n        (*(code *)PTR_free_004c5c18)();\n        return (int)local_30;\n      }\n      piVar3 = piVar3 + 6;\n    } while (uVar4 < uVar1 / 0x18);\n    if (local_38[0] != 0) {\n      (*(code *)PTR_free_004c5c18)();\n      return 2;\n    }\n  }\n  return 2;\n}" primitive_type (function_declarator "FUN_001d14f4(undefined4 param_1,undefined4 param_2,undefined4 param_3,int param_4,\n                undefined4 param_5)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2,undefined4 param_3,int param_4,\n                undefined4 param_5)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) ))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  int *piVar3;\n  uint uVar4;\n  int iVar5;\n  undefined1 auStack_40 [4];\n  undefined4 local_3c;\n  int local_38 [2];\n  int *local_30;\n  \n  uVar1 = *(int *)(param_4 + 0x10) - *(int *)(param_4 + 0x14);\n  local_38[0] = 0;\n  local_3c = 0;\n  iVar5 = *(int *)(*(int *)(param_4 + 0x18) + 8);\n  piVar3 = (int *)(*(int *)(*(int *)(param_4 + 0xc) + 8) + *(int *)(param_4 + 0x14));\n  if (0x17 < uVar1) {\n    local_30 = local_38;\n    uVar4 = 0;\n    do {\n      uVar4 = uVar4 + 1;\n      if ((*(short *)((int)piVar3 + 6) != 0) &&\n         (iVar2 = (*(code *)PTR_should_include_member_004c345c)\n                            (param_2,param_3,iVar5 + *piVar3,auStack_40,param_5,local_30,&local_3c),\n         iVar2 == 1)) {\n        if (local_38[0] == 0) {\n          return 1;\n        }\n        local_30 = (int *)iVar2;\n        (*(code *)PTR_free_004c5c18)();\n        return (int)local_30;\n      }\n      piVar3 = piVar3 + 6;\n    } while (uVar4 < uVar1 / 0x18);\n    if (local_38[0] != 0) {\n      (*(code *)PTR_free_004c5c18)();\n      return 2;\n    }\n  }\n  return 2;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "undefined1 auStack_40 [4];" type_identifier (array_declarator "auStack_40 [4]" identifier [ number_literal ]) ;) (declaration "undefined4 local_3c;" type_identifier identifier ;) (declaration "int local_38 [2];" primitive_type (array_declarator "local_38 [2]" identifier [ number_literal ]) ;) (declaration "int *local_30;" primitive_type (pointer_declarator "*local_30" * identifier) ;) (expression_statement "uVar1 = *(int *)(param_4 + 0x10) - *(int *)(param_4 + 0x14);" (assignment_expression "uVar1 = *(int *)(param_4 + 0x10) - *(int *)(param_4 + 0x14)" identifier = (binary_expression "*(int *)(param_4 + 0x10) - *(int *)(param_4 + 0x14)" (pointer_expression "*(int *)(param_4 + 0x10)" * (cast_expression "(int *)(param_4 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0x10)" ( (binary_expression "param_4 + 0x10" identifier + number_literal) )))) - (pointer_expression "*(int *)(param_4 + 0x14)" * (cast_expression "(int *)(param_4 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0x14)" ( (binary_expression "param_4 + 0x14" identifier + number_literal) )))))) ;) (expression_statement "local_38[0] = 0;" (assignment_expression "local_38[0] = 0" (subscript_expression "local_38[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (expression_statement "iVar5 = *(int *)(*(int *)(param_4 + 0x18) + 8);" (assignment_expression "iVar5 = *(int *)(*(int *)(param_4 + 0x18) + 8)" identifier = (pointer_expression "*(int *)(*(int *)(param_4 + 0x18) + 8)" * (cast_expression "(int *)(*(int *)(param_4 + 0x18) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_4 + 0x18) + 8)" ( (binary_expression "*(int *)(param_4 + 0x18) + 8" (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) )))) + number_literal) ))))) ;) (expression_statement "piVar3 = (int *)(*(int *)(*(int *)(param_4 + 0xc) + 8) + *(int *)(param_4 + 0x14));" (assignment_expression "piVar3 = (int *)(*(int *)(*(int *)(param_4 + 0xc) + 8) + *(int *)(param_4 + 0x14))" identifier = (cast_expression "(int *)(*(int *)(*(int *)(param_4 + 0xc) + 8) + *(int *)(param_4 + 0x14))" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)(param_4 + 0xc) + 8) + *(int *)(param_4 + 0x14))" ( (binary_expression "*(int *)(*(int *)(param_4 + 0xc) + 8) + *(int *)(param_4 + 0x14)" (pointer_expression "*(int *)(*(int *)(param_4 + 0xc) + 8)" * (cast_expression "(int *)(*(int *)(param_4 + 0xc) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_4 + 0xc) + 8)" ( (binary_expression "*(int *)(param_4 + 0xc) + 8" (pointer_expression "*(int *)(param_4 + 0xc)" * (cast_expression "(int *)(param_4 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0xc)" ( (binary_expression "param_4 + 0xc" identifier + number_literal) )))) + number_literal) )))) + (pointer_expression "*(int *)(param_4 + 0x14)" * (cast_expression "(int *)(param_4 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0x14)" ( (binary_expression "param_4 + 0x14" identifier + number_literal) ))))) )))) ;) (if_statement "if (0x17 < uVar1) {\n    local_30 = local_38;\n    uVar4 = 0;\n    do {\n      uVar4 = uVar4 + 1;\n      if ((*(short *)((int)piVar3 + 6) != 0) &&\n         (iVar2 = (*(code *)PTR_should_include_member_004c345c)\n                            (param_2,param_3,iVar5 + *piVar3,auStack_40,param_5,local_30,&local_3c),\n         iVar2 == 1)) {\n        if (local_38[0] == 0) {\n          return 1;\n        }\n        local_30 = (int *)iVar2;\n        (*(code *)PTR_free_004c5c18)();\n        return (int)local_30;\n      }\n      piVar3 = piVar3 + 6;\n    } while (uVar4 < uVar1 / 0x18);\n    if (local_38[0] != 0) {\n      (*(code *)PTR_free_004c5c18)();\n      return 2;\n    }\n  }" if (parenthesized_expression "(0x17 < uVar1)" ( (binary_expression "0x17 < uVar1" number_literal < identifier) )) (compound_statement "{\n    local_30 = local_38;\n    uVar4 = 0;\n    do {\n      uVar4 = uVar4 + 1;\n      if ((*(short *)((int)piVar3 + 6) != 0) &&\n         (iVar2 = (*(code *)PTR_should_include_member_004c345c)\n                            (param_2,param_3,iVar5 + *piVar3,auStack_40,param_5,local_30,&local_3c),\n         iVar2 == 1)) {\n        if (local_38[0] == 0) {\n          return 1;\n        }\n        local_30 = (int *)iVar2;\n        (*(code *)PTR_free_004c5c18)();\n        return (int)local_30;\n      }\n      piVar3 = piVar3 + 6;\n    } while (uVar4 < uVar1 / 0x18);\n    if (local_38[0] != 0) {\n      (*(code *)PTR_free_004c5c18)();\n      return 2;\n    }\n  }" { (expression_statement "local_30 = local_38;" (assignment_expression "local_30 = local_38" identifier = identifier) ;) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (do_statement "do {\n      uVar4 = uVar4 + 1;\n      if ((*(short *)((int)piVar3 + 6) != 0) &&\n         (iVar2 = (*(code *)PTR_should_include_member_004c345c)\n                            (param_2,param_3,iVar5 + *piVar3,auStack_40,param_5,local_30,&local_3c),\n         iVar2 == 1)) {\n        if (local_38[0] == 0) {\n          return 1;\n        }\n        local_30 = (int *)iVar2;\n        (*(code *)PTR_free_004c5c18)();\n        return (int)local_30;\n      }\n      piVar3 = piVar3 + 6;\n    } while (uVar4 < uVar1 / 0x18);" do (compound_statement "{\n      uVar4 = uVar4 + 1;\n      if ((*(short *)((int)piVar3 + 6) != 0) &&\n         (iVar2 = (*(code *)PTR_should_include_member_004c345c)\n                            (param_2,param_3,iVar5 + *piVar3,auStack_40,param_5,local_30,&local_3c),\n         iVar2 == 1)) {\n        if (local_38[0] == 0) {\n          return 1;\n        }\n        local_30 = (int *)iVar2;\n        (*(code *)PTR_free_004c5c18)();\n        return (int)local_30;\n      }\n      piVar3 = piVar3 + 6;\n    }" { (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" identifier = (binary_expression "uVar4 + 1" identifier + number_literal)) ;) (if_statement "if ((*(short *)((int)piVar3 + 6) != 0) &&\n         (iVar2 = (*(code *)PTR_should_include_member_004c345c)\n                            (param_2,param_3,iVar5 + *piVar3,auStack_40,param_5,local_30,&local_3c),\n         iVar2 == 1)) {\n        if (local_38[0] == 0) {\n          return 1;\n        }\n        local_30 = (int *)iVar2;\n        (*(code *)PTR_free_004c5c18)();\n        return (int)local_30;\n      }" if (parenthesized_expression "((*(short *)((int)piVar3 + 6) != 0) &&\n         (iVar2 = (*(code *)PTR_should_include_member_004c345c)\n                            (param_2,param_3,iVar5 + *piVar3,auStack_40,param_5,local_30,&local_3c),\n         iVar2 == 1))" ( (binary_expression "(*(short *)((int)piVar3 + 6) != 0) &&\n         (iVar2 = (*(code *)PTR_should_include_member_004c345c)\n                            (param_2,param_3,iVar5 + *piVar3,auStack_40,param_5,local_30,&local_3c),\n         iVar2 == 1)" (parenthesized_expression "(*(short *)((int)piVar3 + 6) != 0)" ( (binary_expression "*(short *)((int)piVar3 + 6) != 0" (pointer_expression "*(short *)((int)piVar3 + 6)" * (cast_expression "(short *)((int)piVar3 + 6)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar3 + 6)" ( (binary_expression "(int)piVar3 + 6" (cast_expression "(int)piVar3" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != number_literal) )) && (parenthesized_expression "(iVar2 = (*(code *)PTR_should_include_member_004c345c)\n                            (param_2,param_3,iVar5 + *piVar3,auStack_40,param_5,local_30,&local_3c),\n         iVar2 == 1)" ( (comma_expression "iVar2 = (*(code *)PTR_should_include_member_004c345c)\n                            (param_2,param_3,iVar5 + *piVar3,auStack_40,param_5,local_30,&local_3c),\n         iVar2 == 1" (assignment_expression "iVar2 = (*(code *)PTR_should_include_member_004c345c)\n                            (param_2,param_3,iVar5 + *piVar3,auStack_40,param_5,local_30,&local_3c)" identifier = (call_expression "(*(code *)PTR_should_include_member_004c345c)\n                            (param_2,param_3,iVar5 + *piVar3,auStack_40,param_5,local_30,&local_3c)" (parenthesized_expression "(*(code *)PTR_should_include_member_004c345c)" ( (pointer_expression "*(code *)PTR_should_include_member_004c345c" * (cast_expression "(code *)PTR_should_include_member_004c345c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_2,param_3,iVar5 + *piVar3,auStack_40,param_5,local_30,&local_3c)" ( identifier , identifier , (binary_expression "iVar5 + *piVar3" identifier + (pointer_expression "*piVar3" * identifier)) , identifier , identifier , identifier , (pointer_expression "&local_3c" & identifier) )))) , (binary_expression "iVar2 == 1" identifier == number_literal)) ))) )) (compound_statement "{\n        if (local_38[0] == 0) {\n          return 1;\n        }\n        local_30 = (int *)iVar2;\n        (*(code *)PTR_free_004c5c18)();\n        return (int)local_30;\n      }" { (if_statement "if (local_38[0] == 0) {\n          return 1;\n        }" if (parenthesized_expression "(local_38[0] == 0)" ( (binary_expression "local_38[0] == 0" (subscript_expression "local_38[0]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n          return 1;\n        }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "local_30 = (int *)iVar2;" (assignment_expression "local_30 = (int *)iVar2" identifier = (cast_expression "(int *)iVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "(*(code *)PTR_free_004c5c18)();" (call_expression "(*(code *)PTR_free_004c5c18)()" (parenthesized_expression "(*(code *)PTR_free_004c5c18)" ( (pointer_expression "*(code *)PTR_free_004c5c18" * (cast_expression "(code *)PTR_free_004c5c18" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (return_statement "return (int)local_30;" return (cast_expression "(int)local_30" ( (type_descriptor "int" primitive_type) ) identifier) ;) })) (expression_statement "piVar3 = piVar3 + 6;" (assignment_expression "piVar3 = piVar3 + 6" identifier = (binary_expression "piVar3 + 6" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar4 < uVar1 / 0x18)" ( (binary_expression "uVar4 < uVar1 / 0x18" identifier < (binary_expression "uVar1 / 0x18" identifier / number_literal)) )) ;) (if_statement "if (local_38[0] != 0) {\n      (*(code *)PTR_free_004c5c18)();\n      return 2;\n    }" if (parenthesized_expression "(local_38[0] != 0)" ( (binary_expression "local_38[0] != 0" (subscript_expression "local_38[0]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n      (*(code *)PTR_free_004c5c18)();\n      return 2;\n    }" { (expression_statement "(*(code *)PTR_free_004c5c18)();" (call_expression "(*(code *)PTR_free_004c5c18)()" (parenthesized_expression "(*(code *)PTR_free_004c5c18)" ( (pointer_expression "*(code *)PTR_free_004c5c18" * (cast_expression "(code *)PTR_free_004c5c18" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (return_statement "return 2;" return number_literal ;) })) })) (return_statement "return 2;" return number_literal ;) })))
(translation_unit "/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */\n/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */\n/* WARNING: Struct "Output_section_headers": ignoring overlapping field "layout_" */\n/* WARNING: Enum "DT": Some values do not have unique names */\n/* WARNING: Struct "Output_reduced_debug_abbrev_section": ignoring overlapping field "data_" */\n/* WARNING: Struct "Output_reduced_debug_info_section": ignoring overlapping field "data_" */\n/* DWARF original prototype: Should_include do_should_include_member(Sized_relobj_file<64,_true> *\n   this, Symbol_table * symtab, Layout * layout, Read_symbols_data * sd, string * why) */\n\nShould_include __thiscall\ngold::Sized_relobj_file<64,_true>::do_should_include_member\n          (Sized_relobj_file<64,_true> *this,Symbol_table *symtab,Layout *layout,\n          Read_symbols_data *sd,string *why)\n\n{\n  uint uVar1;\n  Should_include SVar2;\n  int *piVar3;\n  uint uVar4;\n  uchar *puVar5;\n  Symbol *symbol;\n  size_t tmpbuflen;\n  char *tmpbuf;\n  char **local_30;\n  \n  uVar1 = sd->symbols_size - sd->external_symbols_offset;\n  tmpbuf = (char *)0x0;\n  tmpbuflen = 0;\n  puVar5 = sd->symbol_names->data_;\n  piVar3 = (int *)(sd->symbols->data_ + sd->external_symbols_offset);\n  if (0x17 < uVar1) {\n    local_30 = &tmpbuf;\n    uVar4 = 0;\n    do {\n      uVar4 = uVar4 + 1;\n      if ((*(short *)((int)piVar3 + 6) != 0) &&\n         (SVar2 = (*(code *)PTR_should_include_member_004c345c)\n                            (symtab,layout,puVar5 + *piVar3,&symbol,why,local_30,&tmpbuflen),\n         SVar2 == SHOULD_INCLUDE_YES)) {\n        if (tmpbuf == (char *)0x0) {\n          return SHOULD_INCLUDE_YES;\n        }\n        local_30 = (char **)SVar2;\n        (*(code *)PTR_free_004c5c18)();\n        return (Should_include)local_30;\n      }\n      piVar3 = piVar3 + 6;\n    } while (uVar4 < uVar1 / 0x18);\n    if (tmpbuf != (char *)0x0) {\n      (*(code *)PTR_free_004c5c18)();\n      return SHOULD_INCLUDE_UNKNOWN;\n    }\n  }\n  return SHOULD_INCLUDE_UNKNOWN;\n}\n\n" comment comment comment comment comment comment comment (declaration "Should_include __thiscall\ngold::Sized_relobj_file<64,_true>::do_should_include_member\n          (Sized_relobj_file<64,_true> *this,Symbol_table *symtab,Layout *layout,\n          Read_symbols_data *sd,string *why)\n\n{\n  uint uVar1;" type_identifier (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::" identifier : :) identifier (ERROR "<64" < number_literal) , (ERROR "_true>::do_should_include_member\n          (Sized_relobj_file<64,_true> *this,Symbol_table *symtab,Layout *layout,\n          Read_symbols_data *sd,string *why)\n\n{\n  uint" identifier > : : (function_declarator "do_should_include_member\n          (Sized_relobj_file<64,_true> *this,Symbol_table *symtab,Layout *layout,\n          Read_symbols_data *sd,string *why)" identifier (parameter_list "(Sized_relobj_file<64,_true> *this,Symbol_table *symtab,Layout *layout,\n          Read_symbols_data *sd,string *why)" ( (parameter_declaration "Sized_relobj_file" type_identifier) (ERROR "<64" < number_literal) , (parameter_declaration "_true> *this" type_identifier (ERROR ">" >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "Symbol_table *symtab" type_identifier (pointer_declarator "*symtab" * identifier)) , (parameter_declaration "Layout *layout" type_identifier (pointer_declarator "*layout" * identifier)) , (parameter_declaration "Read_symbols_data *sd" type_identifier (pointer_declarator "*sd" * identifier)) , (parameter_declaration "string *why" type_identifier (pointer_declarator "*why" * identifier)) ))) { identifier) identifier ;) (declaration "Should_include SVar2;" type_identifier identifier ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uchar *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "Symbol *symbol;" type_identifier (pointer_declarator "*symbol" * identifier) ;) (declaration "size_t tmpbuflen;" primitive_type identifier ;) (declaration "char *tmpbuf;" primitive_type (pointer_declarator "*tmpbuf" * identifier) ;) (declaration "char **local_30;" primitive_type (pointer_declarator "**local_30" * (pointer_declarator "*local_30" * identifier)) ;) (expression_statement "uVar1 = sd->symbols_size - sd->external_symbols_offset;" (assignment_expression "uVar1 = sd->symbols_size - sd->external_symbols_offset" identifier = (binary_expression "sd->symbols_size - sd->external_symbols_offset" (field_expression "sd->symbols_size" identifier -> field_identifier) - (field_expression "sd->external_symbols_offset" identifier -> field_identifier))) ;) (expression_statement "tmpbuf = (char *)0x0;" (assignment_expression "tmpbuf = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "tmpbuflen = 0;" (assignment_expression "tmpbuflen = 0" identifier = number_literal) ;) (expression_statement "puVar5 = sd->symbol_names->data_;" (assignment_expression "puVar5 = sd->symbol_names->data_" identifier = (field_expression "sd->symbol_names->data_" (field_expression "sd->symbol_names" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "piVar3 = (int *)(sd->symbols->data_ + sd->external_symbols_offset);" (assignment_expression "piVar3 = (int *)(sd->symbols->data_ + sd->external_symbols_offset)" identifier = (cast_expression "(int *)(sd->symbols->data_ + sd->external_symbols_offset)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(sd->symbols->data_ + sd->external_symbols_offset)" ( (binary_expression "sd->symbols->data_ + sd->external_symbols_offset" (field_expression "sd->symbols->data_" (field_expression "sd->symbols" identifier -> field_identifier) -> field_identifier) + (field_expression "sd->external_symbols_offset" identifier -> field_identifier)) )))) ;) (if_statement "if (0x17 < uVar1) {\n    local_30 = &tmpbuf;\n    uVar4 = 0;\n    do {\n      uVar4 = uVar4 + 1;\n      if ((*(short *)((int)piVar3 + 6) != 0) &&\n         (SVar2 = (*(code *)PTR_should_include_member_004c345c)\n                            (symtab,layout,puVar5 + *piVar3,&symbol,why,local_30,&tmpbuflen),\n         SVar2 == SHOULD_INCLUDE_YES)) {\n        if (tmpbuf == (char *)0x0) {\n          return SHOULD_INCLUDE_YES;\n        }\n        local_30 = (char **)SVar2;\n        (*(code *)PTR_free_004c5c18)();\n        return (Should_include)local_30;\n      }\n      piVar3 = piVar3 + 6;\n    } while (uVar4 < uVar1 / 0x18);\n    if (tmpbuf != (char *)0x0) {\n      (*(code *)PTR_free_004c5c18)();\n      return SHOULD_INCLUDE_UNKNOWN;\n    }\n  }" if (parenthesized_expression "(0x17 < uVar1)" ( (binary_expression "0x17 < uVar1" number_literal < identifier) )) (compound_statement "{\n    local_30 = &tmpbuf;\n    uVar4 = 0;\n    do {\n      uVar4 = uVar4 + 1;\n      if ((*(short *)((int)piVar3 + 6) != 0) &&\n         (SVar2 = (*(code *)PTR_should_include_member_004c345c)\n                            (symtab,layout,puVar5 + *piVar3,&symbol,why,local_30,&tmpbuflen),\n         SVar2 == SHOULD_INCLUDE_YES)) {\n        if (tmpbuf == (char *)0x0) {\n          return SHOULD_INCLUDE_YES;\n        }\n        local_30 = (char **)SVar2;\n        (*(code *)PTR_free_004c5c18)();\n        return (Should_include)local_30;\n      }\n      piVar3 = piVar3 + 6;\n    } while (uVar4 < uVar1 / 0x18);\n    if (tmpbuf != (char *)0x0) {\n      (*(code *)PTR_free_004c5c18)();\n      return SHOULD_INCLUDE_UNKNOWN;\n    }\n  }" { (expression_statement "local_30 = &tmpbuf;" (assignment_expression "local_30 = &tmpbuf" identifier = (pointer_expression "&tmpbuf" & identifier)) ;) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (do_statement "do {\n      uVar4 = uVar4 + 1;\n      if ((*(short *)((int)piVar3 + 6) != 0) &&\n         (SVar2 = (*(code *)PTR_should_include_member_004c345c)\n                            (symtab,layout,puVar5 + *piVar3,&symbol,why,local_30,&tmpbuflen),\n         SVar2 == SHOULD_INCLUDE_YES)) {\n        if (tmpbuf == (char *)0x0) {\n          return SHOULD_INCLUDE_YES;\n        }\n        local_30 = (char **)SVar2;\n        (*(code *)PTR_free_004c5c18)();\n        return (Should_include)local_30;\n      }\n      piVar3 = piVar3 + 6;\n    } while (uVar4 < uVar1 / 0x18);" do (compound_statement "{\n      uVar4 = uVar4 + 1;\n      if ((*(short *)((int)piVar3 + 6) != 0) &&\n         (SVar2 = (*(code *)PTR_should_include_member_004c345c)\n                            (symtab,layout,puVar5 + *piVar3,&symbol,why,local_30,&tmpbuflen),\n         SVar2 == SHOULD_INCLUDE_YES)) {\n        if (tmpbuf == (char *)0x0) {\n          return SHOULD_INCLUDE_YES;\n        }\n        local_30 = (char **)SVar2;\n        (*(code *)PTR_free_004c5c18)();\n        return (Should_include)local_30;\n      }\n      piVar3 = piVar3 + 6;\n    }" { (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" identifier = (binary_expression "uVar4 + 1" identifier + number_literal)) ;) (if_statement "if ((*(short *)((int)piVar3 + 6) != 0) &&\n         (SVar2 = (*(code *)PTR_should_include_member_004c345c)\n                            (symtab,layout,puVar5 + *piVar3,&symbol,why,local_30,&tmpbuflen),\n         SVar2 == SHOULD_INCLUDE_YES)) {\n        if (tmpbuf == (char *)0x0) {\n          return SHOULD_INCLUDE_YES;\n        }\n        local_30 = (char **)SVar2;\n        (*(code *)PTR_free_004c5c18)();\n        return (Should_include)local_30;\n      }" if (parenthesized_expression "((*(short *)((int)piVar3 + 6) != 0) &&\n         (SVar2 = (*(code *)PTR_should_include_member_004c345c)\n                            (symtab,layout,puVar5 + *piVar3,&symbol,why,local_30,&tmpbuflen),\n         SVar2 == SHOULD_INCLUDE_YES))" ( (binary_expression "(*(short *)((int)piVar3 + 6) != 0) &&\n         (SVar2 = (*(code *)PTR_should_include_member_004c345c)\n                            (symtab,layout,puVar5 + *piVar3,&symbol,why,local_30,&tmpbuflen),\n         SVar2 == SHOULD_INCLUDE_YES)" (parenthesized_expression "(*(short *)((int)piVar3 + 6) != 0)" ( (binary_expression "*(short *)((int)piVar3 + 6) != 0" (pointer_expression "*(short *)((int)piVar3 + 6)" * (cast_expression "(short *)((int)piVar3 + 6)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar3 + 6)" ( (binary_expression "(int)piVar3 + 6" (cast_expression "(int)piVar3" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != number_literal) )) && (parenthesized_expression "(SVar2 = (*(code *)PTR_should_include_member_004c345c)\n                            (symtab,layout,puVar5 + *piVar3,&symbol,why,local_30,&tmpbuflen),\n         SVar2 == SHOULD_INCLUDE_YES)" ( (comma_expression "SVar2 = (*(code *)PTR_should_include_member_004c345c)\n                            (symtab,layout,puVar5 + *piVar3,&symbol,why,local_30,&tmpbuflen),\n         SVar2 == SHOULD_INCLUDE_YES" (assignment_expression "SVar2 = (*(code *)PTR_should_include_member_004c345c)\n                            (symtab,layout,puVar5 + *piVar3,&symbol,why,local_30,&tmpbuflen)" identifier = (call_expression "(*(code *)PTR_should_include_member_004c345c)\n                            (symtab,layout,puVar5 + *piVar3,&symbol,why,local_30,&tmpbuflen)" (parenthesized_expression "(*(code *)PTR_should_include_member_004c345c)" ( (pointer_expression "*(code *)PTR_should_include_member_004c345c" * (cast_expression "(code *)PTR_should_include_member_004c345c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(symtab,layout,puVar5 + *piVar3,&symbol,why,local_30,&tmpbuflen)" ( identifier , identifier , (binary_expression "puVar5 + *piVar3" identifier + (pointer_expression "*piVar3" * identifier)) , (pointer_expression "&symbol" & identifier) , identifier , identifier , (pointer_expression "&tmpbuflen" & identifier) )))) , (binary_expression "SVar2 == SHOULD_INCLUDE_YES" identifier == identifier)) ))) )) (compound_statement "{\n        if (tmpbuf == (char *)0x0) {\n          return SHOULD_INCLUDE_YES;\n        }\n        local_30 = (char **)SVar2;\n        (*(code *)PTR_free_004c5c18)();\n        return (Should_include)local_30;\n      }" { (if_statement "if (tmpbuf == (char *)0x0) {\n          return SHOULD_INCLUDE_YES;\n        }" if (parenthesized_expression "(tmpbuf == (char *)0x0)" ( (binary_expression "tmpbuf == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          return SHOULD_INCLUDE_YES;\n        }" { (return_statement "return SHOULD_INCLUDE_YES;" return identifier ;) })) (expression_statement "local_30 = (char **)SVar2;" (assignment_expression "local_30 = (char **)SVar2" identifier = (cast_expression "(char **)SVar2" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ;) (expression_statement "(*(code *)PTR_free_004c5c18)();" (call_expression "(*(code *)PTR_free_004c5c18)()" (parenthesized_expression "(*(code *)PTR_free_004c5c18)" ( (pointer_expression "*(code *)PTR_free_004c5c18" * (cast_expression "(code *)PTR_free_004c5c18" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (return_statement "return (Should_include)local_30;" return (cast_expression "(Should_include)local_30" ( (type_descriptor "Should_include" type_identifier) ) identifier) ;) })) (expression_statement "piVar3 = piVar3 + 6;" (assignment_expression "piVar3 = piVar3 + 6" identifier = (binary_expression "piVar3 + 6" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar4 < uVar1 / 0x18)" ( (binary_expression "uVar4 < uVar1 / 0x18" identifier < (binary_expression "uVar1 / 0x18" identifier / number_literal)) )) ;) (if_statement "if (tmpbuf != (char *)0x0) {\n      (*(code *)PTR_free_004c5c18)();\n      return SHOULD_INCLUDE_UNKNOWN;\n    }" if (parenthesized_expression "(tmpbuf != (char *)0x0)" ( (binary_expression "tmpbuf != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      (*(code *)PTR_free_004c5c18)();\n      return SHOULD_INCLUDE_UNKNOWN;\n    }" { (expression_statement "(*(code *)PTR_free_004c5c18)();" (call_expression "(*(code *)PTR_free_004c5c18)()" (parenthesized_expression "(*(code *)PTR_free_004c5c18)" ( (pointer_expression "*(code *)PTR_free_004c5c18" * (cast_expression "(code *)PTR_free_004c5c18" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (return_statement "return SHOULD_INCLUDE_UNKNOWN;" return identifier ;) })) })) (return_statement "return SHOULD_INCLUDE_UNKNOWN;" return identifier ;) (ERROR "}" }))
(translation_unit "int FUN_001d14f4(undefined4 param_1,undefined4 param_2,undefined4 param_3,int param_4,\n                undefined4 param_5)\n\n{\n  uint uVar1;\n  int iVar2;\n  int *piVar3;\n  uint uVar4;\n  int iVar5;\n  undefined1 auStack_40 [4];\n  undefined4 local_3c;\n  int local_38 [2];\n  int *local_30;\n  \n  uVar1 = *(int *)(param_4 + 0x10) - *(int *)(param_4 + 0x14);\n  local_38[0] = 0;\n  local_3c = 0;\n  iVar5 = *(int *)(*(int *)(param_4 + 0x18) + 8);\n  piVar3 = (int *)(*(int *)(*(int *)(param_4 + 0xc) + 8) + *(int *)(param_4 + 0x14));\n  if (0x17 < uVar1) {\n    local_30 = local_38;\n    uVar4 = 0;\n    do {\n      uVar4 = uVar4 + 1;\n      if ((*(short *)((int)piVar3 + 6) != 0) &&\n         (iVar2 = (*(code *)PTR_should_include_member_004c345c)\n                            (param_2,param_3,iVar5 + *piVar3,auStack_40,param_5,local_30,&local_3c),\n         iVar2 == 1)) {\n        if (local_38[0] == 0) {\n          return 1;\n        }\n        local_30 = (int *)iVar2;\n        (*(code *)PTR_free_004c5c18)();\n        return (int)local_30;\n      }\n      piVar3 = piVar3 + 6;\n    } while (uVar4 < uVar1 / 0x18);\n    if (local_38[0] != 0) {\n      (*(code *)PTR_free_004c5c18)();\n      return 2;\n    }\n  }\n  return 2;\n}\n\n" (function_definition "int FUN_001d14f4(undefined4 param_1,undefined4 param_2,undefined4 param_3,int param_4,\n                undefined4 param_5)\n\n{\n  uint uVar1;\n  int iVar2;\n  int *piVar3;\n  uint uVar4;\n  int iVar5;\n  undefined1 auStack_40 [4];\n  undefined4 local_3c;\n  int local_38 [2];\n  int *local_30;\n  \n  uVar1 = *(int *)(param_4 + 0x10) - *(int *)(param_4 + 0x14);\n  local_38[0] = 0;\n  local_3c = 0;\n  iVar5 = *(int *)(*(int *)(param_4 + 0x18) + 8);\n  piVar3 = (int *)(*(int *)(*(int *)(param_4 + 0xc) + 8) + *(int *)(param_4 + 0x14));\n  if (0x17 < uVar1) {\n    local_30 = local_38;\n    uVar4 = 0;\n    do {\n      uVar4 = uVar4 + 1;\n      if ((*(short *)((int)piVar3 + 6) != 0) &&\n         (iVar2 = (*(code *)PTR_should_include_member_004c345c)\n                            (param_2,param_3,iVar5 + *piVar3,auStack_40,param_5,local_30,&local_3c),\n         iVar2 == 1)) {\n        if (local_38[0] == 0) {\n          return 1;\n        }\n        local_30 = (int *)iVar2;\n        (*(code *)PTR_free_004c5c18)();\n        return (int)local_30;\n      }\n      piVar3 = piVar3 + 6;\n    } while (uVar4 < uVar1 / 0x18);\n    if (local_38[0] != 0) {\n      (*(code *)PTR_free_004c5c18)();\n      return 2;\n    }\n  }\n  return 2;\n}" primitive_type (function_declarator "FUN_001d14f4(undefined4 param_1,undefined4 param_2,undefined4 param_3,int param_4,\n                undefined4 param_5)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2,undefined4 param_3,int param_4,\n                undefined4 param_5)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) ))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  int *piVar3;\n  uint uVar4;\n  int iVar5;\n  undefined1 auStack_40 [4];\n  undefined4 local_3c;\n  int local_38 [2];\n  int *local_30;\n  \n  uVar1 = *(int *)(param_4 + 0x10) - *(int *)(param_4 + 0x14);\n  local_38[0] = 0;\n  local_3c = 0;\n  iVar5 = *(int *)(*(int *)(param_4 + 0x18) + 8);\n  piVar3 = (int *)(*(int *)(*(int *)(param_4 + 0xc) + 8) + *(int *)(param_4 + 0x14));\n  if (0x17 < uVar1) {\n    local_30 = local_38;\n    uVar4 = 0;\n    do {\n      uVar4 = uVar4 + 1;\n      if ((*(short *)((int)piVar3 + 6) != 0) &&\n         (iVar2 = (*(code *)PTR_should_include_member_004c345c)\n                            (param_2,param_3,iVar5 + *piVar3,auStack_40,param_5,local_30,&local_3c),\n         iVar2 == 1)) {\n        if (local_38[0] == 0) {\n          return 1;\n        }\n        local_30 = (int *)iVar2;\n        (*(code *)PTR_free_004c5c18)();\n        return (int)local_30;\n      }\n      piVar3 = piVar3 + 6;\n    } while (uVar4 < uVar1 / 0x18);\n    if (local_38[0] != 0) {\n      (*(code *)PTR_free_004c5c18)();\n      return 2;\n    }\n  }\n  return 2;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "undefined1 auStack_40 [4];" type_identifier (array_declarator "auStack_40 [4]" identifier [ number_literal ]) ;) (declaration "undefined4 local_3c;" type_identifier identifier ;) (declaration "int local_38 [2];" primitive_type (array_declarator "local_38 [2]" identifier [ number_literal ]) ;) (declaration "int *local_30;" primitive_type (pointer_declarator "*local_30" * identifier) ;) (expression_statement "uVar1 = *(int *)(param_4 + 0x10) - *(int *)(param_4 + 0x14);" (assignment_expression "uVar1 = *(int *)(param_4 + 0x10) - *(int *)(param_4 + 0x14)" identifier = (binary_expression "*(int *)(param_4 + 0x10) - *(int *)(param_4 + 0x14)" (pointer_expression "*(int *)(param_4 + 0x10)" * (cast_expression "(int *)(param_4 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0x10)" ( (binary_expression "param_4 + 0x10" identifier + number_literal) )))) - (pointer_expression "*(int *)(param_4 + 0x14)" * (cast_expression "(int *)(param_4 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0x14)" ( (binary_expression "param_4 + 0x14" identifier + number_literal) )))))) ;) (expression_statement "local_38[0] = 0;" (assignment_expression "local_38[0] = 0" (subscript_expression "local_38[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (expression_statement "iVar5 = *(int *)(*(int *)(param_4 + 0x18) + 8);" (assignment_expression "iVar5 = *(int *)(*(int *)(param_4 + 0x18) + 8)" identifier = (pointer_expression "*(int *)(*(int *)(param_4 + 0x18) + 8)" * (cast_expression "(int *)(*(int *)(param_4 + 0x18) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_4 + 0x18) + 8)" ( (binary_expression "*(int *)(param_4 + 0x18) + 8" (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) )))) + number_literal) ))))) ;) (expression_statement "piVar3 = (int *)(*(int *)(*(int *)(param_4 + 0xc) + 8) + *(int *)(param_4 + 0x14));" (assignment_expression "piVar3 = (int *)(*(int *)(*(int *)(param_4 + 0xc) + 8) + *(int *)(param_4 + 0x14))" identifier = (cast_expression "(int *)(*(int *)(*(int *)(param_4 + 0xc) + 8) + *(int *)(param_4 + 0x14))" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)(param_4 + 0xc) + 8) + *(int *)(param_4 + 0x14))" ( (binary_expression "*(int *)(*(int *)(param_4 + 0xc) + 8) + *(int *)(param_4 + 0x14)" (pointer_expression "*(int *)(*(int *)(param_4 + 0xc) + 8)" * (cast_expression "(int *)(*(int *)(param_4 + 0xc) + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_4 + 0xc) + 8)" ( (binary_expression "*(int *)(param_4 + 0xc) + 8" (pointer_expression "*(int *)(param_4 + 0xc)" * (cast_expression "(int *)(param_4 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0xc)" ( (binary_expression "param_4 + 0xc" identifier + number_literal) )))) + number_literal) )))) + (pointer_expression "*(int *)(param_4 + 0x14)" * (cast_expression "(int *)(param_4 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 0x14)" ( (binary_expression "param_4 + 0x14" identifier + number_literal) ))))) )))) ;) (if_statement "if (0x17 < uVar1) {\n    local_30 = local_38;\n    uVar4 = 0;\n    do {\n      uVar4 = uVar4 + 1;\n      if ((*(short *)((int)piVar3 + 6) != 0) &&\n         (iVar2 = (*(code *)PTR_should_include_member_004c345c)\n                            (param_2,param_3,iVar5 + *piVar3,auStack_40,param_5,local_30,&local_3c),\n         iVar2 == 1)) {\n        if (local_38[0] == 0) {\n          return 1;\n        }\n        local_30 = (int *)iVar2;\n        (*(code *)PTR_free_004c5c18)();\n        return (int)local_30;\n      }\n      piVar3 = piVar3 + 6;\n    } while (uVar4 < uVar1 / 0x18);\n    if (local_38[0] != 0) {\n      (*(code *)PTR_free_004c5c18)();\n      return 2;\n    }\n  }" if (parenthesized_expression "(0x17 < uVar1)" ( (binary_expression "0x17 < uVar1" number_literal < identifier) )) (compound_statement "{\n    local_30 = local_38;\n    uVar4 = 0;\n    do {\n      uVar4 = uVar4 + 1;\n      if ((*(short *)((int)piVar3 + 6) != 0) &&\n         (iVar2 = (*(code *)PTR_should_include_member_004c345c)\n                            (param_2,param_3,iVar5 + *piVar3,auStack_40,param_5,local_30,&local_3c),\n         iVar2 == 1)) {\n        if (local_38[0] == 0) {\n          return 1;\n        }\n        local_30 = (int *)iVar2;\n        (*(code *)PTR_free_004c5c18)();\n        return (int)local_30;\n      }\n      piVar3 = piVar3 + 6;\n    } while (uVar4 < uVar1 / 0x18);\n    if (local_38[0] != 0) {\n      (*(code *)PTR_free_004c5c18)();\n      return 2;\n    }\n  }" { (expression_statement "local_30 = local_38;" (assignment_expression "local_30 = local_38" identifier = identifier) ;) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (do_statement "do {\n      uVar4 = uVar4 + 1;\n      if ((*(short *)((int)piVar3 + 6) != 0) &&\n         (iVar2 = (*(code *)PTR_should_include_member_004c345c)\n                            (param_2,param_3,iVar5 + *piVar3,auStack_40,param_5,local_30,&local_3c),\n         iVar2 == 1)) {\n        if (local_38[0] == 0) {\n          return 1;\n        }\n        local_30 = (int *)iVar2;\n        (*(code *)PTR_free_004c5c18)();\n        return (int)local_30;\n      }\n      piVar3 = piVar3 + 6;\n    } while (uVar4 < uVar1 / 0x18);" do (compound_statement "{\n      uVar4 = uVar4 + 1;\n      if ((*(short *)((int)piVar3 + 6) != 0) &&\n         (iVar2 = (*(code *)PTR_should_include_member_004c345c)\n                            (param_2,param_3,iVar5 + *piVar3,auStack_40,param_5,local_30,&local_3c),\n         iVar2 == 1)) {\n        if (local_38[0] == 0) {\n          return 1;\n        }\n        local_30 = (int *)iVar2;\n        (*(code *)PTR_free_004c5c18)();\n        return (int)local_30;\n      }\n      piVar3 = piVar3 + 6;\n    }" { (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" identifier = (binary_expression "uVar4 + 1" identifier + number_literal)) ;) (if_statement "if ((*(short *)((int)piVar3 + 6) != 0) &&\n         (iVar2 = (*(code *)PTR_should_include_member_004c345c)\n                            (param_2,param_3,iVar5 + *piVar3,auStack_40,param_5,local_30,&local_3c),\n         iVar2 == 1)) {\n        if (local_38[0] == 0) {\n          return 1;\n        }\n        local_30 = (int *)iVar2;\n        (*(code *)PTR_free_004c5c18)();\n        return (int)local_30;\n      }" if (parenthesized_expression "((*(short *)((int)piVar3 + 6) != 0) &&\n         (iVar2 = (*(code *)PTR_should_include_member_004c345c)\n                            (param_2,param_3,iVar5 + *piVar3,auStack_40,param_5,local_30,&local_3c),\n         iVar2 == 1))" ( (binary_expression "(*(short *)((int)piVar3 + 6) != 0) &&\n         (iVar2 = (*(code *)PTR_should_include_member_004c345c)\n                            (param_2,param_3,iVar5 + *piVar3,auStack_40,param_5,local_30,&local_3c),\n         iVar2 == 1)" (parenthesized_expression "(*(short *)((int)piVar3 + 6) != 0)" ( (binary_expression "*(short *)((int)piVar3 + 6) != 0" (pointer_expression "*(short *)((int)piVar3 + 6)" * (cast_expression "(short *)((int)piVar3 + 6)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar3 + 6)" ( (binary_expression "(int)piVar3 + 6" (cast_expression "(int)piVar3" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != number_literal) )) && (parenthesized_expression "(iVar2 = (*(code *)PTR_should_include_member_004c345c)\n                            (param_2,param_3,iVar5 + *piVar3,auStack_40,param_5,local_30,&local_3c),\n         iVar2 == 1)" ( (comma_expression "iVar2 = (*(code *)PTR_should_include_member_004c345c)\n                            (param_2,param_3,iVar5 + *piVar3,auStack_40,param_5,local_30,&local_3c),\n         iVar2 == 1" (assignment_expression "iVar2 = (*(code *)PTR_should_include_member_004c345c)\n                            (param_2,param_3,iVar5 + *piVar3,auStack_40,param_5,local_30,&local_3c)" identifier = (call_expression "(*(code *)PTR_should_include_member_004c345c)\n                            (param_2,param_3,iVar5 + *piVar3,auStack_40,param_5,local_30,&local_3c)" (parenthesized_expression "(*(code *)PTR_should_include_member_004c345c)" ( (pointer_expression "*(code *)PTR_should_include_member_004c345c" * (cast_expression "(code *)PTR_should_include_member_004c345c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_2,param_3,iVar5 + *piVar3,auStack_40,param_5,local_30,&local_3c)" ( identifier , identifier , (binary_expression "iVar5 + *piVar3" identifier + (pointer_expression "*piVar3" * identifier)) , identifier , identifier , identifier , (pointer_expression "&local_3c" & identifier) )))) , (binary_expression "iVar2 == 1" identifier == number_literal)) ))) )) (compound_statement "{\n        if (local_38[0] == 0) {\n          return 1;\n        }\n        local_30 = (int *)iVar2;\n        (*(code *)PTR_free_004c5c18)();\n        return (int)local_30;\n      }" { (if_statement "if (local_38[0] == 0) {\n          return 1;\n        }" if (parenthesized_expression "(local_38[0] == 0)" ( (binary_expression "local_38[0] == 0" (subscript_expression "local_38[0]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n          return 1;\n        }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "local_30 = (int *)iVar2;" (assignment_expression "local_30 = (int *)iVar2" identifier = (cast_expression "(int *)iVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "(*(code *)PTR_free_004c5c18)();" (call_expression "(*(code *)PTR_free_004c5c18)()" (parenthesized_expression "(*(code *)PTR_free_004c5c18)" ( (pointer_expression "*(code *)PTR_free_004c5c18" * (cast_expression "(code *)PTR_free_004c5c18" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (return_statement "return (int)local_30;" return (cast_expression "(int)local_30" ( (type_descriptor "int" primitive_type) ) identifier) ;) })) (expression_statement "piVar3 = piVar3 + 6;" (assignment_expression "piVar3 = piVar3 + 6" identifier = (binary_expression "piVar3 + 6" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar4 < uVar1 / 0x18)" ( (binary_expression "uVar4 < uVar1 / 0x18" identifier < (binary_expression "uVar1 / 0x18" identifier / number_literal)) )) ;) (if_statement "if (local_38[0] != 0) {\n      (*(code *)PTR_free_004c5c18)();\n      return 2;\n    }" if (parenthesized_expression "(local_38[0] != 0)" ( (binary_expression "local_38[0] != 0" (subscript_expression "local_38[0]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n      (*(code *)PTR_free_004c5c18)();\n      return 2;\n    }" { (expression_statement "(*(code *)PTR_free_004c5c18)();" (call_expression "(*(code *)PTR_free_004c5c18)()" (parenthesized_expression "(*(code *)PTR_free_004c5c18)" ( (pointer_expression "*(code *)PTR_free_004c5c18" * (cast_expression "(code *)PTR_free_004c5c18" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (return_statement "return 2;" return number_literal ;) })) })) (return_statement "return 2;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (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 IDENT + LIT) )))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (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) ))))) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , (binary_expression IDENT + (pointer_expression * IDENT)) , IDENT , IDENT , IDENT , (pointer_expression & IDENT) )))) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (return_statement return (cast_expression ( (type_descriptor TYPE) ) IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (binary_expression IDENT / LIT)) )) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (return_statement return LIT ;) })) })) (return_statement return LIT ;) })))
(function_definition "int FUN_001d14f4(undefined4 param_1,undefined4 param_2,undefined4 param_3,int param_4,\n                undefined4 param_5)\n\n{\n  uint uVar1;\n  int iVar2;\n  int *piVar3;\n  uint uVar4;\n  int iVar5;\n  undefined1 auStack_40 [4];\n  undefined4 local_3c;\n  int local_38 [2];\n  int *local_30;\n  \n  uVar1 = *(int *)(param_4 + 0x10) - *(int *)(param_4 + 0x14);\n  local_38[0] = 0;\n  local_3c = 0;\n  iVar5 = *(int *)(*(int *)(param_4 + 0x18) + 8);\n  piVar3 = (int *)(*(int *)(*(int *)(param_4 + 0xc) + 8) + *(int *)(param_4 + 0x14));\n  if (0x17 < uVar1) {\n    local_30 = local_38;\n    uVar4 = 0;\n    do {\n      uVar4 = uVar4 + 1;\n      if ((*(short *)((int)piVar3 + 6) != 0) &&\n         (iVar2 = (*(code *)PTR_should_include_member_004c345c)\n                            (param_2,param_3,iVar5 + *piVar3,auStack_40,param_5,local_30,&local_3c),\n         iVar2 == 1)) {\n        if (local_38[0] == 0) {\n          return 1;\n        }\n        local_30 = (int *)iVar2;\n        (*(code *)PTR_free_004c5c18)();\n        return (int)local_30;\n      }\n      piVar3 = piVar3 + 6;\n    } while (uVar4 < uVar1 / 0x18);\n    if (local_38[0] != 0) {\n      (*(code *)PTR_free_004c5c18)();\n      return 2;\n    }\n  }\n  return 2;\n}" (primitive_type "int") (function_declarator "FUN_001d14f4(undefined4 param_1,undefined4 param_2,undefined4 param_3,int param_4,\n                undefined4 param_5)" (identifier "FUN_001d14f4") (parameter_list "(undefined4 param_1,undefined4 param_2,undefined4 param_3,int param_4,\n                undefined4 param_5)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "undefined4 param_3" (type_identifier "undefined4") (identifier "param_3")) (, ",") (parameter_declaration "int param_4" (primitive_type "int") (identifier "param_4")) (, ",") (parameter_declaration "undefined4 param_5" (type_identifier "undefined4") (identifier "param_5")) () ")"))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  int *piVar3;\n  uint uVar4;\n  int iVar5;\n  undefined1 auStack_40 [4];\n  undefined4 local_3c;\n  int local_38 [2];\n  int *local_30;\n  \n  uVar1 = *(int *)(param_4 + 0x10) - *(int *)(param_4 + 0x14);\n  local_38[0] = 0;\n  local_3c = 0;\n  iVar5 = *(int *)(*(int *)(param_4 + 0x18) + 8);\n  piVar3 = (int *)(*(int *)(*(int *)(param_4 + 0xc) + 8) + *(int *)(param_4 + 0x14));\n  if (0x17 < uVar1) {\n    local_30 = local_38;\n    uVar4 = 0;\n    do {\n      uVar4 = uVar4 + 1;\n      if ((*(short *)((int)piVar3 + 6) != 0) &&\n         (iVar2 = (*(code *)PTR_should_include_member_004c345c)\n                            (param_2,param_3,iVar5 + *piVar3,auStack_40,param_5,local_30,&local_3c),\n         iVar2 == 1)) {\n        if (local_38[0] == 0) {\n          return 1;\n        }\n        local_30 = (int *)iVar2;\n        (*(code *)PTR_free_004c5c18)();\n        return (int)local_30;\n      }\n      piVar3 = piVar3 + 6;\n    } while (uVar4 < uVar1 / 0x18);\n    if (local_38[0] != 0) {\n      (*(code *)PTR_free_004c5c18)();\n      return 2;\n    }\n  }\n  return 2;\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int *piVar3;" (primitive_type "int") (pointer_declarator "*piVar3" (* "*") (identifier "piVar3")) (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "undefined1 auStack_40 [4];" (type_identifier "undefined1") (array_declarator "auStack_40 [4]" (identifier "auStack_40") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "undefined4 local_3c;" (type_identifier "undefined4") (identifier "local_3c") (; ";")) (declaration "int local_38 [2];" (primitive_type "int") (array_declarator "local_38 [2]" (identifier "local_38") ([ "[") (number_literal "2") (] "]")) (; ";")) (declaration "int *local_30;" (primitive_type "int") (pointer_declarator "*local_30" (* "*") (identifier "local_30")) (; ";")) (expression_statement "uVar1 = *(int *)(param_4 + 0x10) - *(int *)(param_4 + 0x14);" (assignment_expression "uVar1 = *(int *)(param_4 + 0x10) - *(int *)(param_4 + 0x14)" (identifier "uVar1") (= "=") (binary_expression "*(int *)(param_4 + 0x10) - *(int *)(param_4 + 0x14)" (pointer_expression "*(int *)(param_4 + 0x10)" (* "*") (cast_expression "(int *)(param_4 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 0x10)" (( "(") (binary_expression "param_4 + 0x10" (identifier "param_4") (+ "+") (number_literal "0x10")) () ")")))) (- "-") (pointer_expression "*(int *)(param_4 + 0x14)" (* "*") (cast_expression "(int *)(param_4 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 0x14)" (( "(") (binary_expression "param_4 + 0x14" (identifier "param_4") (+ "+") (number_literal "0x14")) () ")")))))) (; ";")) (expression_statement "local_38[0] = 0;" (assignment_expression "local_38[0] = 0" (subscript_expression "local_38[0]" (identifier "local_38") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" (identifier "local_3c") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar5 = *(int *)(*(int *)(param_4 + 0x18) + 8);" (assignment_expression "iVar5 = *(int *)(*(int *)(param_4 + 0x18) + 8)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(*(int *)(param_4 + 0x18) + 8)" (* "*") (cast_expression "(int *)(*(int *)(param_4 + 0x18) + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_4 + 0x18) + 8)" (( "(") (binary_expression "*(int *)(param_4 + 0x18) + 8" (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")) () ")")))) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "piVar3 = (int *)(*(int *)(*(int *)(param_4 + 0xc) + 8) + *(int *)(param_4 + 0x14));" (assignment_expression "piVar3 = (int *)(*(int *)(*(int *)(param_4 + 0xc) + 8) + *(int *)(param_4 + 0x14))" (identifier "piVar3") (= "=") (cast_expression "(int *)(*(int *)(*(int *)(param_4 + 0xc) + 8) + *(int *)(param_4 + 0x14))" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(*(int *)(param_4 + 0xc) + 8) + *(int *)(param_4 + 0x14))" (( "(") (binary_expression "*(int *)(*(int *)(param_4 + 0xc) + 8) + *(int *)(param_4 + 0x14)" (pointer_expression "*(int *)(*(int *)(param_4 + 0xc) + 8)" (* "*") (cast_expression "(int *)(*(int *)(param_4 + 0xc) + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_4 + 0xc) + 8)" (( "(") (binary_expression "*(int *)(param_4 + 0xc) + 8" (pointer_expression "*(int *)(param_4 + 0xc)" (* "*") (cast_expression "(int *)(param_4 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 0xc)" (( "(") (binary_expression "param_4 + 0xc" (identifier "param_4") (+ "+") (number_literal "0xc")) () ")")))) (+ "+") (number_literal "8")) () ")")))) (+ "+") (pointer_expression "*(int *)(param_4 + 0x14)" (* "*") (cast_expression "(int *)(param_4 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 0x14)" (( "(") (binary_expression "param_4 + 0x14" (identifier "param_4") (+ "+") (number_literal "0x14")) () ")"))))) () ")")))) (; ";")) (if_statement "if (0x17 < uVar1) {\n    local_30 = local_38;\n    uVar4 = 0;\n    do {\n      uVar4 = uVar4 + 1;\n      if ((*(short *)((int)piVar3 + 6) != 0) &&\n         (iVar2 = (*(code *)PTR_should_include_member_004c345c)\n                            (param_2,param_3,iVar5 + *piVar3,auStack_40,param_5,local_30,&local_3c),\n         iVar2 == 1)) {\n        if (local_38[0] == 0) {\n          return 1;\n        }\n        local_30 = (int *)iVar2;\n        (*(code *)PTR_free_004c5c18)();\n        return (int)local_30;\n      }\n      piVar3 = piVar3 + 6;\n    } while (uVar4 < uVar1 / 0x18);\n    if (local_38[0] != 0) {\n      (*(code *)PTR_free_004c5c18)();\n      return 2;\n    }\n  }" (if "if") (parenthesized_expression "(0x17 < uVar1)" (( "(") (binary_expression "0x17 < uVar1" (number_literal "0x17") (< "<") (identifier "uVar1")) () ")")) (compound_statement "{\n    local_30 = local_38;\n    uVar4 = 0;\n    do {\n      uVar4 = uVar4 + 1;\n      if ((*(short *)((int)piVar3 + 6) != 0) &&\n         (iVar2 = (*(code *)PTR_should_include_member_004c345c)\n                            (param_2,param_3,iVar5 + *piVar3,auStack_40,param_5,local_30,&local_3c),\n         iVar2 == 1)) {\n        if (local_38[0] == 0) {\n          return 1;\n        }\n        local_30 = (int *)iVar2;\n        (*(code *)PTR_free_004c5c18)();\n        return (int)local_30;\n      }\n      piVar3 = piVar3 + 6;\n    } while (uVar4 < uVar1 / 0x18);\n    if (local_38[0] != 0) {\n      (*(code *)PTR_free_004c5c18)();\n      return 2;\n    }\n  }" ({ "{") (expression_statement "local_30 = local_38;" (assignment_expression "local_30 = local_38" (identifier "local_30") (= "=") (identifier "local_38")) (; ";")) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" (identifier "uVar4") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n      uVar4 = uVar4 + 1;\n      if ((*(short *)((int)piVar3 + 6) != 0) &&\n         (iVar2 = (*(code *)PTR_should_include_member_004c345c)\n                            (param_2,param_3,iVar5 + *piVar3,auStack_40,param_5,local_30,&local_3c),\n         iVar2 == 1)) {\n        if (local_38[0] == 0) {\n          return 1;\n        }\n        local_30 = (int *)iVar2;\n        (*(code *)PTR_free_004c5c18)();\n        return (int)local_30;\n      }\n      piVar3 = piVar3 + 6;\n    } while (uVar4 < uVar1 / 0x18);" (do "do") (compound_statement "{\n      uVar4 = uVar4 + 1;\n      if ((*(short *)((int)piVar3 + 6) != 0) &&\n         (iVar2 = (*(code *)PTR_should_include_member_004c345c)\n                            (param_2,param_3,iVar5 + *piVar3,auStack_40,param_5,local_30,&local_3c),\n         iVar2 == 1)) {\n        if (local_38[0] == 0) {\n          return 1;\n        }\n        local_30 = (int *)iVar2;\n        (*(code *)PTR_free_004c5c18)();\n        return (int)local_30;\n      }\n      piVar3 = piVar3 + 6;\n    }" ({ "{") (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" (identifier "uVar4") (= "=") (binary_expression "uVar4 + 1" (identifier "uVar4") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if ((*(short *)((int)piVar3 + 6) != 0) &&\n         (iVar2 = (*(code *)PTR_should_include_member_004c345c)\n                            (param_2,param_3,iVar5 + *piVar3,auStack_40,param_5,local_30,&local_3c),\n         iVar2 == 1)) {\n        if (local_38[0] == 0) {\n          return 1;\n        }\n        local_30 = (int *)iVar2;\n        (*(code *)PTR_free_004c5c18)();\n        return (int)local_30;\n      }" (if "if") (parenthesized_expression "((*(short *)((int)piVar3 + 6) != 0) &&\n         (iVar2 = (*(code *)PTR_should_include_member_004c345c)\n                            (param_2,param_3,iVar5 + *piVar3,auStack_40,param_5,local_30,&local_3c),\n         iVar2 == 1))" (( "(") (binary_expression "(*(short *)((int)piVar3 + 6) != 0) &&\n         (iVar2 = (*(code *)PTR_should_include_member_004c345c)\n                            (param_2,param_3,iVar5 + *piVar3,auStack_40,param_5,local_30,&local_3c),\n         iVar2 == 1)" (parenthesized_expression "(*(short *)((int)piVar3 + 6) != 0)" (( "(") (binary_expression "*(short *)((int)piVar3 + 6) != 0" (pointer_expression "*(short *)((int)piVar3 + 6)" (* "*") (cast_expression "(short *)((int)piVar3 + 6)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar3 + 6)" (( "(") (binary_expression "(int)piVar3 + 6" (cast_expression "(int)piVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar3")) (+ "+") (number_literal "6")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar2 = (*(code *)PTR_should_include_member_004c345c)\n                            (param_2,param_3,iVar5 + *piVar3,auStack_40,param_5,local_30,&local_3c),\n         iVar2 == 1)" (( "(") (comma_expression "iVar2 = (*(code *)PTR_should_include_member_004c345c)\n                            (param_2,param_3,iVar5 + *piVar3,auStack_40,param_5,local_30,&local_3c),\n         iVar2 == 1" (assignment_expression "iVar2 = (*(code *)PTR_should_include_member_004c345c)\n                            (param_2,param_3,iVar5 + *piVar3,auStack_40,param_5,local_30,&local_3c)" (identifier "iVar2") (= "=") (call_expression "(*(code *)PTR_should_include_member_004c345c)\n                            (param_2,param_3,iVar5 + *piVar3,auStack_40,param_5,local_30,&local_3c)" (parenthesized_expression "(*(code *)PTR_should_include_member_004c345c)" (( "(") (pointer_expression "*(code *)PTR_should_include_member_004c345c" (* "*") (cast_expression "(code *)PTR_should_include_member_004c345c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_should_include_member_004c345c"))) () ")")) (argument_list "(param_2,param_3,iVar5 + *piVar3,auStack_40,param_5,local_30,&local_3c)" (( "(") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (binary_expression "iVar5 + *piVar3" (identifier "iVar5") (+ "+") (pointer_expression "*piVar3" (* "*") (identifier "piVar3"))) (, ",") (identifier "auStack_40") (, ",") (identifier "param_5") (, ",") (identifier "local_30") (, ",") (pointer_expression "&local_3c" (& "&") (identifier "local_3c")) () ")")))) (, ",") (binary_expression "iVar2 == 1" (identifier "iVar2") (== "==") (number_literal "1"))) () ")"))) () ")")) (compound_statement "{\n        if (local_38[0] == 0) {\n          return 1;\n        }\n        local_30 = (int *)iVar2;\n        (*(code *)PTR_free_004c5c18)();\n        return (int)local_30;\n      }" ({ "{") (if_statement "if (local_38[0] == 0) {\n          return 1;\n        }" (if "if") (parenthesized_expression "(local_38[0] == 0)" (( "(") (binary_expression "local_38[0] == 0" (subscript_expression "local_38[0]" (identifier "local_38") ([ "[") (number_literal "0") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          return 1;\n        }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (expression_statement "local_30 = (int *)iVar2;" (assignment_expression "local_30 = (int *)iVar2" (identifier "local_30") (= "=") (cast_expression "(int *)iVar2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "iVar2"))) (; ";")) (expression_statement "(*(code *)PTR_free_004c5c18)();" (call_expression "(*(code *)PTR_free_004c5c18)()" (parenthesized_expression "(*(code *)PTR_free_004c5c18)" (( "(") (pointer_expression "*(code *)PTR_free_004c5c18" (* "*") (cast_expression "(code *)PTR_free_004c5c18" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_004c5c18"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return (int)local_30;" (return "return") (cast_expression "(int)local_30" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_30")) (; ";")) (} "}"))) (expression_statement "piVar3 = piVar3 + 6;" (assignment_expression "piVar3 = piVar3 + 6" (identifier "piVar3") (= "=") (binary_expression "piVar3 + 6" (identifier "piVar3") (+ "+") (number_literal "6"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar4 < uVar1 / 0x18)" (( "(") (binary_expression "uVar4 < uVar1 / 0x18" (identifier "uVar4") (< "<") (binary_expression "uVar1 / 0x18" (identifier "uVar1") (/ "/") (number_literal "0x18"))) () ")")) (; ";")) (if_statement "if (local_38[0] != 0) {\n      (*(code *)PTR_free_004c5c18)();\n      return 2;\n    }" (if "if") (parenthesized_expression "(local_38[0] != 0)" (( "(") (binary_expression "local_38[0] != 0" (subscript_expression "local_38[0]" (identifier "local_38") ([ "[") (number_literal "0") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      (*(code *)PTR_free_004c5c18)();\n      return 2;\n    }" ({ "{") (expression_statement "(*(code *)PTR_free_004c5c18)();" (call_expression "(*(code *)PTR_free_004c5c18)()" (parenthesized_expression "(*(code *)PTR_free_004c5c18)" (( "(") (pointer_expression "*(code *)PTR_free_004c5c18" (* "*") (cast_expression "(code *)PTR_free_004c5c18" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_004c5c18"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return 2;" (return "return") (number_literal "2") (; ";")) (} "}"))) (} "}"))) (return_statement "return 2;" (return "return") (number_literal "2") (; ";")) (} "}")))

/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */
/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */
/* WARNING: Struct "Output_section_headers": ignoring overlapping field "layout_" */
/* WARNING: Enum "DT": Some values do not have unique names */
/* WARNING: Struct "Output_reduced_debug_abbrev_section": ignoring overlapping field "data_" */
/* WARNING: Struct "Output_reduced_debug_info_section": ignoring overlapping field "data_" */
/* DWARF original prototype: Should_include do_should_include_member(Sized_relobj_file<64,_true> *
   this, Symbol_table * symtab, Layout * layout, Read_symbols_data * sd, string * why) */

type_1 __thiscall
gold::Sized_relobj_file<64,_true>::do_should_include_member
          (Sized_relobj_file<64,_true> *this,Symbol_table *symtab,Layout *layout,
          Read_symbols_data *sd,string *why)

{
  type_2 var_1;
  type_1 var_4;
  int *var_7;
  type_2 var_2;
  type_3 *var_3;
  type_4 *symbol;
  size_t tmpbuflen;
  char *var_6;
  char **local_30;
  
  var_1 = sd->symbols_size - sd->external_symbols_offset;
  var_6 = (char *)0x0;
  tmpbuflen = 0;
  var_3 = sd->symbol_names->data_;
  var_7 = (int *)(sd->symbols->data_ + sd->external_symbols_offset);
  if (0x17 < var_1) {
    local_30 = &var_6;
    var_2 = 0;
    do {
      var_2 = var_2 + 1;
      if ((*(short *)((int)var_7 + 6) != 0) &&
         (var_4 = (*(type_5 *)PTR_should_include_member_004c345c)
                            (symtab,layout,var_3 + *var_7,&symbol,why,local_30,&tmpbuflen),
         var_4 == var_5)) {
        if (var_6 == (char *)0x0) {
          return var_5;
        }
        local_30 = (char **)var_4;
        (*(type_5 *)PTR_free_004c5c18)();
        return (type_1)local_30;
      }
      var_7 = var_7 + 6;
    } while (var_2 < var_1 / 0x18);
    if (var_6 != (char *)0x0) {
      (*(type_5 *)PTR_free_004c5c18)();
      return SHOULD_INCLUDE_UNKNOWN;
    }
  }
  return SHOULD_INCLUDE_UNKNOWN;
}


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

int MASKED(undefined4 param_1,undefined4 param_2,undefined4 param_3,int param_4,
                undefined4 param_5)

{
  uint uVar1;
  int iVar2;
  int *piVar3;
  uint uVar4;
  int iVar5;
  undefined1 auStack_40 [4];
  undefined4 local_3c;
  int local_38 [2];
  int *local_30;
  
  uVar1 = *(int *)(param_4 + 0x10) - *(int *)(param_4 + 0x14);
  local_38[0] = 0;
  local_3c = 0;
  iVar5 = *(int *)(*(int *)(param_4 + 0x18) + 8);
  piVar3 = (int *)(*(int *)(*(int *)(param_4 + 0xc) + 8) + *(int *)(param_4 + 0x14));
  if (0x17 < uVar1) {
    local_30 = local_38;
    uVar4 = 0;
    do {
      uVar4 = uVar4 + 1;
      if ((*(short *)((int)piVar3 + 6) != 0) &&
         (iVar2 = (*(code *)PTR_should_include_member_004c345c)
                            (param_2,param_3,iVar5 + *piVar3,auStack_40,param_5,local_30,&local_3c),
         iVar2 == 1)) {
        if (local_38[0] == 0) {
          return 1;
        }
        local_30 = (int *)iVar2;
        (*(code *)PTR_free_004c5c18)();
        return (int)local_30;
      }
      piVar3 = piVar3 + 6;
    } while (uVar4 < uVar1 / 0x18);
    if (local_38[0] != 0) {
      (*(code *)PTR_free_004c5c18)();
      return 2;
    }
  }
  return 2;
}

