
/* DWARF original prototype: uint do_section_link(Sized_dynobj<64,_false> * this, uint shndx) */

uint __thiscall
gold::Sized_dynobj<64,_false>::do_section_link(Sized_dynobj<64,_false> *this,uint shndx)

{
  undefined *puVar1;
  int iVar2;
  uint uVar3;
  undefined4 uVar4;
  Input_file *pIVar5;
  Elf_file<64,_false,_gold::Object> *pEVar6;
  Object *pOVar7;
  
  puVar1 = PTR_initialize_shnum_00432aa0;
  pEVar6 = &this->elf_file_;
  pOVar7 = (this->elf_file_).file_;
  (*(code *)PTR_initialize_shnum_00432aa0)(pEVar6);
  if ((this->elf_file_).shnum_ <= shndx) {
    uVar4 = (*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x4b6c);
    (*(code *)puVar1)(pEVar6);
    (*(code *)PTR_error_00432a5c)(pOVar7,uVar4,shndx,(this->elf_file_).shnum_);
  }
  (*(code *)PTR_section_header_offset_00432af8)(pEVar6,shndx);
  pIVar5 = pOVar7->input_file_;
  if (pIVar5 != (Input_file *)0x0) {
    iVar2 = (*(code *)PTR_get_view_0043249c)(&pIVar5->file_);
    uVar3 = *(uint *)(iVar2 + 0x28);
    return (((uVar3 >> 0x10) << 0x18 | (uVar3 >> 0x18) << 0x10) >> 0x10) +
           ((uVar3 & 0xff) << 8 | uVar3 >> 8 & 0xff) * 0x10000;
  }
                    /* WARNING: Subroutine does not return */
  Object::input_file((Object *)0x0);
}



int FUN_0026ce70(int param_1,uint param_2)

{
  undefined *puVar1;
  uint uVar2;
  undefined4 uVar3;
  int iVar4;
  int iVar5;
  
  puVar1 = PTR_initialize_shnum_00432aa0;
  iVar4 = param_1 + 0x60;
  iVar5 = *(int *)(param_1 + 0x60);
  (*(code *)PTR_initialize_shnum_00432aa0)(iVar4);
  if (*(uint *)(param_1 + 0x70) <= param_2) {
    uVar3 = (*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x4b6c);
    (*(code *)puVar1)(iVar4);
    (*(code *)PTR_error_00432a5c)(iVar5,uVar3,param_2,*(undefined4 *)(param_1 + 0x70));
  }
  (*(code *)PTR_section_header_offset_00432af8)(iVar4,param_2);
  iVar4 = *(int *)(iVar5 + 0x1c);
  if (iVar4 != 0) {
    iVar4 = (*(code *)PTR_get_view_0043249c)(iVar4 + 0x20);
    uVar2 = *(uint *)(iVar4 + 0x28);
    return (((uVar2 >> 0x10) << 0x18 | (uVar2 >> 0x18) << 0x10) >> 0x10) +
           ((uVar2 & 0xff) << 8 | uVar2 >> 8 & 0xff) * 0x10000;
  }
                    /* WARNING: Subroutine does not return */
  FUN_0025f830();
}


lui gp,0x1d
addiu gp,gp,-0x2ca0
addu gp,gp,t9
addiu sp,sp,-0x50
sw s4,0x44(sp)
sw s1,0x38(sp)
addiu s1,a0,0x60
sw s0,0x34(sp)
or s0,a0,zero
sw gp,0x28(sp)
sw s3,0x40(sp)
sw s2,0x3c(sp)
or s2,a1,zero
sw ra,0x4c(sp)
sw s5,0x48(sp)
lw s4,-0x7730(gp)
lw s3,0x60(a0)
or t9,s4,zero
jalr t9
_or a0,s1,zero
lw v0,0x70(s0)
sltu v0,s2,v0
beq v0,zero,0x0026cf54
_lw gp,0x28(sp)
lw t9,-0x76d8(gp)
or a0,s1,zero
jalr t9
_or a1,s2,zero
lw a0,0x1c(s3)
or t1,v1,zero
lw gp,0x28(sp)
beq a0,zero,0x0026cf98
_or t0,v0,zero
lw a3,0x24(s3)
li v1,0x1
lw a2,0x20(s3)
li v0,0x40
lw t9,-0x7d34(gp)
addiu a0,a0,0x20
sw v1,0x20(sp)
sw v1,0x1c(sp)
sw t1,0x14(sp)
sw t0,0x10(sp)
jalr t9
_sw v0,0x18(sp)
lw v0,0x28(v0)
lw ra,0x4c(sp)
lw s5,0x48(sp)
wsbh v0,v0
lw s4,0x44(sp)
lw s3,0x40(sp)
lw s2,0x3c(sp)
rotr v0,v0,0x10
lw s1,0x38(sp)
lw s0,0x34(sp)
jr ra
_addiu sp,sp,0x50
lw a0,-0x7e1c(gp)
lw t9,-0x39b8(gp)
jalr t9
_addiu a0,a0,-0x4b6c
or a0,s1,zero
or t9,s4,zero
jalr t9
_or s5,v0,zero
lw gp,0x28(sp)
or a2,s2,zero
lw a3,0x70(s0)
or a1,s5,zero
lw t9,-0x7774(gp)
jalr t9
_or a0,s3,zero
b 0x0026ced0
_lw gp,0x28(sp)
lw t9,-0x4abc(gp)
addiu t9,t9,-0x7d0
bal 0x0025f830
_nop
(translation_unit "int FUN_0026ce70(int param_1,uint param_2)\n\n{\n  undefined *puVar1;\n  uint uVar2;\n  undefined4 uVar3;\n  int iVar4;\n  int iVar5;\n  \n  puVar1 = PTR_initialize_shnum_00432aa0;\n  iVar4 = param_1 + 0x60;\n  iVar5 = *(int *)(param_1 + 0x60);\n  (*(code *)PTR_initialize_shnum_00432aa0)(iVar4);\n  if (*(uint *)(param_1 + 0x70) <= param_2) {\n    uVar3 = (*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x4b6c);\n    (*(code *)puVar1)(iVar4);\n    (*(code *)PTR_error_00432a5c)(iVar5,uVar3,param_2,*(undefined4 *)(param_1 + 0x70));\n  }\n  (*(code *)PTR_section_header_offset_00432af8)(iVar4,param_2);\n  iVar4 = *(int *)(iVar5 + 0x1c);\n  if (iVar4 != 0) {\n    iVar4 = (*(code *)PTR_get_view_0043249c)(iVar4 + 0x20);\n    uVar2 = *(uint *)(iVar4 + 0x28);\n    return (((uVar2 >> 0x10) << 0x18 | (uVar2 >> 0x18) << 0x10) >> 0x10) +\n           ((uVar2 & 0xff) << 8 | uVar2 >> 8 & 0xff) * 0x10000;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0025f830();\n}\n\n" (function_definition "int FUN_0026ce70(int param_1,uint param_2)\n\n{\n  undefined *puVar1;\n  uint uVar2;\n  undefined4 uVar3;\n  int iVar4;\n  int iVar5;\n  \n  puVar1 = PTR_initialize_shnum_00432aa0;\n  iVar4 = param_1 + 0x60;\n  iVar5 = *(int *)(param_1 + 0x60);\n  (*(code *)PTR_initialize_shnum_00432aa0)(iVar4);\n  if (*(uint *)(param_1 + 0x70) <= param_2) {\n    uVar3 = (*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x4b6c);\n    (*(code *)puVar1)(iVar4);\n    (*(code *)PTR_error_00432a5c)(iVar5,uVar3,param_2,*(undefined4 *)(param_1 + 0x70));\n  }\n  (*(code *)PTR_section_header_offset_00432af8)(iVar4,param_2);\n  iVar4 = *(int *)(iVar5 + 0x1c);\n  if (iVar4 != 0) {\n    iVar4 = (*(code *)PTR_get_view_0043249c)(iVar4 + 0x20);\n    uVar2 = *(uint *)(iVar4 + 0x28);\n    return (((uVar2 >> 0x10) << 0x18 | (uVar2 >> 0x18) << 0x10) >> 0x10) +\n           ((uVar2 & 0xff) << 8 | uVar2 >> 8 & 0xff) * 0x10000;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0025f830();\n}" primitive_type (function_declarator "FUN_0026ce70(int param_1,uint param_2)" identifier (parameter_list "(int param_1,uint param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint param_2" type_identifier identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  uint uVar2;\n  undefined4 uVar3;\n  int iVar4;\n  int iVar5;\n  \n  puVar1 = PTR_initialize_shnum_00432aa0;\n  iVar4 = param_1 + 0x60;\n  iVar5 = *(int *)(param_1 + 0x60);\n  (*(code *)PTR_initialize_shnum_00432aa0)(iVar4);\n  if (*(uint *)(param_1 + 0x70) <= param_2) {\n    uVar3 = (*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x4b6c);\n    (*(code *)puVar1)(iVar4);\n    (*(code *)PTR_error_00432a5c)(iVar5,uVar3,param_2,*(undefined4 *)(param_1 + 0x70));\n  }\n  (*(code *)PTR_section_header_offset_00432af8)(iVar4,param_2);\n  iVar4 = *(int *)(iVar5 + 0x1c);\n  if (iVar4 != 0) {\n    iVar4 = (*(code *)PTR_get_view_0043249c)(iVar4 + 0x20);\n    uVar2 = *(uint *)(iVar4 + 0x28);\n    return (((uVar2 >> 0x10) << 0x18 | (uVar2 >> 0x18) << 0x10) >> 0x10) +\n           ((uVar2 & 0xff) << 8 | uVar2 >> 8 & 0xff) * 0x10000;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0025f830();\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (expression_statement "puVar1 = PTR_initialize_shnum_00432aa0;" (assignment_expression "puVar1 = PTR_initialize_shnum_00432aa0" identifier = identifier) ;) (expression_statement "iVar4 = param_1 + 0x60;" (assignment_expression "iVar4 = param_1 + 0x60" identifier = (binary_expression "param_1 + 0x60" identifier + number_literal)) ;) (expression_statement "iVar5 = *(int *)(param_1 + 0x60);" (assignment_expression "iVar5 = *(int *)(param_1 + 0x60)" identifier = (pointer_expression "*(int *)(param_1 + 0x60)" * (cast_expression "(int *)(param_1 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) ))))) ;) (expression_statement "(*(code *)PTR_initialize_shnum_00432aa0)(iVar4);" (call_expression "(*(code *)PTR_initialize_shnum_00432aa0)(iVar4)" (parenthesized_expression "(*(code *)PTR_initialize_shnum_00432aa0)" ( (pointer_expression "*(code *)PTR_initialize_shnum_00432aa0" * (cast_expression "(code *)PTR_initialize_shnum_00432aa0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar4)" ( identifier ))) ;) (if_statement "if (*(uint *)(param_1 + 0x70) <= param_2) {\n    uVar3 = (*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x4b6c);\n    (*(code *)puVar1)(iVar4);\n    (*(code *)PTR_error_00432a5c)(iVar5,uVar3,param_2,*(undefined4 *)(param_1 + 0x70));\n  }" if (parenthesized_expression "(*(uint *)(param_1 + 0x70) <= param_2)" ( (binary_expression "*(uint *)(param_1 + 0x70) <= param_2" (pointer_expression "*(uint *)(param_1 + 0x70)" * (cast_expression "(uint *)(param_1 + 0x70)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x70)" ( (binary_expression "param_1 + 0x70" identifier + number_literal) )))) <= identifier) )) (compound_statement "{\n    uVar3 = (*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x4b6c);\n    (*(code *)puVar1)(iVar4);\n    (*(code *)PTR_error_00432a5c)(iVar5,uVar3,param_2,*(undefined4 *)(param_1 + 0x70));\n  }" { (expression_statement "uVar3 = (*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x4b6c);" (assignment_expression "uVar3 = (*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x4b6c)" identifier = (call_expression "(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x4b6c)" (parenthesized_expression "(*(code *)PTR_gettext_00436818)" ( (pointer_expression "*(code *)PTR_gettext_00436818" * (cast_expression "(code *)PTR_gettext_00436818" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_s_alize_xindex_004323b4 + -0x4b6c)" ( (binary_expression "PTR_s_alize_xindex_004323b4 + -0x4b6c" identifier + number_literal) )))) ;) (expression_statement "(*(code *)puVar1)(iVar4);" (call_expression "(*(code *)puVar1)(iVar4)" (parenthesized_expression "(*(code *)puVar1)" ( (pointer_expression "*(code *)puVar1" * (cast_expression "(code *)puVar1" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar4)" ( identifier ))) ;) (expression_statement "(*(code *)PTR_error_00432a5c)(iVar5,uVar3,param_2,*(undefined4 *)(param_1 + 0x70));" (call_expression "(*(code *)PTR_error_00432a5c)(iVar5,uVar3,param_2,*(undefined4 *)(param_1 + 0x70))" (parenthesized_expression "(*(code *)PTR_error_00432a5c)" ( (pointer_expression "*(code *)PTR_error_00432a5c" * (cast_expression "(code *)PTR_error_00432a5c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar5,uVar3,param_2,*(undefined4 *)(param_1 + 0x70))" ( identifier , identifier , identifier , (pointer_expression "*(undefined4 *)(param_1 + 0x70)" * (cast_expression "(undefined4 *)(param_1 + 0x70)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x70)" ( (binary_expression "param_1 + 0x70" identifier + number_literal) )))) ))) ;) })) (expression_statement "(*(code *)PTR_section_header_offset_00432af8)(iVar4,param_2);" (call_expression "(*(code *)PTR_section_header_offset_00432af8)(iVar4,param_2)" (parenthesized_expression "(*(code *)PTR_section_header_offset_00432af8)" ( (pointer_expression "*(code *)PTR_section_header_offset_00432af8" * (cast_expression "(code *)PTR_section_header_offset_00432af8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar4,param_2)" ( identifier , identifier ))) ;) (expression_statement "iVar4 = *(int *)(iVar5 + 0x1c);" (assignment_expression "iVar4 = *(int *)(iVar5 + 0x1c)" identifier = (pointer_expression "*(int *)(iVar5 + 0x1c)" * (cast_expression "(int *)(iVar5 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x1c)" ( (binary_expression "iVar5 + 0x1c" identifier + number_literal) ))))) ;) (if_statement "if (iVar4 != 0) {\n    iVar4 = (*(code *)PTR_get_view_0043249c)(iVar4 + 0x20);\n    uVar2 = *(uint *)(iVar4 + 0x28);\n    return (((uVar2 >> 0x10) << 0x18 | (uVar2 >> 0x18) << 0x10) >> 0x10) +\n           ((uVar2 & 0xff) << 8 | uVar2 >> 8 & 0xff) * 0x10000;\n  }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar4 = (*(code *)PTR_get_view_0043249c)(iVar4 + 0x20);\n    uVar2 = *(uint *)(iVar4 + 0x28);\n    return (((uVar2 >> 0x10) << 0x18 | (uVar2 >> 0x18) << 0x10) >> 0x10) +\n           ((uVar2 & 0xff) << 8 | uVar2 >> 8 & 0xff) * 0x10000;\n  }" { (expression_statement "iVar4 = (*(code *)PTR_get_view_0043249c)(iVar4 + 0x20);" (assignment_expression "iVar4 = (*(code *)PTR_get_view_0043249c)(iVar4 + 0x20)" identifier = (call_expression "(*(code *)PTR_get_view_0043249c)(iVar4 + 0x20)" (parenthesized_expression "(*(code *)PTR_get_view_0043249c)" ( (pointer_expression "*(code *)PTR_get_view_0043249c" * (cast_expression "(code *)PTR_get_view_0043249c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar4 + 0x20)" ( (binary_expression "iVar4 + 0x20" identifier + number_literal) )))) ;) (expression_statement "uVar2 = *(uint *)(iVar4 + 0x28);" (assignment_expression "uVar2 = *(uint *)(iVar4 + 0x28)" identifier = (pointer_expression "*(uint *)(iVar4 + 0x28)" * (cast_expression "(uint *)(iVar4 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x28)" ( (binary_expression "iVar4 + 0x28" identifier + number_literal) ))))) ;) (return_statement "return (((uVar2 >> 0x10) << 0x18 | (uVar2 >> 0x18) << 0x10) >> 0x10) +\n           ((uVar2 & 0xff) << 8 | uVar2 >> 8 & 0xff) * 0x10000;" return (binary_expression "(((uVar2 >> 0x10) << 0x18 | (uVar2 >> 0x18) << 0x10) >> 0x10) +\n           ((uVar2 & 0xff) << 8 | uVar2 >> 8 & 0xff) * 0x10000" (parenthesized_expression "(((uVar2 >> 0x10) << 0x18 | (uVar2 >> 0x18) << 0x10) >> 0x10)" ( (binary_expression "((uVar2 >> 0x10) << 0x18 | (uVar2 >> 0x18) << 0x10) >> 0x10" (parenthesized_expression "((uVar2 >> 0x10) << 0x18 | (uVar2 >> 0x18) << 0x10)" ( (binary_expression "(uVar2 >> 0x10) << 0x18 | (uVar2 >> 0x18) << 0x10" (binary_expression "(uVar2 >> 0x10) << 0x18" (parenthesized_expression "(uVar2 >> 0x10)" ( (binary_expression "uVar2 >> 0x10" identifier >> number_literal) )) << number_literal) | (binary_expression "(uVar2 >> 0x18) << 0x10" (parenthesized_expression "(uVar2 >> 0x18)" ( (binary_expression "uVar2 >> 0x18" identifier >> number_literal) )) << number_literal)) )) >> number_literal) )) + (binary_expression "((uVar2 & 0xff) << 8 | uVar2 >> 8 & 0xff) * 0x10000" (parenthesized_expression "((uVar2 & 0xff) << 8 | uVar2 >> 8 & 0xff)" ( (binary_expression "(uVar2 & 0xff) << 8 | uVar2 >> 8 & 0xff" (binary_expression "(uVar2 & 0xff) << 8" (parenthesized_expression "(uVar2 & 0xff)" ( (binary_expression "uVar2 & 0xff" identifier & number_literal) )) << number_literal) | (binary_expression "uVar2 >> 8 & 0xff" (binary_expression "uVar2 >> 8" identifier >> number_literal) & number_literal)) )) * number_literal)) ;) })) comment (expression_statement "FUN_0025f830();" (call_expression "FUN_0025f830()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "/* DWARF original prototype: uint do_section_link(Sized_dynobj<64,_false> * this, uint shndx) */\n\nuint __thiscall\ngold::Sized_dynobj<64,_false>::do_section_link(Sized_dynobj<64,_false> *this,uint shndx)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  uint uVar3;\n  undefined4 uVar4;\n  Input_file *pIVar5;\n  Elf_file<64,_false,_gold::Object> *pEVar6;\n  Object *pOVar7;\n  \n  puVar1 = PTR_initialize_shnum_00432aa0;\n  pEVar6 = &this->elf_file_;\n  pOVar7 = (this->elf_file_).file_;\n  (*(code *)PTR_initialize_shnum_00432aa0)(pEVar6);\n  if ((this->elf_file_).shnum_ <= shndx) {\n    uVar4 = (*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x4b6c);\n    (*(code *)puVar1)(pEVar6);\n    (*(code *)PTR_error_00432a5c)(pOVar7,uVar4,shndx,(this->elf_file_).shnum_);\n  }\n  (*(code *)PTR_section_header_offset_00432af8)(pEVar6,shndx);\n  pIVar5 = pOVar7->input_file_;\n  if (pIVar5 != (Input_file *)0x0) {\n    iVar2 = (*(code *)PTR_get_view_0043249c)(&pIVar5->file_);\n    uVar3 = *(uint *)(iVar2 + 0x28);\n    return (((uVar3 >> 0x10) << 0x18 | (uVar3 >> 0x18) << 0x10) >> 0x10) +\n           ((uVar3 & 0xff) << 8 | uVar3 >> 8 & 0xff) * 0x10000;\n  }\n                    /* WARNING: Subroutine does not return */\n  Object::input_file((Object *)0x0);\n}\n\n" comment (declaration "uint __thiscall\ngold::Sized_dynobj<64,_false>::do_section_link(Sized_dynobj<64,_false> *this,uint shndx)\n\n{\n  undefined *puVar1;" type_identifier (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::" identifier : :) identifier (ERROR "<64" < number_literal) , (ERROR "_false>::do_section_link(Sized_dynobj<64,_false> *this,uint shndx)\n\n{\n  undefined" identifier > : : (function_declarator "do_section_link(Sized_dynobj<64,_false> *this,uint shndx)" identifier (parameter_list "(Sized_dynobj<64,_false> *this,uint shndx)" ( (parameter_declaration "Sized_dynobj" type_identifier) (ERROR "<64" < number_literal) , (parameter_declaration "_false> *this" type_identifier (ERROR ">" >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "uint shndx" type_identifier identifier) ))) { identifier) (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "Input_file *pIVar5;" type_identifier (pointer_declarator "*pIVar5" * identifier) ;) (ERROR "Elf_file<64,_false," (binary_expression "Elf_file<64" identifier < number_literal) , identifier ,) (labeled_statement "_gold::Object> *pEVar6;" statement_identifier : (ERROR ":" :) (expression_statement "Object> *pEVar6;" (binary_expression "Object> *pEVar6" identifier > (pointer_expression "*pEVar6" * identifier)) ;)) (declaration "Object *pOVar7;" type_identifier (pointer_declarator "*pOVar7" * identifier) ;) (expression_statement "puVar1 = PTR_initialize_shnum_00432aa0;" (assignment_expression "puVar1 = PTR_initialize_shnum_00432aa0" identifier = identifier) ;) (expression_statement "pEVar6 = &this->elf_file_;" (assignment_expression "pEVar6 = &this->elf_file_" identifier = (pointer_expression "&this->elf_file_" & (field_expression "this->elf_file_" identifier -> field_identifier))) ;) (expression_statement "pOVar7 = (this->elf_file_).file_;" (assignment_expression "pOVar7 = (this->elf_file_).file_" identifier = (field_expression "(this->elf_file_).file_" (parenthesized_expression "(this->elf_file_)" ( (field_expression "this->elf_file_" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "(*(code *)PTR_initialize_shnum_00432aa0)(pEVar6);" (call_expression "(*(code *)PTR_initialize_shnum_00432aa0)(pEVar6)" (parenthesized_expression "(*(code *)PTR_initialize_shnum_00432aa0)" ( (pointer_expression "*(code *)PTR_initialize_shnum_00432aa0" * (cast_expression "(code *)PTR_initialize_shnum_00432aa0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pEVar6)" ( identifier ))) ;) (if_statement "if ((this->elf_file_).shnum_ <= shndx) {\n    uVar4 = (*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x4b6c);\n    (*(code *)puVar1)(pEVar6);\n    (*(code *)PTR_error_00432a5c)(pOVar7,uVar4,shndx,(this->elf_file_).shnum_);\n  }" if (parenthesized_expression "((this->elf_file_).shnum_ <= shndx)" ( (binary_expression "(this->elf_file_).shnum_ <= shndx" (field_expression "(this->elf_file_).shnum_" (parenthesized_expression "(this->elf_file_)" ( (field_expression "this->elf_file_" identifier -> field_identifier) )) . field_identifier) <= identifier) )) (compound_statement "{\n    uVar4 = (*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x4b6c);\n    (*(code *)puVar1)(pEVar6);\n    (*(code *)PTR_error_00432a5c)(pOVar7,uVar4,shndx,(this->elf_file_).shnum_);\n  }" { (expression_statement "uVar4 = (*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x4b6c);" (assignment_expression "uVar4 = (*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x4b6c)" identifier = (call_expression "(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x4b6c)" (parenthesized_expression "(*(code *)PTR_gettext_00436818)" ( (pointer_expression "*(code *)PTR_gettext_00436818" * (cast_expression "(code *)PTR_gettext_00436818" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_s_alize_xindex_004323b4 + -0x4b6c)" ( (binary_expression "PTR_s_alize_xindex_004323b4 + -0x4b6c" identifier + number_literal) )))) ;) (expression_statement "(*(code *)puVar1)(pEVar6);" (call_expression "(*(code *)puVar1)(pEVar6)" (parenthesized_expression "(*(code *)puVar1)" ( (pointer_expression "*(code *)puVar1" * (cast_expression "(code *)puVar1" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pEVar6)" ( identifier ))) ;) (expression_statement "(*(code *)PTR_error_00432a5c)(pOVar7,uVar4,shndx,(this->elf_file_).shnum_);" (call_expression "(*(code *)PTR_error_00432a5c)(pOVar7,uVar4,shndx,(this->elf_file_).shnum_)" (parenthesized_expression "(*(code *)PTR_error_00432a5c)" ( (pointer_expression "*(code *)PTR_error_00432a5c" * (cast_expression "(code *)PTR_error_00432a5c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pOVar7,uVar4,shndx,(this->elf_file_).shnum_)" ( identifier , identifier , identifier , (field_expression "(this->elf_file_).shnum_" (parenthesized_expression "(this->elf_file_)" ( (field_expression "this->elf_file_" identifier -> field_identifier) )) . field_identifier) ))) ;) })) (expression_statement "(*(code *)PTR_section_header_offset_00432af8)(pEVar6,shndx);" (call_expression "(*(code *)PTR_section_header_offset_00432af8)(pEVar6,shndx)" (parenthesized_expression "(*(code *)PTR_section_header_offset_00432af8)" ( (pointer_expression "*(code *)PTR_section_header_offset_00432af8" * (cast_expression "(code *)PTR_section_header_offset_00432af8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pEVar6,shndx)" ( identifier , identifier ))) ;) (expression_statement "pIVar5 = pOVar7->input_file_;" (assignment_expression "pIVar5 = pOVar7->input_file_" identifier = (field_expression "pOVar7->input_file_" identifier -> field_identifier)) ;) (if_statement "if (pIVar5 != (Input_file *)0x0) {\n    iVar2 = (*(code *)PTR_get_view_0043249c)(&pIVar5->file_);\n    uVar3 = *(uint *)(iVar2 + 0x28);\n    return (((uVar3 >> 0x10) << 0x18 | (uVar3 >> 0x18) << 0x10) >> 0x10) +\n           ((uVar3 & 0xff) << 8 | uVar3 >> 8 & 0xff) * 0x10000;\n  }" if (parenthesized_expression "(pIVar5 != (Input_file *)0x0)" ( (binary_expression "pIVar5 != (Input_file *)0x0" identifier != (cast_expression "(Input_file *)0x0" ( (type_descriptor "Input_file *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    iVar2 = (*(code *)PTR_get_view_0043249c)(&pIVar5->file_);\n    uVar3 = *(uint *)(iVar2 + 0x28);\n    return (((uVar3 >> 0x10) << 0x18 | (uVar3 >> 0x18) << 0x10) >> 0x10) +\n           ((uVar3 & 0xff) << 8 | uVar3 >> 8 & 0xff) * 0x10000;\n  }" { (expression_statement "iVar2 = (*(code *)PTR_get_view_0043249c)(&pIVar5->file_);" (assignment_expression "iVar2 = (*(code *)PTR_get_view_0043249c)(&pIVar5->file_)" identifier = (call_expression "(*(code *)PTR_get_view_0043249c)(&pIVar5->file_)" (parenthesized_expression "(*(code *)PTR_get_view_0043249c)" ( (pointer_expression "*(code *)PTR_get_view_0043249c" * (cast_expression "(code *)PTR_get_view_0043249c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&pIVar5->file_)" ( (pointer_expression "&pIVar5->file_" & (field_expression "pIVar5->file_" identifier -> field_identifier)) )))) ;) (expression_statement "uVar3 = *(uint *)(iVar2 + 0x28);" (assignment_expression "uVar3 = *(uint *)(iVar2 + 0x28)" identifier = (pointer_expression "*(uint *)(iVar2 + 0x28)" * (cast_expression "(uint *)(iVar2 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x28)" ( (binary_expression "iVar2 + 0x28" identifier + number_literal) ))))) ;) (return_statement "return (((uVar3 >> 0x10) << 0x18 | (uVar3 >> 0x18) << 0x10) >> 0x10) +\n           ((uVar3 & 0xff) << 8 | uVar3 >> 8 & 0xff) * 0x10000;" return (binary_expression "(((uVar3 >> 0x10) << 0x18 | (uVar3 >> 0x18) << 0x10) >> 0x10) +\n           ((uVar3 & 0xff) << 8 | uVar3 >> 8 & 0xff) * 0x10000" (parenthesized_expression "(((uVar3 >> 0x10) << 0x18 | (uVar3 >> 0x18) << 0x10) >> 0x10)" ( (binary_expression "((uVar3 >> 0x10) << 0x18 | (uVar3 >> 0x18) << 0x10) >> 0x10" (parenthesized_expression "((uVar3 >> 0x10) << 0x18 | (uVar3 >> 0x18) << 0x10)" ( (binary_expression "(uVar3 >> 0x10) << 0x18 | (uVar3 >> 0x18) << 0x10" (binary_expression "(uVar3 >> 0x10) << 0x18" (parenthesized_expression "(uVar3 >> 0x10)" ( (binary_expression "uVar3 >> 0x10" identifier >> number_literal) )) << number_literal) | (binary_expression "(uVar3 >> 0x18) << 0x10" (parenthesized_expression "(uVar3 >> 0x18)" ( (binary_expression "uVar3 >> 0x18" identifier >> number_literal) )) << number_literal)) )) >> number_literal) )) + (binary_expression "((uVar3 & 0xff) << 8 | uVar3 >> 8 & 0xff) * 0x10000" (parenthesized_expression "((uVar3 & 0xff) << 8 | uVar3 >> 8 & 0xff)" ( (binary_expression "(uVar3 & 0xff) << 8 | uVar3 >> 8 & 0xff" (binary_expression "(uVar3 & 0xff) << 8" (parenthesized_expression "(uVar3 & 0xff)" ( (binary_expression "uVar3 & 0xff" identifier & number_literal) )) << number_literal) | (binary_expression "uVar3 >> 8 & 0xff" (binary_expression "uVar3 >> 8" identifier >> number_literal) & number_literal)) )) * number_literal)) ;) })) comment (labeled_statement "Object::input_file((Object *)0x0);" statement_identifier : (ERROR ":" :) (expression_statement "input_file((Object *)0x0);" (call_expression "input_file((Object *)0x0)" identifier (argument_list "((Object *)0x0)" ( (cast_expression "(Object *)0x0" ( (type_descriptor "Object *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ))) ;)) (ERROR "}" }))
(translation_unit "int FUN_0026ce70(int param_1,uint param_2)\n\n{\n  undefined *puVar1;\n  uint uVar2;\n  undefined4 uVar3;\n  int iVar4;\n  int iVar5;\n  \n  puVar1 = PTR_initialize_shnum_00432aa0;\n  iVar4 = param_1 + 0x60;\n  iVar5 = *(int *)(param_1 + 0x60);\n  (*(code *)PTR_initialize_shnum_00432aa0)(iVar4);\n  if (*(uint *)(param_1 + 0x70) <= param_2) {\n    uVar3 = (*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x4b6c);\n    (*(code *)puVar1)(iVar4);\n    (*(code *)PTR_error_00432a5c)(iVar5,uVar3,param_2,*(undefined4 *)(param_1 + 0x70));\n  }\n  (*(code *)PTR_section_header_offset_00432af8)(iVar4,param_2);\n  iVar4 = *(int *)(iVar5 + 0x1c);\n  if (iVar4 != 0) {\n    iVar4 = (*(code *)PTR_get_view_0043249c)(iVar4 + 0x20);\n    uVar2 = *(uint *)(iVar4 + 0x28);\n    return (((uVar2 >> 0x10) << 0x18 | (uVar2 >> 0x18) << 0x10) >> 0x10) +\n           ((uVar2 & 0xff) << 8 | uVar2 >> 8 & 0xff) * 0x10000;\n  }\n                    \n  FUN_0025f830();\n}\n\n" (function_definition "int FUN_0026ce70(int param_1,uint param_2)\n\n{\n  undefined *puVar1;\n  uint uVar2;\n  undefined4 uVar3;\n  int iVar4;\n  int iVar5;\n  \n  puVar1 = PTR_initialize_shnum_00432aa0;\n  iVar4 = param_1 + 0x60;\n  iVar5 = *(int *)(param_1 + 0x60);\n  (*(code *)PTR_initialize_shnum_00432aa0)(iVar4);\n  if (*(uint *)(param_1 + 0x70) <= param_2) {\n    uVar3 = (*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x4b6c);\n    (*(code *)puVar1)(iVar4);\n    (*(code *)PTR_error_00432a5c)(iVar5,uVar3,param_2,*(undefined4 *)(param_1 + 0x70));\n  }\n  (*(code *)PTR_section_header_offset_00432af8)(iVar4,param_2);\n  iVar4 = *(int *)(iVar5 + 0x1c);\n  if (iVar4 != 0) {\n    iVar4 = (*(code *)PTR_get_view_0043249c)(iVar4 + 0x20);\n    uVar2 = *(uint *)(iVar4 + 0x28);\n    return (((uVar2 >> 0x10) << 0x18 | (uVar2 >> 0x18) << 0x10) >> 0x10) +\n           ((uVar2 & 0xff) << 8 | uVar2 >> 8 & 0xff) * 0x10000;\n  }\n                    \n  FUN_0025f830();\n}" primitive_type (function_declarator "FUN_0026ce70(int param_1,uint param_2)" identifier (parameter_list "(int param_1,uint param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint param_2" type_identifier identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  uint uVar2;\n  undefined4 uVar3;\n  int iVar4;\n  int iVar5;\n  \n  puVar1 = PTR_initialize_shnum_00432aa0;\n  iVar4 = param_1 + 0x60;\n  iVar5 = *(int *)(param_1 + 0x60);\n  (*(code *)PTR_initialize_shnum_00432aa0)(iVar4);\n  if (*(uint *)(param_1 + 0x70) <= param_2) {\n    uVar3 = (*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x4b6c);\n    (*(code *)puVar1)(iVar4);\n    (*(code *)PTR_error_00432a5c)(iVar5,uVar3,param_2,*(undefined4 *)(param_1 + 0x70));\n  }\n  (*(code *)PTR_section_header_offset_00432af8)(iVar4,param_2);\n  iVar4 = *(int *)(iVar5 + 0x1c);\n  if (iVar4 != 0) {\n    iVar4 = (*(code *)PTR_get_view_0043249c)(iVar4 + 0x20);\n    uVar2 = *(uint *)(iVar4 + 0x28);\n    return (((uVar2 >> 0x10) << 0x18 | (uVar2 >> 0x18) << 0x10) >> 0x10) +\n           ((uVar2 & 0xff) << 8 | uVar2 >> 8 & 0xff) * 0x10000;\n  }\n                    \n  FUN_0025f830();\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (expression_statement "puVar1 = PTR_initialize_shnum_00432aa0;" (assignment_expression "puVar1 = PTR_initialize_shnum_00432aa0" identifier = identifier) ;) (expression_statement "iVar4 = param_1 + 0x60;" (assignment_expression "iVar4 = param_1 + 0x60" identifier = (binary_expression "param_1 + 0x60" identifier + number_literal)) ;) (expression_statement "iVar5 = *(int *)(param_1 + 0x60);" (assignment_expression "iVar5 = *(int *)(param_1 + 0x60)" identifier = (pointer_expression "*(int *)(param_1 + 0x60)" * (cast_expression "(int *)(param_1 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) ))))) ;) (expression_statement "(*(code *)PTR_initialize_shnum_00432aa0)(iVar4);" (call_expression "(*(code *)PTR_initialize_shnum_00432aa0)(iVar4)" (parenthesized_expression "(*(code *)PTR_initialize_shnum_00432aa0)" ( (pointer_expression "*(code *)PTR_initialize_shnum_00432aa0" * (cast_expression "(code *)PTR_initialize_shnum_00432aa0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar4)" ( identifier ))) ;) (if_statement "if (*(uint *)(param_1 + 0x70) <= param_2) {\n    uVar3 = (*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x4b6c);\n    (*(code *)puVar1)(iVar4);\n    (*(code *)PTR_error_00432a5c)(iVar5,uVar3,param_2,*(undefined4 *)(param_1 + 0x70));\n  }" if (parenthesized_expression "(*(uint *)(param_1 + 0x70) <= param_2)" ( (binary_expression "*(uint *)(param_1 + 0x70) <= param_2" (pointer_expression "*(uint *)(param_1 + 0x70)" * (cast_expression "(uint *)(param_1 + 0x70)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x70)" ( (binary_expression "param_1 + 0x70" identifier + number_literal) )))) <= identifier) )) (compound_statement "{\n    uVar3 = (*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x4b6c);\n    (*(code *)puVar1)(iVar4);\n    (*(code *)PTR_error_00432a5c)(iVar5,uVar3,param_2,*(undefined4 *)(param_1 + 0x70));\n  }" { (expression_statement "uVar3 = (*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x4b6c);" (assignment_expression "uVar3 = (*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x4b6c)" identifier = (call_expression "(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x4b6c)" (parenthesized_expression "(*(code *)PTR_gettext_00436818)" ( (pointer_expression "*(code *)PTR_gettext_00436818" * (cast_expression "(code *)PTR_gettext_00436818" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_s_alize_xindex_004323b4 + -0x4b6c)" ( (binary_expression "PTR_s_alize_xindex_004323b4 + -0x4b6c" identifier + number_literal) )))) ;) (expression_statement "(*(code *)puVar1)(iVar4);" (call_expression "(*(code *)puVar1)(iVar4)" (parenthesized_expression "(*(code *)puVar1)" ( (pointer_expression "*(code *)puVar1" * (cast_expression "(code *)puVar1" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar4)" ( identifier ))) ;) (expression_statement "(*(code *)PTR_error_00432a5c)(iVar5,uVar3,param_2,*(undefined4 *)(param_1 + 0x70));" (call_expression "(*(code *)PTR_error_00432a5c)(iVar5,uVar3,param_2,*(undefined4 *)(param_1 + 0x70))" (parenthesized_expression "(*(code *)PTR_error_00432a5c)" ( (pointer_expression "*(code *)PTR_error_00432a5c" * (cast_expression "(code *)PTR_error_00432a5c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar5,uVar3,param_2,*(undefined4 *)(param_1 + 0x70))" ( identifier , identifier , identifier , (pointer_expression "*(undefined4 *)(param_1 + 0x70)" * (cast_expression "(undefined4 *)(param_1 + 0x70)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x70)" ( (binary_expression "param_1 + 0x70" identifier + number_literal) )))) ))) ;) })) (expression_statement "(*(code *)PTR_section_header_offset_00432af8)(iVar4,param_2);" (call_expression "(*(code *)PTR_section_header_offset_00432af8)(iVar4,param_2)" (parenthesized_expression "(*(code *)PTR_section_header_offset_00432af8)" ( (pointer_expression "*(code *)PTR_section_header_offset_00432af8" * (cast_expression "(code *)PTR_section_header_offset_00432af8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar4,param_2)" ( identifier , identifier ))) ;) (expression_statement "iVar4 = *(int *)(iVar5 + 0x1c);" (assignment_expression "iVar4 = *(int *)(iVar5 + 0x1c)" identifier = (pointer_expression "*(int *)(iVar5 + 0x1c)" * (cast_expression "(int *)(iVar5 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x1c)" ( (binary_expression "iVar5 + 0x1c" identifier + number_literal) ))))) ;) (if_statement "if (iVar4 != 0) {\n    iVar4 = (*(code *)PTR_get_view_0043249c)(iVar4 + 0x20);\n    uVar2 = *(uint *)(iVar4 + 0x28);\n    return (((uVar2 >> 0x10) << 0x18 | (uVar2 >> 0x18) << 0x10) >> 0x10) +\n           ((uVar2 & 0xff) << 8 | uVar2 >> 8 & 0xff) * 0x10000;\n  }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar4 = (*(code *)PTR_get_view_0043249c)(iVar4 + 0x20);\n    uVar2 = *(uint *)(iVar4 + 0x28);\n    return (((uVar2 >> 0x10) << 0x18 | (uVar2 >> 0x18) << 0x10) >> 0x10) +\n           ((uVar2 & 0xff) << 8 | uVar2 >> 8 & 0xff) * 0x10000;\n  }" { (expression_statement "iVar4 = (*(code *)PTR_get_view_0043249c)(iVar4 + 0x20);" (assignment_expression "iVar4 = (*(code *)PTR_get_view_0043249c)(iVar4 + 0x20)" identifier = (call_expression "(*(code *)PTR_get_view_0043249c)(iVar4 + 0x20)" (parenthesized_expression "(*(code *)PTR_get_view_0043249c)" ( (pointer_expression "*(code *)PTR_get_view_0043249c" * (cast_expression "(code *)PTR_get_view_0043249c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar4 + 0x20)" ( (binary_expression "iVar4 + 0x20" identifier + number_literal) )))) ;) (expression_statement "uVar2 = *(uint *)(iVar4 + 0x28);" (assignment_expression "uVar2 = *(uint *)(iVar4 + 0x28)" identifier = (pointer_expression "*(uint *)(iVar4 + 0x28)" * (cast_expression "(uint *)(iVar4 + 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x28)" ( (binary_expression "iVar4 + 0x28" identifier + number_literal) ))))) ;) (return_statement "return (((uVar2 >> 0x10) << 0x18 | (uVar2 >> 0x18) << 0x10) >> 0x10) +\n           ((uVar2 & 0xff) << 8 | uVar2 >> 8 & 0xff) * 0x10000;" return (binary_expression "(((uVar2 >> 0x10) << 0x18 | (uVar2 >> 0x18) << 0x10) >> 0x10) +\n           ((uVar2 & 0xff) << 8 | uVar2 >> 8 & 0xff) * 0x10000" (parenthesized_expression "(((uVar2 >> 0x10) << 0x18 | (uVar2 >> 0x18) << 0x10) >> 0x10)" ( (binary_expression "((uVar2 >> 0x10) << 0x18 | (uVar2 >> 0x18) << 0x10) >> 0x10" (parenthesized_expression "((uVar2 >> 0x10) << 0x18 | (uVar2 >> 0x18) << 0x10)" ( (binary_expression "(uVar2 >> 0x10) << 0x18 | (uVar2 >> 0x18) << 0x10" (binary_expression "(uVar2 >> 0x10) << 0x18" (parenthesized_expression "(uVar2 >> 0x10)" ( (binary_expression "uVar2 >> 0x10" identifier >> number_literal) )) << number_literal) | (binary_expression "(uVar2 >> 0x18) << 0x10" (parenthesized_expression "(uVar2 >> 0x18)" ( (binary_expression "uVar2 >> 0x18" identifier >> number_literal) )) << number_literal)) )) >> number_literal) )) + (binary_expression "((uVar2 & 0xff) << 8 | uVar2 >> 8 & 0xff) * 0x10000" (parenthesized_expression "((uVar2 & 0xff) << 8 | uVar2 >> 8 & 0xff)" ( (binary_expression "(uVar2 & 0xff) << 8 | uVar2 >> 8 & 0xff" (binary_expression "(uVar2 & 0xff) << 8" (parenthesized_expression "(uVar2 & 0xff)" ( (binary_expression "uVar2 & 0xff" identifier & number_literal) )) << number_literal) | (binary_expression "uVar2 >> 8 & 0xff" (binary_expression "uVar2 >> 8" identifier >> number_literal) & number_literal)) )) * number_literal)) ;) })) (expression_statement "FUN_0025f830();" (call_expression "FUN_0025f830()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT ))) ;) (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 IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (return_statement return (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) << LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) << LIT)) )) >> LIT) )) + (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT) | (binary_expression (binary_expression IDENT >> LIT) & LIT)) )) * LIT)) ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })))
(function_definition "int FUN_0026ce70(int param_1,uint param_2)\n\n{\n  undefined *puVar1;\n  uint uVar2;\n  undefined4 uVar3;\n  int iVar4;\n  int iVar5;\n  \n  puVar1 = PTR_initialize_shnum_00432aa0;\n  iVar4 = param_1 + 0x60;\n  iVar5 = *(int *)(param_1 + 0x60);\n  (*(code *)PTR_initialize_shnum_00432aa0)(iVar4);\n  if (*(uint *)(param_1 + 0x70) <= param_2) {\n    uVar3 = (*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x4b6c);\n    (*(code *)puVar1)(iVar4);\n    (*(code *)PTR_error_00432a5c)(iVar5,uVar3,param_2,*(undefined4 *)(param_1 + 0x70));\n  }\n  (*(code *)PTR_section_header_offset_00432af8)(iVar4,param_2);\n  iVar4 = *(int *)(iVar5 + 0x1c);\n  if (iVar4 != 0) {\n    iVar4 = (*(code *)PTR_get_view_0043249c)(iVar4 + 0x20);\n    uVar2 = *(uint *)(iVar4 + 0x28);\n    return (((uVar2 >> 0x10) << 0x18 | (uVar2 >> 0x18) << 0x10) >> 0x10) +\n           ((uVar2 & 0xff) << 8 | uVar2 >> 8 & 0xff) * 0x10000;\n  }\n                    \n  FUN_0025f830();\n}" (primitive_type "int") (function_declarator "FUN_0026ce70(int param_1,uint param_2)" (identifier "FUN_0026ce70") (parameter_list "(int param_1,uint param_2)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "uint param_2" (type_identifier "uint") (identifier "param_2")) () ")"))) (compound_statement "{\n  undefined *puVar1;\n  uint uVar2;\n  undefined4 uVar3;\n  int iVar4;\n  int iVar5;\n  \n  puVar1 = PTR_initialize_shnum_00432aa0;\n  iVar4 = param_1 + 0x60;\n  iVar5 = *(int *)(param_1 + 0x60);\n  (*(code *)PTR_initialize_shnum_00432aa0)(iVar4);\n  if (*(uint *)(param_1 + 0x70) <= param_2) {\n    uVar3 = (*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x4b6c);\n    (*(code *)puVar1)(iVar4);\n    (*(code *)PTR_error_00432a5c)(iVar5,uVar3,param_2,*(undefined4 *)(param_1 + 0x70));\n  }\n  (*(code *)PTR_section_header_offset_00432af8)(iVar4,param_2);\n  iVar4 = *(int *)(iVar5 + 0x1c);\n  if (iVar4 != 0) {\n    iVar4 = (*(code *)PTR_get_view_0043249c)(iVar4 + 0x20);\n    uVar2 = *(uint *)(iVar4 + 0x28);\n    return (((uVar2 >> 0x10) << 0x18 | (uVar2 >> 0x18) << 0x10) >> 0x10) +\n           ((uVar2 & 0xff) << 8 | uVar2 >> 8 & 0xff) * 0x10000;\n  }\n                    \n  FUN_0025f830();\n}" ({ "{") (declaration "undefined *puVar1;" (type_identifier "undefined") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (expression_statement "puVar1 = PTR_initialize_shnum_00432aa0;" (assignment_expression "puVar1 = PTR_initialize_shnum_00432aa0" (identifier "puVar1") (= "=") (identifier "PTR_initialize_shnum_00432aa0")) (; ";")) (expression_statement "iVar4 = param_1 + 0x60;" (assignment_expression "iVar4 = param_1 + 0x60" (identifier "iVar4") (= "=") (binary_expression "param_1 + 0x60" (identifier "param_1") (+ "+") (number_literal "0x60"))) (; ";")) (expression_statement "iVar5 = *(int *)(param_1 + 0x60);" (assignment_expression "iVar5 = *(int *)(param_1 + 0x60)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(param_1 + 0x60)" (* "*") (cast_expression "(int *)(param_1 + 0x60)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x60)" (( "(") (binary_expression "param_1 + 0x60" (identifier "param_1") (+ "+") (number_literal "0x60")) () ")"))))) (; ";")) (expression_statement "(*(code *)PTR_initialize_shnum_00432aa0)(iVar4);" (call_expression "(*(code *)PTR_initialize_shnum_00432aa0)(iVar4)" (parenthesized_expression "(*(code *)PTR_initialize_shnum_00432aa0)" (( "(") (pointer_expression "*(code *)PTR_initialize_shnum_00432aa0" (* "*") (cast_expression "(code *)PTR_initialize_shnum_00432aa0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_initialize_shnum_00432aa0"))) () ")")) (argument_list "(iVar4)" (( "(") (identifier "iVar4") () ")"))) (; ";")) (if_statement "if (*(uint *)(param_1 + 0x70) <= param_2) {\n    uVar3 = (*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x4b6c);\n    (*(code *)puVar1)(iVar4);\n    (*(code *)PTR_error_00432a5c)(iVar5,uVar3,param_2,*(undefined4 *)(param_1 + 0x70));\n  }" (if "if") (parenthesized_expression "(*(uint *)(param_1 + 0x70) <= param_2)" (( "(") (binary_expression "*(uint *)(param_1 + 0x70) <= param_2" (pointer_expression "*(uint *)(param_1 + 0x70)" (* "*") (cast_expression "(uint *)(param_1 + 0x70)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x70)" (( "(") (binary_expression "param_1 + 0x70" (identifier "param_1") (+ "+") (number_literal "0x70")) () ")")))) (<= "<=") (identifier "param_2")) () ")")) (compound_statement "{\n    uVar3 = (*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x4b6c);\n    (*(code *)puVar1)(iVar4);\n    (*(code *)PTR_error_00432a5c)(iVar5,uVar3,param_2,*(undefined4 *)(param_1 + 0x70));\n  }" ({ "{") (expression_statement "uVar3 = (*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x4b6c);" (assignment_expression "uVar3 = (*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x4b6c)" (identifier "uVar3") (= "=") (call_expression "(*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x4b6c)" (parenthesized_expression "(*(code *)PTR_gettext_00436818)" (( "(") (pointer_expression "*(code *)PTR_gettext_00436818" (* "*") (cast_expression "(code *)PTR_gettext_00436818" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_gettext_00436818"))) () ")")) (argument_list "(PTR_s_alize_xindex_004323b4 + -0x4b6c)" (( "(") (binary_expression "PTR_s_alize_xindex_004323b4 + -0x4b6c" (identifier "PTR_s_alize_xindex_004323b4") (+ "+") (number_literal "-0x4b6c")) () ")")))) (; ";")) (expression_statement "(*(code *)puVar1)(iVar4);" (call_expression "(*(code *)puVar1)(iVar4)" (parenthesized_expression "(*(code *)puVar1)" (( "(") (pointer_expression "*(code *)puVar1" (* "*") (cast_expression "(code *)puVar1" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar1"))) () ")")) (argument_list "(iVar4)" (( "(") (identifier "iVar4") () ")"))) (; ";")) (expression_statement "(*(code *)PTR_error_00432a5c)(iVar5,uVar3,param_2,*(undefined4 *)(param_1 + 0x70));" (call_expression "(*(code *)PTR_error_00432a5c)(iVar5,uVar3,param_2,*(undefined4 *)(param_1 + 0x70))" (parenthesized_expression "(*(code *)PTR_error_00432a5c)" (( "(") (pointer_expression "*(code *)PTR_error_00432a5c" (* "*") (cast_expression "(code *)PTR_error_00432a5c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_error_00432a5c"))) () ")")) (argument_list "(iVar5,uVar3,param_2,*(undefined4 *)(param_1 + 0x70))" (( "(") (identifier "iVar5") (, ",") (identifier "uVar3") (, ",") (identifier "param_2") (, ",") (pointer_expression "*(undefined4 *)(param_1 + 0x70)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x70)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x70)" (( "(") (binary_expression "param_1 + 0x70" (identifier "param_1") (+ "+") (number_literal "0x70")) () ")")))) () ")"))) (; ";")) (} "}"))) (expression_statement "(*(code *)PTR_section_header_offset_00432af8)(iVar4,param_2);" (call_expression "(*(code *)PTR_section_header_offset_00432af8)(iVar4,param_2)" (parenthesized_expression "(*(code *)PTR_section_header_offset_00432af8)" (( "(") (pointer_expression "*(code *)PTR_section_header_offset_00432af8" (* "*") (cast_expression "(code *)PTR_section_header_offset_00432af8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_section_header_offset_00432af8"))) () ")")) (argument_list "(iVar4,param_2)" (( "(") (identifier "iVar4") (, ",") (identifier "param_2") () ")"))) (; ";")) (expression_statement "iVar4 = *(int *)(iVar5 + 0x1c);" (assignment_expression "iVar4 = *(int *)(iVar5 + 0x1c)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(iVar5 + 0x1c)" (* "*") (cast_expression "(int *)(iVar5 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x1c)" (( "(") (binary_expression "iVar5 + 0x1c" (identifier "iVar5") (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (if_statement "if (iVar4 != 0) {\n    iVar4 = (*(code *)PTR_get_view_0043249c)(iVar4 + 0x20);\n    uVar2 = *(uint *)(iVar4 + 0x28);\n    return (((uVar2 >> 0x10) << 0x18 | (uVar2 >> 0x18) << 0x10) >> 0x10) +\n           ((uVar2 & 0xff) << 8 | uVar2 >> 8 & 0xff) * 0x10000;\n  }" (if "if") (parenthesized_expression "(iVar4 != 0)" (( "(") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    iVar4 = (*(code *)PTR_get_view_0043249c)(iVar4 + 0x20);\n    uVar2 = *(uint *)(iVar4 + 0x28);\n    return (((uVar2 >> 0x10) << 0x18 | (uVar2 >> 0x18) << 0x10) >> 0x10) +\n           ((uVar2 & 0xff) << 8 | uVar2 >> 8 & 0xff) * 0x10000;\n  }" ({ "{") (expression_statement "iVar4 = (*(code *)PTR_get_view_0043249c)(iVar4 + 0x20);" (assignment_expression "iVar4 = (*(code *)PTR_get_view_0043249c)(iVar4 + 0x20)" (identifier "iVar4") (= "=") (call_expression "(*(code *)PTR_get_view_0043249c)(iVar4 + 0x20)" (parenthesized_expression "(*(code *)PTR_get_view_0043249c)" (( "(") (pointer_expression "*(code *)PTR_get_view_0043249c" (* "*") (cast_expression "(code *)PTR_get_view_0043249c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_get_view_0043249c"))) () ")")) (argument_list "(iVar4 + 0x20)" (( "(") (binary_expression "iVar4 + 0x20" (identifier "iVar4") (+ "+") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "uVar2 = *(uint *)(iVar4 + 0x28);" (assignment_expression "uVar2 = *(uint *)(iVar4 + 0x28)" (identifier "uVar2") (= "=") (pointer_expression "*(uint *)(iVar4 + 0x28)" (* "*") (cast_expression "(uint *)(iVar4 + 0x28)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x28)" (( "(") (binary_expression "iVar4 + 0x28" (identifier "iVar4") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (return_statement "return (((uVar2 >> 0x10) << 0x18 | (uVar2 >> 0x18) << 0x10) >> 0x10) +\n           ((uVar2 & 0xff) << 8 | uVar2 >> 8 & 0xff) * 0x10000;" (return "return") (binary_expression "(((uVar2 >> 0x10) << 0x18 | (uVar2 >> 0x18) << 0x10) >> 0x10) +\n           ((uVar2 & 0xff) << 8 | uVar2 >> 8 & 0xff) * 0x10000" (parenthesized_expression "(((uVar2 >> 0x10) << 0x18 | (uVar2 >> 0x18) << 0x10) >> 0x10)" (( "(") (binary_expression "((uVar2 >> 0x10) << 0x18 | (uVar2 >> 0x18) << 0x10) >> 0x10" (parenthesized_expression "((uVar2 >> 0x10) << 0x18 | (uVar2 >> 0x18) << 0x10)" (( "(") (binary_expression "(uVar2 >> 0x10) << 0x18 | (uVar2 >> 0x18) << 0x10" (binary_expression "(uVar2 >> 0x10) << 0x18" (parenthesized_expression "(uVar2 >> 0x10)" (( "(") (binary_expression "uVar2 >> 0x10" (identifier "uVar2") (>> ">>") (number_literal "0x10")) () ")")) (<< "<<") (number_literal "0x18")) (| "|") (binary_expression "(uVar2 >> 0x18) << 0x10" (parenthesized_expression "(uVar2 >> 0x18)" (( "(") (binary_expression "uVar2 >> 0x18" (identifier "uVar2") (>> ">>") (number_literal "0x18")) () ")")) (<< "<<") (number_literal "0x10"))) () ")")) (>> ">>") (number_literal "0x10")) () ")")) (+ "+") (binary_expression "((uVar2 & 0xff) << 8 | uVar2 >> 8 & 0xff) * 0x10000" (parenthesized_expression "((uVar2 & 0xff) << 8 | uVar2 >> 8 & 0xff)" (( "(") (binary_expression "(uVar2 & 0xff) << 8 | uVar2 >> 8 & 0xff" (binary_expression "(uVar2 & 0xff) << 8" (parenthesized_expression "(uVar2 & 0xff)" (( "(") (binary_expression "uVar2 & 0xff" (identifier "uVar2") (& "&") (number_literal "0xff")) () ")")) (<< "<<") (number_literal "8")) (| "|") (binary_expression "uVar2 >> 8 & 0xff" (binary_expression "uVar2 >> 8" (identifier "uVar2") (>> ">>") (number_literal "8")) (& "&") (number_literal "0xff"))) () ")")) (* "*") (number_literal "0x10000"))) (; ";")) (} "}"))) (expression_statement "FUN_0025f830();" (call_expression "FUN_0025f830()" (identifier "FUN_0025f830") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))

/* DWARF original prototype: uint do_section_link(Sized_dynobj<64,_false> * this, uint shndx) */

type_1 __thiscall
gold::Sized_dynobj<64,_false>::do_section_link(Sized_dynobj<64,_false> *this,type_1 var_2)

{
  undefined *puVar1;
  int var_5;
  type_1 var_6;
  type_2 uVar4;
  type_3 *var_4;
  Elf_file<64,_false,_gold::var_1> *pEVar6;
  var_1 *pOVar7;
  
  puVar1 = PTR_initialize_shnum_00432aa0;
  pEVar6 = &this->elf_file_;
  pOVar7 = (this->elf_file_).file_;
  (*(type_4 *)PTR_initialize_shnum_00432aa0)(pEVar6);
  if ((this->elf_file_).shnum_ <= var_2) {
    uVar4 = (*(type_4 *)PTR_gettext_00436818)(var_3 + -0x4b6c);
    (*(type_4 *)puVar1)(pEVar6);
    (*(type_4 *)PTR_error_00432a5c)(pOVar7,uVar4,var_2,(this->elf_file_).shnum_);
  }
  (*(type_4 *)PTR_section_header_offset_00432af8)(pEVar6,var_2);
  var_4 = pOVar7->input_file_;
  if (var_4 != (type_3 *)0x0) {
    var_5 = (*(type_4 *)PTR_get_view_0043249c)(&var_4->file_);
    var_6 = *(type_1 *)(var_5 + 0x28);
    return (((var_6 >> 0x10) << 0x18 | (var_6 >> 0x18) << 0x10) >> 0x10) +
           ((var_6 & 0xff) << 8 | var_6 >> 8 & 0xff) * 0x10000;
  }
                    /* WARNING: Subroutine does not return */
  Object::var_7((var_1 *)0x0);
}


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

int MASKED(int param_1,uint param_2)

{
  undefined *puVar1;
  uint uVar2;
  undefined4 uVar3;
  int iVar4;
  int iVar5;
  
  puVar1 = PTR_initialize_shnum_00432aa0;
  iVar4 = param_1 + 0x60;
  iVar5 = *(int *)(param_1 + 0x60);
  (*(code *)PTR_initialize_shnum_00432aa0)(iVar4);
  if (*(uint *)(param_1 + 0x70) <= param_2) {
    uVar3 = (*(code *)PTR_gettext_00436818)(PTR_s_alize_xindex_004323b4 + -0x4b6c);
    (*(code *)puVar1)(iVar4);
    (*(code *)PTR_error_00432a5c)(iVar5,uVar3,param_2,*(undefined4 *)(param_1 + 0x70));
  }
  (*(code *)PTR_section_header_offset_00432af8)(iVar4,param_2);
  iVar4 = *(int *)(iVar5 + 0x1c);
  if (iVar4 != 0) {
    iVar4 = (*(code *)PTR_get_view_0043249c)(iVar4 + 0x20);
    uVar2 = *(uint *)(iVar4 + 0x28);
    return (((uVar2 >> 0x10) << 0x18 | (uVar2 >> 0x18) << 0x10) >> 0x10) +
           ((uVar2 & 0xff) << 8 | uVar2 >> 8 & 0xff) * 0x10000;
  }
                    /* WARNING: Subroutine does not return */
  FUN_0025f830();
}

