
/* 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_" */
/* WARNING: Enum "STT": Some values do not have unique names */
/* DWARF original prototype: uint64_t value(Section_expression * this, Expression_eval_info * eei)
    */

uint64_t __thiscall
gold::Section_expression::value(Section_expression *this,Expression_eval_info *eei)

{
  int iVar1;
  _func_int_varargs **pp_Var2;
  Script_options *pSVar3;
  pointer pcVar4;
  undefined8 uVar5;
  uint64_t size;
  uint64_t addralign;
  uint64_t load_address;
  uint64_t address;
  
  pcVar4 = (this->section_name_)._M_dataplus._M_p;
  iVar1 = (*(code *)PTR_find_output_section_004c1e4c)(eei->layout,pcVar4);
  if (iVar1 != 0) {
    pp_Var2 = (this->super_Expression)._vptr_Expression;
    iVar1 = (*pp_Var2[5])(this,eei,iVar1);
LAB_002fd884:
    return CONCAT44(iVar1,pp_Var2);
  }
  pSVar3 = eei->layout->script_options_;
  if ((pSVar3->script_sections_).saw_sections_clause_ != false) {
    uVar5 = (*(code *)PTR_get_output_section_info_004c4e94)
                      (&pSVar3->script_sections_,pcVar4,&address,&load_address,&addralign,&size);
    pp_Var2 = (_func_int_varargs **)uVar5;
    if ((int)((ulonglong)uVar5 >> 0x20) != 0) {
      iVar1 = (*(this->super_Expression)._vptr_Expression[6])(this);
      goto LAB_002fd884;
    }
  }
  iVar1 = (*(this->super_Expression)._vptr_Expression[7])(this);
  (*(code *)PTR_gold_error_004c1a2c)(PTR_s_in_a_linker_script_004c191c + 0x7948,iVar1,pcVar4);
  return 0;
}



undefined4 FUN_002fd820(int *param_1,int param_2)

{
  int iVar1;
  undefined4 uVar2;
  int iVar3;
  undefined1 local_30 [8];
  undefined1 local_28 [8];
  undefined1 local_20 [8];
  undefined1 local_18 [8];
  
  iVar3 = param_1[1];
  iVar1 = (*(code *)PTR_find_output_section_004c1e4c)(*(undefined4 *)(param_2 + 4),iVar3);
  if (iVar1 != 0) {
    uVar2 = (**(code **)(*param_1 + 0x14))(param_1,param_2,iVar1);
    return uVar2;
  }
  iVar1 = *(int *)(*(int *)(param_2 + 4) + 4);
  if ((*(char *)(iVar1 + 0xac) != '\0') &&
     (iVar1 = (*(code *)PTR_get_output_section_info_004c4e94)
                        (iVar1 + 0xac,iVar3,local_18,local_20,local_28,local_30), iVar1 != 0)) {
    uVar2 = (**(code **)(*param_1 + 0x18))(param_1);
    return uVar2;
  }
  uVar2 = (**(code **)(*param_1 + 0x1c))(param_1);
  (*(code *)PTR_gold_error_004c1a2c)(PTR_s_in_a_linker_script_004c191c + 0x7948,uVar2,iVar3);
  return 0;
}


lui gp,0x1d
addiu gp,gp,-0x45e0
addu gp,gp,t9
addiu sp,sp,-0x60
lw t9,-0x73f4(gp)
sw gp,0x28(sp)
sw s1,0x54(sp)
or s1,a1,zero
sw s0,0x50(sp)
or s0,a0,zero
sw ra,0x5c(sp)
sw s2,0x58(sp)
lw s2,0x4(a0)
lw a0,0x4(a1)
jalr t9
_or a1,s2,zero
beq v0,zero,0x002fd898
_lw gp,0x28(sp)
lw v1,0x0(s0)
or a2,v0,zero
or a1,s1,zero
lw t9,0x14(v1)
jalr t9
_or a0,s0,zero
lw ra,0x5c(sp)
lw s2,0x58(sp)
lw s1,0x54(sp)
lw s0,0x50(sp)
jr ra
_addiu sp,sp,0x60
lw v0,0x4(s1)
lw a0,0x4(v0)
lbu v0,0xac(a0)
bne v0,zero,0x002fd8f8
_addiu v0,sp,0x30
lw v0,0x0(s0)
lw t9,0x1c(v0)
jalr t9
_or a0,s0,zero
or a2,s2,zero
lw gp,0x28(sp)
or a1,v0,zero
lw a0,-0x7924(gp)
lw t9,-0x7814(gp)
jalr t9
_addiu a0,a0,0x7948
or v1,zero,zero
lw ra,0x5c(sp)
or v0,zero,zero
lw s2,0x58(sp)
lw s1,0x54(sp)
lw s0,0x50(sp)
jr ra
_addiu sp,sp,0x60
lw t9,-0x43ac(gp)
addiu a3,sp,0x40
sw v0,0x14(sp)
addiu v0,sp,0x38
addiu a2,sp,0x48
addiu a0,a0,0xac
sw v0,0x10(sp)
jalr t9
_or a1,s2,zero
beq v0,zero,0x002fd8ac
_lw t1,0x34(sp)
lw t0,0x30(sp)
lw v0,0x0(s0)
sw t1,0x24(sp)
sw t0,0x20(sp)
lw t1,0x3c(sp)
lw t0,0x38(sp)
lw a3,0x4c(sp)
lw a2,0x48(sp)
sw t1,0x1c(sp)
sw t0,0x18(sp)
lw t1,0x44(sp)
lw t0,0x40(sp)
sw t1,0x14(sp)
sw t0,0x10(sp)
lw t9,0x18(v0)
jalr t9
_or a0,s0,zero
b 0x002fd884
_lw ra,0x5c(sp)
(translation_unit "undefined4 FUN_002fd820(int *param_1,int param_2)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  int iVar3;\n  undefined1 local_30 [8];\n  undefined1 local_28 [8];\n  undefined1 local_20 [8];\n  undefined1 local_18 [8];\n  \n  iVar3 = param_1[1];\n  iVar1 = (*(code *)PTR_find_output_section_004c1e4c)(*(undefined4 *)(param_2 + 4),iVar3);\n  if (iVar1 != 0) {\n    uVar2 = (**(code **)(*param_1 + 0x14))(param_1,param_2,iVar1);\n    return uVar2;\n  }\n  iVar1 = *(int *)(*(int *)(param_2 + 4) + 4);\n  if ((*(char *)(iVar1 + 0xac) != '\0') &&\n     (iVar1 = (*(code *)PTR_get_output_section_info_004c4e94)\n                        (iVar1 + 0xac,iVar3,local_18,local_20,local_28,local_30), iVar1 != 0)) {\n    uVar2 = (**(code **)(*param_1 + 0x18))(param_1);\n    return uVar2;\n  }\n  uVar2 = (**(code **)(*param_1 + 0x1c))(param_1);\n  (*(code *)PTR_gold_error_004c1a2c)(PTR_s_in_a_linker_script_004c191c + 0x7948,uVar2,iVar3);\n  return 0;\n}\n\n" (function_definition "undefined4 FUN_002fd820(int *param_1,int param_2)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  int iVar3;\n  undefined1 local_30 [8];\n  undefined1 local_28 [8];\n  undefined1 local_20 [8];\n  undefined1 local_18 [8];\n  \n  iVar3 = param_1[1];\n  iVar1 = (*(code *)PTR_find_output_section_004c1e4c)(*(undefined4 *)(param_2 + 4),iVar3);\n  if (iVar1 != 0) {\n    uVar2 = (**(code **)(*param_1 + 0x14))(param_1,param_2,iVar1);\n    return uVar2;\n  }\n  iVar1 = *(int *)(*(int *)(param_2 + 4) + 4);\n  if ((*(char *)(iVar1 + 0xac) != '\0') &&\n     (iVar1 = (*(code *)PTR_get_output_section_info_004c4e94)\n                        (iVar1 + 0xac,iVar3,local_18,local_20,local_28,local_30), iVar1 != 0)) {\n    uVar2 = (**(code **)(*param_1 + 0x18))(param_1);\n    return uVar2;\n  }\n  uVar2 = (**(code **)(*param_1 + 0x1c))(param_1);\n  (*(code *)PTR_gold_error_004c1a2c)(PTR_s_in_a_linker_script_004c191c + 0x7948,uVar2,iVar3);\n  return 0;\n}" type_identifier (function_declarator "FUN_002fd820(int *param_1,int param_2)" identifier (parameter_list "(int *param_1,int param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  undefined4 uVar2;\n  int iVar3;\n  undefined1 local_30 [8];\n  undefined1 local_28 [8];\n  undefined1 local_20 [8];\n  undefined1 local_18 [8];\n  \n  iVar3 = param_1[1];\n  iVar1 = (*(code *)PTR_find_output_section_004c1e4c)(*(undefined4 *)(param_2 + 4),iVar3);\n  if (iVar1 != 0) {\n    uVar2 = (**(code **)(*param_1 + 0x14))(param_1,param_2,iVar1);\n    return uVar2;\n  }\n  iVar1 = *(int *)(*(int *)(param_2 + 4) + 4);\n  if ((*(char *)(iVar1 + 0xac) != '\0') &&\n     (iVar1 = (*(code *)PTR_get_output_section_info_004c4e94)\n                        (iVar1 + 0xac,iVar3,local_18,local_20,local_28,local_30), iVar1 != 0)) {\n    uVar2 = (**(code **)(*param_1 + 0x18))(param_1);\n    return uVar2;\n  }\n  uVar2 = (**(code **)(*param_1 + 0x1c))(param_1);\n  (*(code *)PTR_gold_error_004c1a2c)(PTR_s_in_a_linker_script_004c191c + 0x7948,uVar2,iVar3);\n  return 0;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined1 local_30 [8];" type_identifier (array_declarator "local_30 [8]" identifier [ number_literal ]) ;) (declaration "undefined1 local_28 [8];" type_identifier (array_declarator "local_28 [8]" identifier [ number_literal ]) ;) (declaration "undefined1 local_20 [8];" type_identifier (array_declarator "local_20 [8]" identifier [ number_literal ]) ;) (declaration "undefined1 local_18 [8];" type_identifier (array_declarator "local_18 [8]" identifier [ number_literal ]) ;) (expression_statement "iVar3 = param_1[1];" (assignment_expression "iVar3 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "iVar1 = (*(code *)PTR_find_output_section_004c1e4c)(*(undefined4 *)(param_2 + 4),iVar3);" (assignment_expression "iVar1 = (*(code *)PTR_find_output_section_004c1e4c)(*(undefined4 *)(param_2 + 4),iVar3)" identifier = (call_expression "(*(code *)PTR_find_output_section_004c1e4c)(*(undefined4 *)(param_2 + 4),iVar3)" (parenthesized_expression "(*(code *)PTR_find_output_section_004c1e4c)" ( (pointer_expression "*(code *)PTR_find_output_section_004c1e4c" * (cast_expression "(code *)PTR_find_output_section_004c1e4c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)(param_2 + 4),iVar3)" ( (pointer_expression "*(undefined4 *)(param_2 + 4)" * (cast_expression "(undefined4 *)(param_2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) , identifier )))) ;) (if_statement "if (iVar1 != 0) {\n    uVar2 = (**(code **)(*param_1 + 0x14))(param_1,param_2,iVar1);\n    return uVar2;\n  }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar2 = (**(code **)(*param_1 + 0x14))(param_1,param_2,iVar1);\n    return uVar2;\n  }" { (expression_statement "uVar2 = (**(code **)(*param_1 + 0x14))(param_1,param_2,iVar1);" (assignment_expression "uVar2 = (**(code **)(*param_1 + 0x14))(param_1,param_2,iVar1)" identifier = (call_expression "(**(code **)(*param_1 + 0x14))(param_1,param_2,iVar1)" (parenthesized_expression "(**(code **)(*param_1 + 0x14))" ( (pointer_expression "**(code **)(*param_1 + 0x14)" * (pointer_expression "*(code **)(*param_1 + 0x14)" * (cast_expression "(code **)(*param_1 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x14)" ( (binary_expression "*param_1 + 0x14" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(param_1,param_2,iVar1)" ( identifier , identifier , identifier )))) ;) (return_statement "return uVar2;" return identifier ;) })) (expression_statement "iVar1 = *(int *)(*(int *)(param_2 + 4) + 4);" (assignment_expression "iVar1 = *(int *)(*(int *)(param_2 + 4) + 4)" identifier = (pointer_expression "*(int *)(*(int *)(param_2 + 4) + 4)" * (cast_expression "(int *)(*(int *)(param_2 + 4) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_2 + 4) + 4)" ( (binary_expression "*(int *)(param_2 + 4) + 4" (pointer_expression "*(int *)(param_2 + 4)" * (cast_expression "(int *)(param_2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if ((*(char *)(iVar1 + 0xac) != '\0') &&\n     (iVar1 = (*(code *)PTR_get_output_section_info_004c4e94)\n                        (iVar1 + 0xac,iVar3,local_18,local_20,local_28,local_30), iVar1 != 0)) {\n    uVar2 = (**(code **)(*param_1 + 0x18))(param_1);\n    return uVar2;\n  }" if (parenthesized_expression "((*(char *)(iVar1 + 0xac) != '\0') &&\n     (iVar1 = (*(code *)PTR_get_output_section_info_004c4e94)\n                        (iVar1 + 0xac,iVar3,local_18,local_20,local_28,local_30), iVar1 != 0))" ( (binary_expression "(*(char *)(iVar1 + 0xac) != '\0') &&\n     (iVar1 = (*(code *)PTR_get_output_section_info_004c4e94)\n                        (iVar1 + 0xac,iVar3,local_18,local_20,local_28,local_30), iVar1 != 0)" (parenthesized_expression "(*(char *)(iVar1 + 0xac) != '\0')" ( (binary_expression "*(char *)(iVar1 + 0xac) != '\0'" (pointer_expression "*(char *)(iVar1 + 0xac)" * (cast_expression "(char *)(iVar1 + 0xac)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xac)" ( (binary_expression "iVar1 + 0xac" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(iVar1 = (*(code *)PTR_get_output_section_info_004c4e94)\n                        (iVar1 + 0xac,iVar3,local_18,local_20,local_28,local_30), iVar1 != 0)" ( (comma_expression "iVar1 = (*(code *)PTR_get_output_section_info_004c4e94)\n                        (iVar1 + 0xac,iVar3,local_18,local_20,local_28,local_30), iVar1 != 0" (assignment_expression "iVar1 = (*(code *)PTR_get_output_section_info_004c4e94)\n                        (iVar1 + 0xac,iVar3,local_18,local_20,local_28,local_30)" identifier = (call_expression "(*(code *)PTR_get_output_section_info_004c4e94)\n                        (iVar1 + 0xac,iVar3,local_18,local_20,local_28,local_30)" (parenthesized_expression "(*(code *)PTR_get_output_section_info_004c4e94)" ( (pointer_expression "*(code *)PTR_get_output_section_info_004c4e94" * (cast_expression "(code *)PTR_get_output_section_info_004c4e94" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar1 + 0xac,iVar3,local_18,local_20,local_28,local_30)" ( (binary_expression "iVar1 + 0xac" identifier + number_literal) , identifier , identifier , identifier , identifier , identifier )))) , (binary_expression "iVar1 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n    uVar2 = (**(code **)(*param_1 + 0x18))(param_1);\n    return uVar2;\n  }" { (expression_statement "uVar2 = (**(code **)(*param_1 + 0x18))(param_1);" (assignment_expression "uVar2 = (**(code **)(*param_1 + 0x18))(param_1)" identifier = (call_expression "(**(code **)(*param_1 + 0x18))(param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0x18))" ( (pointer_expression "**(code **)(*param_1 + 0x18)" * (pointer_expression "*(code **)(*param_1 + 0x18)" * (cast_expression "(code **)(*param_1 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x18)" ( (binary_expression "*param_1 + 0x18" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(param_1)" ( identifier )))) ;) (return_statement "return uVar2;" return identifier ;) })) (expression_statement "uVar2 = (**(code **)(*param_1 + 0x1c))(param_1);" (assignment_expression "uVar2 = (**(code **)(*param_1 + 0x1c))(param_1)" identifier = (call_expression "(**(code **)(*param_1 + 0x1c))(param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0x1c))" ( (pointer_expression "**(code **)(*param_1 + 0x1c)" * (pointer_expression "*(code **)(*param_1 + 0x1c)" * (cast_expression "(code **)(*param_1 + 0x1c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x1c)" ( (binary_expression "*param_1 + 0x1c" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "(*(code *)PTR_gold_error_004c1a2c)(PTR_s_in_a_linker_script_004c191c + 0x7948,uVar2,iVar3);" (call_expression "(*(code *)PTR_gold_error_004c1a2c)(PTR_s_in_a_linker_script_004c191c + 0x7948,uVar2,iVar3)" (parenthesized_expression "(*(code *)PTR_gold_error_004c1a2c)" ( (pointer_expression "*(code *)PTR_gold_error_004c1a2c" * (cast_expression "(code *)PTR_gold_error_004c1a2c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_s_in_a_linker_script_004c191c + 0x7948,uVar2,iVar3)" ( (binary_expression "PTR_s_in_a_linker_script_004c191c + 0x7948" identifier + number_literal) , identifier , identifier ))) ;) (return_statement "return 0;" 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/* WARNING: Enum "STT": Some values do not have unique names */\n/* DWARF original prototype: uint64_t value(Section_expression * this, Expression_eval_info * eei)\n    */\n\nuint64_t __thiscall\ngold::Section_expression::value(Section_expression *this,Expression_eval_info *eei)\n\n{\n  int iVar1;\n  _func_int_varargs **pp_Var2;\n  Script_options *pSVar3;\n  pointer pcVar4;\n  undefined8 uVar5;\n  uint64_t size;\n  uint64_t addralign;\n  uint64_t load_address;\n  uint64_t address;\n  \n  pcVar4 = (this->section_name_)._M_dataplus._M_p;\n  iVar1 = (*(code *)PTR_find_output_section_004c1e4c)(eei->layout,pcVar4);\n  if (iVar1 != 0) {\n    pp_Var2 = (this->super_Expression)._vptr_Expression;\n    iVar1 = (*pp_Var2[5])(this,eei,iVar1);\nLAB_002fd884:\n    return CONCAT44(iVar1,pp_Var2);\n  }\n  pSVar3 = eei->layout->script_options_;\n  if ((pSVar3->script_sections_).saw_sections_clause_ != false) {\n    uVar5 = (*(code *)PTR_get_output_section_info_004c4e94)\n                      (&pSVar3->script_sections_,pcVar4,&address,&load_address,&addralign,&size);\n    pp_Var2 = (_func_int_varargs **)uVar5;\n    if ((int)((ulonglong)uVar5 >> 0x20) != 0) {\n      iVar1 = (*(this->super_Expression)._vptr_Expression[6])(this);\n      goto LAB_002fd884;\n    }\n  }\n  iVar1 = (*(this->super_Expression)._vptr_Expression[7])(this);\n  (*(code *)PTR_gold_error_004c1a2c)(PTR_s_in_a_linker_script_004c191c + 0x7948,iVar1,pcVar4);\n  return 0;\n}\n\n" comment comment comment comment comment comment comment comment (function_definition "uint64_t __thiscall\ngold::Section_expression::value(Section_expression *this,Expression_eval_info *eei)\n\n{\n  int iVar1;\n  _func_int_varargs **pp_Var2;\n  Script_options *pSVar3;\n  pointer pcVar4;\n  undefined8 uVar5;\n  uint64_t size;\n  uint64_t addralign;\n  uint64_t load_address;\n  uint64_t address;\n  \n  pcVar4 = (this->section_name_)._M_dataplus._M_p;\n  iVar1 = (*(code *)PTR_find_output_section_004c1e4c)(eei->layout,pcVar4);\n  if (iVar1 != 0) {\n    pp_Var2 = (this->super_Expression)._vptr_Expression;\n    iVar1 = (*pp_Var2[5])(this,eei,iVar1);\nLAB_002fd884:\n    return CONCAT44(iVar1,pp_Var2);\n  }\n  pSVar3 = eei->layout->script_options_;\n  if ((pSVar3->script_sections_).saw_sections_clause_ != false) {\n    uVar5 = (*(code *)PTR_get_output_section_info_004c4e94)\n                      (&pSVar3->script_sections_,pcVar4,&address,&load_address,&addralign,&size);\n    pp_Var2 = (_func_int_varargs **)uVar5;\n    if ((int)((ulonglong)uVar5 >> 0x20) != 0) {\n      iVar1 = (*(this->super_Expression)._vptr_Expression[6])(this);\n      goto LAB_002fd884;\n    }\n  }\n  iVar1 = (*(this->super_Expression)._vptr_Expression[7])(this);\n  (*(code *)PTR_gold_error_004c1a2c)(PTR_s_in_a_linker_script_004c191c + 0x7948,iVar1,pcVar4);\n  return 0;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Section_expression::" identifier : : identifier : :) (function_declarator "value(Section_expression *this,Expression_eval_info *eei)" identifier (parameter_list "(Section_expression *this,Expression_eval_info *eei)" ( (parameter_declaration "Section_expression *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Expression_eval_info *eei" type_identifier (pointer_declarator "*eei" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  _func_int_varargs **pp_Var2;\n  Script_options *pSVar3;\n  pointer pcVar4;\n  undefined8 uVar5;\n  uint64_t size;\n  uint64_t addralign;\n  uint64_t load_address;\n  uint64_t address;\n  \n  pcVar4 = (this->section_name_)._M_dataplus._M_p;\n  iVar1 = (*(code *)PTR_find_output_section_004c1e4c)(eei->layout,pcVar4);\n  if (iVar1 != 0) {\n    pp_Var2 = (this->super_Expression)._vptr_Expression;\n    iVar1 = (*pp_Var2[5])(this,eei,iVar1);\nLAB_002fd884:\n    return CONCAT44(iVar1,pp_Var2);\n  }\n  pSVar3 = eei->layout->script_options_;\n  if ((pSVar3->script_sections_).saw_sections_clause_ != false) {\n    uVar5 = (*(code *)PTR_get_output_section_info_004c4e94)\n                      (&pSVar3->script_sections_,pcVar4,&address,&load_address,&addralign,&size);\n    pp_Var2 = (_func_int_varargs **)uVar5;\n    if ((int)((ulonglong)uVar5 >> 0x20) != 0) {\n      iVar1 = (*(this->super_Expression)._vptr_Expression[6])(this);\n      goto LAB_002fd884;\n    }\n  }\n  iVar1 = (*(this->super_Expression)._vptr_Expression[7])(this);\n  (*(code *)PTR_gold_error_004c1a2c)(PTR_s_in_a_linker_script_004c191c + 0x7948,iVar1,pcVar4);\n  return 0;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "_func_int_varargs **pp_Var2;" type_identifier (pointer_declarator "**pp_Var2" * (pointer_declarator "*pp_Var2" * identifier)) ;) (declaration "Script_options *pSVar3;" type_identifier (pointer_declarator "*pSVar3" * identifier) ;) (declaration "pointer pcVar4;" type_identifier identifier ;) (declaration "undefined8 uVar5;" type_identifier identifier ;) (declaration "uint64_t size;" primitive_type identifier ;) (declaration "uint64_t addralign;" primitive_type identifier ;) (declaration "uint64_t load_address;" primitive_type identifier ;) (declaration "uint64_t address;" primitive_type identifier ;) (expression_statement "pcVar4 = (this->section_name_)._M_dataplus._M_p;" (assignment_expression "pcVar4 = (this->section_name_)._M_dataplus._M_p" identifier = (field_expression "(this->section_name_)._M_dataplus._M_p" (field_expression "(this->section_name_)._M_dataplus" (parenthesized_expression "(this->section_name_)" ( (field_expression "this->section_name_" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "iVar1 = (*(code *)PTR_find_output_section_004c1e4c)(eei->layout,pcVar4);" (assignment_expression "iVar1 = (*(code *)PTR_find_output_section_004c1e4c)(eei->layout,pcVar4)" identifier = (call_expression "(*(code *)PTR_find_output_section_004c1e4c)(eei->layout,pcVar4)" (parenthesized_expression "(*(code *)PTR_find_output_section_004c1e4c)" ( (pointer_expression "*(code *)PTR_find_output_section_004c1e4c" * (cast_expression "(code *)PTR_find_output_section_004c1e4c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(eei->layout,pcVar4)" ( (field_expression "eei->layout" identifier -> field_identifier) , identifier )))) ;) (if_statement "if (iVar1 != 0) {\n    pp_Var2 = (this->super_Expression)._vptr_Expression;\n    iVar1 = (*pp_Var2[5])(this,eei,iVar1);\nLAB_002fd884:\n    return CONCAT44(iVar1,pp_Var2);\n  }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n    pp_Var2 = (this->super_Expression)._vptr_Expression;\n    iVar1 = (*pp_Var2[5])(this,eei,iVar1);\nLAB_002fd884:\n    return CONCAT44(iVar1,pp_Var2);\n  }" { (expression_statement "pp_Var2 = (this->super_Expression)._vptr_Expression;" (assignment_expression "pp_Var2 = (this->super_Expression)._vptr_Expression" identifier = (field_expression "(this->super_Expression)._vptr_Expression" (parenthesized_expression "(this->super_Expression)" ( (field_expression "this->super_Expression" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "iVar1 = (*pp_Var2[5])(this,eei,iVar1);" (assignment_expression "iVar1 = (*pp_Var2[5])(this,eei,iVar1)" identifier = (call_expression "(*pp_Var2[5])(this,eei,iVar1)" (parenthesized_expression "(*pp_Var2[5])" ( (pointer_expression "*pp_Var2[5]" * (subscript_expression "pp_Var2[5]" identifier [ number_literal ])) )) (argument_list "(this,eei,iVar1)" ( identifier , identifier , identifier )))) ;) (labeled_statement "LAB_002fd884:\n    return CONCAT44(iVar1,pp_Var2);" statement_identifier : (return_statement "return CONCAT44(iVar1,pp_Var2);" return (call_expression "CONCAT44(iVar1,pp_Var2)" identifier (argument_list "(iVar1,pp_Var2)" ( identifier , identifier ))) ;)) })) (expression_statement "pSVar3 = eei->layout->script_options_;" (assignment_expression "pSVar3 = eei->layout->script_options_" identifier = (field_expression "eei->layout->script_options_" (field_expression "eei->layout" identifier -> field_identifier) -> field_identifier)) ;) (if_statement "if ((pSVar3->script_sections_).saw_sections_clause_ != false) {\n    uVar5 = (*(code *)PTR_get_output_section_info_004c4e94)\n                      (&pSVar3->script_sections_,pcVar4,&address,&load_address,&addralign,&size);\n    pp_Var2 = (_func_int_varargs **)uVar5;\n    if ((int)((ulonglong)uVar5 >> 0x20) != 0) {\n      iVar1 = (*(this->super_Expression)._vptr_Expression[6])(this);\n      goto LAB_002fd884;\n    }\n  }" if (parenthesized_expression "((pSVar3->script_sections_).saw_sections_clause_ != false)" ( (binary_expression "(pSVar3->script_sections_).saw_sections_clause_ != false" (field_expression "(pSVar3->script_sections_).saw_sections_clause_" (parenthesized_expression "(pSVar3->script_sections_)" ( (field_expression "pSVar3->script_sections_" identifier -> field_identifier) )) . field_identifier) != false) )) (compound_statement "{\n    uVar5 = (*(code *)PTR_get_output_section_info_004c4e94)\n                      (&pSVar3->script_sections_,pcVar4,&address,&load_address,&addralign,&size);\n    pp_Var2 = (_func_int_varargs **)uVar5;\n    if ((int)((ulonglong)uVar5 >> 0x20) != 0) {\n      iVar1 = (*(this->super_Expression)._vptr_Expression[6])(this);\n      goto LAB_002fd884;\n    }\n  }" { (expression_statement "uVar5 = (*(code *)PTR_get_output_section_info_004c4e94)\n                      (&pSVar3->script_sections_,pcVar4,&address,&load_address,&addralign,&size);" (assignment_expression "uVar5 = (*(code *)PTR_get_output_section_info_004c4e94)\n                      (&pSVar3->script_sections_,pcVar4,&address,&load_address,&addralign,&size)" identifier = (call_expression "(*(code *)PTR_get_output_section_info_004c4e94)\n                      (&pSVar3->script_sections_,pcVar4,&address,&load_address,&addralign,&size)" (parenthesized_expression "(*(code *)PTR_get_output_section_info_004c4e94)" ( (pointer_expression "*(code *)PTR_get_output_section_info_004c4e94" * (cast_expression "(code *)PTR_get_output_section_info_004c4e94" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&pSVar3->script_sections_,pcVar4,&address,&load_address,&addralign,&size)" ( (pointer_expression "&pSVar3->script_sections_" & (field_expression "pSVar3->script_sections_" identifier -> field_identifier)) , identifier , (pointer_expression "&address" & identifier) , (pointer_expression "&load_address" & identifier) , (pointer_expression "&addralign" & identifier) , (pointer_expression "&size" & identifier) )))) ;) (expression_statement "pp_Var2 = (_func_int_varargs **)uVar5;" (assignment_expression "pp_Var2 = (_func_int_varargs **)uVar5" identifier = (cast_expression "(_func_int_varargs **)uVar5" ( (type_descriptor "_func_int_varargs **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ;) (if_statement "if ((int)((ulonglong)uVar5 >> 0x20) != 0) {\n      iVar1 = (*(this->super_Expression)._vptr_Expression[6])(this);\n      goto LAB_002fd884;\n    }" if (parenthesized_expression "((int)((ulonglong)uVar5 >> 0x20) != 0)" ( (binary_expression "(int)((ulonglong)uVar5 >> 0x20) != 0" (cast_expression "(int)((ulonglong)uVar5 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar5 >> 0x20)" ( (binary_expression "(ulonglong)uVar5 >> 0x20" (cast_expression "(ulonglong)uVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) != number_literal) )) (compound_statement "{\n      iVar1 = (*(this->super_Expression)._vptr_Expression[6])(this);\n      goto LAB_002fd884;\n    }" { (expression_statement "iVar1 = (*(this->super_Expression)._vptr_Expression[6])(this);" (assignment_expression "iVar1 = (*(this->super_Expression)._vptr_Expression[6])(this)" identifier = (call_expression "(*(this->super_Expression)._vptr_Expression[6])(this)" (parenthesized_expression "(*(this->super_Expression)._vptr_Expression[6])" ( (pointer_expression "*(this->super_Expression)._vptr_Expression[6]" * (subscript_expression "(this->super_Expression)._vptr_Expression[6]" (field_expression "(this->super_Expression)._vptr_Expression" (parenthesized_expression "(this->super_Expression)" ( (field_expression "this->super_Expression" identifier -> field_identifier) )) . field_identifier) [ number_literal ])) )) (argument_list "(this)" ( identifier )))) ;) (goto_statement "goto LAB_002fd884;" goto statement_identifier ;) })) })) (expression_statement "iVar1 = (*(this->super_Expression)._vptr_Expression[7])(this);" (assignment_expression "iVar1 = (*(this->super_Expression)._vptr_Expression[7])(this)" identifier = (call_expression "(*(this->super_Expression)._vptr_Expression[7])(this)" (parenthesized_expression "(*(this->super_Expression)._vptr_Expression[7])" ( (pointer_expression "*(this->super_Expression)._vptr_Expression[7]" * (subscript_expression "(this->super_Expression)._vptr_Expression[7]" (field_expression "(this->super_Expression)._vptr_Expression" (parenthesized_expression "(this->super_Expression)" ( (field_expression "this->super_Expression" identifier -> field_identifier) )) . field_identifier) [ number_literal ])) )) (argument_list "(this)" ( identifier )))) ;) (expression_statement "(*(code *)PTR_gold_error_004c1a2c)(PTR_s_in_a_linker_script_004c191c + 0x7948,iVar1,pcVar4);" (call_expression "(*(code *)PTR_gold_error_004c1a2c)(PTR_s_in_a_linker_script_004c191c + 0x7948,iVar1,pcVar4)" (parenthesized_expression "(*(code *)PTR_gold_error_004c1a2c)" ( (pointer_expression "*(code *)PTR_gold_error_004c1a2c" * (cast_expression "(code *)PTR_gold_error_004c1a2c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_s_in_a_linker_script_004c191c + 0x7948,iVar1,pcVar4)" ( (binary_expression "PTR_s_in_a_linker_script_004c191c + 0x7948" identifier + number_literal) , identifier , identifier ))) ;) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "undefined4 FUN_002fd820(int *param_1,int param_2)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  int iVar3;\n  undefined1 local_30 [8];\n  undefined1 local_28 [8];\n  undefined1 local_20 [8];\n  undefined1 local_18 [8];\n  \n  iVar3 = param_1[1];\n  iVar1 = (*(code *)PTR_find_output_section_004c1e4c)(*(undefined4 *)(param_2 + 4),iVar3);\n  if (iVar1 != 0) {\n    uVar2 = (**(code **)(*param_1 + 0x14))(param_1,param_2,iVar1);\n    return uVar2;\n  }\n  iVar1 = *(int *)(*(int *)(param_2 + 4) + 4);\n  if ((*(char *)(iVar1 + 0xac) != '\0') &&\n     (iVar1 = (*(code *)PTR_get_output_section_info_004c4e94)\n                        (iVar1 + 0xac,iVar3,local_18,local_20,local_28,local_30), iVar1 != 0)) {\n    uVar2 = (**(code **)(*param_1 + 0x18))(param_1);\n    return uVar2;\n  }\n  uVar2 = (**(code **)(*param_1 + 0x1c))(param_1);\n  (*(code *)PTR_gold_error_004c1a2c)(PTR_s_in_a_linker_script_004c191c + 0x7948,uVar2,iVar3);\n  return 0;\n}\n\n" (function_definition "undefined4 FUN_002fd820(int *param_1,int param_2)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  int iVar3;\n  undefined1 local_30 [8];\n  undefined1 local_28 [8];\n  undefined1 local_20 [8];\n  undefined1 local_18 [8];\n  \n  iVar3 = param_1[1];\n  iVar1 = (*(code *)PTR_find_output_section_004c1e4c)(*(undefined4 *)(param_2 + 4),iVar3);\n  if (iVar1 != 0) {\n    uVar2 = (**(code **)(*param_1 + 0x14))(param_1,param_2,iVar1);\n    return uVar2;\n  }\n  iVar1 = *(int *)(*(int *)(param_2 + 4) + 4);\n  if ((*(char *)(iVar1 + 0xac) != '\0') &&\n     (iVar1 = (*(code *)PTR_get_output_section_info_004c4e94)\n                        (iVar1 + 0xac,iVar3,local_18,local_20,local_28,local_30), iVar1 != 0)) {\n    uVar2 = (**(code **)(*param_1 + 0x18))(param_1);\n    return uVar2;\n  }\n  uVar2 = (**(code **)(*param_1 + 0x1c))(param_1);\n  (*(code *)PTR_gold_error_004c1a2c)(PTR_s_in_a_linker_script_004c191c + 0x7948,uVar2,iVar3);\n  return 0;\n}" type_identifier (function_declarator "FUN_002fd820(int *param_1,int param_2)" identifier (parameter_list "(int *param_1,int param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  undefined4 uVar2;\n  int iVar3;\n  undefined1 local_30 [8];\n  undefined1 local_28 [8];\n  undefined1 local_20 [8];\n  undefined1 local_18 [8];\n  \n  iVar3 = param_1[1];\n  iVar1 = (*(code *)PTR_find_output_section_004c1e4c)(*(undefined4 *)(param_2 + 4),iVar3);\n  if (iVar1 != 0) {\n    uVar2 = (**(code **)(*param_1 + 0x14))(param_1,param_2,iVar1);\n    return uVar2;\n  }\n  iVar1 = *(int *)(*(int *)(param_2 + 4) + 4);\n  if ((*(char *)(iVar1 + 0xac) != '\0') &&\n     (iVar1 = (*(code *)PTR_get_output_section_info_004c4e94)\n                        (iVar1 + 0xac,iVar3,local_18,local_20,local_28,local_30), iVar1 != 0)) {\n    uVar2 = (**(code **)(*param_1 + 0x18))(param_1);\n    return uVar2;\n  }\n  uVar2 = (**(code **)(*param_1 + 0x1c))(param_1);\n  (*(code *)PTR_gold_error_004c1a2c)(PTR_s_in_a_linker_script_004c191c + 0x7948,uVar2,iVar3);\n  return 0;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined1 local_30 [8];" type_identifier (array_declarator "local_30 [8]" identifier [ number_literal ]) ;) (declaration "undefined1 local_28 [8];" type_identifier (array_declarator "local_28 [8]" identifier [ number_literal ]) ;) (declaration "undefined1 local_20 [8];" type_identifier (array_declarator "local_20 [8]" identifier [ number_literal ]) ;) (declaration "undefined1 local_18 [8];" type_identifier (array_declarator "local_18 [8]" identifier [ number_literal ]) ;) (expression_statement "iVar3 = param_1[1];" (assignment_expression "iVar3 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "iVar1 = (*(code *)PTR_find_output_section_004c1e4c)(*(undefined4 *)(param_2 + 4),iVar3);" (assignment_expression "iVar1 = (*(code *)PTR_find_output_section_004c1e4c)(*(undefined4 *)(param_2 + 4),iVar3)" identifier = (call_expression "(*(code *)PTR_find_output_section_004c1e4c)(*(undefined4 *)(param_2 + 4),iVar3)" (parenthesized_expression "(*(code *)PTR_find_output_section_004c1e4c)" ( (pointer_expression "*(code *)PTR_find_output_section_004c1e4c" * (cast_expression "(code *)PTR_find_output_section_004c1e4c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)(param_2 + 4),iVar3)" ( (pointer_expression "*(undefined4 *)(param_2 + 4)" * (cast_expression "(undefined4 *)(param_2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) , identifier )))) ;) (if_statement "if (iVar1 != 0) {\n    uVar2 = (**(code **)(*param_1 + 0x14))(param_1,param_2,iVar1);\n    return uVar2;\n  }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar2 = (**(code **)(*param_1 + 0x14))(param_1,param_2,iVar1);\n    return uVar2;\n  }" { (expression_statement "uVar2 = (**(code **)(*param_1 + 0x14))(param_1,param_2,iVar1);" (assignment_expression "uVar2 = (**(code **)(*param_1 + 0x14))(param_1,param_2,iVar1)" identifier = (call_expression "(**(code **)(*param_1 + 0x14))(param_1,param_2,iVar1)" (parenthesized_expression "(**(code **)(*param_1 + 0x14))" ( (pointer_expression "**(code **)(*param_1 + 0x14)" * (pointer_expression "*(code **)(*param_1 + 0x14)" * (cast_expression "(code **)(*param_1 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x14)" ( (binary_expression "*param_1 + 0x14" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(param_1,param_2,iVar1)" ( identifier , identifier , identifier )))) ;) (return_statement "return uVar2;" return identifier ;) })) (expression_statement "iVar1 = *(int *)(*(int *)(param_2 + 4) + 4);" (assignment_expression "iVar1 = *(int *)(*(int *)(param_2 + 4) + 4)" identifier = (pointer_expression "*(int *)(*(int *)(param_2 + 4) + 4)" * (cast_expression "(int *)(*(int *)(param_2 + 4) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_2 + 4) + 4)" ( (binary_expression "*(int *)(param_2 + 4) + 4" (pointer_expression "*(int *)(param_2 + 4)" * (cast_expression "(int *)(param_2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if ((*(char *)(iVar1 + 0xac) != '\0') &&\n     (iVar1 = (*(code *)PTR_get_output_section_info_004c4e94)\n                        (iVar1 + 0xac,iVar3,local_18,local_20,local_28,local_30), iVar1 != 0)) {\n    uVar2 = (**(code **)(*param_1 + 0x18))(param_1);\n    return uVar2;\n  }" if (parenthesized_expression "((*(char *)(iVar1 + 0xac) != '\0') &&\n     (iVar1 = (*(code *)PTR_get_output_section_info_004c4e94)\n                        (iVar1 + 0xac,iVar3,local_18,local_20,local_28,local_30), iVar1 != 0))" ( (binary_expression "(*(char *)(iVar1 + 0xac) != '\0') &&\n     (iVar1 = (*(code *)PTR_get_output_section_info_004c4e94)\n                        (iVar1 + 0xac,iVar3,local_18,local_20,local_28,local_30), iVar1 != 0)" (parenthesized_expression "(*(char *)(iVar1 + 0xac) != '\0')" ( (binary_expression "*(char *)(iVar1 + 0xac) != '\0'" (pointer_expression "*(char *)(iVar1 + 0xac)" * (cast_expression "(char *)(iVar1 + 0xac)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xac)" ( (binary_expression "iVar1 + 0xac" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(iVar1 = (*(code *)PTR_get_output_section_info_004c4e94)\n                        (iVar1 + 0xac,iVar3,local_18,local_20,local_28,local_30), iVar1 != 0)" ( (comma_expression "iVar1 = (*(code *)PTR_get_output_section_info_004c4e94)\n                        (iVar1 + 0xac,iVar3,local_18,local_20,local_28,local_30), iVar1 != 0" (assignment_expression "iVar1 = (*(code *)PTR_get_output_section_info_004c4e94)\n                        (iVar1 + 0xac,iVar3,local_18,local_20,local_28,local_30)" identifier = (call_expression "(*(code *)PTR_get_output_section_info_004c4e94)\n                        (iVar1 + 0xac,iVar3,local_18,local_20,local_28,local_30)" (parenthesized_expression "(*(code *)PTR_get_output_section_info_004c4e94)" ( (pointer_expression "*(code *)PTR_get_output_section_info_004c4e94" * (cast_expression "(code *)PTR_get_output_section_info_004c4e94" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar1 + 0xac,iVar3,local_18,local_20,local_28,local_30)" ( (binary_expression "iVar1 + 0xac" identifier + number_literal) , identifier , identifier , identifier , identifier , identifier )))) , (binary_expression "iVar1 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n    uVar2 = (**(code **)(*param_1 + 0x18))(param_1);\n    return uVar2;\n  }" { (expression_statement "uVar2 = (**(code **)(*param_1 + 0x18))(param_1);" (assignment_expression "uVar2 = (**(code **)(*param_1 + 0x18))(param_1)" identifier = (call_expression "(**(code **)(*param_1 + 0x18))(param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0x18))" ( (pointer_expression "**(code **)(*param_1 + 0x18)" * (pointer_expression "*(code **)(*param_1 + 0x18)" * (cast_expression "(code **)(*param_1 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x18)" ( (binary_expression "*param_1 + 0x18" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(param_1)" ( identifier )))) ;) (return_statement "return uVar2;" return identifier ;) })) (expression_statement "uVar2 = (**(code **)(*param_1 + 0x1c))(param_1);" (assignment_expression "uVar2 = (**(code **)(*param_1 + 0x1c))(param_1)" identifier = (call_expression "(**(code **)(*param_1 + 0x1c))(param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0x1c))" ( (pointer_expression "**(code **)(*param_1 + 0x1c)" * (pointer_expression "*(code **)(*param_1 + 0x1c)" * (cast_expression "(code **)(*param_1 + 0x1c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x1c)" ( (binary_expression "*param_1 + 0x1c" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "(*(code *)PTR_gold_error_004c1a2c)(PTR_s_in_a_linker_script_004c191c + 0x7948,uVar2,iVar3);" (call_expression "(*(code *)PTR_gold_error_004c1a2c)(PTR_s_in_a_linker_script_004c191c + 0x7948,uVar2,iVar3)" (parenthesized_expression "(*(code *)PTR_gold_error_004c1a2c)" ( (pointer_expression "*(code *)PTR_gold_error_004c1a2c" * (cast_expression "(code *)PTR_gold_error_004c1a2c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_s_in_a_linker_script_004c191c + 0x7948,uVar2,iVar3)" ( (binary_expression "PTR_s_in_a_linker_script_004c191c + 0x7948" identifier + number_literal) , identifier , identifier ))) ;) (return_statement "return 0;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT )))) ;) (return_statement return IDENT ;) })) (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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + LIT) , IDENT , IDENT , IDENT , IDENT , IDENT )))) , (binary_expression IDENT != LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + LIT) , IDENT , IDENT ))) ;) (return_statement return LIT ;) })))
(function_definition "undefined4 FUN_002fd820(int *param_1,int param_2)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  int iVar3;\n  undefined1 local_30 [8];\n  undefined1 local_28 [8];\n  undefined1 local_20 [8];\n  undefined1 local_18 [8];\n  \n  iVar3 = param_1[1];\n  iVar1 = (*(code *)PTR_find_output_section_004c1e4c)(*(undefined4 *)(param_2 + 4),iVar3);\n  if (iVar1 != 0) {\n    uVar2 = (**(code **)(*param_1 + 0x14))(param_1,param_2,iVar1);\n    return uVar2;\n  }\n  iVar1 = *(int *)(*(int *)(param_2 + 4) + 4);\n  if ((*(char *)(iVar1 + 0xac) != '\0') &&\n     (iVar1 = (*(code *)PTR_get_output_section_info_004c4e94)\n                        (iVar1 + 0xac,iVar3,local_18,local_20,local_28,local_30), iVar1 != 0)) {\n    uVar2 = (**(code **)(*param_1 + 0x18))(param_1);\n    return uVar2;\n  }\n  uVar2 = (**(code **)(*param_1 + 0x1c))(param_1);\n  (*(code *)PTR_gold_error_004c1a2c)(PTR_s_in_a_linker_script_004c191c + 0x7948,uVar2,iVar3);\n  return 0;\n}" (type_identifier "undefined4") (function_declarator "FUN_002fd820(int *param_1,int param_2)" (identifier "FUN_002fd820") (parameter_list "(int *param_1,int param_2)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) () ")"))) (compound_statement "{\n  int iVar1;\n  undefined4 uVar2;\n  int iVar3;\n  undefined1 local_30 [8];\n  undefined1 local_28 [8];\n  undefined1 local_20 [8];\n  undefined1 local_18 [8];\n  \n  iVar3 = param_1[1];\n  iVar1 = (*(code *)PTR_find_output_section_004c1e4c)(*(undefined4 *)(param_2 + 4),iVar3);\n  if (iVar1 != 0) {\n    uVar2 = (**(code **)(*param_1 + 0x14))(param_1,param_2,iVar1);\n    return uVar2;\n  }\n  iVar1 = *(int *)(*(int *)(param_2 + 4) + 4);\n  if ((*(char *)(iVar1 + 0xac) != '\0') &&\n     (iVar1 = (*(code *)PTR_get_output_section_info_004c4e94)\n                        (iVar1 + 0xac,iVar3,local_18,local_20,local_28,local_30), iVar1 != 0)) {\n    uVar2 = (**(code **)(*param_1 + 0x18))(param_1);\n    return uVar2;\n  }\n  uVar2 = (**(code **)(*param_1 + 0x1c))(param_1);\n  (*(code *)PTR_gold_error_004c1a2c)(PTR_s_in_a_linker_script_004c191c + 0x7948,uVar2,iVar3);\n  return 0;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (identifier "uVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "undefined1 local_30 [8];" (type_identifier "undefined1") (array_declarator "local_30 [8]" (identifier "local_30") ([ "[") (number_literal "8") (] "]")) (; ";")) (declaration "undefined1 local_28 [8];" (type_identifier "undefined1") (array_declarator "local_28 [8]" (identifier "local_28") ([ "[") (number_literal "8") (] "]")) (; ";")) (declaration "undefined1 local_20 [8];" (type_identifier "undefined1") (array_declarator "local_20 [8]" (identifier "local_20") ([ "[") (number_literal "8") (] "]")) (; ";")) (declaration "undefined1 local_18 [8];" (type_identifier "undefined1") (array_declarator "local_18 [8]" (identifier "local_18") ([ "[") (number_literal "8") (] "]")) (; ";")) (expression_statement "iVar3 = param_1[1];" (assignment_expression "iVar3 = param_1[1]" (identifier "iVar3") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "iVar1 = (*(code *)PTR_find_output_section_004c1e4c)(*(undefined4 *)(param_2 + 4),iVar3);" (assignment_expression "iVar1 = (*(code *)PTR_find_output_section_004c1e4c)(*(undefined4 *)(param_2 + 4),iVar3)" (identifier "iVar1") (= "=") (call_expression "(*(code *)PTR_find_output_section_004c1e4c)(*(undefined4 *)(param_2 + 4),iVar3)" (parenthesized_expression "(*(code *)PTR_find_output_section_004c1e4c)" (( "(") (pointer_expression "*(code *)PTR_find_output_section_004c1e4c" (* "*") (cast_expression "(code *)PTR_find_output_section_004c1e4c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_find_output_section_004c1e4c"))) () ")")) (argument_list "(*(undefined4 *)(param_2 + 4),iVar3)" (( "(") (pointer_expression "*(undefined4 *)(param_2 + 4)" (* "*") (cast_expression "(undefined4 *)(param_2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")")))) (, ",") (identifier "iVar3") () ")")))) (; ";")) (if_statement "if (iVar1 != 0) {\n    uVar2 = (**(code **)(*param_1 + 0x14))(param_1,param_2,iVar1);\n    return uVar2;\n  }" (if "if") (parenthesized_expression "(iVar1 != 0)" (( "(") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar2 = (**(code **)(*param_1 + 0x14))(param_1,param_2,iVar1);\n    return uVar2;\n  }" ({ "{") (expression_statement "uVar2 = (**(code **)(*param_1 + 0x14))(param_1,param_2,iVar1);" (assignment_expression "uVar2 = (**(code **)(*param_1 + 0x14))(param_1,param_2,iVar1)" (identifier "uVar2") (= "=") (call_expression "(**(code **)(*param_1 + 0x14))(param_1,param_2,iVar1)" (parenthesized_expression "(**(code **)(*param_1 + 0x14))" (( "(") (pointer_expression "**(code **)(*param_1 + 0x14)" (* "*") (pointer_expression "*(code **)(*param_1 + 0x14)" (* "*") (cast_expression "(code **)(*param_1 + 0x14)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 0x14)" (( "(") (binary_expression "*param_1 + 0x14" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (argument_list "(param_1,param_2,iVar1)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "iVar1") () ")")))) (; ";")) (return_statement "return uVar2;" (return "return") (identifier "uVar2") (; ";")) (} "}"))) (expression_statement "iVar1 = *(int *)(*(int *)(param_2 + 4) + 4);" (assignment_expression "iVar1 = *(int *)(*(int *)(param_2 + 4) + 4)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(*(int *)(param_2 + 4) + 4)" (* "*") (cast_expression "(int *)(*(int *)(param_2 + 4) + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_2 + 4) + 4)" (( "(") (binary_expression "*(int *)(param_2 + 4) + 4" (pointer_expression "*(int *)(param_2 + 4)" (* "*") (cast_expression "(int *)(param_2 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if ((*(char *)(iVar1 + 0xac) != '\0') &&\n     (iVar1 = (*(code *)PTR_get_output_section_info_004c4e94)\n                        (iVar1 + 0xac,iVar3,local_18,local_20,local_28,local_30), iVar1 != 0)) {\n    uVar2 = (**(code **)(*param_1 + 0x18))(param_1);\n    return uVar2;\n  }" (if "if") (parenthesized_expression "((*(char *)(iVar1 + 0xac) != '\0') &&\n     (iVar1 = (*(code *)PTR_get_output_section_info_004c4e94)\n                        (iVar1 + 0xac,iVar3,local_18,local_20,local_28,local_30), iVar1 != 0))" (( "(") (binary_expression "(*(char *)(iVar1 + 0xac) != '\0') &&\n     (iVar1 = (*(code *)PTR_get_output_section_info_004c4e94)\n                        (iVar1 + 0xac,iVar3,local_18,local_20,local_28,local_30), iVar1 != 0)" (parenthesized_expression "(*(char *)(iVar1 + 0xac) != '\0')" (( "(") (binary_expression "*(char *)(iVar1 + 0xac) != '\0'" (pointer_expression "*(char *)(iVar1 + 0xac)" (* "*") (cast_expression "(char *)(iVar1 + 0xac)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0xac)" (( "(") (binary_expression "iVar1 + 0xac" (identifier "iVar1") (+ "+") (number_literal "0xac")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(iVar1 = (*(code *)PTR_get_output_section_info_004c4e94)\n                        (iVar1 + 0xac,iVar3,local_18,local_20,local_28,local_30), iVar1 != 0)" (( "(") (comma_expression "iVar1 = (*(code *)PTR_get_output_section_info_004c4e94)\n                        (iVar1 + 0xac,iVar3,local_18,local_20,local_28,local_30), iVar1 != 0" (assignment_expression "iVar1 = (*(code *)PTR_get_output_section_info_004c4e94)\n                        (iVar1 + 0xac,iVar3,local_18,local_20,local_28,local_30)" (identifier "iVar1") (= "=") (call_expression "(*(code *)PTR_get_output_section_info_004c4e94)\n                        (iVar1 + 0xac,iVar3,local_18,local_20,local_28,local_30)" (parenthesized_expression "(*(code *)PTR_get_output_section_info_004c4e94)" (( "(") (pointer_expression "*(code *)PTR_get_output_section_info_004c4e94" (* "*") (cast_expression "(code *)PTR_get_output_section_info_004c4e94" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_get_output_section_info_004c4e94"))) () ")")) (argument_list "(iVar1 + 0xac,iVar3,local_18,local_20,local_28,local_30)" (( "(") (binary_expression "iVar1 + 0xac" (identifier "iVar1") (+ "+") (number_literal "0xac")) (, ",") (identifier "iVar3") (, ",") (identifier "local_18") (, ",") (identifier "local_20") (, ",") (identifier "local_28") (, ",") (identifier "local_30") () ")")))) (, ",") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n    uVar2 = (**(code **)(*param_1 + 0x18))(param_1);\n    return uVar2;\n  }" ({ "{") (expression_statement "uVar2 = (**(code **)(*param_1 + 0x18))(param_1);" (assignment_expression "uVar2 = (**(code **)(*param_1 + 0x18))(param_1)" (identifier "uVar2") (= "=") (call_expression "(**(code **)(*param_1 + 0x18))(param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0x18))" (( "(") (pointer_expression "**(code **)(*param_1 + 0x18)" (* "*") (pointer_expression "*(code **)(*param_1 + 0x18)" (* "*") (cast_expression "(code **)(*param_1 + 0x18)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 0x18)" (( "(") (binary_expression "*param_1 + 0x18" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x18")) () ")"))))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (return_statement "return uVar2;" (return "return") (identifier "uVar2") (; ";")) (} "}"))) (expression_statement "uVar2 = (**(code **)(*param_1 + 0x1c))(param_1);" (assignment_expression "uVar2 = (**(code **)(*param_1 + 0x1c))(param_1)" (identifier "uVar2") (= "=") (call_expression "(**(code **)(*param_1 + 0x1c))(param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0x1c))" (( "(") (pointer_expression "**(code **)(*param_1 + 0x1c)" (* "*") (pointer_expression "*(code **)(*param_1 + 0x1c)" (* "*") (cast_expression "(code **)(*param_1 + 0x1c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 0x1c)" (( "(") (binary_expression "*param_1 + 0x1c" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x1c")) () ")"))))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "(*(code *)PTR_gold_error_004c1a2c)(PTR_s_in_a_linker_script_004c191c + 0x7948,uVar2,iVar3);" (call_expression "(*(code *)PTR_gold_error_004c1a2c)(PTR_s_in_a_linker_script_004c191c + 0x7948,uVar2,iVar3)" (parenthesized_expression "(*(code *)PTR_gold_error_004c1a2c)" (( "(") (pointer_expression "*(code *)PTR_gold_error_004c1a2c" (* "*") (cast_expression "(code *)PTR_gold_error_004c1a2c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_gold_error_004c1a2c"))) () ")")) (argument_list "(PTR_s_in_a_linker_script_004c191c + 0x7948,uVar2,iVar3)" (( "(") (binary_expression "PTR_s_in_a_linker_script_004c191c + 0x7948" (identifier "PTR_s_in_a_linker_script_004c191c") (+ "+") (number_literal "0x7948")) (, ",") (identifier "uVar2") (, ",") (identifier "iVar3") () ")"))) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))
(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) 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: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (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: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier) (identifier) (identifier))))) (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (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))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence)))) 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 (binary_expression left: (identifier) right: (number_literal)) (identifier) (identifier) (identifier) (identifier) (identifier)))) right: (binary_expression left: (identifier) right: (number_literal)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (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: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier))))) (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (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: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (identifier) (identifier)))) (return_statement (number_literal)))))

undefined4 MASKED(int *param_1,int param_2)

{
  int iVar1;
  undefined4 uVar2;
  int iVar3;
  undefined1 local_30 [8];
  undefined1 local_28 [8];
  undefined1 local_20 [8];
  undefined1 local_18 [8];
  
  iVar3 = param_1[1];
  iVar1 = (*(code *)PTR_find_output_section_004c1e4c)(*(undefined4 *)(param_2 + 4),iVar3);
  if (iVar1 != 0) {
    uVar2 = (**(code **)(*param_1 + 0x14))(param_1,param_2,iVar1);
    return uVar2;
  }
  iVar1 = *(int *)(*(int *)(param_2 + 4) + 4);
  if ((*(char *)(iVar1 + 0xac) != '\0') &&
     (iVar1 = (*(code *)PTR_get_output_section_info_004c4e94)
                        (iVar1 + 0xac,iVar3,local_18,local_20,local_28,local_30), iVar1 != 0)) {
    uVar2 = (**(code **)(*param_1 + 0x18))(param_1);
    return uVar2;
  }
  uVar2 = (**(code **)(*param_1 + 0x1c))(param_1);
  (*(code *)PTR_gold_error_004c1a2c)(PTR_s_in_a_linker_script_004c191c + 0x7948,uVar2,iVar3);
  return 0;
}

