
/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */
/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */
/* 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: bool add_local(Output_data_got<32,_true> * this, Relobj * object, uint
   symndx, uint got_type, uint64_t addend) */

bool __thiscall
gold::Output_data_got<32,_true>::add_local
          (Output_data_got<32,_true> *this,Relobj *object,uint symndx,uint got_type,uint64_t addend)

{
  Got_entry got_entry;
  Got_entry got_entry_00;
  int iVar1;
  uint uVar2;
  bool bVar3;
  Output_data_got<32,_true> *pOVar4;
  int *piVar5;
  Relobj *object_00;
  int iVar6;
  uint symndx_00;
  code *pcVar7;
  undefined4 in_stack_ffffff7c;
  int iVar8;
  undefined4 in_stack_ffffffcc;
  
  iVar8 = 0x4c9240;
  iVar1 = (*(object->super_Object)._vptr_Object[0x2b])
                    (object,symndx,got_type,got_type,addend._0_4_,addend._4_4_);
  if (iVar1 != 0) {
    return false;
  }
  iVar1 = symndx << 1;
  if ((2 < symndx + 0x80000003) && (-1 < (int)symndx)) {
    got_entry_00._0_8_ = addend;
    got_entry_00.addend_._0_4_ = iVar8;
    got_entry_00.addend_._4_4_ = in_stack_ffffffcc;
    uVar2 = add_got_entry(this,got_entry_00);
    (*(object->super_Object)._vptr_Object[0x2d])
              (object,symndx,got_type,uVar2,addend._0_4_,addend._4_4_);
    return true;
  }
  piVar5 = (int *)&DAT_00000a5d;
  pcVar7 = *(code **)(iVar8 + -0x7810);
  iVar6 = *(int *)(iVar8 + -0x7924) + -0x4350;
  pOVar4 = (Output_data_got<32,_true> *)(*(int *)(iVar8 + -0x7fc4) + 0x3574);
  (*pcVar7)();
  pcVar7 = pcVar7 + 0x290e44;
  iVar8 = (**(code **)(*piVar5 + 0xac))(piVar5,iVar6,iVar1);
  if (iVar8 != 0) {
    return false;
  }
  uVar2 = iVar6 << 1 | 1;
  if ((2 < iVar6 + 0x80000003U) && (-1 < iVar6)) {
    got_entry.addend_._0_4_ = pcVar7;
    got_entry.addend_._4_4_ = in_stack_ffffff7c;
    got_entry._0_8_ = 0;
    uVar2 = add_got_entry(pOVar4,got_entry);
    (**(code **)(*piVar5 + 0xb4))(piVar5,iVar6,iVar1,uVar2,0,0);
    return true;
  }
  object_00 = (Relobj *)&DAT_00000a50;
  symndx_00 = *(int *)(pcVar7 + -0x7924) - 0x4344;
  pOVar4 = (Output_data_got<32,_true> *)(*(int *)(pcVar7 + -0x7fc4) + 0x3574);
  (**(code **)(pcVar7 + -0x7810))();
  bVar3 = add_local_plt(pOVar4,object_00,symndx_00,uVar2);
  return bVar3;
}



/* gold::Output_data_got<32, true>::add_local(gold::Relobj*, unsigned int, unsigned int, unsigned
   long long) */

undefined4
gold::Output_data_got<32,true>::add_local
          (Relobj *param_1,uint param_2,uint param_3,ulonglong param_4)

{
  int iVar1;
  undefined4 uVar2;
  int iVar3;
  undefined *puVar4;
  Output_data_got<32,true> *this;
  int *piVar5;
  Relobj *pRVar6;
  undefined *puVar7;
  uint uVar8;
  undefined4 in_a3;
  uint uVar9;
  undefined *puVar10;
  
  iVar1 = (**(code **)(*(int *)param_2 + 0xac))(param_2,param_3,in_a3,in_a3,param_4);
  if (iVar1 != 0) {
    return 0;
  }
  iVar1 = param_3 << 1;
  if ((2 < param_3 + 0x80000003) && (-1 < (int)param_3)) {
    uVar2 = add_got_entry(param_1);
    (**(code **)(*(int *)param_2 + 0xb4))(param_2,param_3,in_a3,uVar2,param_4);
    return 1;
  }
  piVar5 = (int *)&DAT_00000a5d;
  puVar7 = PTR_s_in_a_linker_script_004c191c + -0x4350;
  puVar4 = PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574;
  puVar10 = PTR_do_gold_unreachable_004c1a30;
  (*(code *)PTR_do_gold_unreachable_004c1a30)(puVar4);
  iVar3 = (**(code **)(*piVar5 + 0xac))(piVar5,puVar7,iVar1);
  if (iVar3 != 0) {
    return 0;
  }
  uVar9 = (int)puVar7 << 1 | 1;
  if (((undefined *)0x2 < puVar7 + -0x7ffffffd) && (-1 < (int)puVar7)) {
    uVar2 = add_got_entry(puVar4);
    (**(code **)(*piVar5 + 0xb4))(piVar5,puVar7,iVar1,uVar2,0,0);
    return 1;
  }
  pRVar6 = (Relobj *)&DAT_00000a50;
  uVar8 = *(int *)(puVar10 + 0x289520) - 0x4344;
  this = (Output_data_got<32,true> *)(*(int *)(puVar10 + 0x288e80) + 0x3574);
  (**(code **)(puVar10 + 0x289634))();
  uVar2 = add_local_plt(this,pRVar6,uVar8,uVar9);
  return uVar2;
}


lui gp,0x29
addiu gp,gp,0xf98
addu gp,gp,t9
addiu sp,sp,-0x50
lw v0,0x0(a1)
sw s3,0x40(sp)
sw s2,0x3c(sp)
lw s3,0x64(sp)
lw s2,0x60(sp)
sw s5,0x48(sp)
or s5,a2,zero
sw s3,0x14(sp)
or a2,a3,zero
sw s2,0x10(sp)
sw s0,0x34(sp)
or s0,a1,zero
sw gp,0x18(sp)
or a1,s5,zero
sw s4,0x44(sp)
or s4,a0,zero
sw s1,0x38(sp)
or a0,s0,zero
sw ra,0x4c(sp)
lw t9,0xac(v0)
jalr t9
_or s1,a3,zero
bne v0,zero,0x002383b8
_lw gp,0x18(sp)
lw a3,0x24(sp)
lui v0,0x8000
sw s3,0x2c(sp)
addiu v0,v0,0x3
sw s2,0x28(sp)
ins a3,s5,0x1,0x1f
addu v0,s5,v0
ins a3,zero,0x0,0x1
sltiu v0,v0,0x3
bne v0,zero,0x002383e0
_sw a3,0x24(sp)
bltz s5,0x002383e0
_lw v0,0x28(sp)
or a2,s0,zero
lw t9,-0x7614(gp)
or a0,s4,zero
sw s0,0x20(sp)
sw v0,0x10(sp)
lw v0,0x2c(sp)
bal 0x00237990
_sw v0,0x14(sp)
or a2,s1,zero
lw v1,0x0(s0)
or a3,v0,zero
sw s3,0x14(sp)
or a1,s5,zero
sw s2,0x10(sp)
lw t9,0xb4(v1)
jalr t9
_or a0,s0,zero
li v0,0x1
lw ra,0x4c(sp)
lw s5,0x48(sp)
lw s4,0x44(sp)
lw s3,0x40(sp)
lw s2,0x3c(sp)
lw s1,0x38(sp)
lw s0,0x34(sp)
jr ra
_addiu sp,sp,0x50
lw ra,0x4c(sp)
or v0,zero,zero
lw s5,0x48(sp)
lw s4,0x44(sp)
lw s3,0x40(sp)
lw s2,0x3c(sp)
lw s1,0x38(sp)
lw s0,0x34(sp)
jr ra
_addiu sp,sp,0x50
lw a2,-0x7924(gp)
li a1,0xa5d
lw a0,-0x7fc4(gp)
lw t9,-0x7810(gp)
addiu a2,a2,-0x4350
jalr t9
_addiu a0,a0,0x3574
(translation_unit "/* gold::Output_data_got<32, true>::add_local(gold::Relobj*, unsigned int, unsigned int, unsigned\n   long long) */\n\nundefined4\ngold::Output_data_got<32,true>::add_local\n          (Relobj *param_1,uint param_2,uint param_3,ulonglong param_4)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  int iVar3;\n  undefined *puVar4;\n  Output_data_got<32,true> *this;\n  int *piVar5;\n  Relobj *pRVar6;\n  undefined *puVar7;\n  uint uVar8;\n  undefined4 in_a3;\n  uint uVar9;\n  undefined *puVar10;\n  \n  iVar1 = (**(code **)(*(int *)param_2 + 0xac))(param_2,param_3,in_a3,in_a3,param_4);\n  if (iVar1 != 0) {\n    return 0;\n  }\n  iVar1 = param_3 << 1;\n  if ((2 < param_3 + 0x80000003) && (-1 < (int)param_3)) {\n    uVar2 = add_got_entry(param_1);\n    (**(code **)(*(int *)param_2 + 0xb4))(param_2,param_3,in_a3,uVar2,param_4);\n    return 1;\n  }\n  piVar5 = (int *)&DAT_00000a5d;\n  puVar7 = PTR_s_in_a_linker_script_004c191c + -0x4350;\n  puVar4 = PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574;\n  puVar10 = PTR_do_gold_unreachable_004c1a30;\n  (*(code *)PTR_do_gold_unreachable_004c1a30)(puVar4);\n  iVar3 = (**(code **)(*piVar5 + 0xac))(piVar5,puVar7,iVar1);\n  if (iVar3 != 0) {\n    return 0;\n  }\n  uVar9 = (int)puVar7 << 1 | 1;\n  if (((undefined *)0x2 < puVar7 + -0x7ffffffd) && (-1 < (int)puVar7)) {\n    uVar2 = add_got_entry(puVar4);\n    (**(code **)(*piVar5 + 0xb4))(piVar5,puVar7,iVar1,uVar2,0,0);\n    return 1;\n  }\n  pRVar6 = (Relobj *)&DAT_00000a50;\n  uVar8 = *(int *)(puVar10 + 0x289520) - 0x4344;\n  this = (Output_data_got<32,true> *)(*(int *)(puVar10 + 0x288e80) + 0x3574);\n  (**(code **)(puVar10 + 0x289634))();\n  uVar2 = add_local_plt(this,pRVar6,uVar8,uVar9);\n  return uVar2;\n}\n\n" comment (declaration "undefined4\ngold::Output_data_got<32,true>::add_local\n          (Relobj *param_1,uint param_2,uint param_3,ulonglong param_4)\n\n{\n  int iVar1;" type_identifier (ERROR "gold::" identifier : :) identifier (ERROR "<32" < number_literal) , (ERROR "true>::add_local\n          (Relobj *param_1,uint param_2,uint param_3,ulonglong param_4)\n\n{\n  int" identifier > : : (function_declarator "add_local\n          (Relobj *param_1,uint param_2,uint param_3,ulonglong param_4)" identifier (parameter_list "(Relobj *param_1,uint param_2,uint param_3,ulonglong param_4)" ( (parameter_declaration "Relobj *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "ulonglong param_4" type_identifier identifier) ))) { primitive_type) identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (expression_statement "Output_data_got<32,true> *this;" (update_expression "Output_data_got<32,true> *this" (binary_expression "Output_data_got<32,true> *this" (binary_expression "Output_data_got<32" identifier < number_literal) (ERROR ",true" , true) > (pointer_expression "*this" * identifier)) --) ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "Relobj *pRVar6;" type_identifier (pointer_declarator "*pRVar6" * identifier) ;) (declaration "undefined *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "undefined4 in_a3;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "undefined *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (expression_statement "iVar1 = (**(code **)(*(int *)param_2 + 0xac))(param_2,param_3,in_a3,in_a3,param_4);" (assignment_expression "iVar1 = (**(code **)(*(int *)param_2 + 0xac))(param_2,param_3,in_a3,in_a3,param_4)" identifier = (call_expression "(**(code **)(*(int *)param_2 + 0xac))(param_2,param_3,in_a3,in_a3,param_4)" (parenthesized_expression "(**(code **)(*(int *)param_2 + 0xac))" ( (pointer_expression "**(code **)(*(int *)param_2 + 0xac)" * (pointer_expression "*(code **)(*(int *)param_2 + 0xac)" * (cast_expression "(code **)(*(int *)param_2 + 0xac)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)param_2 + 0xac)" ( (binary_expression "*(int *)param_2 + 0xac" (pointer_expression "*(int *)param_2" * (cast_expression "(int *)param_2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) )) (argument_list "(param_2,param_3,in_a3,in_a3,param_4)" ( identifier , identifier , identifier , identifier , identifier )))) ;) (if_statement "if (iVar1 != 0) {\n    return 0;\n  }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar1 = param_3 << 1;" (assignment_expression "iVar1 = param_3 << 1" identifier = (binary_expression "param_3 << 1" identifier << number_literal)) ;) (if_statement "if ((2 < param_3 + 0x80000003) && (-1 < (int)param_3)) {\n    uVar2 = add_got_entry(param_1);\n    (**(code **)(*(int *)param_2 + 0xb4))(param_2,param_3,in_a3,uVar2,param_4);\n    return 1;\n  }" if (parenthesized_expression "((2 < param_3 + 0x80000003) && (-1 < (int)param_3))" ( (binary_expression "(2 < param_3 + 0x80000003) && (-1 < (int)param_3)" (parenthesized_expression "(2 < param_3 + 0x80000003)" ( (binary_expression "2 < param_3 + 0x80000003" number_literal < (binary_expression "param_3 + 0x80000003" identifier + number_literal)) )) && (parenthesized_expression "(-1 < (int)param_3)" ( (binary_expression "-1 < (int)param_3" number_literal < (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n    uVar2 = add_got_entry(param_1);\n    (**(code **)(*(int *)param_2 + 0xb4))(param_2,param_3,in_a3,uVar2,param_4);\n    return 1;\n  }" { (expression_statement "uVar2 = add_got_entry(param_1);" (assignment_expression "uVar2 = add_got_entry(param_1)" identifier = (call_expression "add_got_entry(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "(**(code **)(*(int *)param_2 + 0xb4))(param_2,param_3,in_a3,uVar2,param_4);" (call_expression "(**(code **)(*(int *)param_2 + 0xb4))(param_2,param_3,in_a3,uVar2,param_4)" (parenthesized_expression "(**(code **)(*(int *)param_2 + 0xb4))" ( (pointer_expression "**(code **)(*(int *)param_2 + 0xb4)" * (pointer_expression "*(code **)(*(int *)param_2 + 0xb4)" * (cast_expression "(code **)(*(int *)param_2 + 0xb4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)param_2 + 0xb4)" ( (binary_expression "*(int *)param_2 + 0xb4" (pointer_expression "*(int *)param_2" * (cast_expression "(int *)param_2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) )) (argument_list "(param_2,param_3,in_a3,uVar2,param_4)" ( identifier , identifier , identifier , identifier , identifier ))) ;) (return_statement "return 1;" return number_literal ;) })) (expression_statement "piVar5 = (int *)&DAT_00000a5d;" (assignment_expression "piVar5 = (int *)&DAT_00000a5d" identifier = (cast_expression "(int *)&DAT_00000a5d" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_00000a5d" & identifier))) ;) (expression_statement "puVar7 = PTR_s_in_a_linker_script_004c191c + -0x4350;" (assignment_expression "puVar7 = PTR_s_in_a_linker_script_004c191c + -0x4350" identifier = (binary_expression "PTR_s_in_a_linker_script_004c191c + -0x4350" identifier + number_literal)) ;) (expression_statement "puVar4 = PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574;" (assignment_expression "puVar4 = PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574" identifier = (binary_expression "PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574" identifier + number_literal)) ;) (expression_statement "puVar10 = PTR_do_gold_unreachable_004c1a30;" (assignment_expression "puVar10 = PTR_do_gold_unreachable_004c1a30" identifier = identifier) ;) (expression_statement "(*(code *)PTR_do_gold_unreachable_004c1a30)(puVar4);" (call_expression "(*(code *)PTR_do_gold_unreachable_004c1a30)(puVar4)" (parenthesized_expression "(*(code *)PTR_do_gold_unreachable_004c1a30)" ( (pointer_expression "*(code *)PTR_do_gold_unreachable_004c1a30" * (cast_expression "(code *)PTR_do_gold_unreachable_004c1a30" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar4)" ( identifier ))) ;) (expression_statement "iVar3 = (**(code **)(*piVar5 + 0xac))(piVar5,puVar7,iVar1);" (assignment_expression "iVar3 = (**(code **)(*piVar5 + 0xac))(piVar5,puVar7,iVar1)" identifier = (call_expression "(**(code **)(*piVar5 + 0xac))(piVar5,puVar7,iVar1)" (parenthesized_expression "(**(code **)(*piVar5 + 0xac))" ( (pointer_expression "**(code **)(*piVar5 + 0xac)" * (pointer_expression "*(code **)(*piVar5 + 0xac)" * (cast_expression "(code **)(*piVar5 + 0xac)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar5 + 0xac)" ( (binary_expression "*piVar5 + 0xac" (pointer_expression "*piVar5" * identifier) + number_literal) ))))) )) (argument_list "(piVar5,puVar7,iVar1)" ( identifier , identifier , identifier )))) ;) (if_statement "if (iVar3 != 0) {\n    return 0;\n  }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "uVar9 = (int)puVar7 << 1 | 1;" (assignment_expression "uVar9 = (int)puVar7 << 1 | 1" identifier = (binary_expression "(int)puVar7 << 1 | 1" (binary_expression "(int)puVar7 << 1" (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal) | number_literal)) ;) (if_statement "if (((undefined *)0x2 < puVar7 + -0x7ffffffd) && (-1 < (int)puVar7)) {\n    uVar2 = add_got_entry(puVar4);\n    (**(code **)(*piVar5 + 0xb4))(piVar5,puVar7,iVar1,uVar2,0,0);\n    return 1;\n  }" if (parenthesized_expression "(((undefined *)0x2 < puVar7 + -0x7ffffffd) && (-1 < (int)puVar7))" ( (binary_expression "((undefined *)0x2 < puVar7 + -0x7ffffffd) && (-1 < (int)puVar7)" (parenthesized_expression "((undefined *)0x2 < puVar7 + -0x7ffffffd)" ( (binary_expression "(undefined *)0x2 < puVar7 + -0x7ffffffd" (cast_expression "(undefined *)0x2" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) < (binary_expression "puVar7 + -0x7ffffffd" identifier + number_literal)) )) && (parenthesized_expression "(-1 < (int)puVar7)" ( (binary_expression "-1 < (int)puVar7" number_literal < (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n    uVar2 = add_got_entry(puVar4);\n    (**(code **)(*piVar5 + 0xb4))(piVar5,puVar7,iVar1,uVar2,0,0);\n    return 1;\n  }" { (expression_statement "uVar2 = add_got_entry(puVar4);" (assignment_expression "uVar2 = add_got_entry(puVar4)" identifier = (call_expression "add_got_entry(puVar4)" identifier (argument_list "(puVar4)" ( identifier )))) ;) (expression_statement "(**(code **)(*piVar5 + 0xb4))(piVar5,puVar7,iVar1,uVar2,0,0);" (call_expression "(**(code **)(*piVar5 + 0xb4))(piVar5,puVar7,iVar1,uVar2,0,0)" (parenthesized_expression "(**(code **)(*piVar5 + 0xb4))" ( (pointer_expression "**(code **)(*piVar5 + 0xb4)" * (pointer_expression "*(code **)(*piVar5 + 0xb4)" * (cast_expression "(code **)(*piVar5 + 0xb4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar5 + 0xb4)" ( (binary_expression "*piVar5 + 0xb4" (pointer_expression "*piVar5" * identifier) + number_literal) ))))) )) (argument_list "(piVar5,puVar7,iVar1,uVar2,0,0)" ( identifier , identifier , identifier , identifier , number_literal , number_literal ))) ;) (return_statement "return 1;" return number_literal ;) })) (expression_statement "pRVar6 = (Relobj *)&DAT_00000a50;" (assignment_expression "pRVar6 = (Relobj *)&DAT_00000a50" identifier = (cast_expression "(Relobj *)&DAT_00000a50" ( (type_descriptor "Relobj *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_00000a50" & identifier))) ;) (expression_statement "uVar8 = *(int *)(puVar10 + 0x289520) - 0x4344;" (assignment_expression "uVar8 = *(int *)(puVar10 + 0x289520) - 0x4344" identifier = (binary_expression "*(int *)(puVar10 + 0x289520) - 0x4344" (pointer_expression "*(int *)(puVar10 + 0x289520)" * (cast_expression "(int *)(puVar10 + 0x289520)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0x289520)" ( (binary_expression "puVar10 + 0x289520" identifier + number_literal) )))) - number_literal)) ;) (expression_statement "this = (Output_data_got<32,true> *)(*(int *)(puVar10 + 0x288e80) + 0x3574);" (assignment_expression "this = (Output_data_got<32,true> *)(*(int *)(puVar10 + 0x288e80) + 0x3574)" identifier = (call_expression "(Output_data_got<32,true> *)(*(int *)(puVar10 + 0x288e80) + 0x3574)" (parenthesized_expression "(Output_data_got<32,true> *)" ( (comma_expression "Output_data_got<32,true> *" (binary_expression "Output_data_got<32" identifier < number_literal) , (binary_expression "true> *" true > (pointer_expression "*" * identifier))) )) (argument_list "(*(int *)(puVar10 + 0x288e80) + 0x3574)" ( (binary_expression "*(int *)(puVar10 + 0x288e80) + 0x3574" (pointer_expression "*(int *)(puVar10 + 0x288e80)" * (cast_expression "(int *)(puVar10 + 0x288e80)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0x288e80)" ( (binary_expression "puVar10 + 0x288e80" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "(**(code **)(puVar10 + 0x289634))();" (call_expression "(**(code **)(puVar10 + 0x289634))()" (parenthesized_expression "(**(code **)(puVar10 + 0x289634))" ( (pointer_expression "**(code **)(puVar10 + 0x289634)" * (pointer_expression "*(code **)(puVar10 + 0x289634)" * (cast_expression "(code **)(puVar10 + 0x289634)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x289634)" ( (binary_expression "puVar10 + 0x289634" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "uVar2 = add_local_plt(this,pRVar6,uVar8,uVar9);" (assignment_expression "uVar2 = add_local_plt(this,pRVar6,uVar8,uVar9)" identifier = (call_expression "add_local_plt(this,pRVar6,uVar8,uVar9)" identifier (argument_list "(this,pRVar6,uVar8,uVar9)" ( identifier , identifier , identifier , identifier )))) ;) (return_statement "return uVar2;" return identifier ;) (ERROR "}" }))
(translation_unit "/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */\n/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */\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: bool add_local(Output_data_got<32,_true> * this, Relobj * object, uint\n   symndx, uint got_type, uint64_t addend) */\n\nbool __thiscall\ngold::Output_data_got<32,_true>::add_local\n          (Output_data_got<32,_true> *this,Relobj *object,uint symndx,uint got_type,uint64_t addend)\n\n{\n  Got_entry got_entry;\n  Got_entry got_entry_00;\n  int iVar1;\n  uint uVar2;\n  bool bVar3;\n  Output_data_got<32,_true> *pOVar4;\n  int *piVar5;\n  Relobj *object_00;\n  int iVar6;\n  uint symndx_00;\n  code *pcVar7;\n  undefined4 in_stack_ffffff7c;\n  int iVar8;\n  undefined4 in_stack_ffffffcc;\n  \n  iVar8 = 0x4c9240;\n  iVar1 = (*(object->super_Object)._vptr_Object[0x2b])\n                    (object,symndx,got_type,got_type,addend._0_4_,addend._4_4_);\n  if (iVar1 != 0) {\n    return false;\n  }\n  iVar1 = symndx << 1;\n  if ((2 < symndx + 0x80000003) && (-1 < (int)symndx)) {\n    got_entry_00._0_8_ = addend;\n    got_entry_00.addend_._0_4_ = iVar8;\n    got_entry_00.addend_._4_4_ = in_stack_ffffffcc;\n    uVar2 = add_got_entry(this,got_entry_00);\n    (*(object->super_Object)._vptr_Object[0x2d])\n              (object,symndx,got_type,uVar2,addend._0_4_,addend._4_4_);\n    return true;\n  }\n  piVar5 = (int *)&DAT_00000a5d;\n  pcVar7 = *(code **)(iVar8 + -0x7810);\n  iVar6 = *(int *)(iVar8 + -0x7924) + -0x4350;\n  pOVar4 = (Output_data_got<32,_true> *)(*(int *)(iVar8 + -0x7fc4) + 0x3574);\n  (*pcVar7)();\n  pcVar7 = pcVar7 + 0x290e44;\n  iVar8 = (**(code **)(*piVar5 + 0xac))(piVar5,iVar6,iVar1);\n  if (iVar8 != 0) {\n    return false;\n  }\n  uVar2 = iVar6 << 1 | 1;\n  if ((2 < iVar6 + 0x80000003U) && (-1 < iVar6)) {\n    got_entry.addend_._0_4_ = pcVar7;\n    got_entry.addend_._4_4_ = in_stack_ffffff7c;\n    got_entry._0_8_ = 0;\n    uVar2 = add_got_entry(pOVar4,got_entry);\n    (**(code **)(*piVar5 + 0xb4))(piVar5,iVar6,iVar1,uVar2,0,0);\n    return true;\n  }\n  object_00 = (Relobj *)&DAT_00000a50;\n  symndx_00 = *(int *)(pcVar7 + -0x7924) - 0x4344;\n  pOVar4 = (Output_data_got<32,_true> *)(*(int *)(pcVar7 + -0x7fc4) + 0x3574);\n  (**(code **)(pcVar7 + -0x7810))();\n  bVar3 = add_local_plt(pOVar4,object_00,symndx_00,uVar2);\n  return bVar3;\n}\n\n" comment comment comment comment comment comment comment (declaration "bool __thiscall\ngold::Output_data_got<32,_true>::add_local\n          (Output_data_got<32,_true> *this,Relobj *object,uint symndx,uint got_type,uint64_t addend)\n\n{\n  Got_entry got_entry;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::" identifier : :) identifier (ERROR "<32" < number_literal) , (ERROR "_true>::add_local\n          (Output_data_got<32,_true> *this,Relobj *object,uint symndx,uint got_type,uint64_t addend)\n\n{\n  Got_entry" identifier > : : (function_declarator "add_local\n          (Output_data_got<32,_true> *this,Relobj *object,uint symndx,uint got_type,uint64_t addend)" identifier (parameter_list "(Output_data_got<32,_true> *this,Relobj *object,uint symndx,uint got_type,uint64_t addend)" ( (parameter_declaration "Output_data_got" type_identifier) (ERROR "<32" < number_literal) , (parameter_declaration "_true> *this" type_identifier (ERROR ">" >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "Relobj *object" type_identifier (pointer_declarator "*object" * identifier)) , (parameter_declaration "uint symndx" type_identifier identifier) , (parameter_declaration "uint got_type" type_identifier identifier) , (parameter_declaration "uint64_t addend" primitive_type identifier) ))) { identifier) identifier ;) (declaration "Got_entry got_entry_00;" type_identifier identifier ;) (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "bool bVar3;" primitive_type identifier ;) (expression_statement "Output_data_got<32,_true> *pOVar4;" (update_expression "Output_data_got<32,_true> *pOVar4" (binary_expression "Output_data_got<32,_true> *pOVar4" (binary_expression "Output_data_got<32" identifier < number_literal) (ERROR ",_true" , identifier) > (pointer_expression "*pOVar4" * identifier)) --) ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "Relobj *object_00;" type_identifier (pointer_declarator "*object_00" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint symndx_00;" type_identifier identifier ;) (declaration "code *pcVar7;" type_identifier (pointer_declarator "*pcVar7" * identifier) ;) (declaration "undefined4 in_stack_ffffff7c;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "undefined4 in_stack_ffffffcc;" type_identifier identifier ;) (expression_statement "iVar8 = 0x4c9240;" (assignment_expression "iVar8 = 0x4c9240" identifier = number_literal) ;) (expression_statement "iVar1 = (*(object->super_Object)._vptr_Object[0x2b])\n                    (object,symndx,got_type,got_type,addend._0_4_,addend._4_4_);" (assignment_expression "iVar1 = (*(object->super_Object)._vptr_Object[0x2b])\n                    (object,symndx,got_type,got_type,addend._0_4_,addend._4_4_)" identifier = (call_expression "(*(object->super_Object)._vptr_Object[0x2b])\n                    (object,symndx,got_type,got_type,addend._0_4_,addend._4_4_)" (parenthesized_expression "(*(object->super_Object)._vptr_Object[0x2b])" ( (pointer_expression "*(object->super_Object)._vptr_Object[0x2b]" * (subscript_expression "(object->super_Object)._vptr_Object[0x2b]" (field_expression "(object->super_Object)._vptr_Object" (parenthesized_expression "(object->super_Object)" ( (field_expression "object->super_Object" identifier -> field_identifier) )) . field_identifier) [ number_literal ])) )) (argument_list "(object,symndx,got_type,got_type,addend._0_4_,addend._4_4_)" ( identifier , identifier , identifier , identifier , (field_expression "addend._0_4_" identifier . field_identifier) , (field_expression "addend._4_4_" identifier . field_identifier) )))) ;) (if_statement "if (iVar1 != 0) {\n    return false;\n  }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n    return false;\n  }" { (return_statement "return false;" return false ;) })) (expression_statement "iVar1 = symndx << 1;" (assignment_expression "iVar1 = symndx << 1" identifier = (binary_expression "symndx << 1" identifier << number_literal)) ;) (if_statement "if ((2 < symndx + 0x80000003) && (-1 < (int)symndx)) {\n    got_entry_00._0_8_ = addend;\n    got_entry_00.addend_._0_4_ = iVar8;\n    got_entry_00.addend_._4_4_ = in_stack_ffffffcc;\n    uVar2 = add_got_entry(this,got_entry_00);\n    (*(object->super_Object)._vptr_Object[0x2d])\n              (object,symndx,got_type,uVar2,addend._0_4_,addend._4_4_);\n    return true;\n  }" if (parenthesized_expression "((2 < symndx + 0x80000003) && (-1 < (int)symndx))" ( (binary_expression "(2 < symndx + 0x80000003) && (-1 < (int)symndx)" (parenthesized_expression "(2 < symndx + 0x80000003)" ( (binary_expression "2 < symndx + 0x80000003" number_literal < (binary_expression "symndx + 0x80000003" identifier + number_literal)) )) && (parenthesized_expression "(-1 < (int)symndx)" ( (binary_expression "-1 < (int)symndx" number_literal < (cast_expression "(int)symndx" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n    got_entry_00._0_8_ = addend;\n    got_entry_00.addend_._0_4_ = iVar8;\n    got_entry_00.addend_._4_4_ = in_stack_ffffffcc;\n    uVar2 = add_got_entry(this,got_entry_00);\n    (*(object->super_Object)._vptr_Object[0x2d])\n              (object,symndx,got_type,uVar2,addend._0_4_,addend._4_4_);\n    return true;\n  }" { (expression_statement "got_entry_00._0_8_ = addend;" (assignment_expression "got_entry_00._0_8_ = addend" (field_expression "got_entry_00._0_8_" identifier . field_identifier) = identifier) ;) (expression_statement "got_entry_00.addend_._0_4_ = iVar8;" (assignment_expression "got_entry_00.addend_._0_4_ = iVar8" (field_expression "got_entry_00.addend_._0_4_" (field_expression "got_entry_00.addend_" identifier . field_identifier) . field_identifier) = identifier) ;) (expression_statement "got_entry_00.addend_._4_4_ = in_stack_ffffffcc;" (assignment_expression "got_entry_00.addend_._4_4_ = in_stack_ffffffcc" (field_expression "got_entry_00.addend_._4_4_" (field_expression "got_entry_00.addend_" identifier . field_identifier) . field_identifier) = identifier) ;) (expression_statement "uVar2 = add_got_entry(this,got_entry_00);" (assignment_expression "uVar2 = add_got_entry(this,got_entry_00)" identifier = (call_expression "add_got_entry(this,got_entry_00)" identifier (argument_list "(this,got_entry_00)" ( identifier , identifier )))) ;) (expression_statement "(*(object->super_Object)._vptr_Object[0x2d])\n              (object,symndx,got_type,uVar2,addend._0_4_,addend._4_4_);" (call_expression "(*(object->super_Object)._vptr_Object[0x2d])\n              (object,symndx,got_type,uVar2,addend._0_4_,addend._4_4_)" (parenthesized_expression "(*(object->super_Object)._vptr_Object[0x2d])" ( (pointer_expression "*(object->super_Object)._vptr_Object[0x2d]" * (subscript_expression "(object->super_Object)._vptr_Object[0x2d]" (field_expression "(object->super_Object)._vptr_Object" (parenthesized_expression "(object->super_Object)" ( (field_expression "object->super_Object" identifier -> field_identifier) )) . field_identifier) [ number_literal ])) )) (argument_list "(object,symndx,got_type,uVar2,addend._0_4_,addend._4_4_)" ( identifier , identifier , identifier , identifier , (field_expression "addend._0_4_" identifier . field_identifier) , (field_expression "addend._4_4_" identifier . field_identifier) ))) ;) (return_statement "return true;" return true ;) })) (expression_statement "piVar5 = (int *)&DAT_00000a5d;" (assignment_expression "piVar5 = (int *)&DAT_00000a5d" identifier = (cast_expression "(int *)&DAT_00000a5d" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_00000a5d" & identifier))) ;) (expression_statement "pcVar7 = *(code **)(iVar8 + -0x7810);" (assignment_expression "pcVar7 = *(code **)(iVar8 + -0x7810)" identifier = (pointer_expression "*(code **)(iVar8 + -0x7810)" * (cast_expression "(code **)(iVar8 + -0x7810)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + -0x7810)" ( (binary_expression "iVar8 + -0x7810" identifier + number_literal) ))))) ;) (expression_statement "iVar6 = *(int *)(iVar8 + -0x7924) + -0x4350;" (assignment_expression "iVar6 = *(int *)(iVar8 + -0x7924) + -0x4350" identifier = (binary_expression "*(int *)(iVar8 + -0x7924) + -0x4350" (pointer_expression "*(int *)(iVar8 + -0x7924)" * (cast_expression "(int *)(iVar8 + -0x7924)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + -0x7924)" ( (binary_expression "iVar8 + -0x7924" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "pOVar4 = (Output_data_got<32,_true> *)(*(int *)(iVar8 + -0x7fc4) + 0x3574);" (assignment_expression "pOVar4 = (Output_data_got<32,_true> *)(*(int *)(iVar8 + -0x7fc4) + 0x3574)" identifier = (call_expression "(Output_data_got<32,_true> *)(*(int *)(iVar8 + -0x7fc4) + 0x3574)" (parenthesized_expression "(Output_data_got<32,_true> *)" ( (comma_expression "Output_data_got<32,_true> *" (binary_expression "Output_data_got<32" identifier < number_literal) , (binary_expression "_true> *" identifier > (pointer_expression "*" * identifier))) )) (argument_list "(*(int *)(iVar8 + -0x7fc4) + 0x3574)" ( (binary_expression "*(int *)(iVar8 + -0x7fc4) + 0x3574" (pointer_expression "*(int *)(iVar8 + -0x7fc4)" * (cast_expression "(int *)(iVar8 + -0x7fc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + -0x7fc4)" ( (binary_expression "iVar8 + -0x7fc4" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "(*pcVar7)();" (call_expression "(*pcVar7)()" (parenthesized_expression "(*pcVar7)" ( (pointer_expression "*pcVar7" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar7 = pcVar7 + 0x290e44;" (assignment_expression "pcVar7 = pcVar7 + 0x290e44" identifier = (binary_expression "pcVar7 + 0x290e44" identifier + number_literal)) ;) (expression_statement "iVar8 = (**(code **)(*piVar5 + 0xac))(piVar5,iVar6,iVar1);" (assignment_expression "iVar8 = (**(code **)(*piVar5 + 0xac))(piVar5,iVar6,iVar1)" identifier = (call_expression "(**(code **)(*piVar5 + 0xac))(piVar5,iVar6,iVar1)" (parenthesized_expression "(**(code **)(*piVar5 + 0xac))" ( (pointer_expression "**(code **)(*piVar5 + 0xac)" * (pointer_expression "*(code **)(*piVar5 + 0xac)" * (cast_expression "(code **)(*piVar5 + 0xac)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar5 + 0xac)" ( (binary_expression "*piVar5 + 0xac" (pointer_expression "*piVar5" * identifier) + number_literal) ))))) )) (argument_list "(piVar5,iVar6,iVar1)" ( identifier , identifier , identifier )))) ;) (if_statement "if (iVar8 != 0) {\n    return false;\n  }" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (compound_statement "{\n    return false;\n  }" { (return_statement "return false;" return false ;) })) (expression_statement "uVar2 = iVar6 << 1 | 1;" (assignment_expression "uVar2 = iVar6 << 1 | 1" identifier = (binary_expression "iVar6 << 1 | 1" (binary_expression "iVar6 << 1" identifier << number_literal) | number_literal)) ;) (if_statement "if ((2 < iVar6 + 0x80000003U) && (-1 < iVar6)) {\n    got_entry.addend_._0_4_ = pcVar7;\n    got_entry.addend_._4_4_ = in_stack_ffffff7c;\n    got_entry._0_8_ = 0;\n    uVar2 = add_got_entry(pOVar4,got_entry);\n    (**(code **)(*piVar5 + 0xb4))(piVar5,iVar6,iVar1,uVar2,0,0);\n    return true;\n  }" if (parenthesized_expression "((2 < iVar6 + 0x80000003U) && (-1 < iVar6))" ( (binary_expression "(2 < iVar6 + 0x80000003U) && (-1 < iVar6)" (parenthesized_expression "(2 < iVar6 + 0x80000003U)" ( (binary_expression "2 < iVar6 + 0x80000003U" number_literal < (binary_expression "iVar6 + 0x80000003U" identifier + number_literal)) )) && (parenthesized_expression "(-1 < iVar6)" ( (binary_expression "-1 < iVar6" number_literal < identifier) ))) )) (compound_statement "{\n    got_entry.addend_._0_4_ = pcVar7;\n    got_entry.addend_._4_4_ = in_stack_ffffff7c;\n    got_entry._0_8_ = 0;\n    uVar2 = add_got_entry(pOVar4,got_entry);\n    (**(code **)(*piVar5 + 0xb4))(piVar5,iVar6,iVar1,uVar2,0,0);\n    return true;\n  }" { (expression_statement "got_entry.addend_._0_4_ = pcVar7;" (assignment_expression "got_entry.addend_._0_4_ = pcVar7" (field_expression "got_entry.addend_._0_4_" (field_expression "got_entry.addend_" identifier . field_identifier) . field_identifier) = identifier) ;) (expression_statement "got_entry.addend_._4_4_ = in_stack_ffffff7c;" (assignment_expression "got_entry.addend_._4_4_ = in_stack_ffffff7c" (field_expression "got_entry.addend_._4_4_" (field_expression "got_entry.addend_" identifier . field_identifier) . field_identifier) = identifier) ;) (expression_statement "got_entry._0_8_ = 0;" (assignment_expression "got_entry._0_8_ = 0" (field_expression "got_entry._0_8_" identifier . field_identifier) = number_literal) ;) (expression_statement "uVar2 = add_got_entry(pOVar4,got_entry);" (assignment_expression "uVar2 = add_got_entry(pOVar4,got_entry)" identifier = (call_expression "add_got_entry(pOVar4,got_entry)" identifier (argument_list "(pOVar4,got_entry)" ( identifier , identifier )))) ;) (expression_statement "(**(code **)(*piVar5 + 0xb4))(piVar5,iVar6,iVar1,uVar2,0,0);" (call_expression "(**(code **)(*piVar5 + 0xb4))(piVar5,iVar6,iVar1,uVar2,0,0)" (parenthesized_expression "(**(code **)(*piVar5 + 0xb4))" ( (pointer_expression "**(code **)(*piVar5 + 0xb4)" * (pointer_expression "*(code **)(*piVar5 + 0xb4)" * (cast_expression "(code **)(*piVar5 + 0xb4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar5 + 0xb4)" ( (binary_expression "*piVar5 + 0xb4" (pointer_expression "*piVar5" * identifier) + number_literal) ))))) )) (argument_list "(piVar5,iVar6,iVar1,uVar2,0,0)" ( identifier , identifier , identifier , identifier , number_literal , number_literal ))) ;) (return_statement "return true;" return true ;) })) (expression_statement "object_00 = (Relobj *)&DAT_00000a50;" (assignment_expression "object_00 = (Relobj *)&DAT_00000a50" identifier = (cast_expression "(Relobj *)&DAT_00000a50" ( (type_descriptor "Relobj *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_00000a50" & identifier))) ;) (expression_statement "symndx_00 = *(int *)(pcVar7 + -0x7924) - 0x4344;" (assignment_expression "symndx_00 = *(int *)(pcVar7 + -0x7924) - 0x4344" identifier = (binary_expression "*(int *)(pcVar7 + -0x7924) - 0x4344" (pointer_expression "*(int *)(pcVar7 + -0x7924)" * (cast_expression "(int *)(pcVar7 + -0x7924)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar7 + -0x7924)" ( (binary_expression "pcVar7 + -0x7924" identifier + number_literal) )))) - number_literal)) ;) (expression_statement "pOVar4 = (Output_data_got<32,_true> *)(*(int *)(pcVar7 + -0x7fc4) + 0x3574);" (assignment_expression "pOVar4 = (Output_data_got<32,_true> *)(*(int *)(pcVar7 + -0x7fc4) + 0x3574)" identifier = (call_expression "(Output_data_got<32,_true> *)(*(int *)(pcVar7 + -0x7fc4) + 0x3574)" (parenthesized_expression "(Output_data_got<32,_true> *)" ( (comma_expression "Output_data_got<32,_true> *" (binary_expression "Output_data_got<32" identifier < number_literal) , (binary_expression "_true> *" identifier > (pointer_expression "*" * identifier))) )) (argument_list "(*(int *)(pcVar7 + -0x7fc4) + 0x3574)" ( (binary_expression "*(int *)(pcVar7 + -0x7fc4) + 0x3574" (pointer_expression "*(int *)(pcVar7 + -0x7fc4)" * (cast_expression "(int *)(pcVar7 + -0x7fc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar7 + -0x7fc4)" ( (binary_expression "pcVar7 + -0x7fc4" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "(**(code **)(pcVar7 + -0x7810))();" (call_expression "(**(code **)(pcVar7 + -0x7810))()" (parenthesized_expression "(**(code **)(pcVar7 + -0x7810))" ( (pointer_expression "**(code **)(pcVar7 + -0x7810)" * (pointer_expression "*(code **)(pcVar7 + -0x7810)" * (cast_expression "(code **)(pcVar7 + -0x7810)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar7 + -0x7810)" ( (binary_expression "pcVar7 + -0x7810" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "bVar3 = add_local_plt(pOVar4,object_00,symndx_00,uVar2);" (assignment_expression "bVar3 = add_local_plt(pOVar4,object_00,symndx_00,uVar2)" identifier = (call_expression "add_local_plt(pOVar4,object_00,symndx_00,uVar2)" identifier (argument_list "(pOVar4,object_00,symndx_00,uVar2)" ( identifier , identifier , identifier , identifier )))) ;) (return_statement "return bVar3;" return identifier ;) (ERROR "}" }))
(translation_unit "undefined4\ngold::Output_data_got<32,true>::add_local\n          (Relobj *param_1,uint param_2,uint param_3,ulonglong param_4)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  int iVar3;\n  undefined *puVar4;\n  Output_data_got<32,true> *this;\n  int *piVar5;\n  Relobj *pRVar6;\n  undefined *puVar7;\n  uint uVar8;\n  undefined4 in_a3;\n  uint uVar9;\n  undefined *puVar10;\n  \n  iVar1 = (**(code **)(*(int *)param_2 + 0xac))(param_2,param_3,in_a3,in_a3,param_4);\n  if (iVar1 != 0) {\n    return 0;\n  }\n  iVar1 = param_3 << 1;\n  if ((2 < param_3 + 0x80000003) && (-1 < (int)param_3)) {\n    uVar2 = add_got_entry(param_1);\n    (**(code **)(*(int *)param_2 + 0xb4))(param_2,param_3,in_a3,uVar2,param_4);\n    return 1;\n  }\n  piVar5 = (int *)&DAT_00000a5d;\n  puVar7 = PTR_s_in_a_linker_script_004c191c + -0x4350;\n  puVar4 = PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574;\n  puVar10 = PTR_do_gold_unreachable_004c1a30;\n  (*(code *)PTR_do_gold_unreachable_004c1a30)(puVar4);\n  iVar3 = (**(code **)(*piVar5 + 0xac))(piVar5,puVar7,iVar1);\n  if (iVar3 != 0) {\n    return 0;\n  }\n  uVar9 = (int)puVar7 << 1 | 1;\n  if (((undefined *)0x2 < puVar7 + -0x7ffffffd) && (-1 < (int)puVar7)) {\n    uVar2 = add_got_entry(puVar4);\n    (**(code **)(*piVar5 + 0xb4))(piVar5,puVar7,iVar1,uVar2,0,0);\n    return 1;\n  }\n  pRVar6 = (Relobj *)&DAT_00000a50;\n  uVar8 = *(int *)(puVar10 + 0x289520) - 0x4344;\n  this = (Output_data_got<32,true> *)(*(int *)(puVar10 + 0x288e80) + 0x3574);\n  (**(code **)(puVar10 + 0x289634))();\n  uVar2 = add_local_plt(this,pRVar6,uVar8,uVar9);\n  return uVar2;\n}\n\n" (declaration "undefined4\ngold::Output_data_got<32,true>::add_local\n          (Relobj *param_1,uint param_2,uint param_3,ulonglong param_4)\n\n{\n  int iVar1;" type_identifier (ERROR "gold::" identifier : :) identifier (ERROR "<32" < number_literal) , (ERROR "true>::add_local\n          (Relobj *param_1,uint param_2,uint param_3,ulonglong param_4)\n\n{\n  int" identifier > : : (function_declarator "add_local\n          (Relobj *param_1,uint param_2,uint param_3,ulonglong param_4)" identifier (parameter_list "(Relobj *param_1,uint param_2,uint param_3,ulonglong param_4)" ( (parameter_declaration "Relobj *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "ulonglong param_4" type_identifier identifier) ))) { primitive_type) identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (expression_statement "Output_data_got<32,true> *this;" (update_expression "Output_data_got<32,true> *this" (binary_expression "Output_data_got<32,true> *this" (binary_expression "Output_data_got<32" identifier < number_literal) (ERROR ",true" , true) > (pointer_expression "*this" * identifier)) --) ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "Relobj *pRVar6;" type_identifier (pointer_declarator "*pRVar6" * identifier) ;) (declaration "undefined *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "undefined4 in_a3;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "undefined *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (expression_statement "iVar1 = (**(code **)(*(int *)param_2 + 0xac))(param_2,param_3,in_a3,in_a3,param_4);" (assignment_expression "iVar1 = (**(code **)(*(int *)param_2 + 0xac))(param_2,param_3,in_a3,in_a3,param_4)" identifier = (call_expression "(**(code **)(*(int *)param_2 + 0xac))(param_2,param_3,in_a3,in_a3,param_4)" (parenthesized_expression "(**(code **)(*(int *)param_2 + 0xac))" ( (pointer_expression "**(code **)(*(int *)param_2 + 0xac)" * (pointer_expression "*(code **)(*(int *)param_2 + 0xac)" * (cast_expression "(code **)(*(int *)param_2 + 0xac)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)param_2 + 0xac)" ( (binary_expression "*(int *)param_2 + 0xac" (pointer_expression "*(int *)param_2" * (cast_expression "(int *)param_2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) )) (argument_list "(param_2,param_3,in_a3,in_a3,param_4)" ( identifier , identifier , identifier , identifier , identifier )))) ;) (if_statement "if (iVar1 != 0) {\n    return 0;\n  }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar1 = param_3 << 1;" (assignment_expression "iVar1 = param_3 << 1" identifier = (binary_expression "param_3 << 1" identifier << number_literal)) ;) (if_statement "if ((2 < param_3 + 0x80000003) && (-1 < (int)param_3)) {\n    uVar2 = add_got_entry(param_1);\n    (**(code **)(*(int *)param_2 + 0xb4))(param_2,param_3,in_a3,uVar2,param_4);\n    return 1;\n  }" if (parenthesized_expression "((2 < param_3 + 0x80000003) && (-1 < (int)param_3))" ( (binary_expression "(2 < param_3 + 0x80000003) && (-1 < (int)param_3)" (parenthesized_expression "(2 < param_3 + 0x80000003)" ( (binary_expression "2 < param_3 + 0x80000003" number_literal < (binary_expression "param_3 + 0x80000003" identifier + number_literal)) )) && (parenthesized_expression "(-1 < (int)param_3)" ( (binary_expression "-1 < (int)param_3" number_literal < (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n    uVar2 = add_got_entry(param_1);\n    (**(code **)(*(int *)param_2 + 0xb4))(param_2,param_3,in_a3,uVar2,param_4);\n    return 1;\n  }" { (expression_statement "uVar2 = add_got_entry(param_1);" (assignment_expression "uVar2 = add_got_entry(param_1)" identifier = (call_expression "add_got_entry(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "(**(code **)(*(int *)param_2 + 0xb4))(param_2,param_3,in_a3,uVar2,param_4);" (call_expression "(**(code **)(*(int *)param_2 + 0xb4))(param_2,param_3,in_a3,uVar2,param_4)" (parenthesized_expression "(**(code **)(*(int *)param_2 + 0xb4))" ( (pointer_expression "**(code **)(*(int *)param_2 + 0xb4)" * (pointer_expression "*(code **)(*(int *)param_2 + 0xb4)" * (cast_expression "(code **)(*(int *)param_2 + 0xb4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)param_2 + 0xb4)" ( (binary_expression "*(int *)param_2 + 0xb4" (pointer_expression "*(int *)param_2" * (cast_expression "(int *)param_2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) )) (argument_list "(param_2,param_3,in_a3,uVar2,param_4)" ( identifier , identifier , identifier , identifier , identifier ))) ;) (return_statement "return 1;" return number_literal ;) })) (expression_statement "piVar5 = (int *)&DAT_00000a5d;" (assignment_expression "piVar5 = (int *)&DAT_00000a5d" identifier = (cast_expression "(int *)&DAT_00000a5d" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_00000a5d" & identifier))) ;) (expression_statement "puVar7 = PTR_s_in_a_linker_script_004c191c + -0x4350;" (assignment_expression "puVar7 = PTR_s_in_a_linker_script_004c191c + -0x4350" identifier = (binary_expression "PTR_s_in_a_linker_script_004c191c + -0x4350" identifier + number_literal)) ;) (expression_statement "puVar4 = PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574;" (assignment_expression "puVar4 = PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574" identifier = (binary_expression "PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574" identifier + number_literal)) ;) (expression_statement "puVar10 = PTR_do_gold_unreachable_004c1a30;" (assignment_expression "puVar10 = PTR_do_gold_unreachable_004c1a30" identifier = identifier) ;) (expression_statement "(*(code *)PTR_do_gold_unreachable_004c1a30)(puVar4);" (call_expression "(*(code *)PTR_do_gold_unreachable_004c1a30)(puVar4)" (parenthesized_expression "(*(code *)PTR_do_gold_unreachable_004c1a30)" ( (pointer_expression "*(code *)PTR_do_gold_unreachable_004c1a30" * (cast_expression "(code *)PTR_do_gold_unreachable_004c1a30" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar4)" ( identifier ))) ;) (expression_statement "iVar3 = (**(code **)(*piVar5 + 0xac))(piVar5,puVar7,iVar1);" (assignment_expression "iVar3 = (**(code **)(*piVar5 + 0xac))(piVar5,puVar7,iVar1)" identifier = (call_expression "(**(code **)(*piVar5 + 0xac))(piVar5,puVar7,iVar1)" (parenthesized_expression "(**(code **)(*piVar5 + 0xac))" ( (pointer_expression "**(code **)(*piVar5 + 0xac)" * (pointer_expression "*(code **)(*piVar5 + 0xac)" * (cast_expression "(code **)(*piVar5 + 0xac)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar5 + 0xac)" ( (binary_expression "*piVar5 + 0xac" (pointer_expression "*piVar5" * identifier) + number_literal) ))))) )) (argument_list "(piVar5,puVar7,iVar1)" ( identifier , identifier , identifier )))) ;) (if_statement "if (iVar3 != 0) {\n    return 0;\n  }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "uVar9 = (int)puVar7 << 1 | 1;" (assignment_expression "uVar9 = (int)puVar7 << 1 | 1" identifier = (binary_expression "(int)puVar7 << 1 | 1" (binary_expression "(int)puVar7 << 1" (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal) | number_literal)) ;) (if_statement "if (((undefined *)0x2 < puVar7 + -0x7ffffffd) && (-1 < (int)puVar7)) {\n    uVar2 = add_got_entry(puVar4);\n    (**(code **)(*piVar5 + 0xb4))(piVar5,puVar7,iVar1,uVar2,0,0);\n    return 1;\n  }" if (parenthesized_expression "(((undefined *)0x2 < puVar7 + -0x7ffffffd) && (-1 < (int)puVar7))" ( (binary_expression "((undefined *)0x2 < puVar7 + -0x7ffffffd) && (-1 < (int)puVar7)" (parenthesized_expression "((undefined *)0x2 < puVar7 + -0x7ffffffd)" ( (binary_expression "(undefined *)0x2 < puVar7 + -0x7ffffffd" (cast_expression "(undefined *)0x2" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) < (binary_expression "puVar7 + -0x7ffffffd" identifier + number_literal)) )) && (parenthesized_expression "(-1 < (int)puVar7)" ( (binary_expression "-1 < (int)puVar7" number_literal < (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n    uVar2 = add_got_entry(puVar4);\n    (**(code **)(*piVar5 + 0xb4))(piVar5,puVar7,iVar1,uVar2,0,0);\n    return 1;\n  }" { (expression_statement "uVar2 = add_got_entry(puVar4);" (assignment_expression "uVar2 = add_got_entry(puVar4)" identifier = (call_expression "add_got_entry(puVar4)" identifier (argument_list "(puVar4)" ( identifier )))) ;) (expression_statement "(**(code **)(*piVar5 + 0xb4))(piVar5,puVar7,iVar1,uVar2,0,0);" (call_expression "(**(code **)(*piVar5 + 0xb4))(piVar5,puVar7,iVar1,uVar2,0,0)" (parenthesized_expression "(**(code **)(*piVar5 + 0xb4))" ( (pointer_expression "**(code **)(*piVar5 + 0xb4)" * (pointer_expression "*(code **)(*piVar5 + 0xb4)" * (cast_expression "(code **)(*piVar5 + 0xb4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar5 + 0xb4)" ( (binary_expression "*piVar5 + 0xb4" (pointer_expression "*piVar5" * identifier) + number_literal) ))))) )) (argument_list "(piVar5,puVar7,iVar1,uVar2,0,0)" ( identifier , identifier , identifier , identifier , number_literal , number_literal ))) ;) (return_statement "return 1;" return number_literal ;) })) (expression_statement "pRVar6 = (Relobj *)&DAT_00000a50;" (assignment_expression "pRVar6 = (Relobj *)&DAT_00000a50" identifier = (cast_expression "(Relobj *)&DAT_00000a50" ( (type_descriptor "Relobj *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_00000a50" & identifier))) ;) (expression_statement "uVar8 = *(int *)(puVar10 + 0x289520) - 0x4344;" (assignment_expression "uVar8 = *(int *)(puVar10 + 0x289520) - 0x4344" identifier = (binary_expression "*(int *)(puVar10 + 0x289520) - 0x4344" (pointer_expression "*(int *)(puVar10 + 0x289520)" * (cast_expression "(int *)(puVar10 + 0x289520)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0x289520)" ( (binary_expression "puVar10 + 0x289520" identifier + number_literal) )))) - number_literal)) ;) (expression_statement "this = (Output_data_got<32,true> *)(*(int *)(puVar10 + 0x288e80) + 0x3574);" (assignment_expression "this = (Output_data_got<32,true> *)(*(int *)(puVar10 + 0x288e80) + 0x3574)" identifier = (call_expression "(Output_data_got<32,true> *)(*(int *)(puVar10 + 0x288e80) + 0x3574)" (parenthesized_expression "(Output_data_got<32,true> *)" ( (comma_expression "Output_data_got<32,true> *" (binary_expression "Output_data_got<32" identifier < number_literal) , (binary_expression "true> *" true > (pointer_expression "*" * identifier))) )) (argument_list "(*(int *)(puVar10 + 0x288e80) + 0x3574)" ( (binary_expression "*(int *)(puVar10 + 0x288e80) + 0x3574" (pointer_expression "*(int *)(puVar10 + 0x288e80)" * (cast_expression "(int *)(puVar10 + 0x288e80)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0x288e80)" ( (binary_expression "puVar10 + 0x288e80" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "(**(code **)(puVar10 + 0x289634))();" (call_expression "(**(code **)(puVar10 + 0x289634))()" (parenthesized_expression "(**(code **)(puVar10 + 0x289634))" ( (pointer_expression "**(code **)(puVar10 + 0x289634)" * (pointer_expression "*(code **)(puVar10 + 0x289634)" * (cast_expression "(code **)(puVar10 + 0x289634)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar10 + 0x289634)" ( (binary_expression "puVar10 + 0x289634" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "uVar2 = add_local_plt(this,pRVar6,uVar8,uVar9);" (assignment_expression "uVar2 = add_local_plt(this,pRVar6,uVar8,uVar9)" identifier = (call_expression "add_local_plt(this,pRVar6,uVar8,uVar9)" identifier (argument_list "(this,pRVar6,uVar8,uVar9)" ( identifier , identifier , identifier , identifier )))) ;) (return_statement "return uVar2;" return identifier ;) (ERROR "}" }))
(translation_unit (declaration TYPE (ERROR IDENT : :) IDENT (ERROR < LIT) , (ERROR IDENT > : : (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) { TYPE) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (update_expression (binary_expression (binary_expression IDENT < LIT) (ERROR , BOOL) > (pointer_expression * IDENT)) --) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * 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 * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT << LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < (binary_expression IDENT + LIT)) )) && (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (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 * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT ))) ;) (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( 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 , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) << LIT) | LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) < (binary_expression IDENT + LIT)) )) && (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (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 , IDENT , LIT , LIT ))) ;) (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (comma_expression (binary_expression IDENT < LIT) , (binary_expression BOOL > (pointer_expression * IDENT))) )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (return_statement return IDENT ;) (ERROR }))
(declaration "undefined4\ngold::Output_data_got<32,true>::add_local\n          (Relobj *param_1,uint param_2,uint param_3,ulonglong param_4)\n\n{\n  int iVar1;" (type_identifier "undefined4") (ERROR "gold::" (identifier "gold") (: ":") (: ":")) (identifier "Output_data_got") (ERROR "<32" (< "<") (number_literal "32")) (, ",") (ERROR "true>::add_local\n          (Relobj *param_1,uint param_2,uint param_3,ulonglong param_4)\n\n{\n  int" (identifier "true") (> ">") (: ":") (: ":") (function_declarator "add_local\n          (Relobj *param_1,uint param_2,uint param_3,ulonglong param_4)" (identifier "add_local") (parameter_list "(Relobj *param_1,uint param_2,uint param_3,ulonglong param_4)" (( "(") (parameter_declaration "Relobj *param_1" (type_identifier "Relobj") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "uint param_2" (type_identifier "uint") (identifier "param_2")) (, ",") (parameter_declaration "uint param_3" (type_identifier "uint") (identifier "param_3")) (, ",") (parameter_declaration "ulonglong param_4" (type_identifier "ulonglong") (identifier "param_4")) () ")"))) ({ "{") (primitive_type "int")) (identifier "iVar1") (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (identifier "uVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "undefined *puVar4;" (type_identifier "undefined") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (expression_statement "Output_data_got<32,true> *this;" (update_expression "Output_data_got<32,true> *this" (binary_expression "Output_data_got<32,true> *this" (binary_expression "Output_data_got<32" (identifier "Output_data_got") (< "<") (number_literal "32")) (ERROR ",true" (, ",") (true "true")) (> ">") (pointer_expression "*this" (* "*") (identifier "this"))) (-- "")) (; ";")) (declaration "int *piVar5;" (primitive_type "int") (pointer_declarator "*piVar5" (* "*") (identifier "piVar5")) (; ";")) (declaration "Relobj *pRVar6;" (type_identifier "Relobj") (pointer_declarator "*pRVar6" (* "*") (identifier "pRVar6")) (; ";")) (declaration "undefined *puVar7;" (type_identifier "undefined") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "undefined4 in_a3;" (type_identifier "undefined4") (identifier "in_a3") (; ";")) (declaration "uint uVar9;" (type_identifier "uint") (identifier "uVar9") (; ";")) (declaration "undefined *puVar10;" (type_identifier "undefined") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (expression_statement "iVar1 = (**(code **)(*(int *)param_2 + 0xac))(param_2,param_3,in_a3,in_a3,param_4);" (assignment_expression "iVar1 = (**(code **)(*(int *)param_2 + 0xac))(param_2,param_3,in_a3,in_a3,param_4)" (identifier "iVar1") (= "=") (call_expression "(**(code **)(*(int *)param_2 + 0xac))(param_2,param_3,in_a3,in_a3,param_4)" (parenthesized_expression "(**(code **)(*(int *)param_2 + 0xac))" (( "(") (pointer_expression "**(code **)(*(int *)param_2 + 0xac)" (* "*") (pointer_expression "*(code **)(*(int *)param_2 + 0xac)" (* "*") (cast_expression "(code **)(*(int *)param_2 + 0xac)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)param_2 + 0xac)" (( "(") (binary_expression "*(int *)param_2 + 0xac" (pointer_expression "*(int *)param_2" (* "*") (cast_expression "(int *)param_2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_2"))) (+ "+") (number_literal "0xac")) () ")"))))) () ")")) (argument_list "(param_2,param_3,in_a3,in_a3,param_4)" (( "(") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "in_a3") (, ",") (identifier "in_a3") (, ",") (identifier "param_4") () ")")))) (; ";")) (if_statement "if (iVar1 != 0) {\n    return 0;\n  }" (if "if") (parenthesized_expression "(iVar1 != 0)" (( "(") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "iVar1 = param_3 << 1;" (assignment_expression "iVar1 = param_3 << 1" (identifier "iVar1") (= "=") (binary_expression "param_3 << 1" (identifier "param_3") (<< "<<") (number_literal "1"))) (; ";")) (if_statement "if ((2 < param_3 + 0x80000003) && (-1 < (int)param_3)) {\n    uVar2 = add_got_entry(param_1);\n    (**(code **)(*(int *)param_2 + 0xb4))(param_2,param_3,in_a3,uVar2,param_4);\n    return 1;\n  }" (if "if") (parenthesized_expression "((2 < param_3 + 0x80000003) && (-1 < (int)param_3))" (( "(") (binary_expression "(2 < param_3 + 0x80000003) && (-1 < (int)param_3)" (parenthesized_expression "(2 < param_3 + 0x80000003)" (( "(") (binary_expression "2 < param_3 + 0x80000003" (number_literal "2") (< "<") (binary_expression "param_3 + 0x80000003" (identifier "param_3") (+ "+") (number_literal "0x80000003"))) () ")")) (&& "&&") (parenthesized_expression "(-1 < (int)param_3)" (( "(") (binary_expression "-1 < (int)param_3" (number_literal "-1") (< "<") (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3"))) () ")"))) () ")")) (compound_statement "{\n    uVar2 = add_got_entry(param_1);\n    (**(code **)(*(int *)param_2 + 0xb4))(param_2,param_3,in_a3,uVar2,param_4);\n    return 1;\n  }" ({ "{") (expression_statement "uVar2 = add_got_entry(param_1);" (assignment_expression "uVar2 = add_got_entry(param_1)" (identifier "uVar2") (= "=") (call_expression "add_got_entry(param_1)" (identifier "add_got_entry") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "(**(code **)(*(int *)param_2 + 0xb4))(param_2,param_3,in_a3,uVar2,param_4);" (call_expression "(**(code **)(*(int *)param_2 + 0xb4))(param_2,param_3,in_a3,uVar2,param_4)" (parenthesized_expression "(**(code **)(*(int *)param_2 + 0xb4))" (( "(") (pointer_expression "**(code **)(*(int *)param_2 + 0xb4)" (* "*") (pointer_expression "*(code **)(*(int *)param_2 + 0xb4)" (* "*") (cast_expression "(code **)(*(int *)param_2 + 0xb4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)param_2 + 0xb4)" (( "(") (binary_expression "*(int *)param_2 + 0xb4" (pointer_expression "*(int *)param_2" (* "*") (cast_expression "(int *)param_2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_2"))) (+ "+") (number_literal "0xb4")) () ")"))))) () ")")) (argument_list "(param_2,param_3,in_a3,uVar2,param_4)" (( "(") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "in_a3") (, ",") (identifier "uVar2") (, ",") (identifier "param_4") () ")"))) (; ";")) (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (expression_statement "piVar5 = (int *)&DAT_00000a5d;" (assignment_expression "piVar5 = (int *)&DAT_00000a5d" (identifier "piVar5") (= "=") (cast_expression "(int *)&DAT_00000a5d" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&DAT_00000a5d" (& "&") (identifier "DAT_00000a5d")))) (; ";")) (expression_statement "puVar7 = PTR_s_in_a_linker_script_004c191c + -0x4350;" (assignment_expression "puVar7 = PTR_s_in_a_linker_script_004c191c + -0x4350" (identifier "puVar7") (= "=") (binary_expression "PTR_s_in_a_linker_script_004c191c + -0x4350" (identifier "PTR_s_in_a_linker_script_004c191c") (+ "+") (number_literal "-0x4350"))) (; ";")) (expression_statement "puVar4 = PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574;" (assignment_expression "puVar4 = PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574" (identifier "puVar4") (= "=") (binary_expression "PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574" (identifier "PTR_s_ral_options14Struct_no_crefE_004c127c") (+ "+") (number_literal "0x3574"))) (; ";")) (expression_statement "puVar10 = PTR_do_gold_unreachable_004c1a30;" (assignment_expression "puVar10 = PTR_do_gold_unreachable_004c1a30" (identifier "puVar10") (= "=") (identifier "PTR_do_gold_unreachable_004c1a30")) (; ";")) (expression_statement "(*(code *)PTR_do_gold_unreachable_004c1a30)(puVar4);" (call_expression "(*(code *)PTR_do_gold_unreachable_004c1a30)(puVar4)" (parenthesized_expression "(*(code *)PTR_do_gold_unreachable_004c1a30)" (( "(") (pointer_expression "*(code *)PTR_do_gold_unreachable_004c1a30" (* "*") (cast_expression "(code *)PTR_do_gold_unreachable_004c1a30" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_do_gold_unreachable_004c1a30"))) () ")")) (argument_list "(puVar4)" (( "(") (identifier "puVar4") () ")"))) (; ";")) (expression_statement "iVar3 = (**(code **)(*piVar5 + 0xac))(piVar5,puVar7,iVar1);" (assignment_expression "iVar3 = (**(code **)(*piVar5 + 0xac))(piVar5,puVar7,iVar1)" (identifier "iVar3") (= "=") (call_expression "(**(code **)(*piVar5 + 0xac))(piVar5,puVar7,iVar1)" (parenthesized_expression "(**(code **)(*piVar5 + 0xac))" (( "(") (pointer_expression "**(code **)(*piVar5 + 0xac)" (* "*") (pointer_expression "*(code **)(*piVar5 + 0xac)" (* "*") (cast_expression "(code **)(*piVar5 + 0xac)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar5 + 0xac)" (( "(") (binary_expression "*piVar5 + 0xac" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (+ "+") (number_literal "0xac")) () ")"))))) () ")")) (argument_list "(piVar5,puVar7,iVar1)" (( "(") (identifier "piVar5") (, ",") (identifier "puVar7") (, ",") (identifier "iVar1") () ")")))) (; ";")) (if_statement "if (iVar3 != 0) {\n    return 0;\n  }" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "uVar9 = (int)puVar7 << 1 | 1;" (assignment_expression "uVar9 = (int)puVar7 << 1 | 1" (identifier "uVar9") (= "=") (binary_expression "(int)puVar7 << 1 | 1" (binary_expression "(int)puVar7 << 1" (cast_expression "(int)puVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar7")) (<< "<<") (number_literal "1")) (| "|") (number_literal "1"))) (; ";")) (if_statement "if (((undefined *)0x2 < puVar7 + -0x7ffffffd) && (-1 < (int)puVar7)) {\n    uVar2 = add_got_entry(puVar4);\n    (**(code **)(*piVar5 + 0xb4))(piVar5,puVar7,iVar1,uVar2,0,0);\n    return 1;\n  }" (if "if") (parenthesized_expression "(((undefined *)0x2 < puVar7 + -0x7ffffffd) && (-1 < (int)puVar7))" (( "(") (binary_expression "((undefined *)0x2 < puVar7 + -0x7ffffffd) && (-1 < (int)puVar7)" (parenthesized_expression "((undefined *)0x2 < puVar7 + -0x7ffffffd)" (( "(") (binary_expression "(undefined *)0x2 < puVar7 + -0x7ffffffd" (cast_expression "(undefined *)0x2" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x2")) (< "<") (binary_expression "puVar7 + -0x7ffffffd" (identifier "puVar7") (+ "+") (number_literal "-0x7ffffffd"))) () ")")) (&& "&&") (parenthesized_expression "(-1 < (int)puVar7)" (( "(") (binary_expression "-1 < (int)puVar7" (number_literal "-1") (< "<") (cast_expression "(int)puVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar7"))) () ")"))) () ")")) (compound_statement "{\n    uVar2 = add_got_entry(puVar4);\n    (**(code **)(*piVar5 + 0xb4))(piVar5,puVar7,iVar1,uVar2,0,0);\n    return 1;\n  }" ({ "{") (expression_statement "uVar2 = add_got_entry(puVar4);" (assignment_expression "uVar2 = add_got_entry(puVar4)" (identifier "uVar2") (= "=") (call_expression "add_got_entry(puVar4)" (identifier "add_got_entry") (argument_list "(puVar4)" (( "(") (identifier "puVar4") () ")")))) (; ";")) (expression_statement "(**(code **)(*piVar5 + 0xb4))(piVar5,puVar7,iVar1,uVar2,0,0);" (call_expression "(**(code **)(*piVar5 + 0xb4))(piVar5,puVar7,iVar1,uVar2,0,0)" (parenthesized_expression "(**(code **)(*piVar5 + 0xb4))" (( "(") (pointer_expression "**(code **)(*piVar5 + 0xb4)" (* "*") (pointer_expression "*(code **)(*piVar5 + 0xb4)" (* "*") (cast_expression "(code **)(*piVar5 + 0xb4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar5 + 0xb4)" (( "(") (binary_expression "*piVar5 + 0xb4" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (+ "+") (number_literal "0xb4")) () ")"))))) () ")")) (argument_list "(piVar5,puVar7,iVar1,uVar2,0,0)" (( "(") (identifier "piVar5") (, ",") (identifier "puVar7") (, ",") (identifier "iVar1") (, ",") (identifier "uVar2") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")"))) (; ";")) (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (expression_statement "pRVar6 = (Relobj *)&DAT_00000a50;" (assignment_expression "pRVar6 = (Relobj *)&DAT_00000a50" (identifier "pRVar6") (= "=") (cast_expression "(Relobj *)&DAT_00000a50" (( "(") (type_descriptor "Relobj *" (type_identifier "Relobj") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&DAT_00000a50" (& "&") (identifier "DAT_00000a50")))) (; ";")) (expression_statement "uVar8 = *(int *)(puVar10 + 0x289520) - 0x4344;" (assignment_expression "uVar8 = *(int *)(puVar10 + 0x289520) - 0x4344" (identifier "uVar8") (= "=") (binary_expression "*(int *)(puVar10 + 0x289520) - 0x4344" (pointer_expression "*(int *)(puVar10 + 0x289520)" (* "*") (cast_expression "(int *)(puVar10 + 0x289520)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + 0x289520)" (( "(") (binary_expression "puVar10 + 0x289520" (identifier "puVar10") (+ "+") (number_literal "0x289520")) () ")")))) (- "-") (number_literal "0x4344"))) (; ";")) (expression_statement "this = (Output_data_got<32,true> *)(*(int *)(puVar10 + 0x288e80) + 0x3574);" (assignment_expression "this = (Output_data_got<32,true> *)(*(int *)(puVar10 + 0x288e80) + 0x3574)" (identifier "this") (= "=") (call_expression "(Output_data_got<32,true> *)(*(int *)(puVar10 + 0x288e80) + 0x3574)" (parenthesized_expression "(Output_data_got<32,true> *)" (( "(") (comma_expression "Output_data_got<32,true> *" (binary_expression "Output_data_got<32" (identifier "Output_data_got") (< "<") (number_literal "32")) (, ",") (binary_expression "true> *" (true "true") (> ">") (pointer_expression "*" (* "*") (identifier "")))) () ")")) (argument_list "(*(int *)(puVar10 + 0x288e80) + 0x3574)" (( "(") (binary_expression "*(int *)(puVar10 + 0x288e80) + 0x3574" (pointer_expression "*(int *)(puVar10 + 0x288e80)" (* "*") (cast_expression "(int *)(puVar10 + 0x288e80)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + 0x288e80)" (( "(") (binary_expression "puVar10 + 0x288e80" (identifier "puVar10") (+ "+") (number_literal "0x288e80")) () ")")))) (+ "+") (number_literal "0x3574")) () ")")))) (; ";")) (expression_statement "(**(code **)(puVar10 + 0x289634))();" (call_expression "(**(code **)(puVar10 + 0x289634))()" (parenthesized_expression "(**(code **)(puVar10 + 0x289634))" (( "(") (pointer_expression "**(code **)(puVar10 + 0x289634)" (* "*") (pointer_expression "*(code **)(puVar10 + 0x289634)" (* "*") (cast_expression "(code **)(puVar10 + 0x289634)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar10 + 0x289634)" (( "(") (binary_expression "puVar10 + 0x289634" (identifier "puVar10") (+ "+") (number_literal "0x289634")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uVar2 = add_local_plt(this,pRVar6,uVar8,uVar9);" (assignment_expression "uVar2 = add_local_plt(this,pRVar6,uVar8,uVar9)" (identifier "uVar2") (= "=") (call_expression "add_local_plt(this,pRVar6,uVar8,uVar9)" (identifier "add_local_plt") (argument_list "(this,pRVar6,uVar8,uVar9)" (( "(") (identifier "this") (, ",") (identifier "pRVar6") (, ",") (identifier "uVar8") (, ",") (identifier "uVar9") () ")")))) (; ";")) (return_statement "return uVar2;" (return "return") (identifier "uVar2") (; ";")) (ERROR "}" (} "}"))
(translation_unit (declaration type: (type_identifier) (ERROR (identifier)) declarator: (identifier) (ERROR (number_literal)) (ERROR (identifier) (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)))) (primitive_type)) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (expression_statement (update_expression argument: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) (ERROR (true)) right: (pointer_expression argument: (identifier))) operator: (MISSING "--"))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (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: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (number_literal))))))) arguments: (argument_list (identifier) (identifier) (identifier) (identifier) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (number_literal) right: (binary_expression left: (identifier) right: (number_literal)))) right: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (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: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (number_literal))))))) arguments: (argument_list (identifier) (identifier) (identifier) (identifier) (identifier)))) (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (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) (identifier) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) right: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (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) (identifier) (number_literal) (number_literal)))) (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (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: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (comma_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (true) right: (pointer_expression argument: (MISSING identifier))))) arguments: (argument_list (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 (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: (identifier) right: (number_literal))))))) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (identifier))))) (return_statement (identifier)) (ERROR))

/* gold::Output_data_got<32, true>::MASKED(gold::Relobj*, unsigned int, unsigned int, unsigned
   long long) */

undefined4
gold::Output_data_got<32,true>::MASKED
          (Relobj *param_1,uint param_2,uint param_3,ulonglong param_4)

{
  int iVar1;
  undefined4 uVar2;
  int iVar3;
  undefined *puVar4;
  Output_data_got<32,true> *this;
  int *piVar5;
  Relobj *pRVar6;
  undefined *puVar7;
  uint uVar8;
  undefined4 in_a3;
  uint uVar9;
  undefined *puVar10;
  
  iVar1 = (**(code **)(*(int *)param_2 + 0xac))(param_2,param_3,in_a3,in_a3,param_4);
  if (iVar1 != 0) {
    return 0;
  }
  iVar1 = param_3 << 1;
  if ((2 < param_3 + 0x80000003) && (-1 < (int)param_3)) {
    uVar2 = add_got_entry(param_1);
    (**(code **)(*(int *)param_2 + 0xb4))(param_2,param_3,in_a3,uVar2,param_4);
    return 1;
  }
  piVar5 = (int *)&DAT_00000a5d;
  puVar7 = PTR_s_in_a_linker_script_004c191c + -0x4350;
  puVar4 = PTR_s_ral_options14Struct_no_crefE_004c127c + 0x3574;
  puVar10 = PTR_do_gold_unreachable_004c1a30;
  (*(code *)PTR_do_gold_unreachable_004c1a30)(puVar4);
  iVar3 = (**(code **)(*piVar5 + 0xac))(piVar5,puVar7,iVar1);
  if (iVar3 != 0) {
    return 0;
  }
  uVar9 = (int)puVar7 << 1 | 1;
  if (((undefined *)0x2 < puVar7 + -0x7ffffffd) && (-1 < (int)puVar7)) {
    uVar2 = add_got_entry(puVar4);
    (**(code **)(*piVar5 + 0xb4))(piVar5,puVar7,iVar1,uVar2,0,0);
    return 1;
  }
  pRVar6 = (Relobj *)&DAT_00000a50;
  uVar8 = *(int *)(puVar10 + 0x289520) - 0x4344;
  this = (Output_data_got<32,true> *)(*(int *)(puVar10 + 0x288e80) + 0x3574);
  (**(code **)(puVar10 + 0x289634))();
  uVar2 = MASKED_plt(this,pRVar6,uVar8,uVar9);
  return uVar2;
}

