
/* DWARF original prototype: void replace_got_entry(Output_data_got<32,_false> * this, uint i,
   Got_entry got_entry) */

void __thiscall
gold::Output_data_got<32,_false>::replace_got_entry
          (Output_data_got<32,_false> *this,uint i,Got_entry got_entry)

{
  anon_union_8_3_9d565b01_for_u_ *paVar1;
  pointer pGVar2;
  
  pGVar2 = (this->entries_).
           super__Vector_base<gold::Output_data_got<32,_false>::Got_entry,_std::allocator<gold::Output_data_got<32,_false>::Got_entry>_>
           ._M_impl._M_start;
  if ((ulong)i <
      (ulong)(((long)(this->entries_).
                     super__Vector_base<gold::Output_data_got<32,_false>::Got_entry,_std::allocator<gold::Output_data_got<32,_false>::Got_entry>_>
                     ._M_impl._M_finish - (long)pGVar2 >> 3) * -0x5555555555555555)) {
    paVar1 = &pGVar2[i].u_;
    *paVar1 = got_entry.u_;
    paVar1[1] = (anon_union_8_3_9d565b01_for_u_)got_entry._8_8_;
    paVar1[2] = (anon_union_8_3_9d565b01_for_u_)got_entry.addend_;
    return;
  }
                    /* WARNING: Subroutine does not return */
  do_gold_unreachable("../../gold/output.cc",0x725,"replace_got_entry");
}



void FUN_00208300(long param_1,uint param_2)

{
  undefined8 *puVar1;
  undefined8 in_stack_00000008;
  undefined8 in_stack_00000010;
  undefined8 in_stack_00000018;
  
  if ((ulong)param_2 <
      (ulong)((*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3) * -0x5555555555555555)) {
    puVar1 = (undefined8 *)(*(long *)(param_1 + 0x38) + (ulong)param_2 * 0x18);
    *puVar1 = in_stack_00000008;
    puVar1[1] = in_stack_00000010;
    puVar1[2] = in_stack_00000018;
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_0017c650("../../gold/output.cc",0x725,"replace_got_entry");
}


MOV RCX,-0x5555555555555555
SUB RSP,0x8
MOV ESI,ESI
MOV RDX,qword ptr [RDI + 0x38]
MOV RAX,qword ptr [RDI + 0x40]
SUB RAX,RDX
SAR RAX,0x3
IMUL RAX,RCX
CMP RSI,RAX
JNC 0x00208347
LEA RAX,[RSI + RSI*0x2]
MOVDQU XMM0,xmmword ptr [RSP + 0x10]
LEA RAX,[RDX + RAX*0x8]
MOV RDX,qword ptr [RSP + 0x20]
MOVUPS xmmword ptr [RAX],XMM0
MOV qword ptr [RAX + 0x10],RDX
ADD RSP,0x8
RET
LEA RDX,[0x37ef30]
MOV ESI,0x725
LEA RDI,[0x37e8ef]
CALL 0x0017c650
(translation_unit "void FUN_00208300(long param_1,uint param_2)\n\n{\n  undefined8 *puVar1;\n  undefined8 in_stack_00000008;\n  undefined8 in_stack_00000010;\n  undefined8 in_stack_00000018;\n  \n  if ((ulong)param_2 <\n      (ulong)((*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3) * -0x5555555555555555)) {\n    puVar1 = (undefined8 *)(*(long *)(param_1 + 0x38) + (ulong)param_2 * 0x18);\n    *puVar1 = in_stack_00000008;\n    puVar1[1] = in_stack_00000010;\n    puVar1[2] = in_stack_00000018;\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0017c650("../../gold/output.cc",0x725,"replace_got_entry");\n}\n\n" (function_definition "void FUN_00208300(long param_1,uint param_2)\n\n{\n  undefined8 *puVar1;\n  undefined8 in_stack_00000008;\n  undefined8 in_stack_00000010;\n  undefined8 in_stack_00000018;\n  \n  if ((ulong)param_2 <\n      (ulong)((*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3) * -0x5555555555555555)) {\n    puVar1 = (undefined8 *)(*(long *)(param_1 + 0x38) + (ulong)param_2 * 0x18);\n    *puVar1 = in_stack_00000008;\n    puVar1[1] = in_stack_00000010;\n    puVar1[2] = in_stack_00000018;\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0017c650("../../gold/output.cc",0x725,"replace_got_entry");\n}" primitive_type (function_declarator "FUN_00208300(long param_1,uint param_2)" identifier (parameter_list "(long param_1,uint param_2)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "uint param_2" type_identifier identifier) ))) (compound_statement "{\n  undefined8 *puVar1;\n  undefined8 in_stack_00000008;\n  undefined8 in_stack_00000010;\n  undefined8 in_stack_00000018;\n  \n  if ((ulong)param_2 <\n      (ulong)((*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3) * -0x5555555555555555)) {\n    puVar1 = (undefined8 *)(*(long *)(param_1 + 0x38) + (ulong)param_2 * 0x18);\n    *puVar1 = in_stack_00000008;\n    puVar1[1] = in_stack_00000010;\n    puVar1[2] = in_stack_00000018;\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0017c650("../../gold/output.cc",0x725,"replace_got_entry");\n}" { (declaration "undefined8 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined8 in_stack_00000008;" type_identifier identifier ;) (declaration "undefined8 in_stack_00000010;" type_identifier identifier ;) (declaration "undefined8 in_stack_00000018;" type_identifier identifier ;) (if_statement "if ((ulong)param_2 <\n      (ulong)((*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3) * -0x5555555555555555)) {\n    puVar1 = (undefined8 *)(*(long *)(param_1 + 0x38) + (ulong)param_2 * 0x18);\n    *puVar1 = in_stack_00000008;\n    puVar1[1] = in_stack_00000010;\n    puVar1[2] = in_stack_00000018;\n    return;\n  }" if (parenthesized_expression "((ulong)param_2 <\n      (ulong)((*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3) * -0x5555555555555555))" ( (binary_expression "(ulong)param_2 <\n      (ulong)((*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3) * -0x5555555555555555)" (cast_expression "(ulong)param_2" ( (type_descriptor "ulong" type_identifier) ) identifier) < (call_expression "(ulong)((*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3) * -0x5555555555555555)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3) * -0x5555555555555555)" ( (binary_expression "(*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3) * -0x5555555555555555" (parenthesized_expression "(*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3)" ( (binary_expression "*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3" (binary_expression "*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38)" (pointer_expression "*(long *)(param_1 + 0x40)" * (cast_expression "(long *)(param_1 + 0x40)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) - (pointer_expression "*(long *)(param_1 + 0x38)" * (cast_expression "(long *)(param_1 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) ))))) >> number_literal) )) * number_literal) )))) )) (compound_statement "{\n    puVar1 = (undefined8 *)(*(long *)(param_1 + 0x38) + (ulong)param_2 * 0x18);\n    *puVar1 = in_stack_00000008;\n    puVar1[1] = in_stack_00000010;\n    puVar1[2] = in_stack_00000018;\n    return;\n  }" { (expression_statement "puVar1 = (undefined8 *)(*(long *)(param_1 + 0x38) + (ulong)param_2 * 0x18);" (assignment_expression "puVar1 = (undefined8 *)(*(long *)(param_1 + 0x38) + (ulong)param_2 * 0x18)" identifier = (cast_expression "(undefined8 *)(*(long *)(param_1 + 0x38) + (ulong)param_2 * 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x38) + (ulong)param_2 * 0x18)" ( (binary_expression "*(long *)(param_1 + 0x38) + (ulong)param_2 * 0x18" (pointer_expression "*(long *)(param_1 + 0x38)" * (cast_expression "(long *)(param_1 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) + (binary_expression "(ulong)param_2 * 0x18" (cast_expression "(ulong)param_2" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) )))) ;) (expression_statement "*puVar1 = in_stack_00000008;" (assignment_expression "*puVar1 = in_stack_00000008" (pointer_expression "*puVar1" * identifier) = identifier) ;) (expression_statement "puVar1[1] = in_stack_00000010;" (assignment_expression "puVar1[1] = in_stack_00000010" (subscript_expression "puVar1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar1[2] = in_stack_00000018;" (assignment_expression "puVar1[2] = in_stack_00000018" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = identifier) ;) (return_statement "return;" return ;) })) comment (expression_statement "FUN_0017c650("../../gold/output.cc",0x725,"replace_got_entry");" (call_expression "FUN_0017c650("../../gold/output.cc",0x725,"replace_got_entry")" identifier (argument_list "("../../gold/output.cc",0x725,"replace_got_entry")" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""replace_got_entry"" " string_content ") ))) ;) })))
(translation_unit "/* DWARF original prototype: void replace_got_entry(Output_data_got<32,_false> * this, uint i,\n   Got_entry got_entry) */\n\nvoid __thiscall\ngold::Output_data_got<32,_false>::replace_got_entry\n          (Output_data_got<32,_false> *this,uint i,Got_entry got_entry)\n\n{\n  anon_union_8_3_9d565b01_for_u_ *paVar1;\n  pointer pGVar2;\n  \n  pGVar2 = (this->entries_).\n           super__Vector_base<gold::Output_data_got<32,_false>::Got_entry,_std::allocator<gold::Output_data_got<32,_false>::Got_entry>_>\n           ._M_impl._M_start;\n  if ((ulong)i <\n      (ulong)(((long)(this->entries_).\n                     super__Vector_base<gold::Output_data_got<32,_false>::Got_entry,_std::allocator<gold::Output_data_got<32,_false>::Got_entry>_>\n                     ._M_impl._M_finish - (long)pGVar2 >> 3) * -0x5555555555555555)) {\n    paVar1 = &pGVar2[i].u_;\n    *paVar1 = got_entry.u_;\n    paVar1[1] = (anon_union_8_3_9d565b01_for_u_)got_entry._8_8_;\n    paVar1[2] = (anon_union_8_3_9d565b01_for_u_)got_entry.addend_;\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable("../../gold/output.cc",0x725,"replace_got_entry");\n}\n\n" comment (declaration "void __thiscall\ngold::Output_data_got<32,_false>::replace_got_entry\n          (Output_data_got<32,_false> *this,uint i,Got_entry got_entry)\n\n{\n  anon_union_8_3_9d565b01_for_u_ *paVar1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::" identifier : :) identifier (ERROR "<32" < number_literal) , (ERROR "_false>::replace_got_entry\n          (Output_data_got<32,_false> *this,uint i,Got_entry got_entry)\n\n{\n  anon_union_8_3_9d565b01_for_u_" identifier > : : (function_declarator "replace_got_entry\n          (Output_data_got<32,_false> *this,uint i,Got_entry got_entry)" identifier (parameter_list "(Output_data_got<32,_false> *this,uint i,Got_entry got_entry)" ( (parameter_declaration "Output_data_got" type_identifier) (ERROR "<32" < number_literal) , (parameter_declaration "_false> *this" type_identifier (ERROR ">" >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "uint i" type_identifier identifier) , (parameter_declaration "Got_entry got_entry" type_identifier identifier) ))) { identifier) (pointer_declarator "*paVar1" * identifier) ;) (declaration "pointer pGVar2;" type_identifier identifier ;) (expression_statement "pGVar2 = (this->entries_).\n           super__Vector_base<gold::Output_data_got<32,_false>::Got_entry,_std::allocator<gold::Output_data_got<32,_false>::Got_entry>_>\n           ._M_impl._M_start;" (field_expression "pGVar2 = (this->entries_).\n           super__Vector_base<gold::Output_data_got<32,_false>::Got_entry,_std::allocator<gold::Output_data_got<32,_false>::Got_entry>_>\n           ._M_impl._M_start" (field_expression "pGVar2 = (this->entries_).\n           super__Vector_base<gold::Output_data_got<32,_false>::Got_entry,_std::allocator<gold::Output_data_got<32,_false>::Got_entry>_>\n           ._M_impl" (binary_expression "pGVar2 = (this->entries_).\n           super__Vector_base<gold::Output_data_got<32,_false>::Got_entry,_std::allocator<gold::Output_data_got<32,_false>::Got_entry>_" (binary_expression "pGVar2 = (this->entries_).\n           super__Vector_base<gold::Output_data_got<32,_false>::Got_entry,_std::allocator<gold::Output_data_got<32,_false>::Got_entry" (binary_expression "pGVar2 = (this->entries_).\n           super__Vector_base<gold::Output_data_got<32,_false>::Got_entry,_std::allocator<gold::Output_data_got<32" (binary_expression "pGVar2 = (this->entries_).\n           super__Vector_base<gold::Output_data_got<32,_false>::Got_entry,_std::allocator<gold" (binary_expression "pGVar2 = (this->entries_).\n           super__Vector_base<gold::Output_data_got<32,_false>::Got_entry" (binary_expression "pGVar2 = (this->entries_).\n           super__Vector_base<gold::Output_data_got<32" (assignment_expression "pGVar2 = (this->entries_).\n           super__Vector_base<gold" identifier = (binary_expression "(this->entries_).\n           super__Vector_base<gold" (field_expression "(this->entries_).\n           super__Vector_base" (parenthesized_expression "(this->entries_)" ( (field_expression "this->entries_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Output_data_got" : : identifier) < number_literal) (ERROR ",_false" , identifier) > (ERROR "::" : :) identifier) (ERROR ",_std::allocator" , identifier : : identifier) < identifier) (ERROR "::Output_data_got" : : identifier) < number_literal) (ERROR ",_false" , identifier) > (ERROR "::" : :) identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (if_statement "if ((ulong)i <\n      (ulong)(((long)(this->entries_).\n                     super__Vector_base<gold::Output_data_got<32,_false>::Got_entry,_std::allocator<gold::Output_data_got<32,_false>::Got_entry>_>\n                     ._M_impl._M_finish - (long)pGVar2 >> 3) * -0x5555555555555555)) {\n    paVar1 = &pGVar2[i].u_;\n    *paVar1 = got_entry.u_;\n    paVar1[1] = (anon_union_8_3_9d565b01_for_u_)got_entry._8_8_;\n    paVar1[2] = (anon_union_8_3_9d565b01_for_u_)got_entry.addend_;\n    return;\n  }" if (parenthesized_expression "((ulong)i <\n      (ulong)(((long)(this->entries_).\n                     super__Vector_base<gold::Output_data_got<32,_false>::Got_entry,_std::allocator<gold::Output_data_got<32,_false>::Got_entry>_>\n                     ._M_impl._M_finish - (long)pGVar2 >> 3) * -0x5555555555555555))" ( (binary_expression "(ulong)i <\n      (ulong)(((long)(this->entries_).\n                     super__Vector_base<gold::Output_data_got<32,_false>::Got_entry,_std::allocator<gold::Output_data_got<32,_false>::Got_entry>_>\n                     ._M_impl._M_finish - (long)pGVar2 >> 3) * -0x5555555555555555)" (cast_expression "(ulong)i" ( (type_descriptor "ulong" type_identifier) ) identifier) < (call_expression "(ulong)(((long)(this->entries_).\n                     super__Vector_base<gold::Output_data_got<32,_false>::Got_entry,_std::allocator<gold::Output_data_got<32,_false>::Got_entry>_>\n                     ._M_impl._M_finish - (long)pGVar2 >> 3) * -0x5555555555555555)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(((long)(this->entries_).\n                     super__Vector_base<gold::Output_data_got<32,_false>::Got_entry,_std::allocator<gold::Output_data_got<32,_false>::Got_entry>_>\n                     ._M_impl._M_finish - (long)pGVar2 >> 3) * -0x5555555555555555)" ( (binary_expression "((long)(this->entries_).\n                     super__Vector_base<gold::Output_data_got<32,_false>::Got_entry,_std::allocator<gold::Output_data_got<32,_false>::Got_entry>_>\n                     ._M_impl._M_finish - (long)pGVar2 >> 3) * -0x5555555555555555" (parenthesized_expression "((long)(this->entries_).\n                     super__Vector_base<gold::Output_data_got<32,_false>::Got_entry,_std::allocator<gold::Output_data_got<32,_false>::Got_entry>_>\n                     ._M_impl._M_finish - (long)pGVar2 >> 3)" ( (ERROR "(long)(this->entries_).\n                     super__Vector_base<gold::Output_data_got<32,_false>::Got_entry,_std::allocator<gold::" (comma_expression "(long)(this->entries_).\n                     super__Vector_base<gold::Output_data_got<32,_false>::Got_entry,_std" (binary_expression "(long)(this->entries_).\n                     super__Vector_base<gold::Output_data_got<32" (binary_expression "(long)(this->entries_).\n                     super__Vector_base<gold" (cast_expression "(long)(this->entries_).\n                     super__Vector_base" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "(this->entries_).\n                     super__Vector_base" (parenthesized_expression "(this->entries_)" ( (field_expression "this->entries_" identifier -> field_identifier) )) . field_identifier)) < identifier) (ERROR "::Output_data_got" : : identifier) < number_literal) , (comma_expression "_false>::Got_entry,_std" (binary_expression "_false>::Got_entry" identifier > (ERROR "::" : :) identifier) , identifier)) : : (binary_expression "allocator<gold" identifier < identifier) : :) (comma_expression "Output_data_got<32,_false>::Got_entry>_>\n                     ._M_impl._M_finish - (long)pGVar2 >> 3" (binary_expression "Output_data_got<32" identifier < number_literal) , (binary_expression "_false>::Got_entry>_>\n                     ._M_impl._M_finish - (long)pGVar2 >> 3" (binary_expression "_false>::Got_entry>_>\n                     ._M_impl._M_finish - (long)pGVar2" (field_expression "_false>::Got_entry>_>\n                     ._M_impl._M_finish" (field_expression "_false>::Got_entry>_>\n                     ._M_impl" (binary_expression "_false>::Got_entry>_" (binary_expression "_false>::Got_entry" identifier > (ERROR "::" : :) identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) - (cast_expression "(long)pGVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal)) )) * number_literal) )))) )) (compound_statement "{\n    paVar1 = &pGVar2[i].u_;\n    *paVar1 = got_entry.u_;\n    paVar1[1] = (anon_union_8_3_9d565b01_for_u_)got_entry._8_8_;\n    paVar1[2] = (anon_union_8_3_9d565b01_for_u_)got_entry.addend_;\n    return;\n  }" { (expression_statement "paVar1 = &pGVar2[i].u_;" (assignment_expression "paVar1 = &pGVar2[i].u_" identifier = (pointer_expression "&pGVar2[i].u_" & (field_expression "pGVar2[i].u_" (subscript_expression "pGVar2[i]" identifier [ identifier ]) . field_identifier))) ;) (expression_statement "*paVar1 = got_entry.u_;" (assignment_expression "*paVar1 = got_entry.u_" (pointer_expression "*paVar1" * identifier) = (field_expression "got_entry.u_" identifier . field_identifier)) ;) (expression_statement "paVar1[1] = (anon_union_8_3_9d565b01_for_u_)got_entry._8_8_;" (assignment_expression "paVar1[1] = (anon_union_8_3_9d565b01_for_u_)got_entry._8_8_" (subscript_expression "paVar1[1]" identifier [ number_literal ]) = (cast_expression "(anon_union_8_3_9d565b01_for_u_)got_entry._8_8_" ( (type_descriptor "anon_union_8_3_9d565b01_for_u_" type_identifier) ) (field_expression "got_entry._8_8_" identifier . field_identifier))) ;) (expression_statement "paVar1[2] = (anon_union_8_3_9d565b01_for_u_)got_entry.addend_;" (assignment_expression "paVar1[2] = (anon_union_8_3_9d565b01_for_u_)got_entry.addend_" (subscript_expression "paVar1[2]" identifier [ number_literal ]) = (cast_expression "(anon_union_8_3_9d565b01_for_u_)got_entry.addend_" ( (type_descriptor "anon_union_8_3_9d565b01_for_u_" type_identifier) ) (field_expression "got_entry.addend_" identifier . field_identifier))) ;) (return_statement "return;" return ;) })) comment (expression_statement "do_gold_unreachable("../../gold/output.cc",0x725,"replace_got_entry");" (call_expression "do_gold_unreachable("../../gold/output.cc",0x725,"replace_got_entry")" identifier (argument_list "("../../gold/output.cc",0x725,"replace_got_entry")" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""replace_got_entry"" " string_content ") ))) ;) (ERROR "}" }))
(translation_unit "void FUN_00208300(long param_1,uint param_2)\n\n{\n  undefined8 *puVar1;\n  undefined8 in_stack_00000008;\n  undefined8 in_stack_00000010;\n  undefined8 in_stack_00000018;\n  \n  if ((ulong)param_2 <\n      (ulong)((*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3) * -0x5555555555555555)) {\n    puVar1 = (undefined8 *)(*(long *)(param_1 + 0x38) + (ulong)param_2 * 0x18);\n    *puVar1 = in_stack_00000008;\n    puVar1[1] = in_stack_00000010;\n    puVar1[2] = in_stack_00000018;\n    return;\n  }\n                    \n  FUN_0017c650("../../gold/output.cc",0x725,"replace_got_entry");\n}\n\n" (function_definition "void FUN_00208300(long param_1,uint param_2)\n\n{\n  undefined8 *puVar1;\n  undefined8 in_stack_00000008;\n  undefined8 in_stack_00000010;\n  undefined8 in_stack_00000018;\n  \n  if ((ulong)param_2 <\n      (ulong)((*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3) * -0x5555555555555555)) {\n    puVar1 = (undefined8 *)(*(long *)(param_1 + 0x38) + (ulong)param_2 * 0x18);\n    *puVar1 = in_stack_00000008;\n    puVar1[1] = in_stack_00000010;\n    puVar1[2] = in_stack_00000018;\n    return;\n  }\n                    \n  FUN_0017c650("../../gold/output.cc",0x725,"replace_got_entry");\n}" primitive_type (function_declarator "FUN_00208300(long param_1,uint param_2)" identifier (parameter_list "(long param_1,uint param_2)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "uint param_2" type_identifier identifier) ))) (compound_statement "{\n  undefined8 *puVar1;\n  undefined8 in_stack_00000008;\n  undefined8 in_stack_00000010;\n  undefined8 in_stack_00000018;\n  \n  if ((ulong)param_2 <\n      (ulong)((*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3) * -0x5555555555555555)) {\n    puVar1 = (undefined8 *)(*(long *)(param_1 + 0x38) + (ulong)param_2 * 0x18);\n    *puVar1 = in_stack_00000008;\n    puVar1[1] = in_stack_00000010;\n    puVar1[2] = in_stack_00000018;\n    return;\n  }\n                    \n  FUN_0017c650("../../gold/output.cc",0x725,"replace_got_entry");\n}" { (declaration "undefined8 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined8 in_stack_00000008;" type_identifier identifier ;) (declaration "undefined8 in_stack_00000010;" type_identifier identifier ;) (declaration "undefined8 in_stack_00000018;" type_identifier identifier ;) (if_statement "if ((ulong)param_2 <\n      (ulong)((*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3) * -0x5555555555555555)) {\n    puVar1 = (undefined8 *)(*(long *)(param_1 + 0x38) + (ulong)param_2 * 0x18);\n    *puVar1 = in_stack_00000008;\n    puVar1[1] = in_stack_00000010;\n    puVar1[2] = in_stack_00000018;\n    return;\n  }" if (parenthesized_expression "((ulong)param_2 <\n      (ulong)((*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3) * -0x5555555555555555))" ( (binary_expression "(ulong)param_2 <\n      (ulong)((*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3) * -0x5555555555555555)" (cast_expression "(ulong)param_2" ( (type_descriptor "ulong" type_identifier) ) identifier) < (call_expression "(ulong)((*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3) * -0x5555555555555555)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3) * -0x5555555555555555)" ( (binary_expression "(*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3) * -0x5555555555555555" (parenthesized_expression "(*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3)" ( (binary_expression "*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3" (binary_expression "*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38)" (pointer_expression "*(long *)(param_1 + 0x40)" * (cast_expression "(long *)(param_1 + 0x40)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) - (pointer_expression "*(long *)(param_1 + 0x38)" * (cast_expression "(long *)(param_1 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) ))))) >> number_literal) )) * number_literal) )))) )) (compound_statement "{\n    puVar1 = (undefined8 *)(*(long *)(param_1 + 0x38) + (ulong)param_2 * 0x18);\n    *puVar1 = in_stack_00000008;\n    puVar1[1] = in_stack_00000010;\n    puVar1[2] = in_stack_00000018;\n    return;\n  }" { (expression_statement "puVar1 = (undefined8 *)(*(long *)(param_1 + 0x38) + (ulong)param_2 * 0x18);" (assignment_expression "puVar1 = (undefined8 *)(*(long *)(param_1 + 0x38) + (ulong)param_2 * 0x18)" identifier = (cast_expression "(undefined8 *)(*(long *)(param_1 + 0x38) + (ulong)param_2 * 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x38) + (ulong)param_2 * 0x18)" ( (binary_expression "*(long *)(param_1 + 0x38) + (ulong)param_2 * 0x18" (pointer_expression "*(long *)(param_1 + 0x38)" * (cast_expression "(long *)(param_1 + 0x38)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) + (binary_expression "(ulong)param_2 * 0x18" (cast_expression "(ulong)param_2" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) )))) ;) (expression_statement "*puVar1 = in_stack_00000008;" (assignment_expression "*puVar1 = in_stack_00000008" (pointer_expression "*puVar1" * identifier) = identifier) ;) (expression_statement "puVar1[1] = in_stack_00000010;" (assignment_expression "puVar1[1] = in_stack_00000010" (subscript_expression "puVar1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar1[2] = in_stack_00000018;" (assignment_expression "puVar1[2] = in_stack_00000018" (subscript_expression "puVar1[2]" identifier [ number_literal ]) = identifier) ;) (return_statement "return;" return ;) })) (expression_statement "FUN_0017c650("../../gold/output.cc",0x725,"replace_got_entry");" (call_expression "FUN_0017c650("../../gold/output.cc",0x725,"replace_got_entry")" identifier (argument_list "("../../gold/output.cc",0x725,"replace_got_entry")" ( (string_literal ""../../gold/output.cc"" " string_content ") , number_literal , (string_literal ""replace_got_entry"" " string_content ") ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) >> LIT) )) * LIT) )))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })))
(function_definition "void FUN_00208300(long param_1,uint param_2)\n\n{\n  undefined8 *puVar1;\n  undefined8 in_stack_00000008;\n  undefined8 in_stack_00000010;\n  undefined8 in_stack_00000018;\n  \n  if ((ulong)param_2 <\n      (ulong)((*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3) * -0x5555555555555555)) {\n    puVar1 = (undefined8 *)(*(long *)(param_1 + 0x38) + (ulong)param_2 * 0x18);\n    *puVar1 = in_stack_00000008;\n    puVar1[1] = in_stack_00000010;\n    puVar1[2] = in_stack_00000018;\n    return;\n  }\n                    \n  FUN_0017c650("../../gold/output.cc",0x725,"replace_got_entry");\n}" (primitive_type "void") (function_declarator "FUN_00208300(long param_1,uint param_2)" (identifier "FUN_00208300") (parameter_list "(long param_1,uint param_2)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "uint param_2" (type_identifier "uint") (identifier "param_2")) () ")"))) (compound_statement "{\n  undefined8 *puVar1;\n  undefined8 in_stack_00000008;\n  undefined8 in_stack_00000010;\n  undefined8 in_stack_00000018;\n  \n  if ((ulong)param_2 <\n      (ulong)((*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3) * -0x5555555555555555)) {\n    puVar1 = (undefined8 *)(*(long *)(param_1 + 0x38) + (ulong)param_2 * 0x18);\n    *puVar1 = in_stack_00000008;\n    puVar1[1] = in_stack_00000010;\n    puVar1[2] = in_stack_00000018;\n    return;\n  }\n                    \n  FUN_0017c650("../../gold/output.cc",0x725,"replace_got_entry");\n}" ({ "{") (declaration "undefined8 *puVar1;" (type_identifier "undefined8") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "undefined8 in_stack_00000008;" (type_identifier "undefined8") (identifier "in_stack_00000008") (; ";")) (declaration "undefined8 in_stack_00000010;" (type_identifier "undefined8") (identifier "in_stack_00000010") (; ";")) (declaration "undefined8 in_stack_00000018;" (type_identifier "undefined8") (identifier "in_stack_00000018") (; ";")) (if_statement "if ((ulong)param_2 <\n      (ulong)((*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3) * -0x5555555555555555)) {\n    puVar1 = (undefined8 *)(*(long *)(param_1 + 0x38) + (ulong)param_2 * 0x18);\n    *puVar1 = in_stack_00000008;\n    puVar1[1] = in_stack_00000010;\n    puVar1[2] = in_stack_00000018;\n    return;\n  }" (if "if") (parenthesized_expression "((ulong)param_2 <\n      (ulong)((*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3) * -0x5555555555555555))" (( "(") (binary_expression "(ulong)param_2 <\n      (ulong)((*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3) * -0x5555555555555555)" (cast_expression "(ulong)param_2" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "param_2")) (< "<") (call_expression "(ulong)((*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3) * -0x5555555555555555)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "((*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3) * -0x5555555555555555)" (( "(") (binary_expression "(*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3) * -0x5555555555555555" (parenthesized_expression "(*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3)" (( "(") (binary_expression "*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3" (binary_expression "*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38)" (pointer_expression "*(long *)(param_1 + 0x40)" (* "*") (cast_expression "(long *)(param_1 + 0x40)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x40)" (( "(") (binary_expression "param_1 + 0x40" (identifier "param_1") (+ "+") (number_literal "0x40")) () ")")))) (- "-") (pointer_expression "*(long *)(param_1 + 0x38)" (* "*") (cast_expression "(long *)(param_1 + 0x38)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x38)" (( "(") (binary_expression "param_1 + 0x38" (identifier "param_1") (+ "+") (number_literal "0x38")) () ")"))))) (>> ">>") (number_literal "3")) () ")")) (* "*") (number_literal "-0x5555555555555555")) () ")")))) () ")")) (compound_statement "{\n    puVar1 = (undefined8 *)(*(long *)(param_1 + 0x38) + (ulong)param_2 * 0x18);\n    *puVar1 = in_stack_00000008;\n    puVar1[1] = in_stack_00000010;\n    puVar1[2] = in_stack_00000018;\n    return;\n  }" ({ "{") (expression_statement "puVar1 = (undefined8 *)(*(long *)(param_1 + 0x38) + (ulong)param_2 * 0x18);" (assignment_expression "puVar1 = (undefined8 *)(*(long *)(param_1 + 0x38) + (ulong)param_2 * 0x18)" (identifier "puVar1") (= "=") (cast_expression "(undefined8 *)(*(long *)(param_1 + 0x38) + (ulong)param_2 * 0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x38) + (ulong)param_2 * 0x18)" (( "(") (binary_expression "*(long *)(param_1 + 0x38) + (ulong)param_2 * 0x18" (pointer_expression "*(long *)(param_1 + 0x38)" (* "*") (cast_expression "(long *)(param_1 + 0x38)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x38)" (( "(") (binary_expression "param_1 + 0x38" (identifier "param_1") (+ "+") (number_literal "0x38")) () ")")))) (+ "+") (binary_expression "(ulong)param_2 * 0x18" (cast_expression "(ulong)param_2" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "param_2")) (* "*") (number_literal "0x18"))) () ")")))) (; ";")) (expression_statement "*puVar1 = in_stack_00000008;" (assignment_expression "*puVar1 = in_stack_00000008" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (identifier "in_stack_00000008")) (; ";")) (expression_statement "puVar1[1] = in_stack_00000010;" (assignment_expression "puVar1[1] = in_stack_00000010" (subscript_expression "puVar1[1]" (identifier "puVar1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "in_stack_00000010")) (; ";")) (expression_statement "puVar1[2] = in_stack_00000018;" (assignment_expression "puVar1[2] = in_stack_00000018" (subscript_expression "puVar1[2]" (identifier "puVar1") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "in_stack_00000018")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "FUN_0017c650("../../gold/output.cc",0x725,"replace_got_entry");" (call_expression "FUN_0017c650("../../gold/output.cc",0x725,"replace_got_entry")" (identifier "FUN_0017c650") (argument_list "("../../gold/output.cc",0x725,"replace_got_entry")" (( "(") (string_literal ""../../gold/output.cc"" (" """) (string_content "../../gold/output.cc") (" """)) (, ",") (number_literal "0x725") (, ",") (string_literal ""replace_got_entry"" (" """) (string_content "replace_got_entry") (" """)) () ")"))) (; ";")) (} "}")))

/* DWARF original prototype: void replace_got_entry(Output_data_got<32,_false> * this, uint i,
   Got_entry got_entry) */

void __thiscall
var_1::var_4<32,var_5>::replace_got_entry
          (var_4<32,var_5> *this,uint i,var_2 got_entry)

{
  type_3 *paVar1;
  type_1 pGVar2;
  
  pGVar2 = (this->entries_).
           super__Vector_base<var_1::var_4<32,var_5>::var_2,_std::allocator<var_1::var_4<32,var_5>::var_2>var_3>
           ._M_impl._M_start;
  if ((type_2)i <
      (type_2)(((long)(this->entries_).
                     super__Vector_base<var_1::var_4<32,var_5>::var_2,_std::allocator<var_1::var_4<32,var_5>::var_2>var_3>
                     ._M_impl._M_finish - (long)pGVar2 >> 3) * -0x5555555555555555)) {
    paVar1 = &pGVar2[i].u_;
    *paVar1 = got_entry.u_;
    paVar1[1] = (type_3)got_entry._8_8_;
    paVar1[2] = (type_3)got_entry.addend_;
    return;
  }
                    /* WARNING: Subroutine does not return */
  var_6("../../gold/output.cc",0x725,"replace_got_entry");
}


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

void MASKED(long param_1,uint param_2)

{
  undefined8 *puVar1;
  undefined8 in_stack_00000008;
  undefined8 in_stack_00000010;
  undefined8 in_stack_00000018;
  
  if ((ulong)param_2 <
      (ulong)((*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3) * -0x5555555555555555)) {
    puVar1 = (undefined8 *)(*(long *)(param_1 + 0x38) + (ulong)param_2 * 0x18);
    *puVar1 = in_stack_00000008;
    puVar1[1] = in_stack_00000010;
    puVar1[2] = in_stack_00000018;
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_0017c650("../../gold/output.cc",0x725,"replace_got_entry");
}

