
/* WARNING: Type propagation algorithm not settling */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: void set_final_data_size(Output_data_got_powerpc<64,_true> * this) */

void __thiscall
anon_unknown.dwarf_6a1ea8::Output_data_got_powerpc<64,_true>::set_final_data_size
          (Output_data_got_powerpc<64,_true> *this)

{
  byte bVar1;
  pointer pGVar2;
  pointer pGVar3;
  undefined1 auVar4 [24];
  undefined4 uStack_1c;
  undefined8 local_18;
  
  if (this->header_ent_cnt_ != 0) {
    pGVar2 = (this->super_Output_data_got<64,_true>).entries_.
             super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>
             ._M_impl._M_finish;
    pGVar3 = (this->super_Output_data_got<64,_true>).entries_.
             super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>
             ._M_impl._M_start;
    this->header_ent_cnt_ = 0;
    this->header_index_ = (int)((long)pGVar2 - (long)pGVar3 >> 3) * -0x55555555;
    auVar4._4_4_ = uStack_1c;
    auVar4._0_4_ = 0x7ffffffe;
    auVar4._8_8_ = local_18;
    auVar4._16_8_ = 0;
    gold::Output_data_got<64,_true>::add_got_entry
              (&this->super_Output_data_got<64,_true>,(Got_entry)(auVar4 << 0x40));
  }
  bVar1 = (this->super_Output_data_got<64,_true>).super_Output_data_got_base.
          super_Output_section_data_build.super_Output_section_data.super_Output_data.field_0x20;
  if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {
    (this->super_Output_data_got<64,_true>).super_Output_data_got_base.
    super_Output_section_data_build.super_Output_section_data.super_Output_data.field_0x20 =
         bVar1 | 2;
    return;
  }
                    /* WARNING: Subroutine does not return */
  gold::do_gold_unreachable("../../gold/output.h",0x218,"set_data_size");
}



void FUN_001e0810(long param_1)

{
  byte bVar1;
  
  if (*(int *)(param_1 + 0x98) != 0) {
    *(undefined4 *)(param_1 + 0x98) = 0;
    *(int *)(param_1 + 0x9c) =
         (int)(*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3) * -0x55555555;
    FUN_003e5a10();
  }
  bVar1 = *(byte *)(param_1 + 0x20);
  if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {
    *(byte *)(param_1 + 0x20) = bVar1 | 2;
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_00352af0("../../gold/output.h",0x218,"set_data_size");
}


PUSH RBX
MOV RBX,RDI
SUB RSP,0x20
MOV EAX,dword ptr [RDI + 0x98]
TEST EAX,EAX
JNZ 0x001e0840
MOVZX EAX,byte ptr [RBX + 0x20]
TEST AL,0x2
JNZ 0x001e088b
TEST AL,0x8
JNZ 0x001e088b
OR EAX,0x2
MOV byte ptr [RBX + 0x20],AL
ADD RSP,0x20
POP RBX
RET
MOV RAX,qword ptr [RDI + 0x40]
SUB RAX,qword ptr [RDI + 0x38]
MOV dword ptr [RSP + 0x8],0x7ffffffe
SUB RSP,0x8
MOV RDX,-0x5555555555555555
SAR RAX,0x3
MOV dword ptr [RDI + 0x98],0x0
IMUL RAX,RDX
MOV dword ptr [RDI + 0x9c],EAX
PUSH qword ptr [RSP + 0x18]
PUSH qword ptr [RSP + 0x18]
PUSH 0x0
CALL 0x003e5a10
ADD RSP,0x20
JMP 0x001e0822
LEA RDX,[0x54bd78]
MOV ESI,0x218
LEA RDI,[0x533384]
CALL 0x00352af0
(translation_unit "void FUN_001e0810(long param_1)\n\n{\n  byte bVar1;\n  \n  if (*(int *)(param_1 + 0x98) != 0) {\n    *(undefined4 *)(param_1 + 0x98) = 0;\n    *(int *)(param_1 + 0x9c) =\n         (int)(*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3) * -0x55555555;\n    FUN_003e5a10();\n  }\n  bVar1 = *(byte *)(param_1 + 0x20);\n  if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {\n    *(byte *)(param_1 + 0x20) = bVar1 | 2;\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_00352af0("../../gold/output.h",0x218,"set_data_size");\n}\n\n" (function_definition "void FUN_001e0810(long param_1)\n\n{\n  byte bVar1;\n  \n  if (*(int *)(param_1 + 0x98) != 0) {\n    *(undefined4 *)(param_1 + 0x98) = 0;\n    *(int *)(param_1 + 0x9c) =\n         (int)(*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3) * -0x55555555;\n    FUN_003e5a10();\n  }\n  bVar1 = *(byte *)(param_1 + 0x20);\n  if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {\n    *(byte *)(param_1 + 0x20) = bVar1 | 2;\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_00352af0("../../gold/output.h",0x218,"set_data_size");\n}" primitive_type (function_declarator "FUN_001e0810(long param_1)" identifier (parameter_list "(long param_1)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  byte bVar1;\n  \n  if (*(int *)(param_1 + 0x98) != 0) {\n    *(undefined4 *)(param_1 + 0x98) = 0;\n    *(int *)(param_1 + 0x9c) =\n         (int)(*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3) * -0x55555555;\n    FUN_003e5a10();\n  }\n  bVar1 = *(byte *)(param_1 + 0x20);\n  if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {\n    *(byte *)(param_1 + 0x20) = bVar1 | 2;\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_00352af0("../../gold/output.h",0x218,"set_data_size");\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (if_statement "if (*(int *)(param_1 + 0x98) != 0) {\n    *(undefined4 *)(param_1 + 0x98) = 0;\n    *(int *)(param_1 + 0x9c) =\n         (int)(*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3) * -0x55555555;\n    FUN_003e5a10();\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0x98) != 0)" ( (binary_expression "*(int *)(param_1 + 0x98) != 0" (pointer_expression "*(int *)(param_1 + 0x98)" * (cast_expression "(int *)(param_1 + 0x98)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x98)" ( (binary_expression "param_1 + 0x98" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    *(undefined4 *)(param_1 + 0x98) = 0;\n    *(int *)(param_1 + 0x9c) =\n         (int)(*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3) * -0x55555555;\n    FUN_003e5a10();\n  }" { (expression_statement "*(undefined4 *)(param_1 + 0x98) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x98) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x98)" * (cast_expression "(undefined4 *)(param_1 + 0x98)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x98)" ( (binary_expression "param_1 + 0x98" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(param_1 + 0x9c) =\n         (int)(*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3) * -0x55555555;" (assignment_expression "*(int *)(param_1 + 0x9c) =\n         (int)(*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3) * -0x55555555" (pointer_expression "*(int *)(param_1 + 0x9c)" * (cast_expression "(int *)(param_1 + 0x9c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x9c)" ( (binary_expression "param_1 + 0x9c" identifier + number_literal) )))) = (binary_expression "(int)(*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3) * -0x55555555" (cast_expression "(int)(*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3)" ( (type_descriptor "int" primitive_type) ) (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)) ;) (expression_statement "FUN_003e5a10();" (call_expression "FUN_003e5a10()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "bVar1 = *(byte *)(param_1 + 0x20);" (assignment_expression "bVar1 = *(byte *)(param_1 + 0x20)" identifier = (pointer_expression "*(byte *)(param_1 + 0x20)" * (cast_expression "(byte *)(param_1 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) ))))) ;) (if_statement "if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {\n    *(byte *)(param_1 + 0x20) = bVar1 | 2;\n    return;\n  }" if (parenthesized_expression "(((bVar1 & 2) == 0) && ((bVar1 & 8) == 0))" ( (binary_expression "((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)" (parenthesized_expression "((bVar1 & 2) == 0)" ( (binary_expression "(bVar1 & 2) == 0" (parenthesized_expression "(bVar1 & 2)" ( (binary_expression "bVar1 & 2" identifier & number_literal) )) == number_literal) )) && (parenthesized_expression "((bVar1 & 8) == 0)" ( (binary_expression "(bVar1 & 8) == 0" (parenthesized_expression "(bVar1 & 8)" ( (binary_expression "bVar1 & 8" identifier & number_literal) )) == number_literal) ))) )) (compound_statement "{\n    *(byte *)(param_1 + 0x20) = bVar1 | 2;\n    return;\n  }" { (expression_statement "*(byte *)(param_1 + 0x20) = bVar1 | 2;" (assignment_expression "*(byte *)(param_1 + 0x20) = bVar1 | 2" (pointer_expression "*(byte *)(param_1 + 0x20)" * (cast_expression "(byte *)(param_1 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) = (binary_expression "bVar1 | 2" identifier | number_literal)) ;) (return_statement "return;" return ;) })) comment (expression_statement "FUN_00352af0("../../gold/output.h",0x218,"set_data_size");" (call_expression "FUN_00352af0("../../gold/output.h",0x218,"set_data_size")" identifier (argument_list "("../../gold/output.h",0x218,"set_data_size")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""set_data_size"" " string_content ") ))) ;) })))
(translation_unit "/* WARNING: Type propagation algorithm not settling */\n/* WARNING: Enum "DT": Some values do not have unique names */\n/* DWARF original prototype: void set_final_data_size(Output_data_got_powerpc<64,_true> * this) */\n\nvoid __thiscall\nanon_unknown.dwarf_6a1ea8::Output_data_got_powerpc<64,_true>::set_final_data_size\n          (Output_data_got_powerpc<64,_true> *this)\n\n{\n  byte bVar1;\n  pointer pGVar2;\n  pointer pGVar3;\n  undefined1 auVar4 [24];\n  undefined4 uStack_1c;\n  undefined8 local_18;\n  \n  if (this->header_ent_cnt_ != 0) {\n    pGVar2 = (this->super_Output_data_got<64,_true>).entries_.\n             super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n             ._M_impl._M_finish;\n    pGVar3 = (this->super_Output_data_got<64,_true>).entries_.\n             super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n             ._M_impl._M_start;\n    this->header_ent_cnt_ = 0;\n    this->header_index_ = (int)((long)pGVar2 - (long)pGVar3 >> 3) * -0x55555555;\n    auVar4._4_4_ = uStack_1c;\n    auVar4._0_4_ = 0x7ffffffe;\n    auVar4._8_8_ = local_18;\n    auVar4._16_8_ = 0;\n    gold::Output_data_got<64,_true>::add_got_entry\n              (&this->super_Output_data_got<64,_true>,(Got_entry)(auVar4 << 0x40));\n  }\n  bVar1 = (this->super_Output_data_got<64,_true>).super_Output_data_got_base.\n          super_Output_section_data_build.super_Output_section_data.super_Output_data.field_0x20;\n  if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {\n    (this->super_Output_data_got<64,_true>).super_Output_data_got_base.\n    super_Output_section_data_build.super_Output_section_data.super_Output_data.field_0x20 =\n         bVar1 | 2;\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  gold::do_gold_unreachable("../../gold/output.h",0x218,"set_data_size");\n}\n\n" comment comment comment (declaration "void __thiscall\nanon_unknown.dwarf_6a1ea8::Output_data_got_powerpc<64,_true>::set_final_data_size\n          (Output_data_got_powerpc<64,_true> *this)\n\n{\n  byte bVar1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "anon_unknown.dwarf_6a1ea8::" identifier . identifier : :) identifier (ERROR "<64" < number_literal) , (ERROR "_true>::set_final_data_size\n          (Output_data_got_powerpc<64,_true> *this)\n\n{\n  byte" identifier > : : (function_declarator "set_final_data_size\n          (Output_data_got_powerpc<64,_true> *this)" identifier (parameter_list "(Output_data_got_powerpc<64,_true> *this)" ( (parameter_declaration "Output_data_got_powerpc" type_identifier) (ERROR "<64" < number_literal) , (parameter_declaration "_true> *this" type_identifier (ERROR ">" >) (pointer_declarator "*this" * identifier)) ))) { identifier) identifier ;) (declaration "pointer pGVar2;" type_identifier identifier ;) (declaration "pointer pGVar3;" type_identifier identifier ;) (declaration "undefined1 auVar4 [24];" type_identifier (array_declarator "auVar4 [24]" identifier [ number_literal ]) ;) (declaration "undefined4 uStack_1c;" type_identifier identifier ;) (declaration "undefined8 local_18;" type_identifier identifier ;) (if_statement "if (this->header_ent_cnt_ != 0) {\n    pGVar2 = (this->super_Output_data_got<64,_true>).entries_.\n             super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n             ._M_impl._M_finish;\n    pGVar3 = (this->super_Output_data_got<64,_true>).entries_.\n             super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n             ._M_impl._M_start;\n    this->header_ent_cnt_ = 0;\n    this->header_index_ = (int)((long)pGVar2 - (long)pGVar3 >> 3) * -0x55555555;\n    auVar4._4_4_ = uStack_1c;\n    auVar4._0_4_ = 0x7ffffffe;\n    auVar4._8_8_ = local_18;\n    auVar4._16_8_ = 0;\n    gold::Output_data_got<64,_true>::add_got_entry\n              (&this->super_Output_data_got<64,_true>,(Got_entry)(auVar4 << 0x40));\n  }" if (parenthesized_expression "(this->header_ent_cnt_ != 0)" ( (binary_expression "this->header_ent_cnt_ != 0" (field_expression "this->header_ent_cnt_" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n    pGVar2 = (this->super_Output_data_got<64,_true>).entries_.\n             super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n             ._M_impl._M_finish;\n    pGVar3 = (this->super_Output_data_got<64,_true>).entries_.\n             super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::Output_data_got<64,_true>::Got_entry>_>\n             ._M_impl._M_start;\n    this->header_ent_cnt_ = 0;\n    this->header_index_ = (int)((long)pGVar2 - (long)pGVar3 >> 3) * -0x55555555;\n    auVar4._4_4_ = uStack_1c;\n    auVar4._0_4_ = 0x7ffffffe;\n    auVar4._8_8_ = local_18;\n    auVar4._16_8_ = 0;\n    gold::Output_data_got<64,_true>::add_got_entry\n              (&this->super_Output_data_got<64,_true>,(Got_entry)(auVar4 << 0x40));\n  }" { (ERROR "pGVar2 = (this->super_Output_data_got<64,_true>).entries_.\n             super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::" (comma_expression "pGVar2 = (this->super_Output_data_got<64,_true>).entries_.\n             super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std" (binary_expression "pGVar2 = (this->super_Output_data_got<64,_true>).entries_.\n             super__Vector_base<gold::Output_data_got<64" (assignment_expression "pGVar2 = (this->super_Output_data_got<64,_true>).entries_.\n             super__Vector_base<gold" identifier = (binary_expression "(this->super_Output_data_got<64,_true>).entries_.\n             super__Vector_base<gold" (field_expression "(this->super_Output_data_got<64,_true>).entries_.\n             super__Vector_base" (field_expression "(this->super_Output_data_got<64,_true>).entries_" (parenthesized_expression "(this->super_Output_data_got<64,_true>)" ( (comma_expression "this->super_Output_data_got<64,_true" (binary_expression "this->super_Output_data_got<64" (field_expression "this->super_Output_data_got" identifier -> field_identifier) < number_literal) , identifier) (ERROR ">" >) )) . field_identifier) . field_identifier) < identifier)) (ERROR "::Output_data_got" : : identifier) < number_literal) , (comma_expression "_true>::Got_entry,_std" (binary_expression "_true>::Got_entry" identifier > (ERROR "::" : :) identifier) , identifier)) : : (binary_expression "allocator<gold" identifier < identifier) : :) (expression_statement "Output_data_got<64,_true>::Got_entry>_>\n             ._M_impl._M_finish;" (comma_expression "Output_data_got<64,_true>::Got_entry>_>\n             ._M_impl._M_finish" (binary_expression "Output_data_got<64" identifier < number_literal) , (field_expression "_true>::Got_entry>_>\n             ._M_impl._M_finish" (field_expression "_true>::Got_entry>_>\n             ._M_impl" (binary_expression "_true>::Got_entry>_" (binary_expression "_true>::Got_entry" identifier > (ERROR "::" : :) identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier)) ;) (ERROR "pGVar3 = (this->super_Output_data_got<64,_true>).entries_.\n             super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std::allocator<gold::" (comma_expression "pGVar3 = (this->super_Output_data_got<64,_true>).entries_.\n             super__Vector_base<gold::Output_data_got<64,_true>::Got_entry,_std" (binary_expression "pGVar3 = (this->super_Output_data_got<64,_true>).entries_.\n             super__Vector_base<gold::Output_data_got<64" (assignment_expression "pGVar3 = (this->super_Output_data_got<64,_true>).entries_.\n             super__Vector_base<gold" identifier = (binary_expression "(this->super_Output_data_got<64,_true>).entries_.\n             super__Vector_base<gold" (field_expression "(this->super_Output_data_got<64,_true>).entries_.\n             super__Vector_base" (field_expression "(this->super_Output_data_got<64,_true>).entries_" (parenthesized_expression "(this->super_Output_data_got<64,_true>)" ( (comma_expression "this->super_Output_data_got<64,_true" (binary_expression "this->super_Output_data_got<64" (field_expression "this->super_Output_data_got" identifier -> field_identifier) < number_literal) , identifier) (ERROR ">" >) )) . field_identifier) . field_identifier) < identifier)) (ERROR "::Output_data_got" : : identifier) < number_literal) , (comma_expression "_true>::Got_entry,_std" (binary_expression "_true>::Got_entry" identifier > (ERROR "::" : :) identifier) , identifier)) : : (binary_expression "allocator<gold" identifier < identifier) : :) (expression_statement "Output_data_got<64,_true>::Got_entry>_>\n             ._M_impl._M_start;" (comma_expression "Output_data_got<64,_true>::Got_entry>_>\n             ._M_impl._M_start" (binary_expression "Output_data_got<64" identifier < number_literal) , (field_expression "_true>::Got_entry>_>\n             ._M_impl._M_start" (field_expression "_true>::Got_entry>_>\n             ._M_impl" (binary_expression "_true>::Got_entry>_" (binary_expression "_true>::Got_entry" identifier > (ERROR "::" : :) identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier)) ;) (expression_statement "this->header_ent_cnt_ = 0;" (assignment_expression "this->header_ent_cnt_ = 0" (field_expression "this->header_ent_cnt_" identifier -> field_identifier) = number_literal) ;) (expression_statement "this->header_index_ = (int)((long)pGVar2 - (long)pGVar3 >> 3) * -0x55555555;" (assignment_expression "this->header_index_ = (int)((long)pGVar2 - (long)pGVar3 >> 3) * -0x55555555" (field_expression "this->header_index_" identifier -> field_identifier) = (binary_expression "(int)((long)pGVar2 - (long)pGVar3 >> 3) * -0x55555555" (cast_expression "(int)((long)pGVar2 - (long)pGVar3 >> 3)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((long)pGVar2 - (long)pGVar3 >> 3)" ( (binary_expression "(long)pGVar2 - (long)pGVar3 >> 3" (binary_expression "(long)pGVar2 - (long)pGVar3" (cast_expression "(long)pGVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)pGVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal) ))) * number_literal)) ;) (expression_statement "auVar4._4_4_ = uStack_1c;" (assignment_expression "auVar4._4_4_ = uStack_1c" (field_expression "auVar4._4_4_" identifier . field_identifier) = identifier) ;) (expression_statement "auVar4._0_4_ = 0x7ffffffe;" (assignment_expression "auVar4._0_4_ = 0x7ffffffe" (field_expression "auVar4._0_4_" identifier . field_identifier) = number_literal) ;) (expression_statement "auVar4._8_8_ = local_18;" (assignment_expression "auVar4._8_8_ = local_18" (field_expression "auVar4._8_8_" identifier . field_identifier) = identifier) ;) (expression_statement "auVar4._16_8_ = 0;" (assignment_expression "auVar4._16_8_ = 0" (field_expression "auVar4._16_8_" identifier . field_identifier) = number_literal) ;) (labeled_statement "gold::Output_data_got<64,_true>::add_got_entry\n              (&this->super_Output_data_got<64,_true>,(Got_entry)(auVar4 << 0x40));" statement_identifier : (ERROR ":" :) (expression_statement "Output_data_got<64,_true>::add_got_entry\n              (&this->super_Output_data_got<64,_true>,(Got_entry)(auVar4 << 0x40));" (comma_expression "Output_data_got<64,_true>::add_got_entry\n              (&this->super_Output_data_got<64,_true>,(Got_entry)(auVar4 << 0x40))" (binary_expression "Output_data_got<64" identifier < number_literal) , (binary_expression "_true>::add_got_entry\n              (&this->super_Output_data_got<64,_true>,(Got_entry)(auVar4 << 0x40))" identifier > (ERROR "::" : :) (call_expression "add_got_entry\n              (&this->super_Output_data_got<64,_true>,(Got_entry)(auVar4 << 0x40))" identifier (argument_list "(&this->super_Output_data_got<64,_true>,(Got_entry)(auVar4 << 0x40))" ( (binary_expression "&this->super_Output_data_got<64" (pointer_expression "&this->super_Output_data_got" & (field_expression "this->super_Output_data_got" identifier -> field_identifier)) < number_literal) , identifier (ERROR ">" >) , (call_expression "(Got_entry)(auVar4 << 0x40)" (parenthesized_expression "(Got_entry)" ( identifier )) (argument_list "(auVar4 << 0x40)" ( (binary_expression "auVar4 << 0x40" identifier << number_literal) ))) ))))) ;)) })) (expression_statement "bVar1 = (this->super_Output_data_got<64,_true>).super_Output_data_got_base.\n          super_Output_section_data_build.super_Output_section_data.super_Output_data.field_0x20;" (assignment_expression "bVar1 = (this->super_Output_data_got<64,_true>).super_Output_data_got_base.\n          super_Output_section_data_build.super_Output_section_data.super_Output_data.field_0x20" identifier = (field_expression "(this->super_Output_data_got<64,_true>).super_Output_data_got_base.\n          super_Output_section_data_build.super_Output_section_data.super_Output_data.field_0x20" (field_expression "(this->super_Output_data_got<64,_true>).super_Output_data_got_base.\n          super_Output_section_data_build.super_Output_section_data.super_Output_data" (field_expression "(this->super_Output_data_got<64,_true>).super_Output_data_got_base.\n          super_Output_section_data_build.super_Output_section_data" (field_expression "(this->super_Output_data_got<64,_true>).super_Output_data_got_base.\n          super_Output_section_data_build" (field_expression "(this->super_Output_data_got<64,_true>).super_Output_data_got_base" (parenthesized_expression "(this->super_Output_data_got<64,_true>)" ( (comma_expression "this->super_Output_data_got<64,_true" (binary_expression "this->super_Output_data_got<64" (field_expression "this->super_Output_data_got" identifier -> field_identifier) < number_literal) , identifier) (ERROR ">" >) )) . field_identifier) . field_identifier) . field_identifier) . field_identifier) . field_identifier)) ;) (if_statement "if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {\n    (this->super_Output_data_got<64,_true>).super_Output_data_got_base.\n    super_Output_section_data_build.super_Output_section_data.super_Output_data.field_0x20 =\n         bVar1 | 2;\n    return;\n  }" if (parenthesized_expression "(((bVar1 & 2) == 0) && ((bVar1 & 8) == 0))" ( (binary_expression "((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)" (parenthesized_expression "((bVar1 & 2) == 0)" ( (binary_expression "(bVar1 & 2) == 0" (parenthesized_expression "(bVar1 & 2)" ( (binary_expression "bVar1 & 2" identifier & number_literal) )) == number_literal) )) && (parenthesized_expression "((bVar1 & 8) == 0)" ( (binary_expression "(bVar1 & 8) == 0" (parenthesized_expression "(bVar1 & 8)" ( (binary_expression "bVar1 & 8" identifier & number_literal) )) == number_literal) ))) )) (compound_statement "{\n    (this->super_Output_data_got<64,_true>).super_Output_data_got_base.\n    super_Output_section_data_build.super_Output_section_data.super_Output_data.field_0x20 =\n         bVar1 | 2;\n    return;\n  }" { (expression_statement "(this->super_Output_data_got<64,_true>).super_Output_data_got_base.\n    super_Output_section_data_build.super_Output_section_data.super_Output_data.field_0x20 =\n         bVar1 | 2;" (assignment_expression "(this->super_Output_data_got<64,_true>).super_Output_data_got_base.\n    super_Output_section_data_build.super_Output_section_data.super_Output_data.field_0x20 =\n         bVar1 | 2" (field_expression "(this->super_Output_data_got<64,_true>).super_Output_data_got_base.\n    super_Output_section_data_build.super_Output_section_data.super_Output_data.field_0x20" (field_expression "(this->super_Output_data_got<64,_true>).super_Output_data_got_base.\n    super_Output_section_data_build.super_Output_section_data.super_Output_data" (field_expression "(this->super_Output_data_got<64,_true>).super_Output_data_got_base.\n    super_Output_section_data_build.super_Output_section_data" (field_expression "(this->super_Output_data_got<64,_true>).super_Output_data_got_base.\n    super_Output_section_data_build" (field_expression "(this->super_Output_data_got<64,_true>).super_Output_data_got_base" (parenthesized_expression "(this->super_Output_data_got<64,_true>)" ( (comma_expression "this->super_Output_data_got<64,_true" (binary_expression "this->super_Output_data_got<64" (field_expression "this->super_Output_data_got" identifier -> field_identifier) < number_literal) , identifier) (ERROR ">" >) )) . field_identifier) . field_identifier) . field_identifier) . field_identifier) . field_identifier) = (binary_expression "bVar1 | 2" identifier | number_literal)) ;) (return_statement "return;" return ;) })) comment (labeled_statement "gold::do_gold_unreachable("../../gold/output.h",0x218,"set_data_size");" statement_identifier : (ERROR ":" :) (expression_statement "do_gold_unreachable("../../gold/output.h",0x218,"set_data_size");" (call_expression "do_gold_unreachable("../../gold/output.h",0x218,"set_data_size")" identifier (argument_list "("../../gold/output.h",0x218,"set_data_size")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""set_data_size"" " string_content ") ))) ;)) (ERROR "}" }))
(translation_unit "void FUN_001e0810(long param_1)\n\n{\n  byte bVar1;\n  \n  if (*(int *)(param_1 + 0x98) != 0) {\n    *(undefined4 *)(param_1 + 0x98) = 0;\n    *(int *)(param_1 + 0x9c) =\n         (int)(*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3) * -0x55555555;\n    FUN_003e5a10();\n  }\n  bVar1 = *(byte *)(param_1 + 0x20);\n  if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {\n    *(byte *)(param_1 + 0x20) = bVar1 | 2;\n    return;\n  }\n                    \n  FUN_00352af0("../../gold/output.h",0x218,"set_data_size");\n}\n\n" (function_definition "void FUN_001e0810(long param_1)\n\n{\n  byte bVar1;\n  \n  if (*(int *)(param_1 + 0x98) != 0) {\n    *(undefined4 *)(param_1 + 0x98) = 0;\n    *(int *)(param_1 + 0x9c) =\n         (int)(*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3) * -0x55555555;\n    FUN_003e5a10();\n  }\n  bVar1 = *(byte *)(param_1 + 0x20);\n  if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {\n    *(byte *)(param_1 + 0x20) = bVar1 | 2;\n    return;\n  }\n                    \n  FUN_00352af0("../../gold/output.h",0x218,"set_data_size");\n}" primitive_type (function_declarator "FUN_001e0810(long param_1)" identifier (parameter_list "(long param_1)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  byte bVar1;\n  \n  if (*(int *)(param_1 + 0x98) != 0) {\n    *(undefined4 *)(param_1 + 0x98) = 0;\n    *(int *)(param_1 + 0x9c) =\n         (int)(*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3) * -0x55555555;\n    FUN_003e5a10();\n  }\n  bVar1 = *(byte *)(param_1 + 0x20);\n  if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {\n    *(byte *)(param_1 + 0x20) = bVar1 | 2;\n    return;\n  }\n                    \n  FUN_00352af0("../../gold/output.h",0x218,"set_data_size");\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (if_statement "if (*(int *)(param_1 + 0x98) != 0) {\n    *(undefined4 *)(param_1 + 0x98) = 0;\n    *(int *)(param_1 + 0x9c) =\n         (int)(*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3) * -0x55555555;\n    FUN_003e5a10();\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0x98) != 0)" ( (binary_expression "*(int *)(param_1 + 0x98) != 0" (pointer_expression "*(int *)(param_1 + 0x98)" * (cast_expression "(int *)(param_1 + 0x98)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x98)" ( (binary_expression "param_1 + 0x98" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    *(undefined4 *)(param_1 + 0x98) = 0;\n    *(int *)(param_1 + 0x9c) =\n         (int)(*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3) * -0x55555555;\n    FUN_003e5a10();\n  }" { (expression_statement "*(undefined4 *)(param_1 + 0x98) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x98) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x98)" * (cast_expression "(undefined4 *)(param_1 + 0x98)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x98)" ( (binary_expression "param_1 + 0x98" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(param_1 + 0x9c) =\n         (int)(*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3) * -0x55555555;" (assignment_expression "*(int *)(param_1 + 0x9c) =\n         (int)(*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3) * -0x55555555" (pointer_expression "*(int *)(param_1 + 0x9c)" * (cast_expression "(int *)(param_1 + 0x9c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x9c)" ( (binary_expression "param_1 + 0x9c" identifier + number_literal) )))) = (binary_expression "(int)(*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3) * -0x55555555" (cast_expression "(int)(*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3)" ( (type_descriptor "int" primitive_type) ) (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)) ;) (expression_statement "FUN_003e5a10();" (call_expression "FUN_003e5a10()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "bVar1 = *(byte *)(param_1 + 0x20);" (assignment_expression "bVar1 = *(byte *)(param_1 + 0x20)" identifier = (pointer_expression "*(byte *)(param_1 + 0x20)" * (cast_expression "(byte *)(param_1 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) ))))) ;) (if_statement "if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {\n    *(byte *)(param_1 + 0x20) = bVar1 | 2;\n    return;\n  }" if (parenthesized_expression "(((bVar1 & 2) == 0) && ((bVar1 & 8) == 0))" ( (binary_expression "((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)" (parenthesized_expression "((bVar1 & 2) == 0)" ( (binary_expression "(bVar1 & 2) == 0" (parenthesized_expression "(bVar1 & 2)" ( (binary_expression "bVar1 & 2" identifier & number_literal) )) == number_literal) )) && (parenthesized_expression "((bVar1 & 8) == 0)" ( (binary_expression "(bVar1 & 8) == 0" (parenthesized_expression "(bVar1 & 8)" ( (binary_expression "bVar1 & 8" identifier & number_literal) )) == number_literal) ))) )) (compound_statement "{\n    *(byte *)(param_1 + 0x20) = bVar1 | 2;\n    return;\n  }" { (expression_statement "*(byte *)(param_1 + 0x20) = bVar1 | 2;" (assignment_expression "*(byte *)(param_1 + 0x20) = bVar1 | 2" (pointer_expression "*(byte *)(param_1 + 0x20)" * (cast_expression "(byte *)(param_1 + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) = (binary_expression "bVar1 | 2" identifier | number_literal)) ;) (return_statement "return;" return ;) })) (expression_statement "FUN_00352af0("../../gold/output.h",0x218,"set_data_size");" (call_expression "FUN_00352af0("../../gold/output.h",0x218,"set_data_size")" identifier (argument_list "("../../gold/output.h",0x218,"set_data_size")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""set_data_size"" " string_content ") ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (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)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT | LIT)) ;) (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })))
(function_definition "void FUN_001e0810(long param_1)\n\n{\n  byte bVar1;\n  \n  if (*(int *)(param_1 + 0x98) != 0) {\n    *(undefined4 *)(param_1 + 0x98) = 0;\n    *(int *)(param_1 + 0x9c) =\n         (int)(*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3) * -0x55555555;\n    FUN_003e5a10();\n  }\n  bVar1 = *(byte *)(param_1 + 0x20);\n  if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {\n    *(byte *)(param_1 + 0x20) = bVar1 | 2;\n    return;\n  }\n                    \n  FUN_00352af0("../../gold/output.h",0x218,"set_data_size");\n}" (primitive_type "void") (function_declarator "FUN_001e0810(long param_1)" (identifier "FUN_001e0810") (parameter_list "(long param_1)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) () ")"))) (compound_statement "{\n  byte bVar1;\n  \n  if (*(int *)(param_1 + 0x98) != 0) {\n    *(undefined4 *)(param_1 + 0x98) = 0;\n    *(int *)(param_1 + 0x9c) =\n         (int)(*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3) * -0x55555555;\n    FUN_003e5a10();\n  }\n  bVar1 = *(byte *)(param_1 + 0x20);\n  if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {\n    *(byte *)(param_1 + 0x20) = bVar1 | 2;\n    return;\n  }\n                    \n  FUN_00352af0("../../gold/output.h",0x218,"set_data_size");\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (if_statement "if (*(int *)(param_1 + 0x98) != 0) {\n    *(undefined4 *)(param_1 + 0x98) = 0;\n    *(int *)(param_1 + 0x9c) =\n         (int)(*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3) * -0x55555555;\n    FUN_003e5a10();\n  }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x98) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x98) != 0" (pointer_expression "*(int *)(param_1 + 0x98)" (* "*") (cast_expression "(int *)(param_1 + 0x98)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x98)" (( "(") (binary_expression "param_1 + 0x98" (identifier "param_1") (+ "+") (number_literal "0x98")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    *(undefined4 *)(param_1 + 0x98) = 0;\n    *(int *)(param_1 + 0x9c) =\n         (int)(*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3) * -0x55555555;\n    FUN_003e5a10();\n  }" ({ "{") (expression_statement "*(undefined4 *)(param_1 + 0x98) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x98) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x98)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x98)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x98)" (( "(") (binary_expression "param_1 + 0x98" (identifier "param_1") (+ "+") (number_literal "0x98")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(int *)(param_1 + 0x9c) =\n         (int)(*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3) * -0x55555555;" (assignment_expression "*(int *)(param_1 + 0x9c) =\n         (int)(*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3) * -0x55555555" (pointer_expression "*(int *)(param_1 + 0x9c)" (* "*") (cast_expression "(int *)(param_1 + 0x9c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x9c)" (( "(") (binary_expression "param_1 + 0x9c" (identifier "param_1") (+ "+") (number_literal "0x9c")) () ")")))) (= "=") (binary_expression "(int)(*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3) * -0x55555555" (cast_expression "(int)(*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (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 "-0x55555555"))) (; ";")) (expression_statement "FUN_003e5a10();" (call_expression "FUN_003e5a10()" (identifier "FUN_003e5a10") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "bVar1 = *(byte *)(param_1 + 0x20);" (assignment_expression "bVar1 = *(byte *)(param_1 + 0x20)" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)(param_1 + 0x20)" (* "*") (cast_expression "(byte *)(param_1 + 0x20)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (if_statement "if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {\n    *(byte *)(param_1 + 0x20) = bVar1 | 2;\n    return;\n  }" (if "if") (parenthesized_expression "(((bVar1 & 2) == 0) && ((bVar1 & 8) == 0))" (( "(") (binary_expression "((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)" (parenthesized_expression "((bVar1 & 2) == 0)" (( "(") (binary_expression "(bVar1 & 2) == 0" (parenthesized_expression "(bVar1 & 2)" (( "(") (binary_expression "bVar1 & 2" (identifier "bVar1") (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((bVar1 & 8) == 0)" (( "(") (binary_expression "(bVar1 & 8) == 0" (parenthesized_expression "(bVar1 & 8)" (( "(") (binary_expression "bVar1 & 8" (identifier "bVar1") (& "&") (number_literal "8")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    *(byte *)(param_1 + 0x20) = bVar1 | 2;\n    return;\n  }" ({ "{") (expression_statement "*(byte *)(param_1 + 0x20) = bVar1 | 2;" (assignment_expression "*(byte *)(param_1 + 0x20) = bVar1 | 2" (pointer_expression "*(byte *)(param_1 + 0x20)" (* "*") (cast_expression "(byte *)(param_1 + 0x20)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")")))) (= "=") (binary_expression "bVar1 | 2" (identifier "bVar1") (| "|") (number_literal "2"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "FUN_00352af0("../../gold/output.h",0x218,"set_data_size");" (call_expression "FUN_00352af0("../../gold/output.h",0x218,"set_data_size")" (identifier "FUN_00352af0") (argument_list "("../../gold/output.h",0x218,"set_data_size")" (( "(") (string_literal ""../../gold/output.h"" (" """) (string_content "../../gold/output.h") (" """)) (, ",") (number_literal "0x218") (, ",") (string_literal ""set_data_size"" (" """) (string_content "set_data_size") (" """)) () ")"))) (; ";")) (} "}")))

/* WARNING: Type propagation algorithm not settling */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: void set_final_data_size(Output_data_got_powerpc<64,_true> * this) */

void __thiscall
anon_unknown.dwarf_6a1ea8::Output_data_got_powerpc<64,var_2>::set_final_data_size
          (Output_data_got_powerpc<64,var_2> *this)

{
  byte var_7;
  type_1 pGVar2;
  type_1 pGVar3;
  type_2 var_6 [24];
  type_3 uStack_1c;
  type_4 local_18;
  
  if (this->header_ent_cnt_ != 0) {
    pGVar2 = (this->super_Output_data_got<64,var_2>).entries_.
             super__Vector_base<gold::var_1<64,var_2>::var_3,_std::allocator<gold::var_1<64,var_2>::var_3>var_4>
             ._M_impl._M_finish;
    pGVar3 = (this->super_Output_data_got<64,var_2>).entries_.
             super__Vector_base<gold::var_1<64,var_2>::var_3,_std::allocator<gold::var_1<64,var_2>::var_3>var_4>
             ._M_impl._M_start;
    this->header_ent_cnt_ = 0;
    this->header_index_ = (int)((long)pGVar2 - (long)pGVar3 >> 3) * -0x55555555;
    var_6._4_4_ = uStack_1c;
    var_6._0_4_ = 0x7ffffffe;
    var_6._8_8_ = local_18;
    var_6._16_8_ = 0;
    gold::var_1<64,var_2>::var_5
              (&this->super_Output_data_got<64,var_2>,(var_3)(var_6 << 0x40));
  }
  var_7 = (this->super_Output_data_got<64,var_2>).super_Output_data_got_base.
          super_Output_section_data_build.super_Output_section_data.super_Output_data.field_0x20;
  if (((var_7 & 2) == 0) && ((var_7 & 8) == 0)) {
    (this->super_Output_data_got<64,var_2>).super_Output_data_got_base.
    super_Output_section_data_build.super_Output_section_data.super_Output_data.field_0x20 =
         var_7 | 2;
    return;
  }
                    /* WARNING: Subroutine does not return */
  gold::var_8("../../gold/output.h",0x218,"set_data_size");
}


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

{
  byte bVar1;
  
  if (*(int *)(param_1 + 0x98) != 0) {
    *(undefined4 *)(param_1 + 0x98) = 0;
    *(int *)(param_1 + 0x9c) =
         (int)(*(long *)(param_1 + 0x40) - *(long *)(param_1 + 0x38) >> 3) * -0x55555555;
    FUN_003e5a10();
  }
  bVar1 = *(byte *)(param_1 + 0x20);
  if (((bVar1 & 2) == 0) && ((bVar1 & 8) == 0)) {
    *(byte *)(param_1 + 0x20) = bVar1 | 2;
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_00352af0("../../gold/output.h",0x218,"set_data_size");
}

