
/* DWARF original prototype: string section_name(Elf_file<32,_false,_gold::Object> * this, uint
   shndx) */

string * __thiscall
elfcpp::Elf_file<32,_false,_gold::Object>::section_name
          (string *__return_storage_ptr__,Elf_file<32,_false,_gold::Object> *this,uint shndx)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  Object *this_00;
  off_t oVar4;
  uint *puVar5;
  uchar *puVar6;
  void *pvVar7;
  char *pcVar8;
  
  this_00 = this->file_;
  oVar4 = section_header_offset(this,shndx);
  if (this_00->input_file_ != (Input_file *)0x0) {
    puVar5 = (uint *)gold::File_read::get_view
                               (&this_00->input_file_->file_,this_00->offset_,oVar4,0x28,true,true);
    uVar1 = *puVar5;
    oVar4 = section_header_offset(this,this->shstrndx_);
    if (this_00->input_file_ != (Input_file *)0x0) {
      puVar6 = gold::File_read::get_view
                         (&this_00->input_file_->file_,this_00->offset_,oVar4,0x28,true,true);
      uVar2 = *(uint *)(puVar6 + 0x14);
      uVar3 = *(uint *)(puVar6 + 0x10);
      if (uVar2 <= uVar1) {
        pcVar8 = (char *)gettext("bad section name offset for section %u: %u");
        gold::Object::error(this_00,pcVar8,(ulong)shndx,(ulong)uVar1);
      }
      if (this_00->input_file_ != (Input_file *)0x0) {
        puVar6 = gold::File_read::get_view
                           (&this_00->input_file_->file_,this_00->offset_,(ulong)uVar3,(ulong)uVar2,
                            true,true);
        pvVar7 = memchr(puVar6 + uVar1,0,(ulong)(uVar2 - uVar1));
        if (pvVar7 == (void *)0x0) {
          pcVar8 = (char *)gettext("missing null terminator for name of section %u");
          gold::Object::error(this_00,pcVar8,(ulong)shndx);
        }
        (__return_storage_ptr__->_M_dataplus)._M_p = (pointer)&__return_storage_ptr__->field_2;
        std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::
        _M_construct<char_const*>(__return_storage_ptr__,puVar6 + uVar1,pvVar7);
        return __return_storage_ptr__;
      }
    }
  }
                    /* WARNING: Subroutine does not return */
  gold::do_gold_unreachable("../../gold/object.h",0x1e3,"input_file");
}



long * FUN_001694a0(long *param_1,long *param_2,undefined4 param_3)

{
  uint uVar1;
  uint uVar2;
  undefined4 uVar3;
  long lVar4;
  undefined8 uVar5;
  uint *puVar6;
  long lVar7;
  void *pvVar8;
  
  lVar4 = *param_2;
  uVar5 = FUN_00169310(param_2,param_3);
  if (*(long *)(lVar4 + 0x28) != 0) {
    puVar6 = (uint *)FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5
                                  ,0x28,1,1);
    uVar1 = *puVar6;
    uVar5 = FUN_00169310(param_2,*(undefined4 *)((long)param_2 + 0x14));
    if (*(long *)(lVar4 + 0x28) != 0) {
      lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5,0x28,1
                           ,1);
      uVar2 = *(uint *)(lVar7 + 0x14);
      uVar3 = *(undefined4 *)(lVar7 + 0x10);
      if (uVar2 <= uVar1) {
        uVar5 = gettext("bad section name offset for section %u: %u");
        FUN_001bd150(lVar4,uVar5,param_3,uVar1);
      }
      if (*(long *)(lVar4 + 0x28) != 0) {
        lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar3,
                             uVar2,1,1);
        pvVar8 = memchr((void *)((ulong)uVar1 + lVar7),0,(ulong)(uVar2 - uVar1));
        if (pvVar8 == (void *)0x0) {
          uVar5 = gettext("missing null terminator for name of section %u");
          FUN_001bd150(lVar4,uVar5,param_3);
        }
        *param_1 = (long)(param_1 + 2);
        FUN_001665c0(param_1,(void *)((ulong)uVar1 + lVar7),pvVar8);
        return param_1;
      }
    }
  }
                    /* WARNING: Subroutine does not return */
  FUN_0017c650("../../gold/object.h",0x1e3,"input_file");
}


PUSH R15
PUSH R14
PUSH R13
MOV R13D,EDX
PUSH R12
MOV R12,RDI
PUSH RBP
MOV RBP,RSI
PUSH RBX
MOV RDI,RBP
SUB RSP,0x8
MOV RBX,qword ptr [RSI]
MOV ESI,EDX
CALL 0x00169310
MOV RDI,qword ptr [RBX + 0x28]
TEST RDI,RDI
JZ 0x001695f6
MOV RSI,qword ptr [RBX + 0x30]
ADD RDI,0x28
MOV ECX,0x28
MOV RDX,RAX
MOV R9D,0x1
MOV R8D,0x1
CALL 0x0017b1d0
MOV ESI,dword ptr [RBP + 0x14]
MOV RDI,RBP
MOV R14D,dword ptr [RAX]
CALL 0x00169310
MOV RDI,qword ptr [RBX + 0x28]
TEST RDI,RDI
JZ 0x001695f6
MOV RSI,qword ptr [RBX + 0x30]
ADD RDI,0x28
MOV ECX,0x28
MOV RDX,RAX
MOV R9D,0x1
MOV R8D,0x1
CALL 0x0017b1d0
MOV EBP,dword ptr [RAX + 0x14]
MOV R15D,dword ptr [RAX + 0x10]
CMP EBP,R14D
JBE 0x001695b0
MOV RDI,qword ptr [RBX + 0x28]
MOV ECX,EBP
TEST RDI,RDI
JZ 0x001695f6
MOV RSI,qword ptr [RBX + 0x30]
MOV RDX,R15
ADD RDI,0x28
MOV R9D,0x1
MOV R8D,0x1
MOV R15D,R14D
CALL 0x0017b1d0
MOV EDX,EBP
XOR ESI,ESI
ADD R15,RAX
SUB EDX,R14D
MOV RDI,R15
CALL 0x001471b0
MOV RBP,RAX
TEST RAX,RAX
JZ 0x001695d8
LEA RAX,[R12 + 0x10]
MOV RDX,RBP
MOV RSI,R15
MOV RDI,R12
MOV qword ptr [R12],RAX
CALL 0x001665c0
ADD RSP,0x8
MOV RAX,R12
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
LEA RDI,[0x36ba50]
CALL 0x00147320
MOV ECX,R14D
MOV EDX,R13D
MOV RDI,RBX
MOV RSI,RAX
XOR EAX,EAX
CALL 0x001bd150
JMP 0x0016953a
LEA RDI,[0x36ba80]
CALL 0x00147320
MOV EDX,R13D
MOV RDI,RBX
MOV RSI,RAX
XOR EAX,EAX
CALL 0x001bd150
JMP 0x00169582
LEA RDX,[0x36c798]
MOV ESI,0x1e3
LEA RDI,[0x36b016]
CALL 0x0017c650
(translation_unit "long * FUN_001694a0(long *param_1,long *param_2,undefined4 param_3)\n\n{\n  uint uVar1;\n  uint uVar2;\n  undefined4 uVar3;\n  long lVar4;\n  undefined8 uVar5;\n  uint *puVar6;\n  long lVar7;\n  void *pvVar8;\n  \n  lVar4 = *param_2;\n  uVar5 = FUN_00169310(param_2,param_3);\n  if (*(long *)(lVar4 + 0x28) != 0) {\n    puVar6 = (uint *)FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5\n                                  ,0x28,1,1);\n    uVar1 = *puVar6;\n    uVar5 = FUN_00169310(param_2,*(undefined4 *)((long)param_2 + 0x14));\n    if (*(long *)(lVar4 + 0x28) != 0) {\n      lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5,0x28,1\n                           ,1);\n      uVar2 = *(uint *)(lVar7 + 0x14);\n      uVar3 = *(undefined4 *)(lVar7 + 0x10);\n      if (uVar2 <= uVar1) {\n        uVar5 = gettext("bad section name offset for section %u: %u");\n        FUN_001bd150(lVar4,uVar5,param_3,uVar1);\n      }\n      if (*(long *)(lVar4 + 0x28) != 0) {\n        lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar3,\n                             uVar2,1,1);\n        pvVar8 = memchr((void *)((ulong)uVar1 + lVar7),0,(ulong)(uVar2 - uVar1));\n        if (pvVar8 == (void *)0x0) {\n          uVar5 = gettext("missing null terminator for name of section %u");\n          FUN_001bd150(lVar4,uVar5,param_3);\n        }\n        *param_1 = (long)(param_1 + 2);\n        FUN_001665c0(param_1,(void *)((ulong)uVar1 + lVar7),pvVar8);\n        return param_1;\n      }\n    }\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0017c650("../../gold/object.h",0x1e3,"input_file");\n}\n\n" (function_definition "long * FUN_001694a0(long *param_1,long *param_2,undefined4 param_3)\n\n{\n  uint uVar1;\n  uint uVar2;\n  undefined4 uVar3;\n  long lVar4;\n  undefined8 uVar5;\n  uint *puVar6;\n  long lVar7;\n  void *pvVar8;\n  \n  lVar4 = *param_2;\n  uVar5 = FUN_00169310(param_2,param_3);\n  if (*(long *)(lVar4 + 0x28) != 0) {\n    puVar6 = (uint *)FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5\n                                  ,0x28,1,1);\n    uVar1 = *puVar6;\n    uVar5 = FUN_00169310(param_2,*(undefined4 *)((long)param_2 + 0x14));\n    if (*(long *)(lVar4 + 0x28) != 0) {\n      lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5,0x28,1\n                           ,1);\n      uVar2 = *(uint *)(lVar7 + 0x14);\n      uVar3 = *(undefined4 *)(lVar7 + 0x10);\n      if (uVar2 <= uVar1) {\n        uVar5 = gettext("bad section name offset for section %u: %u");\n        FUN_001bd150(lVar4,uVar5,param_3,uVar1);\n      }\n      if (*(long *)(lVar4 + 0x28) != 0) {\n        lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar3,\n                             uVar2,1,1);\n        pvVar8 = memchr((void *)((ulong)uVar1 + lVar7),0,(ulong)(uVar2 - uVar1));\n        if (pvVar8 == (void *)0x0) {\n          uVar5 = gettext("missing null terminator for name of section %u");\n          FUN_001bd150(lVar4,uVar5,param_3);\n        }\n        *param_1 = (long)(param_1 + 2);\n        FUN_001665c0(param_1,(void *)((ulong)uVar1 + lVar7),pvVar8);\n        return param_1;\n      }\n    }\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0017c650("../../gold/object.h",0x1e3,"input_file");\n}" (sized_type_specifier "long" long) (pointer_declarator "* FUN_001694a0(long *param_1,long *param_2,undefined4 param_3)" * (function_declarator "FUN_001694a0(long *param_1,long *param_2,undefined4 param_3)" identifier (parameter_list "(long *param_1,long *param_2,undefined4 param_3)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "long *param_2" (sized_type_specifier "long" long) (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined4 param_3" type_identifier identifier) )))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  undefined4 uVar3;\n  long lVar4;\n  undefined8 uVar5;\n  uint *puVar6;\n  long lVar7;\n  void *pvVar8;\n  \n  lVar4 = *param_2;\n  uVar5 = FUN_00169310(param_2,param_3);\n  if (*(long *)(lVar4 + 0x28) != 0) {\n    puVar6 = (uint *)FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5\n                                  ,0x28,1,1);\n    uVar1 = *puVar6;\n    uVar5 = FUN_00169310(param_2,*(undefined4 *)((long)param_2 + 0x14));\n    if (*(long *)(lVar4 + 0x28) != 0) {\n      lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5,0x28,1\n                           ,1);\n      uVar2 = *(uint *)(lVar7 + 0x14);\n      uVar3 = *(undefined4 *)(lVar7 + 0x10);\n      if (uVar2 <= uVar1) {\n        uVar5 = gettext("bad section name offset for section %u: %u");\n        FUN_001bd150(lVar4,uVar5,param_3,uVar1);\n      }\n      if (*(long *)(lVar4 + 0x28) != 0) {\n        lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar3,\n                             uVar2,1,1);\n        pvVar8 = memchr((void *)((ulong)uVar1 + lVar7),0,(ulong)(uVar2 - uVar1));\n        if (pvVar8 == (void *)0x0) {\n          uVar5 = gettext("missing null terminator for name of section %u");\n          FUN_001bd150(lVar4,uVar5,param_3);\n        }\n        *param_1 = (long)(param_1 + 2);\n        FUN_001665c0(param_1,(void *)((ulong)uVar1 + lVar7),pvVar8);\n        return param_1;\n      }\n    }\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0017c650("../../gold/object.h",0x1e3,"input_file");\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar5;" type_identifier identifier ;) (declaration "uint *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "long lVar7;" (sized_type_specifier "long" long) identifier ;) (declaration "void *pvVar8;" primitive_type (pointer_declarator "*pvVar8" * identifier) ;) (expression_statement "lVar4 = *param_2;" (assignment_expression "lVar4 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "uVar5 = FUN_00169310(param_2,param_3);" (assignment_expression "uVar5 = FUN_00169310(param_2,param_3)" identifier = (call_expression "FUN_00169310(param_2,param_3)" identifier (argument_list "(param_2,param_3)" ( identifier , identifier )))) ;) (if_statement "if (*(long *)(lVar4 + 0x28) != 0) {\n    puVar6 = (uint *)FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5\n                                  ,0x28,1,1);\n    uVar1 = *puVar6;\n    uVar5 = FUN_00169310(param_2,*(undefined4 *)((long)param_2 + 0x14));\n    if (*(long *)(lVar4 + 0x28) != 0) {\n      lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5,0x28,1\n                           ,1);\n      uVar2 = *(uint *)(lVar7 + 0x14);\n      uVar3 = *(undefined4 *)(lVar7 + 0x10);\n      if (uVar2 <= uVar1) {\n        uVar5 = gettext("bad section name offset for section %u: %u");\n        FUN_001bd150(lVar4,uVar5,param_3,uVar1);\n      }\n      if (*(long *)(lVar4 + 0x28) != 0) {\n        lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar3,\n                             uVar2,1,1);\n        pvVar8 = memchr((void *)((ulong)uVar1 + lVar7),0,(ulong)(uVar2 - uVar1));\n        if (pvVar8 == (void *)0x0) {\n          uVar5 = gettext("missing null terminator for name of section %u");\n          FUN_001bd150(lVar4,uVar5,param_3);\n        }\n        *param_1 = (long)(param_1 + 2);\n        FUN_001665c0(param_1,(void *)((ulong)uVar1 + lVar7),pvVar8);\n        return param_1;\n      }\n    }\n  }" if (parenthesized_expression "(*(long *)(lVar4 + 0x28) != 0)" ( (binary_expression "*(long *)(lVar4 + 0x28) != 0" (pointer_expression "*(long *)(lVar4 + 0x28)" * (cast_expression "(long *)(lVar4 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x28)" ( (binary_expression "lVar4 + 0x28" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    puVar6 = (uint *)FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5\n                                  ,0x28,1,1);\n    uVar1 = *puVar6;\n    uVar5 = FUN_00169310(param_2,*(undefined4 *)((long)param_2 + 0x14));\n    if (*(long *)(lVar4 + 0x28) != 0) {\n      lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5,0x28,1\n                           ,1);\n      uVar2 = *(uint *)(lVar7 + 0x14);\n      uVar3 = *(undefined4 *)(lVar7 + 0x10);\n      if (uVar2 <= uVar1) {\n        uVar5 = gettext("bad section name offset for section %u: %u");\n        FUN_001bd150(lVar4,uVar5,param_3,uVar1);\n      }\n      if (*(long *)(lVar4 + 0x28) != 0) {\n        lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar3,\n                             uVar2,1,1);\n        pvVar8 = memchr((void *)((ulong)uVar1 + lVar7),0,(ulong)(uVar2 - uVar1));\n        if (pvVar8 == (void *)0x0) {\n          uVar5 = gettext("missing null terminator for name of section %u");\n          FUN_001bd150(lVar4,uVar5,param_3);\n        }\n        *param_1 = (long)(param_1 + 2);\n        FUN_001665c0(param_1,(void *)((ulong)uVar1 + lVar7),pvVar8);\n        return param_1;\n      }\n    }\n  }" { (expression_statement "puVar6 = (uint *)FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5\n                                  ,0x28,1,1);" (assignment_expression "puVar6 = (uint *)FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5\n                                  ,0x28,1,1)" identifier = (cast_expression "(uint *)FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5\n                                  ,0x28,1,1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5\n                                  ,0x28,1,1)" identifier (argument_list "(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5\n                                  ,0x28,1,1)" ( (binary_expression "*(long *)(lVar4 + 0x28) + 0x28" (pointer_expression "*(long *)(lVar4 + 0x28)" * (cast_expression "(long *)(lVar4 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x28)" ( (binary_expression "lVar4 + 0x28" identifier + number_literal) )))) + number_literal) , (pointer_expression "*(undefined8 *)(lVar4 + 0x30)" * (cast_expression "(undefined8 *)(lVar4 + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x30)" ( (binary_expression "lVar4 + 0x30" identifier + number_literal) )))) , identifier , number_literal , number_literal , number_literal ))))) ;) (expression_statement "uVar1 = *puVar6;" (assignment_expression "uVar1 = *puVar6" identifier = (pointer_expression "*puVar6" * identifier)) ;) (expression_statement "uVar5 = FUN_00169310(param_2,*(undefined4 *)((long)param_2 + 0x14));" (assignment_expression "uVar5 = FUN_00169310(param_2,*(undefined4 *)((long)param_2 + 0x14))" identifier = (call_expression "FUN_00169310(param_2,*(undefined4 *)((long)param_2 + 0x14))" identifier (argument_list "(param_2,*(undefined4 *)((long)param_2 + 0x14))" ( identifier , (pointer_expression "*(undefined4 *)((long)param_2 + 0x14)" * (cast_expression "(undefined4 *)((long)param_2 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 + 0x14)" ( (binary_expression "(long)param_2 + 0x14" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) )))) ;) (if_statement "if (*(long *)(lVar4 + 0x28) != 0) {\n      lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5,0x28,1\n                           ,1);\n      uVar2 = *(uint *)(lVar7 + 0x14);\n      uVar3 = *(undefined4 *)(lVar7 + 0x10);\n      if (uVar2 <= uVar1) {\n        uVar5 = gettext("bad section name offset for section %u: %u");\n        FUN_001bd150(lVar4,uVar5,param_3,uVar1);\n      }\n      if (*(long *)(lVar4 + 0x28) != 0) {\n        lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar3,\n                             uVar2,1,1);\n        pvVar8 = memchr((void *)((ulong)uVar1 + lVar7),0,(ulong)(uVar2 - uVar1));\n        if (pvVar8 == (void *)0x0) {\n          uVar5 = gettext("missing null terminator for name of section %u");\n          FUN_001bd150(lVar4,uVar5,param_3);\n        }\n        *param_1 = (long)(param_1 + 2);\n        FUN_001665c0(param_1,(void *)((ulong)uVar1 + lVar7),pvVar8);\n        return param_1;\n      }\n    }" if (parenthesized_expression "(*(long *)(lVar4 + 0x28) != 0)" ( (binary_expression "*(long *)(lVar4 + 0x28) != 0" (pointer_expression "*(long *)(lVar4 + 0x28)" * (cast_expression "(long *)(lVar4 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x28)" ( (binary_expression "lVar4 + 0x28" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n      lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5,0x28,1\n                           ,1);\n      uVar2 = *(uint *)(lVar7 + 0x14);\n      uVar3 = *(undefined4 *)(lVar7 + 0x10);\n      if (uVar2 <= uVar1) {\n        uVar5 = gettext("bad section name offset for section %u: %u");\n        FUN_001bd150(lVar4,uVar5,param_3,uVar1);\n      }\n      if (*(long *)(lVar4 + 0x28) != 0) {\n        lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar3,\n                             uVar2,1,1);\n        pvVar8 = memchr((void *)((ulong)uVar1 + lVar7),0,(ulong)(uVar2 - uVar1));\n        if (pvVar8 == (void *)0x0) {\n          uVar5 = gettext("missing null terminator for name of section %u");\n          FUN_001bd150(lVar4,uVar5,param_3);\n        }\n        *param_1 = (long)(param_1 + 2);\n        FUN_001665c0(param_1,(void *)((ulong)uVar1 + lVar7),pvVar8);\n        return param_1;\n      }\n    }" { (expression_statement "lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5,0x28,1\n                           ,1);" (assignment_expression "lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5,0x28,1\n                           ,1)" identifier = (call_expression "FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5,0x28,1\n                           ,1)" identifier (argument_list "(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5,0x28,1\n                           ,1)" ( (binary_expression "*(long *)(lVar4 + 0x28) + 0x28" (pointer_expression "*(long *)(lVar4 + 0x28)" * (cast_expression "(long *)(lVar4 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x28)" ( (binary_expression "lVar4 + 0x28" identifier + number_literal) )))) + number_literal) , (pointer_expression "*(undefined8 *)(lVar4 + 0x30)" * (cast_expression "(undefined8 *)(lVar4 + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x30)" ( (binary_expression "lVar4 + 0x30" identifier + number_literal) )))) , identifier , number_literal , number_literal , number_literal )))) ;) (expression_statement "uVar2 = *(uint *)(lVar7 + 0x14);" (assignment_expression "uVar2 = *(uint *)(lVar7 + 0x14)" identifier = (pointer_expression "*(uint *)(lVar7 + 0x14)" * (cast_expression "(uint *)(lVar7 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x14)" ( (binary_expression "lVar7 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = *(undefined4 *)(lVar7 + 0x10);" (assignment_expression "uVar3 = *(undefined4 *)(lVar7 + 0x10)" identifier = (pointer_expression "*(undefined4 *)(lVar7 + 0x10)" * (cast_expression "(undefined4 *)(lVar7 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x10)" ( (binary_expression "lVar7 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if (uVar2 <= uVar1) {\n        uVar5 = gettext("bad section name offset for section %u: %u");\n        FUN_001bd150(lVar4,uVar5,param_3,uVar1);\n      }" if (parenthesized_expression "(uVar2 <= uVar1)" ( (binary_expression "uVar2 <= uVar1" identifier <= identifier) )) (compound_statement "{\n        uVar5 = gettext("bad section name offset for section %u: %u");\n        FUN_001bd150(lVar4,uVar5,param_3,uVar1);\n      }" { (expression_statement "uVar5 = gettext("bad section name offset for section %u: %u");" (assignment_expression "uVar5 = gettext("bad section name offset for section %u: %u")" identifier = (call_expression "gettext("bad section name offset for section %u: %u")" identifier (argument_list "("bad section name offset for section %u: %u")" ( (string_literal ""bad section name offset for section %u: %u"" " string_content ") )))) ;) (expression_statement "FUN_001bd150(lVar4,uVar5,param_3,uVar1);" (call_expression "FUN_001bd150(lVar4,uVar5,param_3,uVar1)" identifier (argument_list "(lVar4,uVar5,param_3,uVar1)" ( identifier , identifier , identifier , identifier ))) ;) })) (if_statement "if (*(long *)(lVar4 + 0x28) != 0) {\n        lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar3,\n                             uVar2,1,1);\n        pvVar8 = memchr((void *)((ulong)uVar1 + lVar7),0,(ulong)(uVar2 - uVar1));\n        if (pvVar8 == (void *)0x0) {\n          uVar5 = gettext("missing null terminator for name of section %u");\n          FUN_001bd150(lVar4,uVar5,param_3);\n        }\n        *param_1 = (long)(param_1 + 2);\n        FUN_001665c0(param_1,(void *)((ulong)uVar1 + lVar7),pvVar8);\n        return param_1;\n      }" if (parenthesized_expression "(*(long *)(lVar4 + 0x28) != 0)" ( (binary_expression "*(long *)(lVar4 + 0x28) != 0" (pointer_expression "*(long *)(lVar4 + 0x28)" * (cast_expression "(long *)(lVar4 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x28)" ( (binary_expression "lVar4 + 0x28" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n        lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar3,\n                             uVar2,1,1);\n        pvVar8 = memchr((void *)((ulong)uVar1 + lVar7),0,(ulong)(uVar2 - uVar1));\n        if (pvVar8 == (void *)0x0) {\n          uVar5 = gettext("missing null terminator for name of section %u");\n          FUN_001bd150(lVar4,uVar5,param_3);\n        }\n        *param_1 = (long)(param_1 + 2);\n        FUN_001665c0(param_1,(void *)((ulong)uVar1 + lVar7),pvVar8);\n        return param_1;\n      }" { (expression_statement "lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar3,\n                             uVar2,1,1);" (assignment_expression "lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar3,\n                             uVar2,1,1)" identifier = (call_expression "FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar3,\n                             uVar2,1,1)" identifier (argument_list "(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar3,\n                             uVar2,1,1)" ( (binary_expression "*(long *)(lVar4 + 0x28) + 0x28" (pointer_expression "*(long *)(lVar4 + 0x28)" * (cast_expression "(long *)(lVar4 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x28)" ( (binary_expression "lVar4 + 0x28" identifier + number_literal) )))) + number_literal) , (pointer_expression "*(undefined8 *)(lVar4 + 0x30)" * (cast_expression "(undefined8 *)(lVar4 + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x30)" ( (binary_expression "lVar4 + 0x30" identifier + number_literal) )))) , identifier , identifier , number_literal , number_literal )))) ;) (expression_statement "pvVar8 = memchr((void *)((ulong)uVar1 + lVar7),0,(ulong)(uVar2 - uVar1));" (assignment_expression "pvVar8 = memchr((void *)((ulong)uVar1 + lVar7),0,(ulong)(uVar2 - uVar1))" identifier = (call_expression "memchr((void *)((ulong)uVar1 + lVar7),0,(ulong)(uVar2 - uVar1))" identifier (argument_list "((void *)((ulong)uVar1 + lVar7),0,(ulong)(uVar2 - uVar1))" ( (cast_expression "(void *)((ulong)uVar1 + lVar7)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + lVar7)" ( (binary_expression "(ulong)uVar1 + lVar7" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + identifier) ))) , number_literal , (call_expression "(ulong)(uVar2 - uVar1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar2 - uVar1)" ( (binary_expression "uVar2 - uVar1" identifier - identifier) ))) )))) ;) (if_statement "if (pvVar8 == (void *)0x0) {\n          uVar5 = gettext("missing null terminator for name of section %u");\n          FUN_001bd150(lVar4,uVar5,param_3);\n        }" if (parenthesized_expression "(pvVar8 == (void *)0x0)" ( (binary_expression "pvVar8 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          uVar5 = gettext("missing null terminator for name of section %u");\n          FUN_001bd150(lVar4,uVar5,param_3);\n        }" { (expression_statement "uVar5 = gettext("missing null terminator for name of section %u");" (assignment_expression "uVar5 = gettext("missing null terminator for name of section %u")" identifier = (call_expression "gettext("missing null terminator for name of section %u")" identifier (argument_list "("missing null terminator for name of section %u")" ( (string_literal ""missing null terminator for name of section %u"" " string_content ") )))) ;) (expression_statement "FUN_001bd150(lVar4,uVar5,param_3);" (call_expression "FUN_001bd150(lVar4,uVar5,param_3)" identifier (argument_list "(lVar4,uVar5,param_3)" ( identifier , identifier , identifier ))) ;) })) (expression_statement "*param_1 = (long)(param_1 + 2);" (assignment_expression "*param_1 = (long)(param_1 + 2)" (pointer_expression "*param_1" * identifier) = (cast_expression "(long)(param_1 + 2)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) ;) (expression_statement "FUN_001665c0(param_1,(void *)((ulong)uVar1 + lVar7),pvVar8);" (call_expression "FUN_001665c0(param_1,(void *)((ulong)uVar1 + lVar7),pvVar8)" identifier (argument_list "(param_1,(void *)((ulong)uVar1 + lVar7),pvVar8)" ( identifier , (cast_expression "(void *)((ulong)uVar1 + lVar7)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + lVar7)" ( (binary_expression "(ulong)uVar1 + lVar7" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + identifier) ))) , identifier ))) ;) (return_statement "return param_1;" return identifier ;) })) })) })) comment (expression_statement "FUN_0017c650("../../gold/object.h",0x1e3,"input_file");" (call_expression "FUN_0017c650("../../gold/object.h",0x1e3,"input_file")" identifier (argument_list "("../../gold/object.h",0x1e3,"input_file")" ( (string_literal ""../../gold/object.h"" " string_content ") , number_literal , (string_literal ""input_file"" " string_content ") ))) ;) })))
(translation_unit "/* DWARF original prototype: string section_name(Elf_file<32,_false,_gold::Object> * this, uint\n   shndx) */\n\nstring * __thiscall\nelfcpp::Elf_file<32,_false,_gold::Object>::section_name\n          (string *__return_storage_ptr__,Elf_file<32,_false,_gold::Object> *this,uint shndx)\n\n{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  Object *this_00;\n  off_t oVar4;\n  uint *puVar5;\n  uchar *puVar6;\n  void *pvVar7;\n  char *pcVar8;\n  \n  this_00 = this->file_;\n  oVar4 = section_header_offset(this,shndx);\n  if (this_00->input_file_ != (Input_file *)0x0) {\n    puVar5 = (uint *)gold::File_read::get_view\n                               (&this_00->input_file_->file_,this_00->offset_,oVar4,0x28,true,true);\n    uVar1 = *puVar5;\n    oVar4 = section_header_offset(this,this->shstrndx_);\n    if (this_00->input_file_ != (Input_file *)0x0) {\n      puVar6 = gold::File_read::get_view\n                         (&this_00->input_file_->file_,this_00->offset_,oVar4,0x28,true,true);\n      uVar2 = *(uint *)(puVar6 + 0x14);\n      uVar3 = *(uint *)(puVar6 + 0x10);\n      if (uVar2 <= uVar1) {\n        pcVar8 = (char *)gettext("bad section name offset for section %u: %u");\n        gold::Object::error(this_00,pcVar8,(ulong)shndx,(ulong)uVar1);\n      }\n      if (this_00->input_file_ != (Input_file *)0x0) {\n        puVar6 = gold::File_read::get_view\n                           (&this_00->input_file_->file_,this_00->offset_,(ulong)uVar3,(ulong)uVar2,\n                            true,true);\n        pvVar7 = memchr(puVar6 + uVar1,0,(ulong)(uVar2 - uVar1));\n        if (pvVar7 == (void *)0x0) {\n          pcVar8 = (char *)gettext("missing null terminator for name of section %u");\n          gold::Object::error(this_00,pcVar8,(ulong)shndx);\n        }\n        (__return_storage_ptr__->_M_dataplus)._M_p = (pointer)&__return_storage_ptr__->field_2;\n        std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n        _M_construct<char_const*>(__return_storage_ptr__,puVar6 + uVar1,pvVar7);\n        return __return_storage_ptr__;\n      }\n    }\n  }\n                    /* WARNING: Subroutine does not return */\n  gold::do_gold_unreachable("../../gold/object.h",0x1e3,"input_file");\n}\n\n" comment (ERROR "string * __thiscall\nelfcpp::Elf_file<32,_false," (binary_expression "string * __thiscall\nelfcpp::Elf_file<32" (binary_expression "string * __thiscall" identifier * identifier) (ERROR "elfcpp::Elf_file" identifier : : identifier) < number_literal) , identifier ,) (labeled_statement "_gold::Object>::section_name\n          (string *__return_storage_ptr__,Elf_file<32,_false,_gold::Object> *this,uint shndx)" statement_identifier (ERROR "::Object>:" : : identifier > :) : (expression_statement "section_name\n          (string *__return_storage_ptr__,Elf_file<32,_false,_gold::Object> *this,uint shndx)" (call_expression "section_name\n          (string *__return_storage_ptr__,Elf_file<32,_false,_gold::Object> *this,uint shndx)" identifier (argument_list "(string *__return_storage_ptr__,Elf_file<32,_false,_gold::Object> *this,uint shndx)" ( (binary_expression "string *__return_storage_ptr__" identifier * identifier) , (binary_expression "Elf_file<32" identifier < number_literal) , identifier , (ERROR "_gold::" identifier : :) (binary_expression "Object> *this" identifier > (pointer_expression "*this" * identifier)) , (ERROR "uint" identifier) identifier ))) ;)) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  Object *this_00;\n  off_t oVar4;\n  uint *puVar5;\n  uchar *puVar6;\n  void *pvVar7;\n  char *pcVar8;\n  \n  this_00 = this->file_;\n  oVar4 = section_header_offset(this,shndx);\n  if (this_00->input_file_ != (Input_file *)0x0) {\n    puVar5 = (uint *)gold::File_read::get_view\n                               (&this_00->input_file_->file_,this_00->offset_,oVar4,0x28,true,true);\n    uVar1 = *puVar5;\n    oVar4 = section_header_offset(this,this->shstrndx_);\n    if (this_00->input_file_ != (Input_file *)0x0) {\n      puVar6 = gold::File_read::get_view\n                         (&this_00->input_file_->file_,this_00->offset_,oVar4,0x28,true,true);\n      uVar2 = *(uint *)(puVar6 + 0x14);\n      uVar3 = *(uint *)(puVar6 + 0x10);\n      if (uVar2 <= uVar1) {\n        pcVar8 = (char *)gettext("bad section name offset for section %u: %u");\n        gold::Object::error(this_00,pcVar8,(ulong)shndx,(ulong)uVar1);\n      }\n      if (this_00->input_file_ != (Input_file *)0x0) {\n        puVar6 = gold::File_read::get_view\n                           (&this_00->input_file_->file_,this_00->offset_,(ulong)uVar3,(ulong)uVar2,\n                            true,true);\n        pvVar7 = memchr(puVar6 + uVar1,0,(ulong)(uVar2 - uVar1));\n        if (pvVar7 == (void *)0x0) {\n          pcVar8 = (char *)gettext("missing null terminator for name of section %u");\n          gold::Object::error(this_00,pcVar8,(ulong)shndx);\n        }\n        (__return_storage_ptr__->_M_dataplus)._M_p = (pointer)&__return_storage_ptr__->field_2;\n        std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n        _M_construct<char_const*>(__return_storage_ptr__,puVar6 + uVar1,pvVar7);\n        return __return_storage_ptr__;\n      }\n    }\n  }\n                    /* WARNING: Subroutine does not return */\n  gold::do_gold_unreachable("../../gold/object.h",0x1e3,"input_file");\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "Object *this_00;" type_identifier (pointer_declarator "*this_00" * identifier) ;) (declaration "off_t oVar4;" type_identifier identifier ;) (declaration "uint *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "uchar *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "void *pvVar7;" primitive_type (pointer_declarator "*pvVar7" * identifier) ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (expression_statement "this_00 = this->file_;" (assignment_expression "this_00 = this->file_" identifier = (field_expression "this->file_" identifier -> field_identifier)) ;) (expression_statement "oVar4 = section_header_offset(this,shndx);" (assignment_expression "oVar4 = section_header_offset(this,shndx)" identifier = (call_expression "section_header_offset(this,shndx)" identifier (argument_list "(this,shndx)" ( identifier , identifier )))) ;) (if_statement "if (this_00->input_file_ != (Input_file *)0x0) {\n    puVar5 = (uint *)gold::File_read::get_view\n                               (&this_00->input_file_->file_,this_00->offset_,oVar4,0x28,true,true);\n    uVar1 = *puVar5;\n    oVar4 = section_header_offset(this,this->shstrndx_);\n    if (this_00->input_file_ != (Input_file *)0x0) {\n      puVar6 = gold::File_read::get_view\n                         (&this_00->input_file_->file_,this_00->offset_,oVar4,0x28,true,true);\n      uVar2 = *(uint *)(puVar6 + 0x14);\n      uVar3 = *(uint *)(puVar6 + 0x10);\n      if (uVar2 <= uVar1) {\n        pcVar8 = (char *)gettext("bad section name offset for section %u: %u");\n        gold::Object::error(this_00,pcVar8,(ulong)shndx,(ulong)uVar1);\n      }\n      if (this_00->input_file_ != (Input_file *)0x0) {\n        puVar6 = gold::File_read::get_view\n                           (&this_00->input_file_->file_,this_00->offset_,(ulong)uVar3,(ulong)uVar2,\n                            true,true);\n        pvVar7 = memchr(puVar6 + uVar1,0,(ulong)(uVar2 - uVar1));\n        if (pvVar7 == (void *)0x0) {\n          pcVar8 = (char *)gettext("missing null terminator for name of section %u");\n          gold::Object::error(this_00,pcVar8,(ulong)shndx);\n        }\n        (__return_storage_ptr__->_M_dataplus)._M_p = (pointer)&__return_storage_ptr__->field_2;\n        std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n        _M_construct<char_const*>(__return_storage_ptr__,puVar6 + uVar1,pvVar7);\n        return __return_storage_ptr__;\n      }\n    }\n  }" if (parenthesized_expression "(this_00->input_file_ != (Input_file *)0x0)" ( (binary_expression "this_00->input_file_ != (Input_file *)0x0" (field_expression "this_00->input_file_" identifier -> field_identifier) != (cast_expression "(Input_file *)0x0" ( (type_descriptor "Input_file *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    puVar5 = (uint *)gold::File_read::get_view\n                               (&this_00->input_file_->file_,this_00->offset_,oVar4,0x28,true,true);\n    uVar1 = *puVar5;\n    oVar4 = section_header_offset(this,this->shstrndx_);\n    if (this_00->input_file_ != (Input_file *)0x0) {\n      puVar6 = gold::File_read::get_view\n                         (&this_00->input_file_->file_,this_00->offset_,oVar4,0x28,true,true);\n      uVar2 = *(uint *)(puVar6 + 0x14);\n      uVar3 = *(uint *)(puVar6 + 0x10);\n      if (uVar2 <= uVar1) {\n        pcVar8 = (char *)gettext("bad section name offset for section %u: %u");\n        gold::Object::error(this_00,pcVar8,(ulong)shndx,(ulong)uVar1);\n      }\n      if (this_00->input_file_ != (Input_file *)0x0) {\n        puVar6 = gold::File_read::get_view\n                           (&this_00->input_file_->file_,this_00->offset_,(ulong)uVar3,(ulong)uVar2,\n                            true,true);\n        pvVar7 = memchr(puVar6 + uVar1,0,(ulong)(uVar2 - uVar1));\n        if (pvVar7 == (void *)0x0) {\n          pcVar8 = (char *)gettext("missing null terminator for name of section %u");\n          gold::Object::error(this_00,pcVar8,(ulong)shndx);\n        }\n        (__return_storage_ptr__->_M_dataplus)._M_p = (pointer)&__return_storage_ptr__->field_2;\n        std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n        _M_construct<char_const*>(__return_storage_ptr__,puVar6 + uVar1,pvVar7);\n        return __return_storage_ptr__;\n      }\n    }\n  }" { (ERROR "puVar5 = (uint *)gold::" (assignment_expression "puVar5 = (uint *)gold" identifier = (cast_expression "(uint *)gold" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) : :) (labeled_statement "File_read::get_view\n                               (&this_00->input_file_->file_,this_00->offset_,oVar4,0x28,true,true);" statement_identifier : (ERROR ":" :) (expression_statement "get_view\n                               (&this_00->input_file_->file_,this_00->offset_,oVar4,0x28,true,true);" (call_expression "get_view\n                               (&this_00->input_file_->file_,this_00->offset_,oVar4,0x28,true,true)" identifier (argument_list "(&this_00->input_file_->file_,this_00->offset_,oVar4,0x28,true,true)" ( (pointer_expression "&this_00->input_file_->file_" & (field_expression "this_00->input_file_->file_" (field_expression "this_00->input_file_" identifier -> field_identifier) -> field_identifier)) , (field_expression "this_00->offset_" identifier -> field_identifier) , identifier , number_literal , true , true ))) ;)) (expression_statement "uVar1 = *puVar5;" (assignment_expression "uVar1 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "oVar4 = section_header_offset(this,this->shstrndx_);" (assignment_expression "oVar4 = section_header_offset(this,this->shstrndx_)" identifier = (call_expression "section_header_offset(this,this->shstrndx_)" identifier (argument_list "(this,this->shstrndx_)" ( identifier , (field_expression "this->shstrndx_" identifier -> field_identifier) )))) ;) (if_statement "if (this_00->input_file_ != (Input_file *)0x0) {\n      puVar6 = gold::File_read::get_view\n                         (&this_00->input_file_->file_,this_00->offset_,oVar4,0x28,true,true);\n      uVar2 = *(uint *)(puVar6 + 0x14);\n      uVar3 = *(uint *)(puVar6 + 0x10);\n      if (uVar2 <= uVar1) {\n        pcVar8 = (char *)gettext("bad section name offset for section %u: %u");\n        gold::Object::error(this_00,pcVar8,(ulong)shndx,(ulong)uVar1);\n      }\n      if (this_00->input_file_ != (Input_file *)0x0) {\n        puVar6 = gold::File_read::get_view\n                           (&this_00->input_file_->file_,this_00->offset_,(ulong)uVar3,(ulong)uVar2,\n                            true,true);\n        pvVar7 = memchr(puVar6 + uVar1,0,(ulong)(uVar2 - uVar1));\n        if (pvVar7 == (void *)0x0) {\n          pcVar8 = (char *)gettext("missing null terminator for name of section %u");\n          gold::Object::error(this_00,pcVar8,(ulong)shndx);\n        }\n        (__return_storage_ptr__->_M_dataplus)._M_p = (pointer)&__return_storage_ptr__->field_2;\n        std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n        _M_construct<char_const*>(__return_storage_ptr__,puVar6 + uVar1,pvVar7);\n        return __return_storage_ptr__;\n      }\n    }" if (parenthesized_expression "(this_00->input_file_ != (Input_file *)0x0)" ( (binary_expression "this_00->input_file_ != (Input_file *)0x0" (field_expression "this_00->input_file_" identifier -> field_identifier) != (cast_expression "(Input_file *)0x0" ( (type_descriptor "Input_file *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      puVar6 = gold::File_read::get_view\n                         (&this_00->input_file_->file_,this_00->offset_,oVar4,0x28,true,true);\n      uVar2 = *(uint *)(puVar6 + 0x14);\n      uVar3 = *(uint *)(puVar6 + 0x10);\n      if (uVar2 <= uVar1) {\n        pcVar8 = (char *)gettext("bad section name offset for section %u: %u");\n        gold::Object::error(this_00,pcVar8,(ulong)shndx,(ulong)uVar1);\n      }\n      if (this_00->input_file_ != (Input_file *)0x0) {\n        puVar6 = gold::File_read::get_view\n                           (&this_00->input_file_->file_,this_00->offset_,(ulong)uVar3,(ulong)uVar2,\n                            true,true);\n        pvVar7 = memchr(puVar6 + uVar1,0,(ulong)(uVar2 - uVar1));\n        if (pvVar7 == (void *)0x0) {\n          pcVar8 = (char *)gettext("missing null terminator for name of section %u");\n          gold::Object::error(this_00,pcVar8,(ulong)shndx);\n        }\n        (__return_storage_ptr__->_M_dataplus)._M_p = (pointer)&__return_storage_ptr__->field_2;\n        std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n        _M_construct<char_const*>(__return_storage_ptr__,puVar6 + uVar1,pvVar7);\n        return __return_storage_ptr__;\n      }\n    }" { (ERROR "puVar6 = gold::" (assignment_expression "puVar6 = gold" identifier = identifier) : :) (labeled_statement "File_read::get_view\n                         (&this_00->input_file_->file_,this_00->offset_,oVar4,0x28,true,true);" statement_identifier : (ERROR ":" :) (expression_statement "get_view\n                         (&this_00->input_file_->file_,this_00->offset_,oVar4,0x28,true,true);" (call_expression "get_view\n                         (&this_00->input_file_->file_,this_00->offset_,oVar4,0x28,true,true)" identifier (argument_list "(&this_00->input_file_->file_,this_00->offset_,oVar4,0x28,true,true)" ( (pointer_expression "&this_00->input_file_->file_" & (field_expression "this_00->input_file_->file_" (field_expression "this_00->input_file_" identifier -> field_identifier) -> field_identifier)) , (field_expression "this_00->offset_" identifier -> field_identifier) , identifier , number_literal , true , true ))) ;)) (expression_statement "uVar2 = *(uint *)(puVar6 + 0x14);" (assignment_expression "uVar2 = *(uint *)(puVar6 + 0x14)" identifier = (pointer_expression "*(uint *)(puVar6 + 0x14)" * (cast_expression "(uint *)(puVar6 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 0x14)" ( (binary_expression "puVar6 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = *(uint *)(puVar6 + 0x10);" (assignment_expression "uVar3 = *(uint *)(puVar6 + 0x10)" identifier = (pointer_expression "*(uint *)(puVar6 + 0x10)" * (cast_expression "(uint *)(puVar6 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 0x10)" ( (binary_expression "puVar6 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if (uVar2 <= uVar1) {\n        pcVar8 = (char *)gettext("bad section name offset for section %u: %u");\n        gold::Object::error(this_00,pcVar8,(ulong)shndx,(ulong)uVar1);\n      }" if (parenthesized_expression "(uVar2 <= uVar1)" ( (binary_expression "uVar2 <= uVar1" identifier <= identifier) )) (compound_statement "{\n        pcVar8 = (char *)gettext("bad section name offset for section %u: %u");\n        gold::Object::error(this_00,pcVar8,(ulong)shndx,(ulong)uVar1);\n      }" { (expression_statement "pcVar8 = (char *)gettext("bad section name offset for section %u: %u");" (assignment_expression "pcVar8 = (char *)gettext("bad section name offset for section %u: %u")" identifier = (cast_expression "(char *)gettext("bad section name offset for section %u: %u")" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext("bad section name offset for section %u: %u")" identifier (argument_list "("bad section name offset for section %u: %u")" ( (string_literal ""bad section name offset for section %u: %u"" " string_content ") ))))) ;) (labeled_statement "gold::Object::error(this_00,pcVar8,(ulong)shndx,(ulong)uVar1);" statement_identifier : (ERROR ":" :) (labeled_statement "Object::error(this_00,pcVar8,(ulong)shndx,(ulong)uVar1);" statement_identifier : (ERROR ":" :) (expression_statement "error(this_00,pcVar8,(ulong)shndx,(ulong)uVar1);" (call_expression "error(this_00,pcVar8,(ulong)shndx,(ulong)uVar1)" identifier (argument_list "(this_00,pcVar8,(ulong)shndx,(ulong)uVar1)" ( identifier , identifier , (cast_expression "(ulong)shndx" ( (type_descriptor "ulong" type_identifier) ) identifier) , (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) ))) ;))) })) (if_statement "if (this_00->input_file_ != (Input_file *)0x0) {\n        puVar6 = gold::File_read::get_view\n                           (&this_00->input_file_->file_,this_00->offset_,(ulong)uVar3,(ulong)uVar2,\n                            true,true);\n        pvVar7 = memchr(puVar6 + uVar1,0,(ulong)(uVar2 - uVar1));\n        if (pvVar7 == (void *)0x0) {\n          pcVar8 = (char *)gettext("missing null terminator for name of section %u");\n          gold::Object::error(this_00,pcVar8,(ulong)shndx);\n        }\n        (__return_storage_ptr__->_M_dataplus)._M_p = (pointer)&__return_storage_ptr__->field_2;\n        std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n        _M_construct<char_const*>(__return_storage_ptr__,puVar6 + uVar1,pvVar7);\n        return __return_storage_ptr__;\n      }" if (parenthesized_expression "(this_00->input_file_ != (Input_file *)0x0)" ( (binary_expression "this_00->input_file_ != (Input_file *)0x0" (field_expression "this_00->input_file_" identifier -> field_identifier) != (cast_expression "(Input_file *)0x0" ( (type_descriptor "Input_file *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        puVar6 = gold::File_read::get_view\n                           (&this_00->input_file_->file_,this_00->offset_,(ulong)uVar3,(ulong)uVar2,\n                            true,true);\n        pvVar7 = memchr(puVar6 + uVar1,0,(ulong)(uVar2 - uVar1));\n        if (pvVar7 == (void *)0x0) {\n          pcVar8 = (char *)gettext("missing null terminator for name of section %u");\n          gold::Object::error(this_00,pcVar8,(ulong)shndx);\n        }\n        (__return_storage_ptr__->_M_dataplus)._M_p = (pointer)&__return_storage_ptr__->field_2;\n        std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n        _M_construct<char_const*>(__return_storage_ptr__,puVar6 + uVar1,pvVar7);\n        return __return_storage_ptr__;\n      }" { (ERROR "puVar6 = gold::" (assignment_expression "puVar6 = gold" identifier = identifier) : :) (labeled_statement "File_read::get_view\n                           (&this_00->input_file_->file_,this_00->offset_,(ulong)uVar3,(ulong)uVar2,\n                            true,true);" statement_identifier : (ERROR ":" :) (expression_statement "get_view\n                           (&this_00->input_file_->file_,this_00->offset_,(ulong)uVar3,(ulong)uVar2,\n                            true,true);" (call_expression "get_view\n                           (&this_00->input_file_->file_,this_00->offset_,(ulong)uVar3,(ulong)uVar2,\n                            true,true)" identifier (argument_list "(&this_00->input_file_->file_,this_00->offset_,(ulong)uVar3,(ulong)uVar2,\n                            true,true)" ( (pointer_expression "&this_00->input_file_->file_" & (field_expression "this_00->input_file_->file_" (field_expression "this_00->input_file_" identifier -> field_identifier) -> field_identifier)) , (field_expression "this_00->offset_" identifier -> field_identifier) , (cast_expression "(ulong)uVar3" ( (type_descriptor "ulong" type_identifier) ) identifier) , (cast_expression "(ulong)uVar2" ( (type_descriptor "ulong" type_identifier) ) identifier) , true , true ))) ;)) (expression_statement "pvVar7 = memchr(puVar6 + uVar1,0,(ulong)(uVar2 - uVar1));" (assignment_expression "pvVar7 = memchr(puVar6 + uVar1,0,(ulong)(uVar2 - uVar1))" identifier = (call_expression "memchr(puVar6 + uVar1,0,(ulong)(uVar2 - uVar1))" identifier (argument_list "(puVar6 + uVar1,0,(ulong)(uVar2 - uVar1))" ( (binary_expression "puVar6 + uVar1" identifier + identifier) , number_literal , (call_expression "(ulong)(uVar2 - uVar1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar2 - uVar1)" ( (binary_expression "uVar2 - uVar1" identifier - identifier) ))) )))) ;) (if_statement "if (pvVar7 == (void *)0x0) {\n          pcVar8 = (char *)gettext("missing null terminator for name of section %u");\n          gold::Object::error(this_00,pcVar8,(ulong)shndx);\n        }" if (parenthesized_expression "(pvVar7 == (void *)0x0)" ( (binary_expression "pvVar7 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          pcVar8 = (char *)gettext("missing null terminator for name of section %u");\n          gold::Object::error(this_00,pcVar8,(ulong)shndx);\n        }" { (expression_statement "pcVar8 = (char *)gettext("missing null terminator for name of section %u");" (assignment_expression "pcVar8 = (char *)gettext("missing null terminator for name of section %u")" identifier = (cast_expression "(char *)gettext("missing null terminator for name of section %u")" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext("missing null terminator for name of section %u")" identifier (argument_list "("missing null terminator for name of section %u")" ( (string_literal ""missing null terminator for name of section %u"" " string_content ") ))))) ;) (labeled_statement "gold::Object::error(this_00,pcVar8,(ulong)shndx);" statement_identifier : (ERROR ":" :) (labeled_statement "Object::error(this_00,pcVar8,(ulong)shndx);" statement_identifier : (ERROR ":" :) (expression_statement "error(this_00,pcVar8,(ulong)shndx);" (call_expression "error(this_00,pcVar8,(ulong)shndx)" identifier (argument_list "(this_00,pcVar8,(ulong)shndx)" ( identifier , identifier , (cast_expression "(ulong)shndx" ( (type_descriptor "ulong" type_identifier) ) identifier) ))) ;))) })) (expression_statement "(__return_storage_ptr__->_M_dataplus)._M_p = (pointer)&__return_storage_ptr__->field_2;" (assignment_expression "(__return_storage_ptr__->_M_dataplus)._M_p = (pointer)&__return_storage_ptr__->field_2" (field_expression "(__return_storage_ptr__->_M_dataplus)._M_p" (parenthesized_expression "(__return_storage_ptr__->_M_dataplus)" ( (field_expression "__return_storage_ptr__->_M_dataplus" identifier -> field_identifier) )) . field_identifier) = (binary_expression "(pointer)&__return_storage_ptr__->field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "__return_storage_ptr__->field_2" identifier -> field_identifier))) ;) (labeled_statement "std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n        _M_construct<char_const*>(__return_storage_ptr__,puVar6 + uVar1,pvVar7);" statement_identifier (ERROR "::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>:" : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > :) : (expression_statement "_M_construct<char_const*>(__return_storage_ptr__,puVar6 + uVar1,pvVar7);" (binary_expression "_M_construct<char_const*>(__return_storage_ptr__,puVar6 + uVar1,pvVar7)" (binary_expression "_M_construct<char_const" identifier < identifier) (ERROR "*" *) > (parenthesized_expression "(__return_storage_ptr__,puVar6 + uVar1,pvVar7)" ( (comma_expression "__return_storage_ptr__,puVar6 + uVar1,pvVar7" identifier , (comma_expression "puVar6 + uVar1,pvVar7" (binary_expression "puVar6 + uVar1" identifier + identifier) , identifier)) ))) ;)) (return_statement "return __return_storage_ptr__;" return identifier ;) })) })) })) comment (labeled_statement "gold::do_gold_unreachable("../../gold/object.h",0x1e3,"input_file");" statement_identifier : (ERROR ":" :) (expression_statement "do_gold_unreachable("../../gold/object.h",0x1e3,"input_file");" (call_expression "do_gold_unreachable("../../gold/object.h",0x1e3,"input_file")" identifier (argument_list "("../../gold/object.h",0x1e3,"input_file")" ( (string_literal ""../../gold/object.h"" " string_content ") , number_literal , (string_literal ""input_file"" " string_content ") ))) ;)) }))
(translation_unit "long * FUN_001694a0(long *param_1,long *param_2,undefined4 param_3)\n\n{\n  uint uVar1;\n  uint uVar2;\n  undefined4 uVar3;\n  long lVar4;\n  undefined8 uVar5;\n  uint *puVar6;\n  long lVar7;\n  void *pvVar8;\n  \n  lVar4 = *param_2;\n  uVar5 = FUN_00169310(param_2,param_3);\n  if (*(long *)(lVar4 + 0x28) != 0) {\n    puVar6 = (uint *)FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5\n                                  ,0x28,1,1);\n    uVar1 = *puVar6;\n    uVar5 = FUN_00169310(param_2,*(undefined4 *)((long)param_2 + 0x14));\n    if (*(long *)(lVar4 + 0x28) != 0) {\n      lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5,0x28,1\n                           ,1);\n      uVar2 = *(uint *)(lVar7 + 0x14);\n      uVar3 = *(undefined4 *)(lVar7 + 0x10);\n      if (uVar2 <= uVar1) {\n        uVar5 = gettext("bad section name offset for section %u: %u");\n        FUN_001bd150(lVar4,uVar5,param_3,uVar1);\n      }\n      if (*(long *)(lVar4 + 0x28) != 0) {\n        lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar3,\n                             uVar2,1,1);\n        pvVar8 = memchr((void *)((ulong)uVar1 + lVar7),0,(ulong)(uVar2 - uVar1));\n        if (pvVar8 == (void *)0x0) {\n          uVar5 = gettext("missing null terminator for name of section %u");\n          FUN_001bd150(lVar4,uVar5,param_3);\n        }\n        *param_1 = (long)(param_1 + 2);\n        FUN_001665c0(param_1,(void *)((ulong)uVar1 + lVar7),pvVar8);\n        return param_1;\n      }\n    }\n  }\n                    \n  FUN_0017c650("../../gold/object.h",0x1e3,"input_file");\n}\n\n" (function_definition "long * FUN_001694a0(long *param_1,long *param_2,undefined4 param_3)\n\n{\n  uint uVar1;\n  uint uVar2;\n  undefined4 uVar3;\n  long lVar4;\n  undefined8 uVar5;\n  uint *puVar6;\n  long lVar7;\n  void *pvVar8;\n  \n  lVar4 = *param_2;\n  uVar5 = FUN_00169310(param_2,param_3);\n  if (*(long *)(lVar4 + 0x28) != 0) {\n    puVar6 = (uint *)FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5\n                                  ,0x28,1,1);\n    uVar1 = *puVar6;\n    uVar5 = FUN_00169310(param_2,*(undefined4 *)((long)param_2 + 0x14));\n    if (*(long *)(lVar4 + 0x28) != 0) {\n      lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5,0x28,1\n                           ,1);\n      uVar2 = *(uint *)(lVar7 + 0x14);\n      uVar3 = *(undefined4 *)(lVar7 + 0x10);\n      if (uVar2 <= uVar1) {\n        uVar5 = gettext("bad section name offset for section %u: %u");\n        FUN_001bd150(lVar4,uVar5,param_3,uVar1);\n      }\n      if (*(long *)(lVar4 + 0x28) != 0) {\n        lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar3,\n                             uVar2,1,1);\n        pvVar8 = memchr((void *)((ulong)uVar1 + lVar7),0,(ulong)(uVar2 - uVar1));\n        if (pvVar8 == (void *)0x0) {\n          uVar5 = gettext("missing null terminator for name of section %u");\n          FUN_001bd150(lVar4,uVar5,param_3);\n        }\n        *param_1 = (long)(param_1 + 2);\n        FUN_001665c0(param_1,(void *)((ulong)uVar1 + lVar7),pvVar8);\n        return param_1;\n      }\n    }\n  }\n                    \n  FUN_0017c650("../../gold/object.h",0x1e3,"input_file");\n}" (sized_type_specifier "long" long) (pointer_declarator "* FUN_001694a0(long *param_1,long *param_2,undefined4 param_3)" * (function_declarator "FUN_001694a0(long *param_1,long *param_2,undefined4 param_3)" identifier (parameter_list "(long *param_1,long *param_2,undefined4 param_3)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "long *param_2" (sized_type_specifier "long" long) (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined4 param_3" type_identifier identifier) )))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  undefined4 uVar3;\n  long lVar4;\n  undefined8 uVar5;\n  uint *puVar6;\n  long lVar7;\n  void *pvVar8;\n  \n  lVar4 = *param_2;\n  uVar5 = FUN_00169310(param_2,param_3);\n  if (*(long *)(lVar4 + 0x28) != 0) {\n    puVar6 = (uint *)FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5\n                                  ,0x28,1,1);\n    uVar1 = *puVar6;\n    uVar5 = FUN_00169310(param_2,*(undefined4 *)((long)param_2 + 0x14));\n    if (*(long *)(lVar4 + 0x28) != 0) {\n      lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5,0x28,1\n                           ,1);\n      uVar2 = *(uint *)(lVar7 + 0x14);\n      uVar3 = *(undefined4 *)(lVar7 + 0x10);\n      if (uVar2 <= uVar1) {\n        uVar5 = gettext("bad section name offset for section %u: %u");\n        FUN_001bd150(lVar4,uVar5,param_3,uVar1);\n      }\n      if (*(long *)(lVar4 + 0x28) != 0) {\n        lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar3,\n                             uVar2,1,1);\n        pvVar8 = memchr((void *)((ulong)uVar1 + lVar7),0,(ulong)(uVar2 - uVar1));\n        if (pvVar8 == (void *)0x0) {\n          uVar5 = gettext("missing null terminator for name of section %u");\n          FUN_001bd150(lVar4,uVar5,param_3);\n        }\n        *param_1 = (long)(param_1 + 2);\n        FUN_001665c0(param_1,(void *)((ulong)uVar1 + lVar7),pvVar8);\n        return param_1;\n      }\n    }\n  }\n                    \n  FUN_0017c650("../../gold/object.h",0x1e3,"input_file");\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar5;" type_identifier identifier ;) (declaration "uint *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "long lVar7;" (sized_type_specifier "long" long) identifier ;) (declaration "void *pvVar8;" primitive_type (pointer_declarator "*pvVar8" * identifier) ;) (expression_statement "lVar4 = *param_2;" (assignment_expression "lVar4 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "uVar5 = FUN_00169310(param_2,param_3);" (assignment_expression "uVar5 = FUN_00169310(param_2,param_3)" identifier = (call_expression "FUN_00169310(param_2,param_3)" identifier (argument_list "(param_2,param_3)" ( identifier , identifier )))) ;) (if_statement "if (*(long *)(lVar4 + 0x28) != 0) {\n    puVar6 = (uint *)FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5\n                                  ,0x28,1,1);\n    uVar1 = *puVar6;\n    uVar5 = FUN_00169310(param_2,*(undefined4 *)((long)param_2 + 0x14));\n    if (*(long *)(lVar4 + 0x28) != 0) {\n      lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5,0x28,1\n                           ,1);\n      uVar2 = *(uint *)(lVar7 + 0x14);\n      uVar3 = *(undefined4 *)(lVar7 + 0x10);\n      if (uVar2 <= uVar1) {\n        uVar5 = gettext("bad section name offset for section %u: %u");\n        FUN_001bd150(lVar4,uVar5,param_3,uVar1);\n      }\n      if (*(long *)(lVar4 + 0x28) != 0) {\n        lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar3,\n                             uVar2,1,1);\n        pvVar8 = memchr((void *)((ulong)uVar1 + lVar7),0,(ulong)(uVar2 - uVar1));\n        if (pvVar8 == (void *)0x0) {\n          uVar5 = gettext("missing null terminator for name of section %u");\n          FUN_001bd150(lVar4,uVar5,param_3);\n        }\n        *param_1 = (long)(param_1 + 2);\n        FUN_001665c0(param_1,(void *)((ulong)uVar1 + lVar7),pvVar8);\n        return param_1;\n      }\n    }\n  }" if (parenthesized_expression "(*(long *)(lVar4 + 0x28) != 0)" ( (binary_expression "*(long *)(lVar4 + 0x28) != 0" (pointer_expression "*(long *)(lVar4 + 0x28)" * (cast_expression "(long *)(lVar4 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x28)" ( (binary_expression "lVar4 + 0x28" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    puVar6 = (uint *)FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5\n                                  ,0x28,1,1);\n    uVar1 = *puVar6;\n    uVar5 = FUN_00169310(param_2,*(undefined4 *)((long)param_2 + 0x14));\n    if (*(long *)(lVar4 + 0x28) != 0) {\n      lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5,0x28,1\n                           ,1);\n      uVar2 = *(uint *)(lVar7 + 0x14);\n      uVar3 = *(undefined4 *)(lVar7 + 0x10);\n      if (uVar2 <= uVar1) {\n        uVar5 = gettext("bad section name offset for section %u: %u");\n        FUN_001bd150(lVar4,uVar5,param_3,uVar1);\n      }\n      if (*(long *)(lVar4 + 0x28) != 0) {\n        lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar3,\n                             uVar2,1,1);\n        pvVar8 = memchr((void *)((ulong)uVar1 + lVar7),0,(ulong)(uVar2 - uVar1));\n        if (pvVar8 == (void *)0x0) {\n          uVar5 = gettext("missing null terminator for name of section %u");\n          FUN_001bd150(lVar4,uVar5,param_3);\n        }\n        *param_1 = (long)(param_1 + 2);\n        FUN_001665c0(param_1,(void *)((ulong)uVar1 + lVar7),pvVar8);\n        return param_1;\n      }\n    }\n  }" { (expression_statement "puVar6 = (uint *)FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5\n                                  ,0x28,1,1);" (assignment_expression "puVar6 = (uint *)FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5\n                                  ,0x28,1,1)" identifier = (cast_expression "(uint *)FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5\n                                  ,0x28,1,1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5\n                                  ,0x28,1,1)" identifier (argument_list "(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5\n                                  ,0x28,1,1)" ( (binary_expression "*(long *)(lVar4 + 0x28) + 0x28" (pointer_expression "*(long *)(lVar4 + 0x28)" * (cast_expression "(long *)(lVar4 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x28)" ( (binary_expression "lVar4 + 0x28" identifier + number_literal) )))) + number_literal) , (pointer_expression "*(undefined8 *)(lVar4 + 0x30)" * (cast_expression "(undefined8 *)(lVar4 + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x30)" ( (binary_expression "lVar4 + 0x30" identifier + number_literal) )))) , identifier , number_literal , number_literal , number_literal ))))) ;) (expression_statement "uVar1 = *puVar6;" (assignment_expression "uVar1 = *puVar6" identifier = (pointer_expression "*puVar6" * identifier)) ;) (expression_statement "uVar5 = FUN_00169310(param_2,*(undefined4 *)((long)param_2 + 0x14));" (assignment_expression "uVar5 = FUN_00169310(param_2,*(undefined4 *)((long)param_2 + 0x14))" identifier = (call_expression "FUN_00169310(param_2,*(undefined4 *)((long)param_2 + 0x14))" identifier (argument_list "(param_2,*(undefined4 *)((long)param_2 + 0x14))" ( identifier , (pointer_expression "*(undefined4 *)((long)param_2 + 0x14)" * (cast_expression "(undefined4 *)((long)param_2 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 + 0x14)" ( (binary_expression "(long)param_2 + 0x14" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) )))) ;) (if_statement "if (*(long *)(lVar4 + 0x28) != 0) {\n      lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5,0x28,1\n                           ,1);\n      uVar2 = *(uint *)(lVar7 + 0x14);\n      uVar3 = *(undefined4 *)(lVar7 + 0x10);\n      if (uVar2 <= uVar1) {\n        uVar5 = gettext("bad section name offset for section %u: %u");\n        FUN_001bd150(lVar4,uVar5,param_3,uVar1);\n      }\n      if (*(long *)(lVar4 + 0x28) != 0) {\n        lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar3,\n                             uVar2,1,1);\n        pvVar8 = memchr((void *)((ulong)uVar1 + lVar7),0,(ulong)(uVar2 - uVar1));\n        if (pvVar8 == (void *)0x0) {\n          uVar5 = gettext("missing null terminator for name of section %u");\n          FUN_001bd150(lVar4,uVar5,param_3);\n        }\n        *param_1 = (long)(param_1 + 2);\n        FUN_001665c0(param_1,(void *)((ulong)uVar1 + lVar7),pvVar8);\n        return param_1;\n      }\n    }" if (parenthesized_expression "(*(long *)(lVar4 + 0x28) != 0)" ( (binary_expression "*(long *)(lVar4 + 0x28) != 0" (pointer_expression "*(long *)(lVar4 + 0x28)" * (cast_expression "(long *)(lVar4 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x28)" ( (binary_expression "lVar4 + 0x28" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n      lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5,0x28,1\n                           ,1);\n      uVar2 = *(uint *)(lVar7 + 0x14);\n      uVar3 = *(undefined4 *)(lVar7 + 0x10);\n      if (uVar2 <= uVar1) {\n        uVar5 = gettext("bad section name offset for section %u: %u");\n        FUN_001bd150(lVar4,uVar5,param_3,uVar1);\n      }\n      if (*(long *)(lVar4 + 0x28) != 0) {\n        lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar3,\n                             uVar2,1,1);\n        pvVar8 = memchr((void *)((ulong)uVar1 + lVar7),0,(ulong)(uVar2 - uVar1));\n        if (pvVar8 == (void *)0x0) {\n          uVar5 = gettext("missing null terminator for name of section %u");\n          FUN_001bd150(lVar4,uVar5,param_3);\n        }\n        *param_1 = (long)(param_1 + 2);\n        FUN_001665c0(param_1,(void *)((ulong)uVar1 + lVar7),pvVar8);\n        return param_1;\n      }\n    }" { (expression_statement "lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5,0x28,1\n                           ,1);" (assignment_expression "lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5,0x28,1\n                           ,1)" identifier = (call_expression "FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5,0x28,1\n                           ,1)" identifier (argument_list "(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5,0x28,1\n                           ,1)" ( (binary_expression "*(long *)(lVar4 + 0x28) + 0x28" (pointer_expression "*(long *)(lVar4 + 0x28)" * (cast_expression "(long *)(lVar4 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x28)" ( (binary_expression "lVar4 + 0x28" identifier + number_literal) )))) + number_literal) , (pointer_expression "*(undefined8 *)(lVar4 + 0x30)" * (cast_expression "(undefined8 *)(lVar4 + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x30)" ( (binary_expression "lVar4 + 0x30" identifier + number_literal) )))) , identifier , number_literal , number_literal , number_literal )))) ;) (expression_statement "uVar2 = *(uint *)(lVar7 + 0x14);" (assignment_expression "uVar2 = *(uint *)(lVar7 + 0x14)" identifier = (pointer_expression "*(uint *)(lVar7 + 0x14)" * (cast_expression "(uint *)(lVar7 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x14)" ( (binary_expression "lVar7 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = *(undefined4 *)(lVar7 + 0x10);" (assignment_expression "uVar3 = *(undefined4 *)(lVar7 + 0x10)" identifier = (pointer_expression "*(undefined4 *)(lVar7 + 0x10)" * (cast_expression "(undefined4 *)(lVar7 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x10)" ( (binary_expression "lVar7 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if (uVar2 <= uVar1) {\n        uVar5 = gettext("bad section name offset for section %u: %u");\n        FUN_001bd150(lVar4,uVar5,param_3,uVar1);\n      }" if (parenthesized_expression "(uVar2 <= uVar1)" ( (binary_expression "uVar2 <= uVar1" identifier <= identifier) )) (compound_statement "{\n        uVar5 = gettext("bad section name offset for section %u: %u");\n        FUN_001bd150(lVar4,uVar5,param_3,uVar1);\n      }" { (expression_statement "uVar5 = gettext("bad section name offset for section %u: %u");" (assignment_expression "uVar5 = gettext("bad section name offset for section %u: %u")" identifier = (call_expression "gettext("bad section name offset for section %u: %u")" identifier (argument_list "("bad section name offset for section %u: %u")" ( (string_literal ""bad section name offset for section %u: %u"" " string_content ") )))) ;) (expression_statement "FUN_001bd150(lVar4,uVar5,param_3,uVar1);" (call_expression "FUN_001bd150(lVar4,uVar5,param_3,uVar1)" identifier (argument_list "(lVar4,uVar5,param_3,uVar1)" ( identifier , identifier , identifier , identifier ))) ;) })) (if_statement "if (*(long *)(lVar4 + 0x28) != 0) {\n        lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar3,\n                             uVar2,1,1);\n        pvVar8 = memchr((void *)((ulong)uVar1 + lVar7),0,(ulong)(uVar2 - uVar1));\n        if (pvVar8 == (void *)0x0) {\n          uVar5 = gettext("missing null terminator for name of section %u");\n          FUN_001bd150(lVar4,uVar5,param_3);\n        }\n        *param_1 = (long)(param_1 + 2);\n        FUN_001665c0(param_1,(void *)((ulong)uVar1 + lVar7),pvVar8);\n        return param_1;\n      }" if (parenthesized_expression "(*(long *)(lVar4 + 0x28) != 0)" ( (binary_expression "*(long *)(lVar4 + 0x28) != 0" (pointer_expression "*(long *)(lVar4 + 0x28)" * (cast_expression "(long *)(lVar4 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x28)" ( (binary_expression "lVar4 + 0x28" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n        lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar3,\n                             uVar2,1,1);\n        pvVar8 = memchr((void *)((ulong)uVar1 + lVar7),0,(ulong)(uVar2 - uVar1));\n        if (pvVar8 == (void *)0x0) {\n          uVar5 = gettext("missing null terminator for name of section %u");\n          FUN_001bd150(lVar4,uVar5,param_3);\n        }\n        *param_1 = (long)(param_1 + 2);\n        FUN_001665c0(param_1,(void *)((ulong)uVar1 + lVar7),pvVar8);\n        return param_1;\n      }" { (expression_statement "lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar3,\n                             uVar2,1,1);" (assignment_expression "lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar3,\n                             uVar2,1,1)" identifier = (call_expression "FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar3,\n                             uVar2,1,1)" identifier (argument_list "(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar3,\n                             uVar2,1,1)" ( (binary_expression "*(long *)(lVar4 + 0x28) + 0x28" (pointer_expression "*(long *)(lVar4 + 0x28)" * (cast_expression "(long *)(lVar4 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x28)" ( (binary_expression "lVar4 + 0x28" identifier + number_literal) )))) + number_literal) , (pointer_expression "*(undefined8 *)(lVar4 + 0x30)" * (cast_expression "(undefined8 *)(lVar4 + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x30)" ( (binary_expression "lVar4 + 0x30" identifier + number_literal) )))) , identifier , identifier , number_literal , number_literal )))) ;) (expression_statement "pvVar8 = memchr((void *)((ulong)uVar1 + lVar7),0,(ulong)(uVar2 - uVar1));" (assignment_expression "pvVar8 = memchr((void *)((ulong)uVar1 + lVar7),0,(ulong)(uVar2 - uVar1))" identifier = (call_expression "memchr((void *)((ulong)uVar1 + lVar7),0,(ulong)(uVar2 - uVar1))" identifier (argument_list "((void *)((ulong)uVar1 + lVar7),0,(ulong)(uVar2 - uVar1))" ( (cast_expression "(void *)((ulong)uVar1 + lVar7)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + lVar7)" ( (binary_expression "(ulong)uVar1 + lVar7" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + identifier) ))) , number_literal , (call_expression "(ulong)(uVar2 - uVar1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar2 - uVar1)" ( (binary_expression "uVar2 - uVar1" identifier - identifier) ))) )))) ;) (if_statement "if (pvVar8 == (void *)0x0) {\n          uVar5 = gettext("missing null terminator for name of section %u");\n          FUN_001bd150(lVar4,uVar5,param_3);\n        }" if (parenthesized_expression "(pvVar8 == (void *)0x0)" ( (binary_expression "pvVar8 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          uVar5 = gettext("missing null terminator for name of section %u");\n          FUN_001bd150(lVar4,uVar5,param_3);\n        }" { (expression_statement "uVar5 = gettext("missing null terminator for name of section %u");" (assignment_expression "uVar5 = gettext("missing null terminator for name of section %u")" identifier = (call_expression "gettext("missing null terminator for name of section %u")" identifier (argument_list "("missing null terminator for name of section %u")" ( (string_literal ""missing null terminator for name of section %u"" " string_content ") )))) ;) (expression_statement "FUN_001bd150(lVar4,uVar5,param_3);" (call_expression "FUN_001bd150(lVar4,uVar5,param_3)" identifier (argument_list "(lVar4,uVar5,param_3)" ( identifier , identifier , identifier ))) ;) })) (expression_statement "*param_1 = (long)(param_1 + 2);" (assignment_expression "*param_1 = (long)(param_1 + 2)" (pointer_expression "*param_1" * identifier) = (cast_expression "(long)(param_1 + 2)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) ;) (expression_statement "FUN_001665c0(param_1,(void *)((ulong)uVar1 + lVar7),pvVar8);" (call_expression "FUN_001665c0(param_1,(void *)((ulong)uVar1 + lVar7),pvVar8)" identifier (argument_list "(param_1,(void *)((ulong)uVar1 + lVar7),pvVar8)" ( identifier , (cast_expression "(void *)((ulong)uVar1 + lVar7)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)uVar1 + lVar7)" ( (binary_expression "(ulong)uVar1 + lVar7" (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) + identifier) ))) , identifier ))) ;) (return_statement "return param_1;" return identifier ;) })) })) })) (expression_statement "FUN_0017c650("../../gold/object.h",0x1e3,"input_file");" (call_expression "FUN_0017c650("../../gold/object.h",0x1e3,"input_file")" identifier (argument_list "("../../gold/object.h",0x1e3,"input_file")" ( (string_literal ""../../gold/object.h"" " string_content ") , number_literal , (string_literal ""input_file"" " string_content ") ))) ;) })))
(translation_unit (function_definition (sized_type_specifier long) (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) , (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) )))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , LIT , LIT , LIT ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , LIT , LIT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , IDENT , LIT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) ))) , LIT , (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - IDENT) ))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) ))) , IDENT ))) ;) (return_statement return IDENT ;) })) })) })) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })))
(function_definition "long * FUN_001694a0(long *param_1,long *param_2,undefined4 param_3)\n\n{\n  uint uVar1;\n  uint uVar2;\n  undefined4 uVar3;\n  long lVar4;\n  undefined8 uVar5;\n  uint *puVar6;\n  long lVar7;\n  void *pvVar8;\n  \n  lVar4 = *param_2;\n  uVar5 = FUN_00169310(param_2,param_3);\n  if (*(long *)(lVar4 + 0x28) != 0) {\n    puVar6 = (uint *)FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5\n                                  ,0x28,1,1);\n    uVar1 = *puVar6;\n    uVar5 = FUN_00169310(param_2,*(undefined4 *)((long)param_2 + 0x14));\n    if (*(long *)(lVar4 + 0x28) != 0) {\n      lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5,0x28,1\n                           ,1);\n      uVar2 = *(uint *)(lVar7 + 0x14);\n      uVar3 = *(undefined4 *)(lVar7 + 0x10);\n      if (uVar2 <= uVar1) {\n        uVar5 = gettext("bad section name offset for section %u: %u");\n        FUN_001bd150(lVar4,uVar5,param_3,uVar1);\n      }\n      if (*(long *)(lVar4 + 0x28) != 0) {\n        lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar3,\n                             uVar2,1,1);\n        pvVar8 = memchr((void *)((ulong)uVar1 + lVar7),0,(ulong)(uVar2 - uVar1));\n        if (pvVar8 == (void *)0x0) {\n          uVar5 = gettext("missing null terminator for name of section %u");\n          FUN_001bd150(lVar4,uVar5,param_3);\n        }\n        *param_1 = (long)(param_1 + 2);\n        FUN_001665c0(param_1,(void *)((ulong)uVar1 + lVar7),pvVar8);\n        return param_1;\n      }\n    }\n  }\n                    \n  FUN_0017c650("../../gold/object.h",0x1e3,"input_file");\n}" (sized_type_specifier "long" (long "long")) (pointer_declarator "* FUN_001694a0(long *param_1,long *param_2,undefined4 param_3)" (* "*") (function_declarator "FUN_001694a0(long *param_1,long *param_2,undefined4 param_3)" (identifier "FUN_001694a0") (parameter_list "(long *param_1,long *param_2,undefined4 param_3)" (( "(") (parameter_declaration "long *param_1" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "long *param_2" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "undefined4 param_3" (type_identifier "undefined4") (identifier "param_3")) () ")")))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  undefined4 uVar3;\n  long lVar4;\n  undefined8 uVar5;\n  uint *puVar6;\n  long lVar7;\n  void *pvVar8;\n  \n  lVar4 = *param_2;\n  uVar5 = FUN_00169310(param_2,param_3);\n  if (*(long *)(lVar4 + 0x28) != 0) {\n    puVar6 = (uint *)FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5\n                                  ,0x28,1,1);\n    uVar1 = *puVar6;\n    uVar5 = FUN_00169310(param_2,*(undefined4 *)((long)param_2 + 0x14));\n    if (*(long *)(lVar4 + 0x28) != 0) {\n      lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5,0x28,1\n                           ,1);\n      uVar2 = *(uint *)(lVar7 + 0x14);\n      uVar3 = *(undefined4 *)(lVar7 + 0x10);\n      if (uVar2 <= uVar1) {\n        uVar5 = gettext("bad section name offset for section %u: %u");\n        FUN_001bd150(lVar4,uVar5,param_3,uVar1);\n      }\n      if (*(long *)(lVar4 + 0x28) != 0) {\n        lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar3,\n                             uVar2,1,1);\n        pvVar8 = memchr((void *)((ulong)uVar1 + lVar7),0,(ulong)(uVar2 - uVar1));\n        if (pvVar8 == (void *)0x0) {\n          uVar5 = gettext("missing null terminator for name of section %u");\n          FUN_001bd150(lVar4,uVar5,param_3);\n        }\n        *param_1 = (long)(param_1 + 2);\n        FUN_001665c0(param_1,(void *)((ulong)uVar1 + lVar7),pvVar8);\n        return param_1;\n      }\n    }\n  }\n                    \n  FUN_0017c650("../../gold/object.h",0x1e3,"input_file");\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "long lVar4;" (sized_type_specifier "long" (long "long")) (identifier "lVar4") (; ";")) (declaration "undefined8 uVar5;" (type_identifier "undefined8") (identifier "uVar5") (; ";")) (declaration "uint *puVar6;" (type_identifier "uint") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "long lVar7;" (sized_type_specifier "long" (long "long")) (identifier "lVar7") (; ";")) (declaration "void *pvVar8;" (primitive_type "void") (pointer_declarator "*pvVar8" (* "*") (identifier "pvVar8")) (; ";")) (expression_statement "lVar4 = *param_2;" (assignment_expression "lVar4 = *param_2" (identifier "lVar4") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "uVar5 = FUN_00169310(param_2,param_3);" (assignment_expression "uVar5 = FUN_00169310(param_2,param_3)" (identifier "uVar5") (= "=") (call_expression "FUN_00169310(param_2,param_3)" (identifier "FUN_00169310") (argument_list "(param_2,param_3)" (( "(") (identifier "param_2") (, ",") (identifier "param_3") () ")")))) (; ";")) (if_statement "if (*(long *)(lVar4 + 0x28) != 0) {\n    puVar6 = (uint *)FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5\n                                  ,0x28,1,1);\n    uVar1 = *puVar6;\n    uVar5 = FUN_00169310(param_2,*(undefined4 *)((long)param_2 + 0x14));\n    if (*(long *)(lVar4 + 0x28) != 0) {\n      lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5,0x28,1\n                           ,1);\n      uVar2 = *(uint *)(lVar7 + 0x14);\n      uVar3 = *(undefined4 *)(lVar7 + 0x10);\n      if (uVar2 <= uVar1) {\n        uVar5 = gettext("bad section name offset for section %u: %u");\n        FUN_001bd150(lVar4,uVar5,param_3,uVar1);\n      }\n      if (*(long *)(lVar4 + 0x28) != 0) {\n        lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar3,\n                             uVar2,1,1);\n        pvVar8 = memchr((void *)((ulong)uVar1 + lVar7),0,(ulong)(uVar2 - uVar1));\n        if (pvVar8 == (void *)0x0) {\n          uVar5 = gettext("missing null terminator for name of section %u");\n          FUN_001bd150(lVar4,uVar5,param_3);\n        }\n        *param_1 = (long)(param_1 + 2);\n        FUN_001665c0(param_1,(void *)((ulong)uVar1 + lVar7),pvVar8);\n        return param_1;\n      }\n    }\n  }" (if "if") (parenthesized_expression "(*(long *)(lVar4 + 0x28) != 0)" (( "(") (binary_expression "*(long *)(lVar4 + 0x28) != 0" (pointer_expression "*(long *)(lVar4 + 0x28)" (* "*") (cast_expression "(long *)(lVar4 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x28)" (( "(") (binary_expression "lVar4 + 0x28" (identifier "lVar4") (+ "+") (number_literal "0x28")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    puVar6 = (uint *)FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5\n                                  ,0x28,1,1);\n    uVar1 = *puVar6;\n    uVar5 = FUN_00169310(param_2,*(undefined4 *)((long)param_2 + 0x14));\n    if (*(long *)(lVar4 + 0x28) != 0) {\n      lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5,0x28,1\n                           ,1);\n      uVar2 = *(uint *)(lVar7 + 0x14);\n      uVar3 = *(undefined4 *)(lVar7 + 0x10);\n      if (uVar2 <= uVar1) {\n        uVar5 = gettext("bad section name offset for section %u: %u");\n        FUN_001bd150(lVar4,uVar5,param_3,uVar1);\n      }\n      if (*(long *)(lVar4 + 0x28) != 0) {\n        lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar3,\n                             uVar2,1,1);\n        pvVar8 = memchr((void *)((ulong)uVar1 + lVar7),0,(ulong)(uVar2 - uVar1));\n        if (pvVar8 == (void *)0x0) {\n          uVar5 = gettext("missing null terminator for name of section %u");\n          FUN_001bd150(lVar4,uVar5,param_3);\n        }\n        *param_1 = (long)(param_1 + 2);\n        FUN_001665c0(param_1,(void *)((ulong)uVar1 + lVar7),pvVar8);\n        return param_1;\n      }\n    }\n  }" ({ "{") (expression_statement "puVar6 = (uint *)FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5\n                                  ,0x28,1,1);" (assignment_expression "puVar6 = (uint *)FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5\n                                  ,0x28,1,1)" (identifier "puVar6") (= "=") (cast_expression "(uint *)FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5\n                                  ,0x28,1,1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5\n                                  ,0x28,1,1)" (identifier "FUN_0017b1d0") (argument_list "(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5\n                                  ,0x28,1,1)" (( "(") (binary_expression "*(long *)(lVar4 + 0x28) + 0x28" (pointer_expression "*(long *)(lVar4 + 0x28)" (* "*") (cast_expression "(long *)(lVar4 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x28)" (( "(") (binary_expression "lVar4 + 0x28" (identifier "lVar4") (+ "+") (number_literal "0x28")) () ")")))) (+ "+") (number_literal "0x28")) (, ",") (pointer_expression "*(undefined8 *)(lVar4 + 0x30)" (* "*") (cast_expression "(undefined8 *)(lVar4 + 0x30)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x30)" (( "(") (binary_expression "lVar4 + 0x30" (identifier "lVar4") (+ "+") (number_literal "0x30")) () ")")))) (, ",") (identifier "uVar5") (, ",") (number_literal "0x28") (, ",") (number_literal "1") (, ",") (number_literal "1") () ")"))))) (; ";")) (expression_statement "uVar1 = *puVar6;" (assignment_expression "uVar1 = *puVar6" (identifier "uVar1") (= "=") (pointer_expression "*puVar6" (* "*") (identifier "puVar6"))) (; ";")) (expression_statement "uVar5 = FUN_00169310(param_2,*(undefined4 *)((long)param_2 + 0x14));" (assignment_expression "uVar5 = FUN_00169310(param_2,*(undefined4 *)((long)param_2 + 0x14))" (identifier "uVar5") (= "=") (call_expression "FUN_00169310(param_2,*(undefined4 *)((long)param_2 + 0x14))" (identifier "FUN_00169310") (argument_list "(param_2,*(undefined4 *)((long)param_2 + 0x14))" (( "(") (identifier "param_2") (, ",") (pointer_expression "*(undefined4 *)((long)param_2 + 0x14)" (* "*") (cast_expression "(undefined4 *)((long)param_2 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_2 + 0x14)" (( "(") (binary_expression "(long)param_2 + 0x14" (cast_expression "(long)param_2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_2")) (+ "+") (number_literal "0x14")) () ")")))) () ")")))) (; ";")) (if_statement "if (*(long *)(lVar4 + 0x28) != 0) {\n      lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5,0x28,1\n                           ,1);\n      uVar2 = *(uint *)(lVar7 + 0x14);\n      uVar3 = *(undefined4 *)(lVar7 + 0x10);\n      if (uVar2 <= uVar1) {\n        uVar5 = gettext("bad section name offset for section %u: %u");\n        FUN_001bd150(lVar4,uVar5,param_3,uVar1);\n      }\n      if (*(long *)(lVar4 + 0x28) != 0) {\n        lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar3,\n                             uVar2,1,1);\n        pvVar8 = memchr((void *)((ulong)uVar1 + lVar7),0,(ulong)(uVar2 - uVar1));\n        if (pvVar8 == (void *)0x0) {\n          uVar5 = gettext("missing null terminator for name of section %u");\n          FUN_001bd150(lVar4,uVar5,param_3);\n        }\n        *param_1 = (long)(param_1 + 2);\n        FUN_001665c0(param_1,(void *)((ulong)uVar1 + lVar7),pvVar8);\n        return param_1;\n      }\n    }" (if "if") (parenthesized_expression "(*(long *)(lVar4 + 0x28) != 0)" (( "(") (binary_expression "*(long *)(lVar4 + 0x28) != 0" (pointer_expression "*(long *)(lVar4 + 0x28)" (* "*") (cast_expression "(long *)(lVar4 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x28)" (( "(") (binary_expression "lVar4 + 0x28" (identifier "lVar4") (+ "+") (number_literal "0x28")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5,0x28,1\n                           ,1);\n      uVar2 = *(uint *)(lVar7 + 0x14);\n      uVar3 = *(undefined4 *)(lVar7 + 0x10);\n      if (uVar2 <= uVar1) {\n        uVar5 = gettext("bad section name offset for section %u: %u");\n        FUN_001bd150(lVar4,uVar5,param_3,uVar1);\n      }\n      if (*(long *)(lVar4 + 0x28) != 0) {\n        lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar3,\n                             uVar2,1,1);\n        pvVar8 = memchr((void *)((ulong)uVar1 + lVar7),0,(ulong)(uVar2 - uVar1));\n        if (pvVar8 == (void *)0x0) {\n          uVar5 = gettext("missing null terminator for name of section %u");\n          FUN_001bd150(lVar4,uVar5,param_3);\n        }\n        *param_1 = (long)(param_1 + 2);\n        FUN_001665c0(param_1,(void *)((ulong)uVar1 + lVar7),pvVar8);\n        return param_1;\n      }\n    }" ({ "{") (expression_statement "lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5,0x28,1\n                           ,1);" (assignment_expression "lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5,0x28,1\n                           ,1)" (identifier "lVar7") (= "=") (call_expression "FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5,0x28,1\n                           ,1)" (identifier "FUN_0017b1d0") (argument_list "(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5,0x28,1\n                           ,1)" (( "(") (binary_expression "*(long *)(lVar4 + 0x28) + 0x28" (pointer_expression "*(long *)(lVar4 + 0x28)" (* "*") (cast_expression "(long *)(lVar4 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x28)" (( "(") (binary_expression "lVar4 + 0x28" (identifier "lVar4") (+ "+") (number_literal "0x28")) () ")")))) (+ "+") (number_literal "0x28")) (, ",") (pointer_expression "*(undefined8 *)(lVar4 + 0x30)" (* "*") (cast_expression "(undefined8 *)(lVar4 + 0x30)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x30)" (( "(") (binary_expression "lVar4 + 0x30" (identifier "lVar4") (+ "+") (number_literal "0x30")) () ")")))) (, ",") (identifier "uVar5") (, ",") (number_literal "0x28") (, ",") (number_literal "1") (, ",") (number_literal "1") () ")")))) (; ";")) (expression_statement "uVar2 = *(uint *)(lVar7 + 0x14);" (assignment_expression "uVar2 = *(uint *)(lVar7 + 0x14)" (identifier "uVar2") (= "=") (pointer_expression "*(uint *)(lVar7 + 0x14)" (* "*") (cast_expression "(uint *)(lVar7 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar7 + 0x14)" (( "(") (binary_expression "lVar7 + 0x14" (identifier "lVar7") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "uVar3 = *(undefined4 *)(lVar7 + 0x10);" (assignment_expression "uVar3 = *(undefined4 *)(lVar7 + 0x10)" (identifier "uVar3") (= "=") (pointer_expression "*(undefined4 *)(lVar7 + 0x10)" (* "*") (cast_expression "(undefined4 *)(lVar7 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar7 + 0x10)" (( "(") (binary_expression "lVar7 + 0x10" (identifier "lVar7") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (if_statement "if (uVar2 <= uVar1) {\n        uVar5 = gettext("bad section name offset for section %u: %u");\n        FUN_001bd150(lVar4,uVar5,param_3,uVar1);\n      }" (if "if") (parenthesized_expression "(uVar2 <= uVar1)" (( "(") (binary_expression "uVar2 <= uVar1" (identifier "uVar2") (<= "<=") (identifier "uVar1")) () ")")) (compound_statement "{\n        uVar5 = gettext("bad section name offset for section %u: %u");\n        FUN_001bd150(lVar4,uVar5,param_3,uVar1);\n      }" ({ "{") (expression_statement "uVar5 = gettext("bad section name offset for section %u: %u");" (assignment_expression "uVar5 = gettext("bad section name offset for section %u: %u")" (identifier "uVar5") (= "=") (call_expression "gettext("bad section name offset for section %u: %u")" (identifier "gettext") (argument_list "("bad section name offset for section %u: %u")" (( "(") (string_literal ""bad section name offset for section %u: %u"" (" """) (string_content "bad section name offset for section %u: %u") (" """)) () ")")))) (; ";")) (expression_statement "FUN_001bd150(lVar4,uVar5,param_3,uVar1);" (call_expression "FUN_001bd150(lVar4,uVar5,param_3,uVar1)" (identifier "FUN_001bd150") (argument_list "(lVar4,uVar5,param_3,uVar1)" (( "(") (identifier "lVar4") (, ",") (identifier "uVar5") (, ",") (identifier "param_3") (, ",") (identifier "uVar1") () ")"))) (; ";")) (} "}"))) (if_statement "if (*(long *)(lVar4 + 0x28) != 0) {\n        lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar3,\n                             uVar2,1,1);\n        pvVar8 = memchr((void *)((ulong)uVar1 + lVar7),0,(ulong)(uVar2 - uVar1));\n        if (pvVar8 == (void *)0x0) {\n          uVar5 = gettext("missing null terminator for name of section %u");\n          FUN_001bd150(lVar4,uVar5,param_3);\n        }\n        *param_1 = (long)(param_1 + 2);\n        FUN_001665c0(param_1,(void *)((ulong)uVar1 + lVar7),pvVar8);\n        return param_1;\n      }" (if "if") (parenthesized_expression "(*(long *)(lVar4 + 0x28) != 0)" (( "(") (binary_expression "*(long *)(lVar4 + 0x28) != 0" (pointer_expression "*(long *)(lVar4 + 0x28)" (* "*") (cast_expression "(long *)(lVar4 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x28)" (( "(") (binary_expression "lVar4 + 0x28" (identifier "lVar4") (+ "+") (number_literal "0x28")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar3,\n                             uVar2,1,1);\n        pvVar8 = memchr((void *)((ulong)uVar1 + lVar7),0,(ulong)(uVar2 - uVar1));\n        if (pvVar8 == (void *)0x0) {\n          uVar5 = gettext("missing null terminator for name of section %u");\n          FUN_001bd150(lVar4,uVar5,param_3);\n        }\n        *param_1 = (long)(param_1 + 2);\n        FUN_001665c0(param_1,(void *)((ulong)uVar1 + lVar7),pvVar8);\n        return param_1;\n      }" ({ "{") (expression_statement "lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar3,\n                             uVar2,1,1);" (assignment_expression "lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar3,\n                             uVar2,1,1)" (identifier "lVar7") (= "=") (call_expression "FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar3,\n                             uVar2,1,1)" (identifier "FUN_0017b1d0") (argument_list "(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar3,\n                             uVar2,1,1)" (( "(") (binary_expression "*(long *)(lVar4 + 0x28) + 0x28" (pointer_expression "*(long *)(lVar4 + 0x28)" (* "*") (cast_expression "(long *)(lVar4 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x28)" (( "(") (binary_expression "lVar4 + 0x28" (identifier "lVar4") (+ "+") (number_literal "0x28")) () ")")))) (+ "+") (number_literal "0x28")) (, ",") (pointer_expression "*(undefined8 *)(lVar4 + 0x30)" (* "*") (cast_expression "(undefined8 *)(lVar4 + 0x30)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x30)" (( "(") (binary_expression "lVar4 + 0x30" (identifier "lVar4") (+ "+") (number_literal "0x30")) () ")")))) (, ",") (identifier "uVar3") (, ",") (identifier "uVar2") (, ",") (number_literal "1") (, ",") (number_literal "1") () ")")))) (; ";")) (expression_statement "pvVar8 = memchr((void *)((ulong)uVar1 + lVar7),0,(ulong)(uVar2 - uVar1));" (assignment_expression "pvVar8 = memchr((void *)((ulong)uVar1 + lVar7),0,(ulong)(uVar2 - uVar1))" (identifier "pvVar8") (= "=") (call_expression "memchr((void *)((ulong)uVar1 + lVar7),0,(ulong)(uVar2 - uVar1))" (identifier "memchr") (argument_list "((void *)((ulong)uVar1 + lVar7),0,(ulong)(uVar2 - uVar1))" (( "(") (cast_expression "(void *)((ulong)uVar1 + lVar7)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((ulong)uVar1 + lVar7)" (( "(") (binary_expression "(ulong)uVar1 + lVar7" (cast_expression "(ulong)uVar1" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar1")) (+ "+") (identifier "lVar7")) () ")"))) (, ",") (number_literal "0") (, ",") (call_expression "(ulong)(uVar2 - uVar1)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(uVar2 - uVar1)" (( "(") (binary_expression "uVar2 - uVar1" (identifier "uVar2") (- "-") (identifier "uVar1")) () ")"))) () ")")))) (; ";")) (if_statement "if (pvVar8 == (void *)0x0) {\n          uVar5 = gettext("missing null terminator for name of section %u");\n          FUN_001bd150(lVar4,uVar5,param_3);\n        }" (if "if") (parenthesized_expression "(pvVar8 == (void *)0x0)" (( "(") (binary_expression "pvVar8 == (void *)0x0" (identifier "pvVar8") (== "==") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          uVar5 = gettext("missing null terminator for name of section %u");\n          FUN_001bd150(lVar4,uVar5,param_3);\n        }" ({ "{") (expression_statement "uVar5 = gettext("missing null terminator for name of section %u");" (assignment_expression "uVar5 = gettext("missing null terminator for name of section %u")" (identifier "uVar5") (= "=") (call_expression "gettext("missing null terminator for name of section %u")" (identifier "gettext") (argument_list "("missing null terminator for name of section %u")" (( "(") (string_literal ""missing null terminator for name of section %u"" (" """) (string_content "missing null terminator for name of section %u") (" """)) () ")")))) (; ";")) (expression_statement "FUN_001bd150(lVar4,uVar5,param_3);" (call_expression "FUN_001bd150(lVar4,uVar5,param_3)" (identifier "FUN_001bd150") (argument_list "(lVar4,uVar5,param_3)" (( "(") (identifier "lVar4") (, ",") (identifier "uVar5") (, ",") (identifier "param_3") () ")"))) (; ";")) (} "}"))) (expression_statement "*param_1 = (long)(param_1 + 2);" (assignment_expression "*param_1 = (long)(param_1 + 2)" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (cast_expression "(long)(param_1 + 2)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")")))) (; ";")) (expression_statement "FUN_001665c0(param_1,(void *)((ulong)uVar1 + lVar7),pvVar8);" (call_expression "FUN_001665c0(param_1,(void *)((ulong)uVar1 + lVar7),pvVar8)" (identifier "FUN_001665c0") (argument_list "(param_1,(void *)((ulong)uVar1 + lVar7),pvVar8)" (( "(") (identifier "param_1") (, ",") (cast_expression "(void *)((ulong)uVar1 + lVar7)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((ulong)uVar1 + lVar7)" (( "(") (binary_expression "(ulong)uVar1 + lVar7" (cast_expression "(ulong)uVar1" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar1")) (+ "+") (identifier "lVar7")) () ")"))) (, ",") (identifier "pvVar8") () ")"))) (; ";")) (return_statement "return param_1;" (return "return") (identifier "param_1") (; ";")) (} "}"))) (} "}"))) (} "}"))) (expression_statement "FUN_0017c650("../../gold/object.h",0x1e3,"input_file");" (call_expression "FUN_0017c650("../../gold/object.h",0x1e3,"input_file")" (identifier "FUN_0017c650") (argument_list "("../../gold/object.h",0x1e3,"input_file")" (( "(") (string_literal ""../../gold/object.h"" (" """) (string_content "../../gold/object.h") (" """)) (, ",") (number_literal "0x1e3") (, ",") (string_literal ""input_file"" (" """) (string_content "input_file") (" """)) () ")"))) (; ";")) (} "}")))

/* DWARF original prototype: string section_name(Elf_file<32,_false,_gold::Object> * this, uint
   shndx) */

var_2 * __thiscall
elfcpp::var_4<32,_false,_gold::var_5>::var_1
          (var_2 *var_3,var_4<32,_false,_gold::var_5> *this,type_1 shndx)

{
  type_1 var_10;
  type_1 var_9;
  type_1 uVar3;
  var_5 *this_00;
  type_2 oVar4;
  type_1 *puVar5;
  type_3 *var_8;
  void *var_14;
  char *pcVar8;
  
  this_00 = this->file_;
  oVar4 = var_6(this,shndx);
  if (this_00->input_file_ != (type_4 *)0x0) {
    puVar5 = (type_1 *)gold::File_read::var_7
                               (&this_00->input_file_->file_,this_00->offset_,oVar4,0x28,true,true);
    var_10 = *puVar5;
    oVar4 = var_6(this,this->shstrndx_);
    if (this_00->input_file_ != (type_4 *)0x0) {
      var_8 = gold::File_read::var_7
                         (&this_00->input_file_->file_,this_00->offset_,oVar4,0x28,true,true);
      var_9 = *(type_1 *)(var_8 + 0x14);
      uVar3 = *(type_1 *)(var_8 + 0x10);
      if (var_9 <= var_10) {
        pcVar8 = (char *)var_11("bad section name offset for section %u: %u");
        gold::Object::var_12(this_00,pcVar8,(type_5)shndx,(type_5)var_10);
      }
      if (this_00->input_file_ != (type_4 *)0x0) {
        var_8 = gold::File_read::var_7
                           (&this_00->input_file_->file_,this_00->offset_,(type_5)uVar3,(type_5)var_9,
                            true,true);
        var_14 = var_13(var_8 + var_10,0,(type_5)(var_9 - var_10));
        if (var_14 == (void *)0x0) {
          pcVar8 = (char *)var_11("missing null terminator for name of section %u");
          gold::Object::var_12(this_00,pcVar8,(type_5)shndx);
        }
        (var_3->_M_dataplus)._M_p = (pointer)&var_3->field_2;
        std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::
        var_15<var_16*>(var_3,var_8 + var_10,var_14);
        return var_3;
      }
    }
  }
                    /* WARNING: Subroutine does not return */
  gold::var_17("../../gold/object.h",0x1e3,"input_file");
}


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

long * MASKED(long *param_1,long *param_2,undefined4 param_3)

{
  uint uVar1;
  uint uVar2;
  undefined4 uVar3;
  long lVar4;
  undefined8 uVar5;
  uint *puVar6;
  long lVar7;
  void *pvVar8;
  
  lVar4 = *param_2;
  uVar5 = FUN_00169310(param_2,param_3);
  if (*(long *)(lVar4 + 0x28) != 0) {
    puVar6 = (uint *)FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5
                                  ,0x28,1,1);
    uVar1 = *puVar6;
    uVar5 = FUN_00169310(param_2,*(undefined4 *)((long)param_2 + 0x14));
    if (*(long *)(lVar4 + 0x28) != 0) {
      lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar5,0x28,1
                           ,1);
      uVar2 = *(uint *)(lVar7 + 0x14);
      uVar3 = *(undefined4 *)(lVar7 + 0x10);
      if (uVar2 <= uVar1) {
        uVar5 = gettext("bad section name offset for section %u: %u");
        FUN_001bd150(lVar4,uVar5,param_3,uVar1);
      }
      if (*(long *)(lVar4 + 0x28) != 0) {
        lVar7 = FUN_0017b1d0(*(long *)(lVar4 + 0x28) + 0x28,*(undefined8 *)(lVar4 + 0x30),uVar3,
                             uVar2,1,1);
        pvVar8 = memchr((void *)((ulong)uVar1 + lVar7),0,(ulong)(uVar2 - uVar1));
        if (pvVar8 == (void *)0x0) {
          uVar5 = gettext("missing null terminator for name of section %u");
          FUN_001bd150(lVar4,uVar5,param_3);
        }
        *param_1 = (long)(param_1 + 2);
        FUN_001665c0(param_1,(void *)((ulong)uVar1 + lVar7),pvVar8);
        return param_1;
      }
    }
  }
                    /* WARNING: Subroutine does not return */
  FUN_0017c650("../../gold/object.h",0x1e3,"input_file");
}

