
/* DWARF original name: print_input_section_symbols<64, false>
   DWARF original prototype: void print_input_section_symbols<64,_false>(Mapfile * this,
   Sized_relobj_file<64,_false> * relobj, uint shndx) */

void __thiscall
gold::Mapfile::print_input_section_symbols<64,_false>
          (Mapfile *this,Sized_relobj_file<64,_false> *relobj,uint shndx)

{
  _func_int_varargs **pp_Var1;
  _func_int_varargs *p_Var2;
  pointer ppSVar3;
  Symbol *this_00;
  uint uVar4;
  ulong uVar5;
  uint uVar6;
  long local_60;
  string local_58;
  
  pp_Var1 = (relobj->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object;
  p_Var2 = pp_Var1[0x23];
  uVar6 = (int)((long)(relobj->symbols_).
                      super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.
                      _M_finish -
                (long)(relobj->symbols_).
                      super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.
                      _M_start >> 3) + relobj->local_symbol_count_;
  if (p_Var2 == Relobj::local_symbol_count) {
    uVar4 = (*pp_Var1[0x2f])();
  }
  else {
    uVar4 = (*p_Var2)(relobj);
  }
  if (uVar4 < uVar6) {
    do {
      if (relobj->local_symbol_count_ <= uVar4) {
        ppSVar3 = (relobj->symbols_).
                  super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl._M_start
        ;
        uVar5 = (ulong)(uVar4 - relobj->local_symbol_count_);
        if ((ulong)((long)(relobj->symbols_).
                          super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.
                          _M_finish - (long)ppSVar3 >> 3) <= uVar5) {
                    /* WARNING: Subroutine does not return */
          do_gold_unreachable("../../gold/object.h",0x8ad,"global_symbol");
        }
        this_00 = ppSVar3[uVar5];
        if ((((this_00 != (Symbol *)0x0) && ((this_00->field_0x3a & 7) == 0)) &&
            (relobj == (Sized_relobj_file<64,_false> *)(this_00->u1_).object)) &&
           (((shndx == (this_00->u2_).shndx && ((this_00->field_0x3b & 0x20) != 0)) &&
            ((this_00->u2_).shndx != 0)))) {
          local_60 = 0x10;
          do {
            putc(0x20,(FILE *)this->map_file_);
            local_60 = local_60 + -1;
          } while (local_60 != 0);
          Symbol::demangled_name(&local_58,this_00);
                    /* try { // try from 001bcb4b to 001bcb4f has its CatchHandler @ 001bcba1 */
          fprintf((FILE *)this->map_file_,"0x%0*llx                %s\n",0x10,this_00[1].name_,
                  local_58._M_dataplus._M_p);
          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
               *)local_58._M_dataplus._M_p != &local_58.field_2) {
            operator_delete(local_58._M_dataplus._M_p);
          }
        }
      }
      uVar4 = uVar4 + 1;
    } while (uVar4 != uVar6);
  }
  return;
}



void FUN_001bca30(undefined8 *param_1,long *param_2,int param_3)

{
  code *pcVar1;
  long lVar2;
  uint uVar3;
  ulong uVar4;
  uint uVar5;
  long local_60;
  undefined1 *local_58 [2];
  undefined1 auStack_48 [24];
  
  pcVar1 = *(code **)(*param_2 + 0x118);
  uVar5 = (int)(param_2[0x27] - param_2[0x26] >> 3) + (int)param_2[0x24];
  if (pcVar1 == FUN_001550b0) {
    uVar3 = (**(code **)(*param_2 + 0x178))();
  }
  else {
    uVar3 = (*pcVar1)(param_2);
  }
  if (uVar3 < uVar5) {
    do {
      if (*(uint *)(param_2 + 0x24) <= uVar3) {
        uVar4 = (ulong)(uVar3 - *(uint *)(param_2 + 0x24));
        if ((ulong)(param_2[0x27] - param_2[0x26] >> 3) <= uVar4) {
                    /* WARNING: Subroutine does not return */
          FUN_0017c650("../../gold/object.h",0x8ad,"global_symbol");
        }
        lVar2 = *(long *)(param_2[0x26] + uVar4 * 8);
        if ((((lVar2 != 0) && ((*(byte *)(lVar2 + 0x3a) & 7) == 0)) &&
            (param_2 == *(long **)(lVar2 + 0x10))) &&
           (((param_3 == *(int *)(lVar2 + 0x18) && ((*(byte *)(lVar2 + 0x3b) & 0x20) != 0)) &&
            (*(int *)(lVar2 + 0x18) != 0)))) {
          local_60 = 0x10;
          do {
            putc(0x20,(FILE *)*param_1);
            local_60 = local_60 + -1;
          } while (local_60 != 0);
          FUN_00272230(local_58,lVar2);
                    /* try { // try from 001bcb4b to 001bcb4f has its CatchHandler @ 001bcba1 */
          fprintf((FILE *)*param_1,"0x%0*llx                %s\n",0x10,*(undefined8 *)(lVar2 + 0x40)
                  ,local_58[0]);
          if (local_58[0] != auStack_48) {
            FUN_002dac70();
          }
        }
      }
      uVar3 = uVar3 + 1;
    } while (uVar3 != uVar5);
  }
  return;
}


PUSH R15
LEA RCX,[0x1550b0]
MOV R15,RDI
MOV RDI,RSI
PUSH R14
PUSH R13
MOV R13D,EDX
PUSH R12
PUSH RBP
MOV RBP,RSI
PUSH RBX
SUB RSP,0x38
MOV RAX,qword ptr [RSI]
MOV R12,qword ptr [RSI + 0x138]
SUB R12,qword ptr [RSI + 0x130]
MOV RDX,qword ptr [RAX + 0x118]
SAR R12,0x3
ADD R12D,dword ptr [RSI + 0x120]
CMP RDX,RCX
JNZ 0x001bcb80
CALL qword ptr [RAX + 0x178]
MOV EBX,EAX
CMP EBX,R12D
JNC 0x001bcb70
LEA RAX,[RSP + 0x10]
MOV qword ptr [RSP],RAX
JMP 0x001bcaac
ADD EBX,0x1
CMP EBX,R12D
JZ 0x001bcb70
MOV EAX,dword ptr [RBP + 0x120]
CMP EBX,EAX
JC 0x001bcaa0
MOV ECX,EBX
MOV RDX,qword ptr [RBP + 0x130]
SUB ECX,EAX
MOV RAX,qword ptr [RBP + 0x138]
SUB RAX,RDX
SAR RAX,0x3
CMP RCX,RAX
JNC 0x001bcb89
MOV R14,qword ptr [RDX + RCX*0x8]
TEST R14,R14
JZ 0x001bcaa0
TEST byte ptr [R14 + 0x3a],0x7
JNZ 0x001bcaa0
CMP RBP,qword ptr [R14 + 0x10]
JNZ 0x001bcaa0
MOV EAX,dword ptr [R14 + 0x18]
CMP R13D,EAX
JNZ 0x001bcaa0
TEST byte ptr [R14 + 0x3b],0x20
JZ 0x001bcaa0
TEST EAX,EAX
JZ 0x001bcaa0
MOV qword ptr [RSP + 0x8],0x10
NOP dword ptr [RAX + RAX*0x1]
MOV RSI,qword ptr [R15]
MOV EDI,0x20
CALL 0x001476b0
SUB qword ptr [RSP + 0x8],0x1
JNZ 0x001bcb10
MOV RDI,qword ptr [RSP]
MOV RSI,R14
CALL 0x00272230
MOV RCX,qword ptr [R14 + 0x40]
MOV R8,qword ptr [RSP + 0x10]
XOR EAX,EAX
MOV RDI,qword ptr [R15]
MOV EDX,0x10
LEA RSI,[0x377e55]
CALL 0x00147a00
MOV RAX,qword ptr [RSP]
MOV RDI,qword ptr [RSP + 0x10]
ADD RAX,0x10
CMP RDI,RAX
JZ 0x001bcaa0
CALL 0x002dac70
JMP 0x001bcaa0
ADD RSP,0x38
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
CALL RDX
MOV EBX,EAX
JMP 0x001bca85
LEA RDX,[0x377ea0]
MOV ESI,0x8ad
LEA RDI,[0x36b016]
CALL 0x0017c650
(translation_unit "void FUN_001bca30(undefined8 *param_1,long *param_2,int param_3)\n\n{\n  code *pcVar1;\n  long lVar2;\n  uint uVar3;\n  ulong uVar4;\n  uint uVar5;\n  long local_60;\n  undefined1 *local_58 [2];\n  undefined1 auStack_48 [24];\n  \n  pcVar1 = *(code **)(*param_2 + 0x118);\n  uVar5 = (int)(param_2[0x27] - param_2[0x26] >> 3) + (int)param_2[0x24];\n  if (pcVar1 == FUN_001550b0) {\n    uVar3 = (**(code **)(*param_2 + 0x178))();\n  }\n  else {\n    uVar3 = (*pcVar1)(param_2);\n  }\n  if (uVar3 < uVar5) {\n    do {\n      if (*(uint *)(param_2 + 0x24) <= uVar3) {\n        uVar4 = (ulong)(uVar3 - *(uint *)(param_2 + 0x24));\n        if ((ulong)(param_2[0x27] - param_2[0x26] >> 3) <= uVar4) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0017c650("../../gold/object.h",0x8ad,"global_symbol");\n        }\n        lVar2 = *(long *)(param_2[0x26] + uVar4 * 8);\n        if ((((lVar2 != 0) && ((*(byte *)(lVar2 + 0x3a) & 7) == 0)) &&\n            (param_2 == *(long **)(lVar2 + 0x10))) &&\n           (((param_3 == *(int *)(lVar2 + 0x18) && ((*(byte *)(lVar2 + 0x3b) & 0x20) != 0)) &&\n            (*(int *)(lVar2 + 0x18) != 0)))) {\n          local_60 = 0x10;\n          do {\n            putc(0x20,(FILE *)*param_1);\n            local_60 = local_60 + -1;\n          } while (local_60 != 0);\n          FUN_00272230(local_58,lVar2);\n                    /* try { // try from 001bcb4b to 001bcb4f has its CatchHandler @ 001bcba1 */\n          fprintf((FILE *)*param_1,"0x%0*llx                %s\n",0x10,*(undefined8 *)(lVar2 + 0x40)\n                  ,local_58[0]);\n          if (local_58[0] != auStack_48) {\n            FUN_002dac70();\n          }\n        }\n      }\n      uVar3 = uVar3 + 1;\n    } while (uVar3 != uVar5);\n  }\n  return;\n}\n\n" (function_definition "void FUN_001bca30(undefined8 *param_1,long *param_2,int param_3)\n\n{\n  code *pcVar1;\n  long lVar2;\n  uint uVar3;\n  ulong uVar4;\n  uint uVar5;\n  long local_60;\n  undefined1 *local_58 [2];\n  undefined1 auStack_48 [24];\n  \n  pcVar1 = *(code **)(*param_2 + 0x118);\n  uVar5 = (int)(param_2[0x27] - param_2[0x26] >> 3) + (int)param_2[0x24];\n  if (pcVar1 == FUN_001550b0) {\n    uVar3 = (**(code **)(*param_2 + 0x178))();\n  }\n  else {\n    uVar3 = (*pcVar1)(param_2);\n  }\n  if (uVar3 < uVar5) {\n    do {\n      if (*(uint *)(param_2 + 0x24) <= uVar3) {\n        uVar4 = (ulong)(uVar3 - *(uint *)(param_2 + 0x24));\n        if ((ulong)(param_2[0x27] - param_2[0x26] >> 3) <= uVar4) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0017c650("../../gold/object.h",0x8ad,"global_symbol");\n        }\n        lVar2 = *(long *)(param_2[0x26] + uVar4 * 8);\n        if ((((lVar2 != 0) && ((*(byte *)(lVar2 + 0x3a) & 7) == 0)) &&\n            (param_2 == *(long **)(lVar2 + 0x10))) &&\n           (((param_3 == *(int *)(lVar2 + 0x18) && ((*(byte *)(lVar2 + 0x3b) & 0x20) != 0)) &&\n            (*(int *)(lVar2 + 0x18) != 0)))) {\n          local_60 = 0x10;\n          do {\n            putc(0x20,(FILE *)*param_1);\n            local_60 = local_60 + -1;\n          } while (local_60 != 0);\n          FUN_00272230(local_58,lVar2);\n                    /* try { // try from 001bcb4b to 001bcb4f has its CatchHandler @ 001bcba1 */\n          fprintf((FILE *)*param_1,"0x%0*llx                %s\n",0x10,*(undefined8 *)(lVar2 + 0x40)\n                  ,local_58[0]);\n          if (local_58[0] != auStack_48) {\n            FUN_002dac70();\n          }\n        }\n      }\n      uVar3 = uVar3 + 1;\n    } while (uVar3 != uVar5);\n  }\n  return;\n}" primitive_type (function_declarator "FUN_001bca30(undefined8 *param_1,long *param_2,int param_3)" identifier (parameter_list "(undefined8 *param_1,long *param_2,int param_3)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "long *param_2" (sized_type_specifier "long" long) (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  code *pcVar1;\n  long lVar2;\n  uint uVar3;\n  ulong uVar4;\n  uint uVar5;\n  long local_60;\n  undefined1 *local_58 [2];\n  undefined1 auStack_48 [24];\n  \n  pcVar1 = *(code **)(*param_2 + 0x118);\n  uVar5 = (int)(param_2[0x27] - param_2[0x26] >> 3) + (int)param_2[0x24];\n  if (pcVar1 == FUN_001550b0) {\n    uVar3 = (**(code **)(*param_2 + 0x178))();\n  }\n  else {\n    uVar3 = (*pcVar1)(param_2);\n  }\n  if (uVar3 < uVar5) {\n    do {\n      if (*(uint *)(param_2 + 0x24) <= uVar3) {\n        uVar4 = (ulong)(uVar3 - *(uint *)(param_2 + 0x24));\n        if ((ulong)(param_2[0x27] - param_2[0x26] >> 3) <= uVar4) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0017c650("../../gold/object.h",0x8ad,"global_symbol");\n        }\n        lVar2 = *(long *)(param_2[0x26] + uVar4 * 8);\n        if ((((lVar2 != 0) && ((*(byte *)(lVar2 + 0x3a) & 7) == 0)) &&\n            (param_2 == *(long **)(lVar2 + 0x10))) &&\n           (((param_3 == *(int *)(lVar2 + 0x18) && ((*(byte *)(lVar2 + 0x3b) & 0x20) != 0)) &&\n            (*(int *)(lVar2 + 0x18) != 0)))) {\n          local_60 = 0x10;\n          do {\n            putc(0x20,(FILE *)*param_1);\n            local_60 = local_60 + -1;\n          } while (local_60 != 0);\n          FUN_00272230(local_58,lVar2);\n                    /* try { // try from 001bcb4b to 001bcb4f has its CatchHandler @ 001bcba1 */\n          fprintf((FILE *)*param_1,"0x%0*llx                %s\n",0x10,*(undefined8 *)(lVar2 + 0x40)\n                  ,local_58[0]);\n          if (local_58[0] != auStack_48) {\n            FUN_002dac70();\n          }\n        }\n      }\n      uVar3 = uVar3 + 1;\n    } while (uVar3 != uVar5);\n  }\n  return;\n}" { (declaration "code *pcVar1;" type_identifier (pointer_declarator "*pcVar1" * identifier) ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "long local_60;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined1 *local_58 [2];" type_identifier (pointer_declarator "*local_58 [2]" * (array_declarator "local_58 [2]" identifier [ number_literal ])) ;) (declaration "undefined1 auStack_48 [24];" type_identifier (array_declarator "auStack_48 [24]" identifier [ number_literal ]) ;) (expression_statement "pcVar1 = *(code **)(*param_2 + 0x118);" (assignment_expression "pcVar1 = *(code **)(*param_2 + 0x118)" identifier = (pointer_expression "*(code **)(*param_2 + 0x118)" * (cast_expression "(code **)(*param_2 + 0x118)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x118)" ( (binary_expression "*param_2 + 0x118" (pointer_expression "*param_2" * identifier) + number_literal) ))))) ;) (expression_statement "uVar5 = (int)(param_2[0x27] - param_2[0x26] >> 3) + (int)param_2[0x24];" (assignment_expression "uVar5 = (int)(param_2[0x27] - param_2[0x26] >> 3) + (int)param_2[0x24]" identifier = (binary_expression "(int)(param_2[0x27] - param_2[0x26] >> 3) + (int)param_2[0x24]" (cast_expression "(int)(param_2[0x27] - param_2[0x26] >> 3)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(param_2[0x27] - param_2[0x26] >> 3)" ( (binary_expression "param_2[0x27] - param_2[0x26] >> 3" (binary_expression "param_2[0x27] - param_2[0x26]" (subscript_expression "param_2[0x27]" identifier [ number_literal ]) - (subscript_expression "param_2[0x26]" identifier [ number_literal ])) >> number_literal) ))) + (cast_expression "(int)param_2[0x24]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_2[0x24]" identifier [ number_literal ])))) ;) (if_statement "if (pcVar1 == FUN_001550b0) {\n    uVar3 = (**(code **)(*param_2 + 0x178))();\n  }\n  else {\n    uVar3 = (*pcVar1)(param_2);\n  }" if (parenthesized_expression "(pcVar1 == FUN_001550b0)" ( (binary_expression "pcVar1 == FUN_001550b0" identifier == identifier) )) (compound_statement "{\n    uVar3 = (**(code **)(*param_2 + 0x178))();\n  }" { (expression_statement "uVar3 = (**(code **)(*param_2 + 0x178))();" (assignment_expression "uVar3 = (**(code **)(*param_2 + 0x178))()" identifier = (call_expression "(**(code **)(*param_2 + 0x178))()" (parenthesized_expression "(**(code **)(*param_2 + 0x178))" ( (pointer_expression "**(code **)(*param_2 + 0x178)" * (pointer_expression "*(code **)(*param_2 + 0x178)" * (cast_expression "(code **)(*param_2 + 0x178)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x178)" ( (binary_expression "*param_2 + 0x178" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "()" ( )))) ;) }) (else_clause "else {\n    uVar3 = (*pcVar1)(param_2);\n  }" else (compound_statement "{\n    uVar3 = (*pcVar1)(param_2);\n  }" { (expression_statement "uVar3 = (*pcVar1)(param_2);" (assignment_expression "uVar3 = (*pcVar1)(param_2)" identifier = (call_expression "(*pcVar1)(param_2)" (parenthesized_expression "(*pcVar1)" ( (pointer_expression "*pcVar1" * identifier) )) (argument_list "(param_2)" ( identifier )))) ;) }))) (if_statement "if (uVar3 < uVar5) {\n    do {\n      if (*(uint *)(param_2 + 0x24) <= uVar3) {\n        uVar4 = (ulong)(uVar3 - *(uint *)(param_2 + 0x24));\n        if ((ulong)(param_2[0x27] - param_2[0x26] >> 3) <= uVar4) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0017c650("../../gold/object.h",0x8ad,"global_symbol");\n        }\n        lVar2 = *(long *)(param_2[0x26] + uVar4 * 8);\n        if ((((lVar2 != 0) && ((*(byte *)(lVar2 + 0x3a) & 7) == 0)) &&\n            (param_2 == *(long **)(lVar2 + 0x10))) &&\n           (((param_3 == *(int *)(lVar2 + 0x18) && ((*(byte *)(lVar2 + 0x3b) & 0x20) != 0)) &&\n            (*(int *)(lVar2 + 0x18) != 0)))) {\n          local_60 = 0x10;\n          do {\n            putc(0x20,(FILE *)*param_1);\n            local_60 = local_60 + -1;\n          } while (local_60 != 0);\n          FUN_00272230(local_58,lVar2);\n                    /* try { // try from 001bcb4b to 001bcb4f has its CatchHandler @ 001bcba1 */\n          fprintf((FILE *)*param_1,"0x%0*llx                %s\n",0x10,*(undefined8 *)(lVar2 + 0x40)\n                  ,local_58[0]);\n          if (local_58[0] != auStack_48) {\n            FUN_002dac70();\n          }\n        }\n      }\n      uVar3 = uVar3 + 1;\n    } while (uVar3 != uVar5);\n  }" if (parenthesized_expression "(uVar3 < uVar5)" ( (binary_expression "uVar3 < uVar5" identifier < identifier) )) (compound_statement "{\n    do {\n      if (*(uint *)(param_2 + 0x24) <= uVar3) {\n        uVar4 = (ulong)(uVar3 - *(uint *)(param_2 + 0x24));\n        if ((ulong)(param_2[0x27] - param_2[0x26] >> 3) <= uVar4) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0017c650("../../gold/object.h",0x8ad,"global_symbol");\n        }\n        lVar2 = *(long *)(param_2[0x26] + uVar4 * 8);\n        if ((((lVar2 != 0) && ((*(byte *)(lVar2 + 0x3a) & 7) == 0)) &&\n            (param_2 == *(long **)(lVar2 + 0x10))) &&\n           (((param_3 == *(int *)(lVar2 + 0x18) && ((*(byte *)(lVar2 + 0x3b) & 0x20) != 0)) &&\n            (*(int *)(lVar2 + 0x18) != 0)))) {\n          local_60 = 0x10;\n          do {\n            putc(0x20,(FILE *)*param_1);\n            local_60 = local_60 + -1;\n          } while (local_60 != 0);\n          FUN_00272230(local_58,lVar2);\n                    /* try { // try from 001bcb4b to 001bcb4f has its CatchHandler @ 001bcba1 */\n          fprintf((FILE *)*param_1,"0x%0*llx                %s\n",0x10,*(undefined8 *)(lVar2 + 0x40)\n                  ,local_58[0]);\n          if (local_58[0] != auStack_48) {\n            FUN_002dac70();\n          }\n        }\n      }\n      uVar3 = uVar3 + 1;\n    } while (uVar3 != uVar5);\n  }" { (do_statement "do {\n      if (*(uint *)(param_2 + 0x24) <= uVar3) {\n        uVar4 = (ulong)(uVar3 - *(uint *)(param_2 + 0x24));\n        if ((ulong)(param_2[0x27] - param_2[0x26] >> 3) <= uVar4) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0017c650("../../gold/object.h",0x8ad,"global_symbol");\n        }\n        lVar2 = *(long *)(param_2[0x26] + uVar4 * 8);\n        if ((((lVar2 != 0) && ((*(byte *)(lVar2 + 0x3a) & 7) == 0)) &&\n            (param_2 == *(long **)(lVar2 + 0x10))) &&\n           (((param_3 == *(int *)(lVar2 + 0x18) && ((*(byte *)(lVar2 + 0x3b) & 0x20) != 0)) &&\n            (*(int *)(lVar2 + 0x18) != 0)))) {\n          local_60 = 0x10;\n          do {\n            putc(0x20,(FILE *)*param_1);\n            local_60 = local_60 + -1;\n          } while (local_60 != 0);\n          FUN_00272230(local_58,lVar2);\n                    /* try { // try from 001bcb4b to 001bcb4f has its CatchHandler @ 001bcba1 */\n          fprintf((FILE *)*param_1,"0x%0*llx                %s\n",0x10,*(undefined8 *)(lVar2 + 0x40)\n                  ,local_58[0]);\n          if (local_58[0] != auStack_48) {\n            FUN_002dac70();\n          }\n        }\n      }\n      uVar3 = uVar3 + 1;\n    } while (uVar3 != uVar5);" do (compound_statement "{\n      if (*(uint *)(param_2 + 0x24) <= uVar3) {\n        uVar4 = (ulong)(uVar3 - *(uint *)(param_2 + 0x24));\n        if ((ulong)(param_2[0x27] - param_2[0x26] >> 3) <= uVar4) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0017c650("../../gold/object.h",0x8ad,"global_symbol");\n        }\n        lVar2 = *(long *)(param_2[0x26] + uVar4 * 8);\n        if ((((lVar2 != 0) && ((*(byte *)(lVar2 + 0x3a) & 7) == 0)) &&\n            (param_2 == *(long **)(lVar2 + 0x10))) &&\n           (((param_3 == *(int *)(lVar2 + 0x18) && ((*(byte *)(lVar2 + 0x3b) & 0x20) != 0)) &&\n            (*(int *)(lVar2 + 0x18) != 0)))) {\n          local_60 = 0x10;\n          do {\n            putc(0x20,(FILE *)*param_1);\n            local_60 = local_60 + -1;\n          } while (local_60 != 0);\n          FUN_00272230(local_58,lVar2);\n                    /* try { // try from 001bcb4b to 001bcb4f has its CatchHandler @ 001bcba1 */\n          fprintf((FILE *)*param_1,"0x%0*llx                %s\n",0x10,*(undefined8 *)(lVar2 + 0x40)\n                  ,local_58[0]);\n          if (local_58[0] != auStack_48) {\n            FUN_002dac70();\n          }\n        }\n      }\n      uVar3 = uVar3 + 1;\n    }" { (if_statement "if (*(uint *)(param_2 + 0x24) <= uVar3) {\n        uVar4 = (ulong)(uVar3 - *(uint *)(param_2 + 0x24));\n        if ((ulong)(param_2[0x27] - param_2[0x26] >> 3) <= uVar4) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0017c650("../../gold/object.h",0x8ad,"global_symbol");\n        }\n        lVar2 = *(long *)(param_2[0x26] + uVar4 * 8);\n        if ((((lVar2 != 0) && ((*(byte *)(lVar2 + 0x3a) & 7) == 0)) &&\n            (param_2 == *(long **)(lVar2 + 0x10))) &&\n           (((param_3 == *(int *)(lVar2 + 0x18) && ((*(byte *)(lVar2 + 0x3b) & 0x20) != 0)) &&\n            (*(int *)(lVar2 + 0x18) != 0)))) {\n          local_60 = 0x10;\n          do {\n            putc(0x20,(FILE *)*param_1);\n            local_60 = local_60 + -1;\n          } while (local_60 != 0);\n          FUN_00272230(local_58,lVar2);\n                    /* try { // try from 001bcb4b to 001bcb4f has its CatchHandler @ 001bcba1 */\n          fprintf((FILE *)*param_1,"0x%0*llx                %s\n",0x10,*(undefined8 *)(lVar2 + 0x40)\n                  ,local_58[0]);\n          if (local_58[0] != auStack_48) {\n            FUN_002dac70();\n          }\n        }\n      }" if (parenthesized_expression "(*(uint *)(param_2 + 0x24) <= uVar3)" ( (binary_expression "*(uint *)(param_2 + 0x24) <= uVar3" (pointer_expression "*(uint *)(param_2 + 0x24)" * (cast_expression "(uint *)(param_2 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x24)" ( (binary_expression "param_2 + 0x24" identifier + number_literal) )))) <= identifier) )) (compound_statement "{\n        uVar4 = (ulong)(uVar3 - *(uint *)(param_2 + 0x24));\n        if ((ulong)(param_2[0x27] - param_2[0x26] >> 3) <= uVar4) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0017c650("../../gold/object.h",0x8ad,"global_symbol");\n        }\n        lVar2 = *(long *)(param_2[0x26] + uVar4 * 8);\n        if ((((lVar2 != 0) && ((*(byte *)(lVar2 + 0x3a) & 7) == 0)) &&\n            (param_2 == *(long **)(lVar2 + 0x10))) &&\n           (((param_3 == *(int *)(lVar2 + 0x18) && ((*(byte *)(lVar2 + 0x3b) & 0x20) != 0)) &&\n            (*(int *)(lVar2 + 0x18) != 0)))) {\n          local_60 = 0x10;\n          do {\n            putc(0x20,(FILE *)*param_1);\n            local_60 = local_60 + -1;\n          } while (local_60 != 0);\n          FUN_00272230(local_58,lVar2);\n                    /* try { // try from 001bcb4b to 001bcb4f has its CatchHandler @ 001bcba1 */\n          fprintf((FILE *)*param_1,"0x%0*llx                %s\n",0x10,*(undefined8 *)(lVar2 + 0x40)\n                  ,local_58[0]);\n          if (local_58[0] != auStack_48) {\n            FUN_002dac70();\n          }\n        }\n      }" { (expression_statement "uVar4 = (ulong)(uVar3 - *(uint *)(param_2 + 0x24));" (assignment_expression "uVar4 = (ulong)(uVar3 - *(uint *)(param_2 + 0x24))" identifier = (call_expression "(ulong)(uVar3 - *(uint *)(param_2 + 0x24))" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar3 - *(uint *)(param_2 + 0x24))" ( (binary_expression "uVar3 - *(uint *)(param_2 + 0x24)" identifier - (pointer_expression "*(uint *)(param_2 + 0x24)" * (cast_expression "(uint *)(param_2 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x24)" ( (binary_expression "param_2 + 0x24" identifier + number_literal) ))))) )))) ;) (if_statement "if ((ulong)(param_2[0x27] - param_2[0x26] >> 3) <= uVar4) {\n                    /* WARNING: Subroutine does not return */\n          FUN_0017c650("../../gold/object.h",0x8ad,"global_symbol");\n        }" if (parenthesized_expression "((ulong)(param_2[0x27] - param_2[0x26] >> 3) <= uVar4)" ( (binary_expression "(ulong)(param_2[0x27] - param_2[0x26] >> 3) <= uVar4" (call_expression "(ulong)(param_2[0x27] - param_2[0x26] >> 3)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(param_2[0x27] - param_2[0x26] >> 3)" ( (binary_expression "param_2[0x27] - param_2[0x26] >> 3" (binary_expression "param_2[0x27] - param_2[0x26]" (subscript_expression "param_2[0x27]" identifier [ number_literal ]) - (subscript_expression "param_2[0x26]" identifier [ number_literal ])) >> number_literal) ))) <= identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n          FUN_0017c650("../../gold/object.h",0x8ad,"global_symbol");\n        }" { comment (expression_statement "FUN_0017c650("../../gold/object.h",0x8ad,"global_symbol");" (call_expression "FUN_0017c650("../../gold/object.h",0x8ad,"global_symbol")" identifier (argument_list "("../../gold/object.h",0x8ad,"global_symbol")" ( (string_literal ""../../gold/object.h"" " string_content ") , number_literal , (string_literal ""global_symbol"" " string_content ") ))) ;) })) (expression_statement "lVar2 = *(long *)(param_2[0x26] + uVar4 * 8);" (assignment_expression "lVar2 = *(long *)(param_2[0x26] + uVar4 * 8)" identifier = (pointer_expression "*(long *)(param_2[0x26] + uVar4 * 8)" * (cast_expression "(long *)(param_2[0x26] + uVar4 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0x26] + uVar4 * 8)" ( (binary_expression "param_2[0x26] + uVar4 * 8" (subscript_expression "param_2[0x26]" identifier [ number_literal ]) + (binary_expression "uVar4 * 8" identifier * number_literal)) ))))) ;) (if_statement "if ((((lVar2 != 0) && ((*(byte *)(lVar2 + 0x3a) & 7) == 0)) &&\n            (param_2 == *(long **)(lVar2 + 0x10))) &&\n           (((param_3 == *(int *)(lVar2 + 0x18) && ((*(byte *)(lVar2 + 0x3b) & 0x20) != 0)) &&\n            (*(int *)(lVar2 + 0x18) != 0)))) {\n          local_60 = 0x10;\n          do {\n            putc(0x20,(FILE *)*param_1);\n            local_60 = local_60 + -1;\n          } while (local_60 != 0);\n          FUN_00272230(local_58,lVar2);\n                    /* try { // try from 001bcb4b to 001bcb4f has its CatchHandler @ 001bcba1 */\n          fprintf((FILE *)*param_1,"0x%0*llx                %s\n",0x10,*(undefined8 *)(lVar2 + 0x40)\n                  ,local_58[0]);\n          if (local_58[0] != auStack_48) {\n            FUN_002dac70();\n          }\n        }" if (parenthesized_expression "((((lVar2 != 0) && ((*(byte *)(lVar2 + 0x3a) & 7) == 0)) &&\n            (param_2 == *(long **)(lVar2 + 0x10))) &&\n           (((param_3 == *(int *)(lVar2 + 0x18) && ((*(byte *)(lVar2 + 0x3b) & 0x20) != 0)) &&\n            (*(int *)(lVar2 + 0x18) != 0))))" ( (binary_expression "(((lVar2 != 0) && ((*(byte *)(lVar2 + 0x3a) & 7) == 0)) &&\n            (param_2 == *(long **)(lVar2 + 0x10))) &&\n           (((param_3 == *(int *)(lVar2 + 0x18) && ((*(byte *)(lVar2 + 0x3b) & 0x20) != 0)) &&\n            (*(int *)(lVar2 + 0x18) != 0)))" (parenthesized_expression "(((lVar2 != 0) && ((*(byte *)(lVar2 + 0x3a) & 7) == 0)) &&\n            (param_2 == *(long **)(lVar2 + 0x10)))" ( (binary_expression "((lVar2 != 0) && ((*(byte *)(lVar2 + 0x3a) & 7) == 0)) &&\n            (param_2 == *(long **)(lVar2 + 0x10))" (parenthesized_expression "((lVar2 != 0) && ((*(byte *)(lVar2 + 0x3a) & 7) == 0))" ( (binary_expression "(lVar2 != 0) && ((*(byte *)(lVar2 + 0x3a) & 7) == 0)" (parenthesized_expression "(lVar2 != 0)" ( (binary_expression "lVar2 != 0" identifier != number_literal) )) && (parenthesized_expression "((*(byte *)(lVar2 + 0x3a) & 7) == 0)" ( (binary_expression "(*(byte *)(lVar2 + 0x3a) & 7) == 0" (parenthesized_expression "(*(byte *)(lVar2 + 0x3a) & 7)" ( (binary_expression "*(byte *)(lVar2 + 0x3a) & 7" (pointer_expression "*(byte *)(lVar2 + 0x3a)" * (cast_expression "(byte *)(lVar2 + 0x3a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x3a)" ( (binary_expression "lVar2 + 0x3a" identifier + number_literal) )))) & number_literal) )) == number_literal) ))) )) && (parenthesized_expression "(param_2 == *(long **)(lVar2 + 0x10))" ( (binary_expression "param_2 == *(long **)(lVar2 + 0x10)" identifier == (pointer_expression "*(long **)(lVar2 + 0x10)" * (cast_expression "(long **)(lVar2 + 0x10)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar2 + 0x10)" ( (binary_expression "lVar2 + 0x10" identifier + number_literal) ))))) ))) )) && (parenthesized_expression "(((param_3 == *(int *)(lVar2 + 0x18) && ((*(byte *)(lVar2 + 0x3b) & 0x20) != 0)) &&\n            (*(int *)(lVar2 + 0x18) != 0)))" ( (parenthesized_expression "((param_3 == *(int *)(lVar2 + 0x18) && ((*(byte *)(lVar2 + 0x3b) & 0x20) != 0)) &&\n            (*(int *)(lVar2 + 0x18) != 0))" ( (binary_expression "(param_3 == *(int *)(lVar2 + 0x18) && ((*(byte *)(lVar2 + 0x3b) & 0x20) != 0)) &&\n            (*(int *)(lVar2 + 0x18) != 0)" (parenthesized_expression "(param_3 == *(int *)(lVar2 + 0x18) && ((*(byte *)(lVar2 + 0x3b) & 0x20) != 0))" ( (binary_expression "param_3 == *(int *)(lVar2 + 0x18) && ((*(byte *)(lVar2 + 0x3b) & 0x20) != 0)" (binary_expression "param_3 == *(int *)(lVar2 + 0x18)" identifier == (pointer_expression "*(int *)(lVar2 + 0x18)" * (cast_expression "(int *)(lVar2 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x18)" ( (binary_expression "lVar2 + 0x18" identifier + number_literal) ))))) && (parenthesized_expression "((*(byte *)(lVar2 + 0x3b) & 0x20) != 0)" ( (binary_expression "(*(byte *)(lVar2 + 0x3b) & 0x20) != 0" (parenthesized_expression "(*(byte *)(lVar2 + 0x3b) & 0x20)" ( (binary_expression "*(byte *)(lVar2 + 0x3b) & 0x20" (pointer_expression "*(byte *)(lVar2 + 0x3b)" * (cast_expression "(byte *)(lVar2 + 0x3b)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x3b)" ( (binary_expression "lVar2 + 0x3b" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) && (parenthesized_expression "(*(int *)(lVar2 + 0x18) != 0)" ( (binary_expression "*(int *)(lVar2 + 0x18) != 0" (pointer_expression "*(int *)(lVar2 + 0x18)" * (cast_expression "(int *)(lVar2 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x18)" ( (binary_expression "lVar2 + 0x18" identifier + number_literal) )))) != number_literal) ))) )) ))) )) (compound_statement "{\n          local_60 = 0x10;\n          do {\n            putc(0x20,(FILE *)*param_1);\n            local_60 = local_60 + -1;\n          } while (local_60 != 0);\n          FUN_00272230(local_58,lVar2);\n                    /* try { // try from 001bcb4b to 001bcb4f has its CatchHandler @ 001bcba1 */\n          fprintf((FILE *)*param_1,"0x%0*llx                %s\n",0x10,*(undefined8 *)(lVar2 + 0x40)\n                  ,local_58[0]);\n          if (local_58[0] != auStack_48) {\n            FUN_002dac70();\n          }\n        }" { (expression_statement "local_60 = 0x10;" (assignment_expression "local_60 = 0x10" identifier = number_literal) ;) (do_statement "do {\n            putc(0x20,(FILE *)*param_1);\n            local_60 = local_60 + -1;\n          } while (local_60 != 0);" do (compound_statement "{\n            putc(0x20,(FILE *)*param_1);\n            local_60 = local_60 + -1;\n          }" { (expression_statement "putc(0x20,(FILE *)*param_1);" (call_expression "putc(0x20,(FILE *)*param_1)" identifier (argument_list "(0x20,(FILE *)*param_1)" ( number_literal , (cast_expression "(FILE *)*param_1" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier)) ))) ;) (expression_statement "local_60 = local_60 + -1;" (assignment_expression "local_60 = local_60 + -1" identifier = (binary_expression "local_60 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_60 != 0)" ( (binary_expression "local_60 != 0" identifier != number_literal) )) ;) (expression_statement "FUN_00272230(local_58,lVar2);" (call_expression "FUN_00272230(local_58,lVar2)" identifier (argument_list "(local_58,lVar2)" ( identifier , identifier ))) ;) comment (expression_statement "fprintf((FILE *)*param_1,"0x%0*llx                %s\n",0x10,*(undefined8 *)(lVar2 + 0x40)\n                  ,local_58[0]);" (call_expression "fprintf((FILE *)*param_1,"0x%0*llx                %s\n",0x10,*(undefined8 *)(lVar2 + 0x40)\n                  ,local_58[0])" identifier (argument_list "((FILE *)*param_1,"0x%0*llx                %s\n",0x10,*(undefined8 *)(lVar2 + 0x40)\n                  ,local_58[0])" ( (cast_expression "(FILE *)*param_1" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier)) , (string_literal ""0x%0*llx                %s\n"" " string_content escape_sequence ") , number_literal , (pointer_expression "*(undefined8 *)(lVar2 + 0x40)" * (cast_expression "(undefined8 *)(lVar2 + 0x40)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x40)" ( (binary_expression "lVar2 + 0x40" identifier + number_literal) )))) , (subscript_expression "local_58[0]" identifier [ number_literal ]) ))) ;) (if_statement "if (local_58[0] != auStack_48) {\n            FUN_002dac70();\n          }" if (parenthesized_expression "(local_58[0] != auStack_48)" ( (binary_expression "local_58[0] != auStack_48" (subscript_expression "local_58[0]" identifier [ number_literal ]) != identifier) )) (compound_statement "{\n            FUN_002dac70();\n          }" { (expression_statement "FUN_002dac70();" (call_expression "FUN_002dac70()" identifier (argument_list "()" ( ))) ;) })) })) })) (expression_statement "uVar3 = uVar3 + 1;" (assignment_expression "uVar3 = uVar3 + 1" identifier = (binary_expression "uVar3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar3 != uVar5)" ( (binary_expression "uVar3 != uVar5" identifier != identifier) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit "/* DWARF original name: print_input_section_symbols<64, false>\n   DWARF original prototype: void print_input_section_symbols<64,_false>(Mapfile * this,\n   Sized_relobj_file<64,_false> * relobj, uint shndx) */\n\nvoid __thiscall\ngold::Mapfile::print_input_section_symbols<64,_false>\n          (Mapfile *this,Sized_relobj_file<64,_false> *relobj,uint shndx)\n\n{\n  _func_int_varargs **pp_Var1;\n  _func_int_varargs *p_Var2;\n  pointer ppSVar3;\n  Symbol *this_00;\n  uint uVar4;\n  ulong uVar5;\n  uint uVar6;\n  long local_60;\n  string local_58;\n  \n  pp_Var1 = (relobj->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object;\n  p_Var2 = pp_Var1[0x23];\n  uVar6 = (int)((long)(relobj->symbols_).\n                      super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                      _M_finish -\n                (long)(relobj->symbols_).\n                      super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                      _M_start >> 3) + relobj->local_symbol_count_;\n  if (p_Var2 == Relobj::local_symbol_count) {\n    uVar4 = (*pp_Var1[0x2f])();\n  }\n  else {\n    uVar4 = (*p_Var2)(relobj);\n  }\n  if (uVar4 < uVar6) {\n    do {\n      if (relobj->local_symbol_count_ <= uVar4) {\n        ppSVar3 = (relobj->symbols_).\n                  super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl._M_start\n        ;\n        uVar5 = (ulong)(uVar4 - relobj->local_symbol_count_);\n        if ((ulong)((long)(relobj->symbols_).\n                          super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                          _M_finish - (long)ppSVar3 >> 3) <= uVar5) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/object.h",0x8ad,"global_symbol");\n        }\n        this_00 = ppSVar3[uVar5];\n        if ((((this_00 != (Symbol *)0x0) && ((this_00->field_0x3a & 7) == 0)) &&\n            (relobj == (Sized_relobj_file<64,_false> *)(this_00->u1_).object)) &&\n           (((shndx == (this_00->u2_).shndx && ((this_00->field_0x3b & 0x20) != 0)) &&\n            ((this_00->u2_).shndx != 0)))) {\n          local_60 = 0x10;\n          do {\n            putc(0x20,(FILE *)this->map_file_);\n            local_60 = local_60 + -1;\n          } while (local_60 != 0);\n          Symbol::demangled_name(&local_58,this_00);\n                    /* try { // try from 001bcb4b to 001bcb4f has its CatchHandler @ 001bcba1 */\n          fprintf((FILE *)this->map_file_,"0x%0*llx                %s\n",0x10,this_00[1].name_,\n                  local_58._M_dataplus._M_p);\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)local_58._M_dataplus._M_p != &local_58.field_2) {\n            operator_delete(local_58._M_dataplus._M_p);\n          }\n        }\n      }\n      uVar4 = uVar4 + 1;\n    } while (uVar4 != uVar6);\n  }\n  return;\n}\n\n" comment (declaration "void __thiscall\ngold::Mapfile::print_input_section_symbols<64,_false>\n          (Mapfile *this,Sized_relobj_file<64,_false> *relobj,uint shndx)\n\n{\n  _func_int_varargs **pp_Var1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Mapfile::" identifier : : identifier : :) identifier (ERROR "<64" < number_literal) , (ERROR "_false>\n          (Mapfile *this,Sized_relobj_file<64,_false> *relobj,uint shndx)\n\n{\n  _func_int_varargs" (function_declarator "_false>\n          (Mapfile *this,Sized_relobj_file<64,_false> *relobj,uint shndx)" identifier (ERROR ">" >) (parameter_list "(Mapfile *this,Sized_relobj_file<64,_false> *relobj,uint shndx)" ( (parameter_declaration "Mapfile *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Sized_relobj_file" type_identifier) (ERROR "<64" < number_literal) , (parameter_declaration "_false> *relobj" type_identifier (ERROR ">" >) (pointer_declarator "*relobj" * identifier)) , (parameter_declaration "uint shndx" type_identifier identifier) ))) { identifier) (pointer_declarator "**pp_Var1" * (pointer_declarator "*pp_Var1" * identifier)) ;) (declaration "_func_int_varargs *p_Var2;" type_identifier (pointer_declarator "*p_Var2" * identifier) ;) (declaration "pointer ppSVar3;" type_identifier identifier ;) (declaration "Symbol *this_00;" type_identifier (pointer_declarator "*this_00" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "ulong uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "long local_60;" (sized_type_specifier "long" long) identifier ;) (declaration "string local_58;" type_identifier identifier ;) (expression_statement "pp_Var1 = (relobj->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object;" (assignment_expression "pp_Var1 = (relobj->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object" identifier = (field_expression "(relobj->super_Sized_relobj<64,_false>).super_Relobj.super_Object._vptr_Object" (field_expression "(relobj->super_Sized_relobj<64,_false>).super_Relobj.super_Object" (field_expression "(relobj->super_Sized_relobj<64,_false>).super_Relobj" (parenthesized_expression "(relobj->super_Sized_relobj<64,_false>)" ( (comma_expression "relobj->super_Sized_relobj<64,_false" (binary_expression "relobj->super_Sized_relobj<64" (field_expression "relobj->super_Sized_relobj" identifier -> field_identifier) < number_literal) , identifier) (ERROR ">" >) )) . field_identifier) . field_identifier) . field_identifier)) ;) (expression_statement "p_Var2 = pp_Var1[0x23];" (assignment_expression "p_Var2 = pp_Var1[0x23]" identifier = (subscript_expression "pp_Var1[0x23]" identifier [ number_literal ])) ;) (expression_statement "uVar6 = (int)((long)(relobj->symbols_).\n                      super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                      _M_finish -\n                (long)(relobj->symbols_).\n                      super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                      _M_start >> 3) + relobj->local_symbol_count_;" (assignment_expression "uVar6 = (int)((long)(relobj->symbols_).\n                      super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                      _M_finish -\n                (long)(relobj->symbols_).\n                      super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                      _M_start >> 3) + relobj->local_symbol_count_" identifier = (binary_expression "(int)((long)(relobj->symbols_).\n                      super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                      _M_finish -\n                (long)(relobj->symbols_).\n                      super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                      _M_start >> 3) + relobj->local_symbol_count_" (cast_expression "(int)((long)(relobj->symbols_).\n                      super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                      _M_finish -\n                (long)(relobj->symbols_).\n                      super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                      _M_start >> 3)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((long)(relobj->symbols_).\n                      super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                      _M_finish -\n                (long)(relobj->symbols_).\n                      super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                      _M_start >> 3)" ( (binary_expression "(long)(relobj->symbols_).\n                      super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                      _M_finish -\n                (long)(relobj->symbols_).\n                      super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                      _M_start >> 3" (field_expression "(long)(relobj->symbols_).\n                      super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                      _M_finish -\n                (long)(relobj->symbols_).\n                      super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                      _M_start" (field_expression "(long)(relobj->symbols_).\n                      super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                      _M_finish -\n                (long)(relobj->symbols_).\n                      super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl" (binary_expression "(long)(relobj->symbols_).\n                      super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                      _M_finish -\n                (long)(relobj->symbols_).\n                      super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_" (binary_expression "(long)(relobj->symbols_).\n                      super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                      _M_finish -\n                (long)(relobj->symbols_).\n                      super__Vector_base<gold::Symbol*,_std::allocator<gold" (binary_expression "(long)(relobj->symbols_).\n                      super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                      _M_finish -\n                (long)(relobj->symbols_).\n                      super__Vector_base<gold::Symbol*,_std" (binary_expression "(long)(relobj->symbols_).\n                      super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                      _M_finish -\n                (long)(relobj->symbols_).\n                      super__Vector_base<gold" (binary_expression "(long)(relobj->symbols_).\n                      super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                      _M_finish -\n                (long)(relobj->symbols_).\n                      super__Vector_base" (field_expression "(long)(relobj->symbols_).\n                      super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                      _M_finish" (field_expression "(long)(relobj->symbols_).\n                      super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl" (binary_expression "(long)(relobj->symbols_).\n                      super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_" (binary_expression "(long)(relobj->symbols_).\n                      super__Vector_base<gold::Symbol*,_std::allocator<gold" (binary_expression "(long)(relobj->symbols_).\n                      super__Vector_base<gold::Symbol*,_std" (binary_expression "(long)(relobj->symbols_).\n                      super__Vector_base<gold" (cast_expression "(long)(relobj->symbols_).\n                      super__Vector_base" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "(relobj->symbols_).\n                      super__Vector_base" (parenthesized_expression "(relobj->symbols_)" ( (field_expression "relobj->symbols_" identifier -> field_identifier) )) . field_identifier)) < identifier) (ERROR "::Symbol" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Symbol" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) - (cast_expression "(long)(relobj->symbols_).\n                      super__Vector_base" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "(relobj->symbols_).\n                      super__Vector_base" (parenthesized_expression "(relobj->symbols_)" ( (field_expression "relobj->symbols_" identifier -> field_identifier) )) . field_identifier))) < identifier) (ERROR "::Symbol" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Symbol" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) >> number_literal) ))) + (field_expression "relobj->local_symbol_count_" identifier -> field_identifier))) ;) (if_statement "if (p_Var2 == Relobj::local_symbol_count) {\n    uVar4 = (*pp_Var1[0x2f])();\n  }\n  else {\n    uVar4 = (*p_Var2)(relobj);\n  }" if (parenthesized_expression "(p_Var2 == Relobj::local_symbol_count)" ( (ERROR "p_Var2 == Relobj::" (binary_expression "p_Var2 == Relobj" identifier == identifier) : :) identifier )) (compound_statement "{\n    uVar4 = (*pp_Var1[0x2f])();\n  }" { (expression_statement "uVar4 = (*pp_Var1[0x2f])();" (assignment_expression "uVar4 = (*pp_Var1[0x2f])()" identifier = (call_expression "(*pp_Var1[0x2f])()" (parenthesized_expression "(*pp_Var1[0x2f])" ( (pointer_expression "*pp_Var1[0x2f]" * (subscript_expression "pp_Var1[0x2f]" identifier [ number_literal ])) )) (argument_list "()" ( )))) ;) }) (else_clause "else {\n    uVar4 = (*p_Var2)(relobj);\n  }" else (compound_statement "{\n    uVar4 = (*p_Var2)(relobj);\n  }" { (expression_statement "uVar4 = (*p_Var2)(relobj);" (assignment_expression "uVar4 = (*p_Var2)(relobj)" identifier = (call_expression "(*p_Var2)(relobj)" (parenthesized_expression "(*p_Var2)" ( (pointer_expression "*p_Var2" * identifier) )) (argument_list "(relobj)" ( identifier )))) ;) }))) (if_statement "if (uVar4 < uVar6) {\n    do {\n      if (relobj->local_symbol_count_ <= uVar4) {\n        ppSVar3 = (relobj->symbols_).\n                  super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl._M_start\n        ;\n        uVar5 = (ulong)(uVar4 - relobj->local_symbol_count_);\n        if ((ulong)((long)(relobj->symbols_).\n                          super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                          _M_finish - (long)ppSVar3 >> 3) <= uVar5) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/object.h",0x8ad,"global_symbol");\n        }\n        this_00 = ppSVar3[uVar5];\n        if ((((this_00 != (Symbol *)0x0) && ((this_00->field_0x3a & 7) == 0)) &&\n            (relobj == (Sized_relobj_file<64,_false> *)(this_00->u1_).object)) &&\n           (((shndx == (this_00->u2_).shndx && ((this_00->field_0x3b & 0x20) != 0)) &&\n            ((this_00->u2_).shndx != 0)))) {\n          local_60 = 0x10;\n          do {\n            putc(0x20,(FILE *)this->map_file_);\n            local_60 = local_60 + -1;\n          } while (local_60 != 0);\n          Symbol::demangled_name(&local_58,this_00);\n                    /* try { // try from 001bcb4b to 001bcb4f has its CatchHandler @ 001bcba1 */\n          fprintf((FILE *)this->map_file_,"0x%0*llx                %s\n",0x10,this_00[1].name_,\n                  local_58._M_dataplus._M_p);\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)local_58._M_dataplus._M_p != &local_58.field_2) {\n            operator_delete(local_58._M_dataplus._M_p);\n          }\n        }\n      }\n      uVar4 = uVar4 + 1;\n    } while (uVar4 != uVar6);\n  }" if (parenthesized_expression "(uVar4 < uVar6)" ( (binary_expression "uVar4 < uVar6" identifier < identifier) )) (compound_statement "{\n    do {\n      if (relobj->local_symbol_count_ <= uVar4) {\n        ppSVar3 = (relobj->symbols_).\n                  super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl._M_start\n        ;\n        uVar5 = (ulong)(uVar4 - relobj->local_symbol_count_);\n        if ((ulong)((long)(relobj->symbols_).\n                          super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                          _M_finish - (long)ppSVar3 >> 3) <= uVar5) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/object.h",0x8ad,"global_symbol");\n        }\n        this_00 = ppSVar3[uVar5];\n        if ((((this_00 != (Symbol *)0x0) && ((this_00->field_0x3a & 7) == 0)) &&\n            (relobj == (Sized_relobj_file<64,_false> *)(this_00->u1_).object)) &&\n           (((shndx == (this_00->u2_).shndx && ((this_00->field_0x3b & 0x20) != 0)) &&\n            ((this_00->u2_).shndx != 0)))) {\n          local_60 = 0x10;\n          do {\n            putc(0x20,(FILE *)this->map_file_);\n            local_60 = local_60 + -1;\n          } while (local_60 != 0);\n          Symbol::demangled_name(&local_58,this_00);\n                    /* try { // try from 001bcb4b to 001bcb4f has its CatchHandler @ 001bcba1 */\n          fprintf((FILE *)this->map_file_,"0x%0*llx                %s\n",0x10,this_00[1].name_,\n                  local_58._M_dataplus._M_p);\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)local_58._M_dataplus._M_p != &local_58.field_2) {\n            operator_delete(local_58._M_dataplus._M_p);\n          }\n        }\n      }\n      uVar4 = uVar4 + 1;\n    } while (uVar4 != uVar6);\n  }" { (do_statement "do {\n      if (relobj->local_symbol_count_ <= uVar4) {\n        ppSVar3 = (relobj->symbols_).\n                  super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl._M_start\n        ;\n        uVar5 = (ulong)(uVar4 - relobj->local_symbol_count_);\n        if ((ulong)((long)(relobj->symbols_).\n                          super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                          _M_finish - (long)ppSVar3 >> 3) <= uVar5) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/object.h",0x8ad,"global_symbol");\n        }\n        this_00 = ppSVar3[uVar5];\n        if ((((this_00 != (Symbol *)0x0) && ((this_00->field_0x3a & 7) == 0)) &&\n            (relobj == (Sized_relobj_file<64,_false> *)(this_00->u1_).object)) &&\n           (((shndx == (this_00->u2_).shndx && ((this_00->field_0x3b & 0x20) != 0)) &&\n            ((this_00->u2_).shndx != 0)))) {\n          local_60 = 0x10;\n          do {\n            putc(0x20,(FILE *)this->map_file_);\n            local_60 = local_60 + -1;\n          } while (local_60 != 0);\n          Symbol::demangled_name(&local_58,this_00);\n                    /* try { // try from 001bcb4b to 001bcb4f has its CatchHandler @ 001bcba1 */\n          fprintf((FILE *)this->map_file_,"0x%0*llx                %s\n",0x10,this_00[1].name_,\n                  local_58._M_dataplus._M_p);\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)local_58._M_dataplus._M_p != &local_58.field_2) {\n            operator_delete(local_58._M_dataplus._M_p);\n          }\n        }\n      }\n      uVar4 = uVar4 + 1;\n    } while (uVar4 != uVar6);" do (compound_statement "{\n      if (relobj->local_symbol_count_ <= uVar4) {\n        ppSVar3 = (relobj->symbols_).\n                  super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl._M_start\n        ;\n        uVar5 = (ulong)(uVar4 - relobj->local_symbol_count_);\n        if ((ulong)((long)(relobj->symbols_).\n                          super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                          _M_finish - (long)ppSVar3 >> 3) <= uVar5) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/object.h",0x8ad,"global_symbol");\n        }\n        this_00 = ppSVar3[uVar5];\n        if ((((this_00 != (Symbol *)0x0) && ((this_00->field_0x3a & 7) == 0)) &&\n            (relobj == (Sized_relobj_file<64,_false> *)(this_00->u1_).object)) &&\n           (((shndx == (this_00->u2_).shndx && ((this_00->field_0x3b & 0x20) != 0)) &&\n            ((this_00->u2_).shndx != 0)))) {\n          local_60 = 0x10;\n          do {\n            putc(0x20,(FILE *)this->map_file_);\n            local_60 = local_60 + -1;\n          } while (local_60 != 0);\n          Symbol::demangled_name(&local_58,this_00);\n                    /* try { // try from 001bcb4b to 001bcb4f has its CatchHandler @ 001bcba1 */\n          fprintf((FILE *)this->map_file_,"0x%0*llx                %s\n",0x10,this_00[1].name_,\n                  local_58._M_dataplus._M_p);\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)local_58._M_dataplus._M_p != &local_58.field_2) {\n            operator_delete(local_58._M_dataplus._M_p);\n          }\n        }\n      }\n      uVar4 = uVar4 + 1;\n    }" { (if_statement "if (relobj->local_symbol_count_ <= uVar4) {\n        ppSVar3 = (relobj->symbols_).\n                  super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl._M_start\n        ;\n        uVar5 = (ulong)(uVar4 - relobj->local_symbol_count_);\n        if ((ulong)((long)(relobj->symbols_).\n                          super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                          _M_finish - (long)ppSVar3 >> 3) <= uVar5) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/object.h",0x8ad,"global_symbol");\n        }\n        this_00 = ppSVar3[uVar5];\n        if ((((this_00 != (Symbol *)0x0) && ((this_00->field_0x3a & 7) == 0)) &&\n            (relobj == (Sized_relobj_file<64,_false> *)(this_00->u1_).object)) &&\n           (((shndx == (this_00->u2_).shndx && ((this_00->field_0x3b & 0x20) != 0)) &&\n            ((this_00->u2_).shndx != 0)))) {\n          local_60 = 0x10;\n          do {\n            putc(0x20,(FILE *)this->map_file_);\n            local_60 = local_60 + -1;\n          } while (local_60 != 0);\n          Symbol::demangled_name(&local_58,this_00);\n                    /* try { // try from 001bcb4b to 001bcb4f has its CatchHandler @ 001bcba1 */\n          fprintf((FILE *)this->map_file_,"0x%0*llx                %s\n",0x10,this_00[1].name_,\n                  local_58._M_dataplus._M_p);\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)local_58._M_dataplus._M_p != &local_58.field_2) {\n            operator_delete(local_58._M_dataplus._M_p);\n          }\n        }\n      }" if (parenthesized_expression "(relobj->local_symbol_count_ <= uVar4)" ( (binary_expression "relobj->local_symbol_count_ <= uVar4" (field_expression "relobj->local_symbol_count_" identifier -> field_identifier) <= identifier) )) (compound_statement "{\n        ppSVar3 = (relobj->symbols_).\n                  super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl._M_start\n        ;\n        uVar5 = (ulong)(uVar4 - relobj->local_symbol_count_);\n        if ((ulong)((long)(relobj->symbols_).\n                          super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                          _M_finish - (long)ppSVar3 >> 3) <= uVar5) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/object.h",0x8ad,"global_symbol");\n        }\n        this_00 = ppSVar3[uVar5];\n        if ((((this_00 != (Symbol *)0x0) && ((this_00->field_0x3a & 7) == 0)) &&\n            (relobj == (Sized_relobj_file<64,_false> *)(this_00->u1_).object)) &&\n           (((shndx == (this_00->u2_).shndx && ((this_00->field_0x3b & 0x20) != 0)) &&\n            ((this_00->u2_).shndx != 0)))) {\n          local_60 = 0x10;\n          do {\n            putc(0x20,(FILE *)this->map_file_);\n            local_60 = local_60 + -1;\n          } while (local_60 != 0);\n          Symbol::demangled_name(&local_58,this_00);\n                    /* try { // try from 001bcb4b to 001bcb4f has its CatchHandler @ 001bcba1 */\n          fprintf((FILE *)this->map_file_,"0x%0*llx                %s\n",0x10,this_00[1].name_,\n                  local_58._M_dataplus._M_p);\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)local_58._M_dataplus._M_p != &local_58.field_2) {\n            operator_delete(local_58._M_dataplus._M_p);\n          }\n        }\n      }" { (expression_statement "ppSVar3 = (relobj->symbols_).\n                  super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl._M_start\n        ;" (field_expression "ppSVar3 = (relobj->symbols_).\n                  super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl._M_start" (field_expression "ppSVar3 = (relobj->symbols_).\n                  super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl" (binary_expression "ppSVar3 = (relobj->symbols_).\n                  super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_" (binary_expression "ppSVar3 = (relobj->symbols_).\n                  super__Vector_base<gold::Symbol*,_std::allocator<gold" (binary_expression "ppSVar3 = (relobj->symbols_).\n                  super__Vector_base<gold::Symbol*,_std" (assignment_expression "ppSVar3 = (relobj->symbols_).\n                  super__Vector_base<gold" identifier = (binary_expression "(relobj->symbols_).\n                  super__Vector_base<gold" (field_expression "(relobj->symbols_).\n                  super__Vector_base" (parenthesized_expression "(relobj->symbols_)" ( (field_expression "relobj->symbols_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Symbol" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Symbol" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (expression_statement "uVar5 = (ulong)(uVar4 - relobj->local_symbol_count_);" (assignment_expression "uVar5 = (ulong)(uVar4 - relobj->local_symbol_count_)" identifier = (call_expression "(ulong)(uVar4 - relobj->local_symbol_count_)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar4 - relobj->local_symbol_count_)" ( (binary_expression "uVar4 - relobj->local_symbol_count_" identifier - (field_expression "relobj->local_symbol_count_" identifier -> field_identifier)) )))) ;) (if_statement "if ((ulong)((long)(relobj->symbols_).\n                          super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                          _M_finish - (long)ppSVar3 >> 3) <= uVar5) {\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/object.h",0x8ad,"global_symbol");\n        }" if (parenthesized_expression "((ulong)((long)(relobj->symbols_).\n                          super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                          _M_finish - (long)ppSVar3 >> 3) <= uVar5)" ( (binary_expression "(ulong)((long)(relobj->symbols_).\n                          super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                          _M_finish - (long)ppSVar3 >> 3) <= uVar5" (call_expression "(ulong)((long)(relobj->symbols_).\n                          super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                          _M_finish - (long)ppSVar3 >> 3)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((long)(relobj->symbols_).\n                          super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                          _M_finish - (long)ppSVar3 >> 3)" ( (binary_expression "(long)(relobj->symbols_).\n                          super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                          _M_finish - (long)ppSVar3 >> 3" (binary_expression "(long)(relobj->symbols_).\n                          super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                          _M_finish - (long)ppSVar3" (field_expression "(long)(relobj->symbols_).\n                          super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl.\n                          _M_finish" (field_expression "(long)(relobj->symbols_).\n                          super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_>._M_impl" (binary_expression "(long)(relobj->symbols_).\n                          super__Vector_base<gold::Symbol*,_std::allocator<gold::Symbol*>_" (binary_expression "(long)(relobj->symbols_).\n                          super__Vector_base<gold::Symbol*,_std::allocator<gold" (binary_expression "(long)(relobj->symbols_).\n                          super__Vector_base<gold::Symbol*,_std" (binary_expression "(long)(relobj->symbols_).\n                          super__Vector_base<gold" (cast_expression "(long)(relobj->symbols_).\n                          super__Vector_base" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "(relobj->symbols_).\n                          super__Vector_base" (parenthesized_expression "(relobj->symbols_)" ( (field_expression "relobj->symbols_" identifier -> field_identifier) )) . field_identifier)) < identifier) (ERROR "::Symbol" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Symbol" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) - (cast_expression "(long)ppSVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal) ))) <= identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n          do_gold_unreachable("../../gold/object.h",0x8ad,"global_symbol");\n        }" { comment (expression_statement "do_gold_unreachable("../../gold/object.h",0x8ad,"global_symbol");" (call_expression "do_gold_unreachable("../../gold/object.h",0x8ad,"global_symbol")" identifier (argument_list "("../../gold/object.h",0x8ad,"global_symbol")" ( (string_literal ""../../gold/object.h"" " string_content ") , number_literal , (string_literal ""global_symbol"" " string_content ") ))) ;) })) (expression_statement "this_00 = ppSVar3[uVar5];" (assignment_expression "this_00 = ppSVar3[uVar5]" identifier = (subscript_expression "ppSVar3[uVar5]" identifier [ identifier ])) ;) (if_statement "if ((((this_00 != (Symbol *)0x0) && ((this_00->field_0x3a & 7) == 0)) &&\n            (relobj == (Sized_relobj_file<64,_false> *)(this_00->u1_).object)) &&\n           (((shndx == (this_00->u2_).shndx && ((this_00->field_0x3b & 0x20) != 0)) &&\n            ((this_00->u2_).shndx != 0)))) {\n          local_60 = 0x10;\n          do {\n            putc(0x20,(FILE *)this->map_file_);\n            local_60 = local_60 + -1;\n          } while (local_60 != 0);\n          Symbol::demangled_name(&local_58,this_00);\n                    /* try { // try from 001bcb4b to 001bcb4f has its CatchHandler @ 001bcba1 */\n          fprintf((FILE *)this->map_file_,"0x%0*llx                %s\n",0x10,this_00[1].name_,\n                  local_58._M_dataplus._M_p);\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)local_58._M_dataplus._M_p != &local_58.field_2) {\n            operator_delete(local_58._M_dataplus._M_p);\n          }\n        }" if (parenthesized_expression "((((this_00 != (Symbol *)0x0) && ((this_00->field_0x3a & 7) == 0)) &&\n            (relobj == (Sized_relobj_file<64,_false> *)(this_00->u1_).object)) &&\n           (((shndx == (this_00->u2_).shndx && ((this_00->field_0x3b & 0x20) != 0)) &&\n            ((this_00->u2_).shndx != 0))))" ( (binary_expression "(((this_00 != (Symbol *)0x0) && ((this_00->field_0x3a & 7) == 0)) &&\n            (relobj == (Sized_relobj_file<64,_false> *)(this_00->u1_).object)) &&\n           (((shndx == (this_00->u2_).shndx && ((this_00->field_0x3b & 0x20) != 0)) &&\n            ((this_00->u2_).shndx != 0)))" (parenthesized_expression "(((this_00 != (Symbol *)0x0) && ((this_00->field_0x3a & 7) == 0)) &&\n            (relobj == (Sized_relobj_file<64,_false> *)(this_00->u1_).object))" ( (binary_expression "((this_00 != (Symbol *)0x0) && ((this_00->field_0x3a & 7) == 0)) &&\n            (relobj == (Sized_relobj_file<64,_false> *)(this_00->u1_).object)" (parenthesized_expression "((this_00 != (Symbol *)0x0) && ((this_00->field_0x3a & 7) == 0))" ( (binary_expression "(this_00 != (Symbol *)0x0) && ((this_00->field_0x3a & 7) == 0)" (parenthesized_expression "(this_00 != (Symbol *)0x0)" ( (binary_expression "this_00 != (Symbol *)0x0" identifier != (cast_expression "(Symbol *)0x0" ( (type_descriptor "Symbol *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "((this_00->field_0x3a & 7) == 0)" ( (binary_expression "(this_00->field_0x3a & 7) == 0" (parenthesized_expression "(this_00->field_0x3a & 7)" ( (binary_expression "this_00->field_0x3a & 7" (field_expression "this_00->field_0x3a" identifier -> field_identifier) & number_literal) )) == number_literal) ))) )) && (parenthesized_expression "(relobj == (Sized_relobj_file<64,_false> *)(this_00->u1_).object)" ( (binary_expression "relobj == (Sized_relobj_file<64,_false> *)(this_00->u1_).object" identifier == (field_expression "(Sized_relobj_file<64,_false> *)(this_00->u1_).object" (call_expression "(Sized_relobj_file<64,_false> *)(this_00->u1_)" (parenthesized_expression "(Sized_relobj_file<64,_false> *)" ( (comma_expression "Sized_relobj_file<64,_false> *" (binary_expression "Sized_relobj_file<64" identifier < number_literal) , (binary_expression "_false> *" identifier > (pointer_expression "*" * identifier))) )) (argument_list "(this_00->u1_)" ( (field_expression "this_00->u1_" identifier -> field_identifier) ))) . field_identifier)) ))) )) && (parenthesized_expression "(((shndx == (this_00->u2_).shndx && ((this_00->field_0x3b & 0x20) != 0)) &&\n            ((this_00->u2_).shndx != 0)))" ( (parenthesized_expression "((shndx == (this_00->u2_).shndx && ((this_00->field_0x3b & 0x20) != 0)) &&\n            ((this_00->u2_).shndx != 0))" ( (binary_expression "(shndx == (this_00->u2_).shndx && ((this_00->field_0x3b & 0x20) != 0)) &&\n            ((this_00->u2_).shndx != 0)" (parenthesized_expression "(shndx == (this_00->u2_).shndx && ((this_00->field_0x3b & 0x20) != 0))" ( (binary_expression "shndx == (this_00->u2_).shndx && ((this_00->field_0x3b & 0x20) != 0)" (binary_expression "shndx == (this_00->u2_).shndx" identifier == (field_expression "(this_00->u2_).shndx" (parenthesized_expression "(this_00->u2_)" ( (field_expression "this_00->u2_" identifier -> field_identifier) )) . field_identifier)) && (parenthesized_expression "((this_00->field_0x3b & 0x20) != 0)" ( (binary_expression "(this_00->field_0x3b & 0x20) != 0" (parenthesized_expression "(this_00->field_0x3b & 0x20)" ( (binary_expression "this_00->field_0x3b & 0x20" (field_expression "this_00->field_0x3b" identifier -> field_identifier) & number_literal) )) != number_literal) ))) )) && (parenthesized_expression "((this_00->u2_).shndx != 0)" ( (binary_expression "(this_00->u2_).shndx != 0" (field_expression "(this_00->u2_).shndx" (parenthesized_expression "(this_00->u2_)" ( (field_expression "this_00->u2_" identifier -> field_identifier) )) . field_identifier) != number_literal) ))) )) ))) )) (compound_statement "{\n          local_60 = 0x10;\n          do {\n            putc(0x20,(FILE *)this->map_file_);\n            local_60 = local_60 + -1;\n          } while (local_60 != 0);\n          Symbol::demangled_name(&local_58,this_00);\n                    /* try { // try from 001bcb4b to 001bcb4f has its CatchHandler @ 001bcba1 */\n          fprintf((FILE *)this->map_file_,"0x%0*llx                %s\n",0x10,this_00[1].name_,\n                  local_58._M_dataplus._M_p);\n          if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)local_58._M_dataplus._M_p != &local_58.field_2) {\n            operator_delete(local_58._M_dataplus._M_p);\n          }\n        }" { (expression_statement "local_60 = 0x10;" (assignment_expression "local_60 = 0x10" identifier = number_literal) ;) (do_statement "do {\n            putc(0x20,(FILE *)this->map_file_);\n            local_60 = local_60 + -1;\n          } while (local_60 != 0);" do (compound_statement "{\n            putc(0x20,(FILE *)this->map_file_);\n            local_60 = local_60 + -1;\n          }" { (expression_statement "putc(0x20,(FILE *)this->map_file_);" (call_expression "putc(0x20,(FILE *)this->map_file_)" identifier (argument_list "(0x20,(FILE *)this->map_file_)" ( number_literal , (cast_expression "(FILE *)this->map_file_" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "this->map_file_" identifier -> field_identifier)) ))) ;) (expression_statement "local_60 = local_60 + -1;" (assignment_expression "local_60 = local_60 + -1" identifier = (binary_expression "local_60 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_60 != 0)" ( (binary_expression "local_60 != 0" identifier != number_literal) )) ;) (labeled_statement "Symbol::demangled_name(&local_58,this_00);" statement_identifier : (ERROR ":" :) (expression_statement "demangled_name(&local_58,this_00);" (call_expression "demangled_name(&local_58,this_00)" identifier (argument_list "(&local_58,this_00)" ( (pointer_expression "&local_58" & identifier) , identifier ))) ;)) comment (expression_statement "fprintf((FILE *)this->map_file_,"0x%0*llx                %s\n",0x10,this_00[1].name_,\n                  local_58._M_dataplus._M_p);" (call_expression "fprintf((FILE *)this->map_file_,"0x%0*llx                %s\n",0x10,this_00[1].name_,\n                  local_58._M_dataplus._M_p)" identifier (argument_list "((FILE *)this->map_file_,"0x%0*llx                %s\n",0x10,this_00[1].name_,\n                  local_58._M_dataplus._M_p)" ( (cast_expression "(FILE *)this->map_file_" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "this->map_file_" identifier -> field_identifier)) , (string_literal ""0x%0*llx                %s\n"" " string_content escape_sequence ") , number_literal , (field_expression "this_00[1].name_" (subscript_expression "this_00[1]" identifier [ number_literal ]) . field_identifier) , (field_expression "local_58._M_dataplus._M_p" (field_expression "local_58._M_dataplus" identifier . field_identifier) . field_identifier) ))) ;) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)local_58._M_dataplus._M_p != &local_58.field_2) {\n            operator_delete(local_58._M_dataplus._M_p);\n          }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)local_58._M_dataplus._M_p != &local_58.field_2)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n               *)local_58._M_dataplus._M_p != &local_58.field_2)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9\n               *)local_58._M_dataplus._M_p != &local_58.field_2" (binary_expression "allocator<char>_>_9\n               *)local_58._M_dataplus._M_p" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n               *)local_58._M_dataplus._M_p" identifier * (ERROR ")" )) (field_expression "local_58._M_dataplus._M_p" (field_expression "local_58._M_dataplus" identifier . field_identifier) . field_identifier))) != (pointer_expression "&local_58.field_2" & (field_expression "local_58.field_2" identifier . field_identifier))) )) )) (compound_statement "{\n            operator_delete(local_58._M_dataplus._M_p);\n          }" { (expression_statement "operator_delete(local_58._M_dataplus._M_p);" (call_expression "operator_delete(local_58._M_dataplus._M_p)" identifier (argument_list "(local_58._M_dataplus._M_p)" ( (field_expression "local_58._M_dataplus._M_p" (field_expression "local_58._M_dataplus" identifier . field_identifier) . field_identifier) ))) ;) })) })) })) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" identifier = (binary_expression "uVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar4 != uVar6)" ( (binary_expression "uVar4 != uVar6" identifier != identifier) )) ;) })) (return_statement "return;" return ;) (ERROR "}" }))
(translation_unit "void FUN_001bca30(undefined8 *param_1,long *param_2,int param_3)\n\n{\n  code *pcVar1;\n  long lVar2;\n  uint uVar3;\n  ulong uVar4;\n  uint uVar5;\n  long local_60;\n  undefined1 *local_58 [2];\n  undefined1 auStack_48 [24];\n  \n  pcVar1 = *(code **)(*param_2 + 0x118);\n  uVar5 = (int)(param_2[0x27] - param_2[0x26] >> 3) + (int)param_2[0x24];\n  if (pcVar1 == FUN_001550b0) {\n    uVar3 = (**(code **)(*param_2 + 0x178))();\n  }\n  else {\n    uVar3 = (*pcVar1)(param_2);\n  }\n  if (uVar3 < uVar5) {\n    do {\n      if (*(uint *)(param_2 + 0x24) <= uVar3) {\n        uVar4 = (ulong)(uVar3 - *(uint *)(param_2 + 0x24));\n        if ((ulong)(param_2[0x27] - param_2[0x26] >> 3) <= uVar4) {\n                    \n          FUN_0017c650("../../gold/object.h",0x8ad,"global_symbol");\n        }\n        lVar2 = *(long *)(param_2[0x26] + uVar4 * 8);\n        if ((((lVar2 != 0) && ((*(byte *)(lVar2 + 0x3a) & 7) == 0)) &&\n            (param_2 == *(long **)(lVar2 + 0x10))) &&\n           (((param_3 == *(int *)(lVar2 + 0x18) && ((*(byte *)(lVar2 + 0x3b) & 0x20) != 0)) &&\n            (*(int *)(lVar2 + 0x18) != 0)))) {\n          local_60 = 0x10;\n          do {\n            putc(0x20,(FILE *)*param_1);\n            local_60 = local_60 + -1;\n          } while (local_60 != 0);\n          FUN_00272230(local_58,lVar2);\n                    \n          fprintf((FILE *)*param_1,"0x%0*llx                %s\n",0x10,*(undefined8 *)(lVar2 + 0x40)\n                  ,local_58[0]);\n          if (local_58[0] != auStack_48) {\n            FUN_002dac70();\n          }\n        }\n      }\n      uVar3 = uVar3 + 1;\n    } while (uVar3 != uVar5);\n  }\n  return;\n}\n\n" (function_definition "void FUN_001bca30(undefined8 *param_1,long *param_2,int param_3)\n\n{\n  code *pcVar1;\n  long lVar2;\n  uint uVar3;\n  ulong uVar4;\n  uint uVar5;\n  long local_60;\n  undefined1 *local_58 [2];\n  undefined1 auStack_48 [24];\n  \n  pcVar1 = *(code **)(*param_2 + 0x118);\n  uVar5 = (int)(param_2[0x27] - param_2[0x26] >> 3) + (int)param_2[0x24];\n  if (pcVar1 == FUN_001550b0) {\n    uVar3 = (**(code **)(*param_2 + 0x178))();\n  }\n  else {\n    uVar3 = (*pcVar1)(param_2);\n  }\n  if (uVar3 < uVar5) {\n    do {\n      if (*(uint *)(param_2 + 0x24) <= uVar3) {\n        uVar4 = (ulong)(uVar3 - *(uint *)(param_2 + 0x24));\n        if ((ulong)(param_2[0x27] - param_2[0x26] >> 3) <= uVar4) {\n                    \n          FUN_0017c650("../../gold/object.h",0x8ad,"global_symbol");\n        }\n        lVar2 = *(long *)(param_2[0x26] + uVar4 * 8);\n        if ((((lVar2 != 0) && ((*(byte *)(lVar2 + 0x3a) & 7) == 0)) &&\n            (param_2 == *(long **)(lVar2 + 0x10))) &&\n           (((param_3 == *(int *)(lVar2 + 0x18) && ((*(byte *)(lVar2 + 0x3b) & 0x20) != 0)) &&\n            (*(int *)(lVar2 + 0x18) != 0)))) {\n          local_60 = 0x10;\n          do {\n            putc(0x20,(FILE *)*param_1);\n            local_60 = local_60 + -1;\n          } while (local_60 != 0);\n          FUN_00272230(local_58,lVar2);\n                    \n          fprintf((FILE *)*param_1,"0x%0*llx                %s\n",0x10,*(undefined8 *)(lVar2 + 0x40)\n                  ,local_58[0]);\n          if (local_58[0] != auStack_48) {\n            FUN_002dac70();\n          }\n        }\n      }\n      uVar3 = uVar3 + 1;\n    } while (uVar3 != uVar5);\n  }\n  return;\n}" primitive_type (function_declarator "FUN_001bca30(undefined8 *param_1,long *param_2,int param_3)" identifier (parameter_list "(undefined8 *param_1,long *param_2,int param_3)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "long *param_2" (sized_type_specifier "long" long) (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  code *pcVar1;\n  long lVar2;\n  uint uVar3;\n  ulong uVar4;\n  uint uVar5;\n  long local_60;\n  undefined1 *local_58 [2];\n  undefined1 auStack_48 [24];\n  \n  pcVar1 = *(code **)(*param_2 + 0x118);\n  uVar5 = (int)(param_2[0x27] - param_2[0x26] >> 3) + (int)param_2[0x24];\n  if (pcVar1 == FUN_001550b0) {\n    uVar3 = (**(code **)(*param_2 + 0x178))();\n  }\n  else {\n    uVar3 = (*pcVar1)(param_2);\n  }\n  if (uVar3 < uVar5) {\n    do {\n      if (*(uint *)(param_2 + 0x24) <= uVar3) {\n        uVar4 = (ulong)(uVar3 - *(uint *)(param_2 + 0x24));\n        if ((ulong)(param_2[0x27] - param_2[0x26] >> 3) <= uVar4) {\n                    \n          FUN_0017c650("../../gold/object.h",0x8ad,"global_symbol");\n        }\n        lVar2 = *(long *)(param_2[0x26] + uVar4 * 8);\n        if ((((lVar2 != 0) && ((*(byte *)(lVar2 + 0x3a) & 7) == 0)) &&\n            (param_2 == *(long **)(lVar2 + 0x10))) &&\n           (((param_3 == *(int *)(lVar2 + 0x18) && ((*(byte *)(lVar2 + 0x3b) & 0x20) != 0)) &&\n            (*(int *)(lVar2 + 0x18) != 0)))) {\n          local_60 = 0x10;\n          do {\n            putc(0x20,(FILE *)*param_1);\n            local_60 = local_60 + -1;\n          } while (local_60 != 0);\n          FUN_00272230(local_58,lVar2);\n                    \n          fprintf((FILE *)*param_1,"0x%0*llx                %s\n",0x10,*(undefined8 *)(lVar2 + 0x40)\n                  ,local_58[0]);\n          if (local_58[0] != auStack_48) {\n            FUN_002dac70();\n          }\n        }\n      }\n      uVar3 = uVar3 + 1;\n    } while (uVar3 != uVar5);\n  }\n  return;\n}" { (declaration "code *pcVar1;" type_identifier (pointer_declarator "*pcVar1" * identifier) ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "long local_60;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined1 *local_58 [2];" type_identifier (pointer_declarator "*local_58 [2]" * (array_declarator "local_58 [2]" identifier [ number_literal ])) ;) (declaration "undefined1 auStack_48 [24];" type_identifier (array_declarator "auStack_48 [24]" identifier [ number_literal ]) ;) (expression_statement "pcVar1 = *(code **)(*param_2 + 0x118);" (assignment_expression "pcVar1 = *(code **)(*param_2 + 0x118)" identifier = (pointer_expression "*(code **)(*param_2 + 0x118)" * (cast_expression "(code **)(*param_2 + 0x118)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x118)" ( (binary_expression "*param_2 + 0x118" (pointer_expression "*param_2" * identifier) + number_literal) ))))) ;) (expression_statement "uVar5 = (int)(param_2[0x27] - param_2[0x26] >> 3) + (int)param_2[0x24];" (assignment_expression "uVar5 = (int)(param_2[0x27] - param_2[0x26] >> 3) + (int)param_2[0x24]" identifier = (binary_expression "(int)(param_2[0x27] - param_2[0x26] >> 3) + (int)param_2[0x24]" (cast_expression "(int)(param_2[0x27] - param_2[0x26] >> 3)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(param_2[0x27] - param_2[0x26] >> 3)" ( (binary_expression "param_2[0x27] - param_2[0x26] >> 3" (binary_expression "param_2[0x27] - param_2[0x26]" (subscript_expression "param_2[0x27]" identifier [ number_literal ]) - (subscript_expression "param_2[0x26]" identifier [ number_literal ])) >> number_literal) ))) + (cast_expression "(int)param_2[0x24]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_2[0x24]" identifier [ number_literal ])))) ;) (if_statement "if (pcVar1 == FUN_001550b0) {\n    uVar3 = (**(code **)(*param_2 + 0x178))();\n  }\n  else {\n    uVar3 = (*pcVar1)(param_2);\n  }" if (parenthesized_expression "(pcVar1 == FUN_001550b0)" ( (binary_expression "pcVar1 == FUN_001550b0" identifier == identifier) )) (compound_statement "{\n    uVar3 = (**(code **)(*param_2 + 0x178))();\n  }" { (expression_statement "uVar3 = (**(code **)(*param_2 + 0x178))();" (assignment_expression "uVar3 = (**(code **)(*param_2 + 0x178))()" identifier = (call_expression "(**(code **)(*param_2 + 0x178))()" (parenthesized_expression "(**(code **)(*param_2 + 0x178))" ( (pointer_expression "**(code **)(*param_2 + 0x178)" * (pointer_expression "*(code **)(*param_2 + 0x178)" * (cast_expression "(code **)(*param_2 + 0x178)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x178)" ( (binary_expression "*param_2 + 0x178" (pointer_expression "*param_2" * identifier) + number_literal) ))))) )) (argument_list "()" ( )))) ;) }) (else_clause "else {\n    uVar3 = (*pcVar1)(param_2);\n  }" else (compound_statement "{\n    uVar3 = (*pcVar1)(param_2);\n  }" { (expression_statement "uVar3 = (*pcVar1)(param_2);" (assignment_expression "uVar3 = (*pcVar1)(param_2)" identifier = (call_expression "(*pcVar1)(param_2)" (parenthesized_expression "(*pcVar1)" ( (pointer_expression "*pcVar1" * identifier) )) (argument_list "(param_2)" ( identifier )))) ;) }))) (if_statement "if (uVar3 < uVar5) {\n    do {\n      if (*(uint *)(param_2 + 0x24) <= uVar3) {\n        uVar4 = (ulong)(uVar3 - *(uint *)(param_2 + 0x24));\n        if ((ulong)(param_2[0x27] - param_2[0x26] >> 3) <= uVar4) {\n                    \n          FUN_0017c650("../../gold/object.h",0x8ad,"global_symbol");\n        }\n        lVar2 = *(long *)(param_2[0x26] + uVar4 * 8);\n        if ((((lVar2 != 0) && ((*(byte *)(lVar2 + 0x3a) & 7) == 0)) &&\n            (param_2 == *(long **)(lVar2 + 0x10))) &&\n           (((param_3 == *(int *)(lVar2 + 0x18) && ((*(byte *)(lVar2 + 0x3b) & 0x20) != 0)) &&\n            (*(int *)(lVar2 + 0x18) != 0)))) {\n          local_60 = 0x10;\n          do {\n            putc(0x20,(FILE *)*param_1);\n            local_60 = local_60 + -1;\n          } while (local_60 != 0);\n          FUN_00272230(local_58,lVar2);\n                    \n          fprintf((FILE *)*param_1,"0x%0*llx                %s\n",0x10,*(undefined8 *)(lVar2 + 0x40)\n                  ,local_58[0]);\n          if (local_58[0] != auStack_48) {\n            FUN_002dac70();\n          }\n        }\n      }\n      uVar3 = uVar3 + 1;\n    } while (uVar3 != uVar5);\n  }" if (parenthesized_expression "(uVar3 < uVar5)" ( (binary_expression "uVar3 < uVar5" identifier < identifier) )) (compound_statement "{\n    do {\n      if (*(uint *)(param_2 + 0x24) <= uVar3) {\n        uVar4 = (ulong)(uVar3 - *(uint *)(param_2 + 0x24));\n        if ((ulong)(param_2[0x27] - param_2[0x26] >> 3) <= uVar4) {\n                    \n          FUN_0017c650("../../gold/object.h",0x8ad,"global_symbol");\n        }\n        lVar2 = *(long *)(param_2[0x26] + uVar4 * 8);\n        if ((((lVar2 != 0) && ((*(byte *)(lVar2 + 0x3a) & 7) == 0)) &&\n            (param_2 == *(long **)(lVar2 + 0x10))) &&\n           (((param_3 == *(int *)(lVar2 + 0x18) && ((*(byte *)(lVar2 + 0x3b) & 0x20) != 0)) &&\n            (*(int *)(lVar2 + 0x18) != 0)))) {\n          local_60 = 0x10;\n          do {\n            putc(0x20,(FILE *)*param_1);\n            local_60 = local_60 + -1;\n          } while (local_60 != 0);\n          FUN_00272230(local_58,lVar2);\n                    \n          fprintf((FILE *)*param_1,"0x%0*llx                %s\n",0x10,*(undefined8 *)(lVar2 + 0x40)\n                  ,local_58[0]);\n          if (local_58[0] != auStack_48) {\n            FUN_002dac70();\n          }\n        }\n      }\n      uVar3 = uVar3 + 1;\n    } while (uVar3 != uVar5);\n  }" { (do_statement "do {\n      if (*(uint *)(param_2 + 0x24) <= uVar3) {\n        uVar4 = (ulong)(uVar3 - *(uint *)(param_2 + 0x24));\n        if ((ulong)(param_2[0x27] - param_2[0x26] >> 3) <= uVar4) {\n                    \n          FUN_0017c650("../../gold/object.h",0x8ad,"global_symbol");\n        }\n        lVar2 = *(long *)(param_2[0x26] + uVar4 * 8);\n        if ((((lVar2 != 0) && ((*(byte *)(lVar2 + 0x3a) & 7) == 0)) &&\n            (param_2 == *(long **)(lVar2 + 0x10))) &&\n           (((param_3 == *(int *)(lVar2 + 0x18) && ((*(byte *)(lVar2 + 0x3b) & 0x20) != 0)) &&\n            (*(int *)(lVar2 + 0x18) != 0)))) {\n          local_60 = 0x10;\n          do {\n            putc(0x20,(FILE *)*param_1);\n            local_60 = local_60 + -1;\n          } while (local_60 != 0);\n          FUN_00272230(local_58,lVar2);\n                    \n          fprintf((FILE *)*param_1,"0x%0*llx                %s\n",0x10,*(undefined8 *)(lVar2 + 0x40)\n                  ,local_58[0]);\n          if (local_58[0] != auStack_48) {\n            FUN_002dac70();\n          }\n        }\n      }\n      uVar3 = uVar3 + 1;\n    } while (uVar3 != uVar5);" do (compound_statement "{\n      if (*(uint *)(param_2 + 0x24) <= uVar3) {\n        uVar4 = (ulong)(uVar3 - *(uint *)(param_2 + 0x24));\n        if ((ulong)(param_2[0x27] - param_2[0x26] >> 3) <= uVar4) {\n                    \n          FUN_0017c650("../../gold/object.h",0x8ad,"global_symbol");\n        }\n        lVar2 = *(long *)(param_2[0x26] + uVar4 * 8);\n        if ((((lVar2 != 0) && ((*(byte *)(lVar2 + 0x3a) & 7) == 0)) &&\n            (param_2 == *(long **)(lVar2 + 0x10))) &&\n           (((param_3 == *(int *)(lVar2 + 0x18) && ((*(byte *)(lVar2 + 0x3b) & 0x20) != 0)) &&\n            (*(int *)(lVar2 + 0x18) != 0)))) {\n          local_60 = 0x10;\n          do {\n            putc(0x20,(FILE *)*param_1);\n            local_60 = local_60 + -1;\n          } while (local_60 != 0);\n          FUN_00272230(local_58,lVar2);\n                    \n          fprintf((FILE *)*param_1,"0x%0*llx                %s\n",0x10,*(undefined8 *)(lVar2 + 0x40)\n                  ,local_58[0]);\n          if (local_58[0] != auStack_48) {\n            FUN_002dac70();\n          }\n        }\n      }\n      uVar3 = uVar3 + 1;\n    }" { (if_statement "if (*(uint *)(param_2 + 0x24) <= uVar3) {\n        uVar4 = (ulong)(uVar3 - *(uint *)(param_2 + 0x24));\n        if ((ulong)(param_2[0x27] - param_2[0x26] >> 3) <= uVar4) {\n                    \n          FUN_0017c650("../../gold/object.h",0x8ad,"global_symbol");\n        }\n        lVar2 = *(long *)(param_2[0x26] + uVar4 * 8);\n        if ((((lVar2 != 0) && ((*(byte *)(lVar2 + 0x3a) & 7) == 0)) &&\n            (param_2 == *(long **)(lVar2 + 0x10))) &&\n           (((param_3 == *(int *)(lVar2 + 0x18) && ((*(byte *)(lVar2 + 0x3b) & 0x20) != 0)) &&\n            (*(int *)(lVar2 + 0x18) != 0)))) {\n          local_60 = 0x10;\n          do {\n            putc(0x20,(FILE *)*param_1);\n            local_60 = local_60 + -1;\n          } while (local_60 != 0);\n          FUN_00272230(local_58,lVar2);\n                    \n          fprintf((FILE *)*param_1,"0x%0*llx                %s\n",0x10,*(undefined8 *)(lVar2 + 0x40)\n                  ,local_58[0]);\n          if (local_58[0] != auStack_48) {\n            FUN_002dac70();\n          }\n        }\n      }" if (parenthesized_expression "(*(uint *)(param_2 + 0x24) <= uVar3)" ( (binary_expression "*(uint *)(param_2 + 0x24) <= uVar3" (pointer_expression "*(uint *)(param_2 + 0x24)" * (cast_expression "(uint *)(param_2 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x24)" ( (binary_expression "param_2 + 0x24" identifier + number_literal) )))) <= identifier) )) (compound_statement "{\n        uVar4 = (ulong)(uVar3 - *(uint *)(param_2 + 0x24));\n        if ((ulong)(param_2[0x27] - param_2[0x26] >> 3) <= uVar4) {\n                    \n          FUN_0017c650("../../gold/object.h",0x8ad,"global_symbol");\n        }\n        lVar2 = *(long *)(param_2[0x26] + uVar4 * 8);\n        if ((((lVar2 != 0) && ((*(byte *)(lVar2 + 0x3a) & 7) == 0)) &&\n            (param_2 == *(long **)(lVar2 + 0x10))) &&\n           (((param_3 == *(int *)(lVar2 + 0x18) && ((*(byte *)(lVar2 + 0x3b) & 0x20) != 0)) &&\n            (*(int *)(lVar2 + 0x18) != 0)))) {\n          local_60 = 0x10;\n          do {\n            putc(0x20,(FILE *)*param_1);\n            local_60 = local_60 + -1;\n          } while (local_60 != 0);\n          FUN_00272230(local_58,lVar2);\n                    \n          fprintf((FILE *)*param_1,"0x%0*llx                %s\n",0x10,*(undefined8 *)(lVar2 + 0x40)\n                  ,local_58[0]);\n          if (local_58[0] != auStack_48) {\n            FUN_002dac70();\n          }\n        }\n      }" { (expression_statement "uVar4 = (ulong)(uVar3 - *(uint *)(param_2 + 0x24));" (assignment_expression "uVar4 = (ulong)(uVar3 - *(uint *)(param_2 + 0x24))" identifier = (call_expression "(ulong)(uVar3 - *(uint *)(param_2 + 0x24))" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar3 - *(uint *)(param_2 + 0x24))" ( (binary_expression "uVar3 - *(uint *)(param_2 + 0x24)" identifier - (pointer_expression "*(uint *)(param_2 + 0x24)" * (cast_expression "(uint *)(param_2 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x24)" ( (binary_expression "param_2 + 0x24" identifier + number_literal) ))))) )))) ;) (if_statement "if ((ulong)(param_2[0x27] - param_2[0x26] >> 3) <= uVar4) {\n                    \n          FUN_0017c650("../../gold/object.h",0x8ad,"global_symbol");\n        }" if (parenthesized_expression "((ulong)(param_2[0x27] - param_2[0x26] >> 3) <= uVar4)" ( (binary_expression "(ulong)(param_2[0x27] - param_2[0x26] >> 3) <= uVar4" (call_expression "(ulong)(param_2[0x27] - param_2[0x26] >> 3)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(param_2[0x27] - param_2[0x26] >> 3)" ( (binary_expression "param_2[0x27] - param_2[0x26] >> 3" (binary_expression "param_2[0x27] - param_2[0x26]" (subscript_expression "param_2[0x27]" identifier [ number_literal ]) - (subscript_expression "param_2[0x26]" identifier [ number_literal ])) >> number_literal) ))) <= identifier) )) (compound_statement "{\n                    \n          FUN_0017c650("../../gold/object.h",0x8ad,"global_symbol");\n        }" { (expression_statement "FUN_0017c650("../../gold/object.h",0x8ad,"global_symbol");" (call_expression "FUN_0017c650("../../gold/object.h",0x8ad,"global_symbol")" identifier (argument_list "("../../gold/object.h",0x8ad,"global_symbol")" ( (string_literal ""../../gold/object.h"" " string_content ") , number_literal , (string_literal ""global_symbol"" " string_content ") ))) ;) })) (expression_statement "lVar2 = *(long *)(param_2[0x26] + uVar4 * 8);" (assignment_expression "lVar2 = *(long *)(param_2[0x26] + uVar4 * 8)" identifier = (pointer_expression "*(long *)(param_2[0x26] + uVar4 * 8)" * (cast_expression "(long *)(param_2[0x26] + uVar4 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[0x26] + uVar4 * 8)" ( (binary_expression "param_2[0x26] + uVar4 * 8" (subscript_expression "param_2[0x26]" identifier [ number_literal ]) + (binary_expression "uVar4 * 8" identifier * number_literal)) ))))) ;) (if_statement "if ((((lVar2 != 0) && ((*(byte *)(lVar2 + 0x3a) & 7) == 0)) &&\n            (param_2 == *(long **)(lVar2 + 0x10))) &&\n           (((param_3 == *(int *)(lVar2 + 0x18) && ((*(byte *)(lVar2 + 0x3b) & 0x20) != 0)) &&\n            (*(int *)(lVar2 + 0x18) != 0)))) {\n          local_60 = 0x10;\n          do {\n            putc(0x20,(FILE *)*param_1);\n            local_60 = local_60 + -1;\n          } while (local_60 != 0);\n          FUN_00272230(local_58,lVar2);\n                    \n          fprintf((FILE *)*param_1,"0x%0*llx                %s\n",0x10,*(undefined8 *)(lVar2 + 0x40)\n                  ,local_58[0]);\n          if (local_58[0] != auStack_48) {\n            FUN_002dac70();\n          }\n        }" if (parenthesized_expression "((((lVar2 != 0) && ((*(byte *)(lVar2 + 0x3a) & 7) == 0)) &&\n            (param_2 == *(long **)(lVar2 + 0x10))) &&\n           (((param_3 == *(int *)(lVar2 + 0x18) && ((*(byte *)(lVar2 + 0x3b) & 0x20) != 0)) &&\n            (*(int *)(lVar2 + 0x18) != 0))))" ( (binary_expression "(((lVar2 != 0) && ((*(byte *)(lVar2 + 0x3a) & 7) == 0)) &&\n            (param_2 == *(long **)(lVar2 + 0x10))) &&\n           (((param_3 == *(int *)(lVar2 + 0x18) && ((*(byte *)(lVar2 + 0x3b) & 0x20) != 0)) &&\n            (*(int *)(lVar2 + 0x18) != 0)))" (parenthesized_expression "(((lVar2 != 0) && ((*(byte *)(lVar2 + 0x3a) & 7) == 0)) &&\n            (param_2 == *(long **)(lVar2 + 0x10)))" ( (binary_expression "((lVar2 != 0) && ((*(byte *)(lVar2 + 0x3a) & 7) == 0)) &&\n            (param_2 == *(long **)(lVar2 + 0x10))" (parenthesized_expression "((lVar2 != 0) && ((*(byte *)(lVar2 + 0x3a) & 7) == 0))" ( (binary_expression "(lVar2 != 0) && ((*(byte *)(lVar2 + 0x3a) & 7) == 0)" (parenthesized_expression "(lVar2 != 0)" ( (binary_expression "lVar2 != 0" identifier != number_literal) )) && (parenthesized_expression "((*(byte *)(lVar2 + 0x3a) & 7) == 0)" ( (binary_expression "(*(byte *)(lVar2 + 0x3a) & 7) == 0" (parenthesized_expression "(*(byte *)(lVar2 + 0x3a) & 7)" ( (binary_expression "*(byte *)(lVar2 + 0x3a) & 7" (pointer_expression "*(byte *)(lVar2 + 0x3a)" * (cast_expression "(byte *)(lVar2 + 0x3a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x3a)" ( (binary_expression "lVar2 + 0x3a" identifier + number_literal) )))) & number_literal) )) == number_literal) ))) )) && (parenthesized_expression "(param_2 == *(long **)(lVar2 + 0x10))" ( (binary_expression "param_2 == *(long **)(lVar2 + 0x10)" identifier == (pointer_expression "*(long **)(lVar2 + 0x10)" * (cast_expression "(long **)(lVar2 + 0x10)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar2 + 0x10)" ( (binary_expression "lVar2 + 0x10" identifier + number_literal) ))))) ))) )) && (parenthesized_expression "(((param_3 == *(int *)(lVar2 + 0x18) && ((*(byte *)(lVar2 + 0x3b) & 0x20) != 0)) &&\n            (*(int *)(lVar2 + 0x18) != 0)))" ( (parenthesized_expression "((param_3 == *(int *)(lVar2 + 0x18) && ((*(byte *)(lVar2 + 0x3b) & 0x20) != 0)) &&\n            (*(int *)(lVar2 + 0x18) != 0))" ( (binary_expression "(param_3 == *(int *)(lVar2 + 0x18) && ((*(byte *)(lVar2 + 0x3b) & 0x20) != 0)) &&\n            (*(int *)(lVar2 + 0x18) != 0)" (parenthesized_expression "(param_3 == *(int *)(lVar2 + 0x18) && ((*(byte *)(lVar2 + 0x3b) & 0x20) != 0))" ( (binary_expression "param_3 == *(int *)(lVar2 + 0x18) && ((*(byte *)(lVar2 + 0x3b) & 0x20) != 0)" (binary_expression "param_3 == *(int *)(lVar2 + 0x18)" identifier == (pointer_expression "*(int *)(lVar2 + 0x18)" * (cast_expression "(int *)(lVar2 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x18)" ( (binary_expression "lVar2 + 0x18" identifier + number_literal) ))))) && (parenthesized_expression "((*(byte *)(lVar2 + 0x3b) & 0x20) != 0)" ( (binary_expression "(*(byte *)(lVar2 + 0x3b) & 0x20) != 0" (parenthesized_expression "(*(byte *)(lVar2 + 0x3b) & 0x20)" ( (binary_expression "*(byte *)(lVar2 + 0x3b) & 0x20" (pointer_expression "*(byte *)(lVar2 + 0x3b)" * (cast_expression "(byte *)(lVar2 + 0x3b)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x3b)" ( (binary_expression "lVar2 + 0x3b" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) && (parenthesized_expression "(*(int *)(lVar2 + 0x18) != 0)" ( (binary_expression "*(int *)(lVar2 + 0x18) != 0" (pointer_expression "*(int *)(lVar2 + 0x18)" * (cast_expression "(int *)(lVar2 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x18)" ( (binary_expression "lVar2 + 0x18" identifier + number_literal) )))) != number_literal) ))) )) ))) )) (compound_statement "{\n          local_60 = 0x10;\n          do {\n            putc(0x20,(FILE *)*param_1);\n            local_60 = local_60 + -1;\n          } while (local_60 != 0);\n          FUN_00272230(local_58,lVar2);\n                    \n          fprintf((FILE *)*param_1,"0x%0*llx                %s\n",0x10,*(undefined8 *)(lVar2 + 0x40)\n                  ,local_58[0]);\n          if (local_58[0] != auStack_48) {\n            FUN_002dac70();\n          }\n        }" { (expression_statement "local_60 = 0x10;" (assignment_expression "local_60 = 0x10" identifier = number_literal) ;) (do_statement "do {\n            putc(0x20,(FILE *)*param_1);\n            local_60 = local_60 + -1;\n          } while (local_60 != 0);" do (compound_statement "{\n            putc(0x20,(FILE *)*param_1);\n            local_60 = local_60 + -1;\n          }" { (expression_statement "putc(0x20,(FILE *)*param_1);" (call_expression "putc(0x20,(FILE *)*param_1)" identifier (argument_list "(0x20,(FILE *)*param_1)" ( number_literal , (cast_expression "(FILE *)*param_1" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier)) ))) ;) (expression_statement "local_60 = local_60 + -1;" (assignment_expression "local_60 = local_60 + -1" identifier = (binary_expression "local_60 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_60 != 0)" ( (binary_expression "local_60 != 0" identifier != number_literal) )) ;) (expression_statement "FUN_00272230(local_58,lVar2);" (call_expression "FUN_00272230(local_58,lVar2)" identifier (argument_list "(local_58,lVar2)" ( identifier , identifier ))) ;) (expression_statement "fprintf((FILE *)*param_1,"0x%0*llx                %s\n",0x10,*(undefined8 *)(lVar2 + 0x40)\n                  ,local_58[0]);" (call_expression "fprintf((FILE *)*param_1,"0x%0*llx                %s\n",0x10,*(undefined8 *)(lVar2 + 0x40)\n                  ,local_58[0])" identifier (argument_list "((FILE *)*param_1,"0x%0*llx                %s\n",0x10,*(undefined8 *)(lVar2 + 0x40)\n                  ,local_58[0])" ( (cast_expression "(FILE *)*param_1" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier)) , (string_literal ""0x%0*llx                %s\n"" " string_content escape_sequence ") , number_literal , (pointer_expression "*(undefined8 *)(lVar2 + 0x40)" * (cast_expression "(undefined8 *)(lVar2 + 0x40)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x40)" ( (binary_expression "lVar2 + 0x40" identifier + number_literal) )))) , (subscript_expression "local_58[0]" identifier [ number_literal ]) ))) ;) (if_statement "if (local_58[0] != auStack_48) {\n            FUN_002dac70();\n          }" if (parenthesized_expression "(local_58[0] != auStack_48)" ( (binary_expression "local_58[0] != auStack_48" (subscript_expression "local_58[0]" identifier [ number_literal ]) != identifier) )) (compound_statement "{\n            FUN_002dac70();\n          }" { (expression_statement "FUN_002dac70();" (call_expression "FUN_002dac70()" identifier (argument_list "()" ( ))) ;) })) })) })) (expression_statement "uVar3 = uVar3 + 1;" (assignment_expression "uVar3 = uVar3 + 1" identifier = (binary_expression "uVar3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar3 != uVar5)" ( (binary_expression "uVar3 != uVar5" identifier != identifier) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * (array_declarator IDENT [ LIT ])) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) - (subscript_expression IDENT [ LIT ])) >> LIT) ))) + (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT )))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_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 (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) - (subscript_expression IDENT [ LIT ])) >> LIT) ))) <= IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression IDENT * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) ))) )) && (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) ))) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) , (string_literal " string_content escape_sequence ") , LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (subscript_expression IDENT [ LIT ]) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (return_statement return ;) })))
(function_definition "void FUN_001bca30(undefined8 *param_1,long *param_2,int param_3)\n\n{\n  code *pcVar1;\n  long lVar2;\n  uint uVar3;\n  ulong uVar4;\n  uint uVar5;\n  long local_60;\n  undefined1 *local_58 [2];\n  undefined1 auStack_48 [24];\n  \n  pcVar1 = *(code **)(*param_2 + 0x118);\n  uVar5 = (int)(param_2[0x27] - param_2[0x26] >> 3) + (int)param_2[0x24];\n  if (pcVar1 == FUN_001550b0) {\n    uVar3 = (**(code **)(*param_2 + 0x178))();\n  }\n  else {\n    uVar3 = (*pcVar1)(param_2);\n  }\n  if (uVar3 < uVar5) {\n    do {\n      if (*(uint *)(param_2 + 0x24) <= uVar3) {\n        uVar4 = (ulong)(uVar3 - *(uint *)(param_2 + 0x24));\n        if ((ulong)(param_2[0x27] - param_2[0x26] >> 3) <= uVar4) {\n                    \n          FUN_0017c650("../../gold/object.h",0x8ad,"global_symbol");\n        }\n        lVar2 = *(long *)(param_2[0x26] + uVar4 * 8);\n        if ((((lVar2 != 0) && ((*(byte *)(lVar2 + 0x3a) & 7) == 0)) &&\n            (param_2 == *(long **)(lVar2 + 0x10))) &&\n           (((param_3 == *(int *)(lVar2 + 0x18) && ((*(byte *)(lVar2 + 0x3b) & 0x20) != 0)) &&\n            (*(int *)(lVar2 + 0x18) != 0)))) {\n          local_60 = 0x10;\n          do {\n            putc(0x20,(FILE *)*param_1);\n            local_60 = local_60 + -1;\n          } while (local_60 != 0);\n          FUN_00272230(local_58,lVar2);\n                    \n          fprintf((FILE *)*param_1,"0x%0*llx                %s\n",0x10,*(undefined8 *)(lVar2 + 0x40)\n                  ,local_58[0]);\n          if (local_58[0] != auStack_48) {\n            FUN_002dac70();\n          }\n        }\n      }\n      uVar3 = uVar3 + 1;\n    } while (uVar3 != uVar5);\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_001bca30(undefined8 *param_1,long *param_2,int param_3)" (identifier "FUN_001bca30") (parameter_list "(undefined8 *param_1,long *param_2,int param_3)" (( "(") (parameter_declaration "undefined8 *param_1" (type_identifier "undefined8") (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 "int param_3" (primitive_type "int") (identifier "param_3")) () ")"))) (compound_statement "{\n  code *pcVar1;\n  long lVar2;\n  uint uVar3;\n  ulong uVar4;\n  uint uVar5;\n  long local_60;\n  undefined1 *local_58 [2];\n  undefined1 auStack_48 [24];\n  \n  pcVar1 = *(code **)(*param_2 + 0x118);\n  uVar5 = (int)(param_2[0x27] - param_2[0x26] >> 3) + (int)param_2[0x24];\n  if (pcVar1 == FUN_001550b0) {\n    uVar3 = (**(code **)(*param_2 + 0x178))();\n  }\n  else {\n    uVar3 = (*pcVar1)(param_2);\n  }\n  if (uVar3 < uVar5) {\n    do {\n      if (*(uint *)(param_2 + 0x24) <= uVar3) {\n        uVar4 = (ulong)(uVar3 - *(uint *)(param_2 + 0x24));\n        if ((ulong)(param_2[0x27] - param_2[0x26] >> 3) <= uVar4) {\n                    \n          FUN_0017c650("../../gold/object.h",0x8ad,"global_symbol");\n        }\n        lVar2 = *(long *)(param_2[0x26] + uVar4 * 8);\n        if ((((lVar2 != 0) && ((*(byte *)(lVar2 + 0x3a) & 7) == 0)) &&\n            (param_2 == *(long **)(lVar2 + 0x10))) &&\n           (((param_3 == *(int *)(lVar2 + 0x18) && ((*(byte *)(lVar2 + 0x3b) & 0x20) != 0)) &&\n            (*(int *)(lVar2 + 0x18) != 0)))) {\n          local_60 = 0x10;\n          do {\n            putc(0x20,(FILE *)*param_1);\n            local_60 = local_60 + -1;\n          } while (local_60 != 0);\n          FUN_00272230(local_58,lVar2);\n                    \n          fprintf((FILE *)*param_1,"0x%0*llx                %s\n",0x10,*(undefined8 *)(lVar2 + 0x40)\n                  ,local_58[0]);\n          if (local_58[0] != auStack_48) {\n            FUN_002dac70();\n          }\n        }\n      }\n      uVar3 = uVar3 + 1;\n    } while (uVar3 != uVar5);\n  }\n  return;\n}" ({ "{") (declaration "code *pcVar1;" (type_identifier "code") (pointer_declarator "*pcVar1" (* "*") (identifier "pcVar1")) (; ";")) (declaration "long lVar2;" (sized_type_specifier "long" (long "long")) (identifier "lVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "ulong uVar4;" (type_identifier "ulong") (identifier "uVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "long local_60;" (sized_type_specifier "long" (long "long")) (identifier "local_60") (; ";")) (declaration "undefined1 *local_58 [2];" (type_identifier "undefined1") (pointer_declarator "*local_58 [2]" (* "*") (array_declarator "local_58 [2]" (identifier "local_58") ([ "[") (number_literal "2") (] "]"))) (; ";")) (declaration "undefined1 auStack_48 [24];" (type_identifier "undefined1") (array_declarator "auStack_48 [24]" (identifier "auStack_48") ([ "[") (number_literal "24") (] "]")) (; ";")) (expression_statement "pcVar1 = *(code **)(*param_2 + 0x118);" (assignment_expression "pcVar1 = *(code **)(*param_2 + 0x118)" (identifier "pcVar1") (= "=") (pointer_expression "*(code **)(*param_2 + 0x118)" (* "*") (cast_expression "(code **)(*param_2 + 0x118)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_2 + 0x118)" (( "(") (binary_expression "*param_2 + 0x118" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0x118")) () ")"))))) (; ";")) (expression_statement "uVar5 = (int)(param_2[0x27] - param_2[0x26] >> 3) + (int)param_2[0x24];" (assignment_expression "uVar5 = (int)(param_2[0x27] - param_2[0x26] >> 3) + (int)param_2[0x24]" (identifier "uVar5") (= "=") (binary_expression "(int)(param_2[0x27] - param_2[0x26] >> 3) + (int)param_2[0x24]" (cast_expression "(int)(param_2[0x27] - param_2[0x26] >> 3)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(param_2[0x27] - param_2[0x26] >> 3)" (( "(") (binary_expression "param_2[0x27] - param_2[0x26] >> 3" (binary_expression "param_2[0x27] - param_2[0x26]" (subscript_expression "param_2[0x27]" (identifier "param_2") ([ "[") (number_literal "0x27") (] "]")) (- "-") (subscript_expression "param_2[0x26]" (identifier "param_2") ([ "[") (number_literal "0x26") (] "]"))) (>> ">>") (number_literal "3")) () ")"))) (+ "+") (cast_expression "(int)param_2[0x24]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "param_2[0x24]" (identifier "param_2") ([ "[") (number_literal "0x24") (] "]"))))) (; ";")) (if_statement "if (pcVar1 == FUN_001550b0) {\n    uVar3 = (**(code **)(*param_2 + 0x178))();\n  }\n  else {\n    uVar3 = (*pcVar1)(param_2);\n  }" (if "if") (parenthesized_expression "(pcVar1 == FUN_001550b0)" (( "(") (binary_expression "pcVar1 == FUN_001550b0" (identifier "pcVar1") (== "==") (identifier "FUN_001550b0")) () ")")) (compound_statement "{\n    uVar3 = (**(code **)(*param_2 + 0x178))();\n  }" ({ "{") (expression_statement "uVar3 = (**(code **)(*param_2 + 0x178))();" (assignment_expression "uVar3 = (**(code **)(*param_2 + 0x178))()" (identifier "uVar3") (= "=") (call_expression "(**(code **)(*param_2 + 0x178))()" (parenthesized_expression "(**(code **)(*param_2 + 0x178))" (( "(") (pointer_expression "**(code **)(*param_2 + 0x178)" (* "*") (pointer_expression "*(code **)(*param_2 + 0x178)" (* "*") (cast_expression "(code **)(*param_2 + 0x178)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_2 + 0x178)" (( "(") (binary_expression "*param_2 + 0x178" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0x178")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")) (else_clause "else {\n    uVar3 = (*pcVar1)(param_2);\n  }" (else "else") (compound_statement "{\n    uVar3 = (*pcVar1)(param_2);\n  }" ({ "{") (expression_statement "uVar3 = (*pcVar1)(param_2);" (assignment_expression "uVar3 = (*pcVar1)(param_2)" (identifier "uVar3") (= "=") (call_expression "(*pcVar1)(param_2)" (parenthesized_expression "(*pcVar1)" (( "(") (pointer_expression "*pcVar1" (* "*") (identifier "pcVar1")) () ")")) (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (} "}")))) (if_statement "if (uVar3 < uVar5) {\n    do {\n      if (*(uint *)(param_2 + 0x24) <= uVar3) {\n        uVar4 = (ulong)(uVar3 - *(uint *)(param_2 + 0x24));\n        if ((ulong)(param_2[0x27] - param_2[0x26] >> 3) <= uVar4) {\n                    \n          FUN_0017c650("../../gold/object.h",0x8ad,"global_symbol");\n        }\n        lVar2 = *(long *)(param_2[0x26] + uVar4 * 8);\n        if ((((lVar2 != 0) && ((*(byte *)(lVar2 + 0x3a) & 7) == 0)) &&\n            (param_2 == *(long **)(lVar2 + 0x10))) &&\n           (((param_3 == *(int *)(lVar2 + 0x18) && ((*(byte *)(lVar2 + 0x3b) & 0x20) != 0)) &&\n            (*(int *)(lVar2 + 0x18) != 0)))) {\n          local_60 = 0x10;\n          do {\n            putc(0x20,(FILE *)*param_1);\n            local_60 = local_60 + -1;\n          } while (local_60 != 0);\n          FUN_00272230(local_58,lVar2);\n                    \n          fprintf((FILE *)*param_1,"0x%0*llx                %s\n",0x10,*(undefined8 *)(lVar2 + 0x40)\n                  ,local_58[0]);\n          if (local_58[0] != auStack_48) {\n            FUN_002dac70();\n          }\n        }\n      }\n      uVar3 = uVar3 + 1;\n    } while (uVar3 != uVar5);\n  }" (if "if") (parenthesized_expression "(uVar3 < uVar5)" (( "(") (binary_expression "uVar3 < uVar5" (identifier "uVar3") (< "<") (identifier "uVar5")) () ")")) (compound_statement "{\n    do {\n      if (*(uint *)(param_2 + 0x24) <= uVar3) {\n        uVar4 = (ulong)(uVar3 - *(uint *)(param_2 + 0x24));\n        if ((ulong)(param_2[0x27] - param_2[0x26] >> 3) <= uVar4) {\n                    \n          FUN_0017c650("../../gold/object.h",0x8ad,"global_symbol");\n        }\n        lVar2 = *(long *)(param_2[0x26] + uVar4 * 8);\n        if ((((lVar2 != 0) && ((*(byte *)(lVar2 + 0x3a) & 7) == 0)) &&\n            (param_2 == *(long **)(lVar2 + 0x10))) &&\n           (((param_3 == *(int *)(lVar2 + 0x18) && ((*(byte *)(lVar2 + 0x3b) & 0x20) != 0)) &&\n            (*(int *)(lVar2 + 0x18) != 0)))) {\n          local_60 = 0x10;\n          do {\n            putc(0x20,(FILE *)*param_1);\n            local_60 = local_60 + -1;\n          } while (local_60 != 0);\n          FUN_00272230(local_58,lVar2);\n                    \n          fprintf((FILE *)*param_1,"0x%0*llx                %s\n",0x10,*(undefined8 *)(lVar2 + 0x40)\n                  ,local_58[0]);\n          if (local_58[0] != auStack_48) {\n            FUN_002dac70();\n          }\n        }\n      }\n      uVar3 = uVar3 + 1;\n    } while (uVar3 != uVar5);\n  }" ({ "{") (do_statement "do {\n      if (*(uint *)(param_2 + 0x24) <= uVar3) {\n        uVar4 = (ulong)(uVar3 - *(uint *)(param_2 + 0x24));\n        if ((ulong)(param_2[0x27] - param_2[0x26] >> 3) <= uVar4) {\n                    \n          FUN_0017c650("../../gold/object.h",0x8ad,"global_symbol");\n        }\n        lVar2 = *(long *)(param_2[0x26] + uVar4 * 8);\n        if ((((lVar2 != 0) && ((*(byte *)(lVar2 + 0x3a) & 7) == 0)) &&\n            (param_2 == *(long **)(lVar2 + 0x10))) &&\n           (((param_3 == *(int *)(lVar2 + 0x18) && ((*(byte *)(lVar2 + 0x3b) & 0x20) != 0)) &&\n            (*(int *)(lVar2 + 0x18) != 0)))) {\n          local_60 = 0x10;\n          do {\n            putc(0x20,(FILE *)*param_1);\n            local_60 = local_60 + -1;\n          } while (local_60 != 0);\n          FUN_00272230(local_58,lVar2);\n                    \n          fprintf((FILE *)*param_1,"0x%0*llx                %s\n",0x10,*(undefined8 *)(lVar2 + 0x40)\n                  ,local_58[0]);\n          if (local_58[0] != auStack_48) {\n            FUN_002dac70();\n          }\n        }\n      }\n      uVar3 = uVar3 + 1;\n    } while (uVar3 != uVar5);" (do "do") (compound_statement "{\n      if (*(uint *)(param_2 + 0x24) <= uVar3) {\n        uVar4 = (ulong)(uVar3 - *(uint *)(param_2 + 0x24));\n        if ((ulong)(param_2[0x27] - param_2[0x26] >> 3) <= uVar4) {\n                    \n          FUN_0017c650("../../gold/object.h",0x8ad,"global_symbol");\n        }\n        lVar2 = *(long *)(param_2[0x26] + uVar4 * 8);\n        if ((((lVar2 != 0) && ((*(byte *)(lVar2 + 0x3a) & 7) == 0)) &&\n            (param_2 == *(long **)(lVar2 + 0x10))) &&\n           (((param_3 == *(int *)(lVar2 + 0x18) && ((*(byte *)(lVar2 + 0x3b) & 0x20) != 0)) &&\n            (*(int *)(lVar2 + 0x18) != 0)))) {\n          local_60 = 0x10;\n          do {\n            putc(0x20,(FILE *)*param_1);\n            local_60 = local_60 + -1;\n          } while (local_60 != 0);\n          FUN_00272230(local_58,lVar2);\n                    \n          fprintf((FILE *)*param_1,"0x%0*llx                %s\n",0x10,*(undefined8 *)(lVar2 + 0x40)\n                  ,local_58[0]);\n          if (local_58[0] != auStack_48) {\n            FUN_002dac70();\n          }\n        }\n      }\n      uVar3 = uVar3 + 1;\n    }" ({ "{") (if_statement "if (*(uint *)(param_2 + 0x24) <= uVar3) {\n        uVar4 = (ulong)(uVar3 - *(uint *)(param_2 + 0x24));\n        if ((ulong)(param_2[0x27] - param_2[0x26] >> 3) <= uVar4) {\n                    \n          FUN_0017c650("../../gold/object.h",0x8ad,"global_symbol");\n        }\n        lVar2 = *(long *)(param_2[0x26] + uVar4 * 8);\n        if ((((lVar2 != 0) && ((*(byte *)(lVar2 + 0x3a) & 7) == 0)) &&\n            (param_2 == *(long **)(lVar2 + 0x10))) &&\n           (((param_3 == *(int *)(lVar2 + 0x18) && ((*(byte *)(lVar2 + 0x3b) & 0x20) != 0)) &&\n            (*(int *)(lVar2 + 0x18) != 0)))) {\n          local_60 = 0x10;\n          do {\n            putc(0x20,(FILE *)*param_1);\n            local_60 = local_60 + -1;\n          } while (local_60 != 0);\n          FUN_00272230(local_58,lVar2);\n                    \n          fprintf((FILE *)*param_1,"0x%0*llx                %s\n",0x10,*(undefined8 *)(lVar2 + 0x40)\n                  ,local_58[0]);\n          if (local_58[0] != auStack_48) {\n            FUN_002dac70();\n          }\n        }\n      }" (if "if") (parenthesized_expression "(*(uint *)(param_2 + 0x24) <= uVar3)" (( "(") (binary_expression "*(uint *)(param_2 + 0x24) <= uVar3" (pointer_expression "*(uint *)(param_2 + 0x24)" (* "*") (cast_expression "(uint *)(param_2 + 0x24)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x24)" (( "(") (binary_expression "param_2 + 0x24" (identifier "param_2") (+ "+") (number_literal "0x24")) () ")")))) (<= "<=") (identifier "uVar3")) () ")")) (compound_statement "{\n        uVar4 = (ulong)(uVar3 - *(uint *)(param_2 + 0x24));\n        if ((ulong)(param_2[0x27] - param_2[0x26] >> 3) <= uVar4) {\n                    \n          FUN_0017c650("../../gold/object.h",0x8ad,"global_symbol");\n        }\n        lVar2 = *(long *)(param_2[0x26] + uVar4 * 8);\n        if ((((lVar2 != 0) && ((*(byte *)(lVar2 + 0x3a) & 7) == 0)) &&\n            (param_2 == *(long **)(lVar2 + 0x10))) &&\n           (((param_3 == *(int *)(lVar2 + 0x18) && ((*(byte *)(lVar2 + 0x3b) & 0x20) != 0)) &&\n            (*(int *)(lVar2 + 0x18) != 0)))) {\n          local_60 = 0x10;\n          do {\n            putc(0x20,(FILE *)*param_1);\n            local_60 = local_60 + -1;\n          } while (local_60 != 0);\n          FUN_00272230(local_58,lVar2);\n                    \n          fprintf((FILE *)*param_1,"0x%0*llx                %s\n",0x10,*(undefined8 *)(lVar2 + 0x40)\n                  ,local_58[0]);\n          if (local_58[0] != auStack_48) {\n            FUN_002dac70();\n          }\n        }\n      }" ({ "{") (expression_statement "uVar4 = (ulong)(uVar3 - *(uint *)(param_2 + 0x24));" (assignment_expression "uVar4 = (ulong)(uVar3 - *(uint *)(param_2 + 0x24))" (identifier "uVar4") (= "=") (call_expression "(ulong)(uVar3 - *(uint *)(param_2 + 0x24))" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(uVar3 - *(uint *)(param_2 + 0x24))" (( "(") (binary_expression "uVar3 - *(uint *)(param_2 + 0x24)" (identifier "uVar3") (- "-") (pointer_expression "*(uint *)(param_2 + 0x24)" (* "*") (cast_expression "(uint *)(param_2 + 0x24)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x24)" (( "(") (binary_expression "param_2 + 0x24" (identifier "param_2") (+ "+") (number_literal "0x24")) () ")"))))) () ")")))) (; ";")) (if_statement "if ((ulong)(param_2[0x27] - param_2[0x26] >> 3) <= uVar4) {\n                    \n          FUN_0017c650("../../gold/object.h",0x8ad,"global_symbol");\n        }" (if "if") (parenthesized_expression "((ulong)(param_2[0x27] - param_2[0x26] >> 3) <= uVar4)" (( "(") (binary_expression "(ulong)(param_2[0x27] - param_2[0x26] >> 3) <= uVar4" (call_expression "(ulong)(param_2[0x27] - param_2[0x26] >> 3)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(param_2[0x27] - param_2[0x26] >> 3)" (( "(") (binary_expression "param_2[0x27] - param_2[0x26] >> 3" (binary_expression "param_2[0x27] - param_2[0x26]" (subscript_expression "param_2[0x27]" (identifier "param_2") ([ "[") (number_literal "0x27") (] "]")) (- "-") (subscript_expression "param_2[0x26]" (identifier "param_2") ([ "[") (number_literal "0x26") (] "]"))) (>> ">>") (number_literal "3")) () ")"))) (<= "<=") (identifier "uVar4")) () ")")) (compound_statement "{\n                    \n          FUN_0017c650("../../gold/object.h",0x8ad,"global_symbol");\n        }" ({ "{") (expression_statement "FUN_0017c650("../../gold/object.h",0x8ad,"global_symbol");" (call_expression "FUN_0017c650("../../gold/object.h",0x8ad,"global_symbol")" (identifier "FUN_0017c650") (argument_list "("../../gold/object.h",0x8ad,"global_symbol")" (( "(") (string_literal ""../../gold/object.h"" (" """) (string_content "../../gold/object.h") (" """)) (, ",") (number_literal "0x8ad") (, ",") (string_literal ""global_symbol"" (" """) (string_content "global_symbol") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "lVar2 = *(long *)(param_2[0x26] + uVar4 * 8);" (assignment_expression "lVar2 = *(long *)(param_2[0x26] + uVar4 * 8)" (identifier "lVar2") (= "=") (pointer_expression "*(long *)(param_2[0x26] + uVar4 * 8)" (* "*") (cast_expression "(long *)(param_2[0x26] + uVar4 * 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[0x26] + uVar4 * 8)" (( "(") (binary_expression "param_2[0x26] + uVar4 * 8" (subscript_expression "param_2[0x26]" (identifier "param_2") ([ "[") (number_literal "0x26") (] "]")) (+ "+") (binary_expression "uVar4 * 8" (identifier "uVar4") (* "*") (number_literal "8"))) () ")"))))) (; ";")) (if_statement "if ((((lVar2 != 0) && ((*(byte *)(lVar2 + 0x3a) & 7) == 0)) &&\n            (param_2 == *(long **)(lVar2 + 0x10))) &&\n           (((param_3 == *(int *)(lVar2 + 0x18) && ((*(byte *)(lVar2 + 0x3b) & 0x20) != 0)) &&\n            (*(int *)(lVar2 + 0x18) != 0)))) {\n          local_60 = 0x10;\n          do {\n            putc(0x20,(FILE *)*param_1);\n            local_60 = local_60 + -1;\n          } while (local_60 != 0);\n          FUN_00272230(local_58,lVar2);\n                    \n          fprintf((FILE *)*param_1,"0x%0*llx                %s\n",0x10,*(undefined8 *)(lVar2 + 0x40)\n                  ,local_58[0]);\n          if (local_58[0] != auStack_48) {\n            FUN_002dac70();\n          }\n        }" (if "if") (parenthesized_expression "((((lVar2 != 0) && ((*(byte *)(lVar2 + 0x3a) & 7) == 0)) &&\n            (param_2 == *(long **)(lVar2 + 0x10))) &&\n           (((param_3 == *(int *)(lVar2 + 0x18) && ((*(byte *)(lVar2 + 0x3b) & 0x20) != 0)) &&\n            (*(int *)(lVar2 + 0x18) != 0))))" (( "(") (binary_expression "(((lVar2 != 0) && ((*(byte *)(lVar2 + 0x3a) & 7) == 0)) &&\n            (param_2 == *(long **)(lVar2 + 0x10))) &&\n           (((param_3 == *(int *)(lVar2 + 0x18) && ((*(byte *)(lVar2 + 0x3b) & 0x20) != 0)) &&\n            (*(int *)(lVar2 + 0x18) != 0)))" (parenthesized_expression "(((lVar2 != 0) && ((*(byte *)(lVar2 + 0x3a) & 7) == 0)) &&\n            (param_2 == *(long **)(lVar2 + 0x10)))" (( "(") (binary_expression "((lVar2 != 0) && ((*(byte *)(lVar2 + 0x3a) & 7) == 0)) &&\n            (param_2 == *(long **)(lVar2 + 0x10))" (parenthesized_expression "((lVar2 != 0) && ((*(byte *)(lVar2 + 0x3a) & 7) == 0))" (( "(") (binary_expression "(lVar2 != 0) && ((*(byte *)(lVar2 + 0x3a) & 7) == 0)" (parenthesized_expression "(lVar2 != 0)" (( "(") (binary_expression "lVar2 != 0" (identifier "lVar2") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((*(byte *)(lVar2 + 0x3a) & 7) == 0)" (( "(") (binary_expression "(*(byte *)(lVar2 + 0x3a) & 7) == 0" (parenthesized_expression "(*(byte *)(lVar2 + 0x3a) & 7)" (( "(") (binary_expression "*(byte *)(lVar2 + 0x3a) & 7" (pointer_expression "*(byte *)(lVar2 + 0x3a)" (* "*") (cast_expression "(byte *)(lVar2 + 0x3a)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 0x3a)" (( "(") (binary_expression "lVar2 + 0x3a" (identifier "lVar2") (+ "+") (number_literal "0x3a")) () ")")))) (& "&") (number_literal "7")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(param_2 == *(long **)(lVar2 + 0x10))" (( "(") (binary_expression "param_2 == *(long **)(lVar2 + 0x10)" (identifier "param_2") (== "==") (pointer_expression "*(long **)(lVar2 + 0x10)" (* "*") (cast_expression "(long **)(lVar2 + 0x10)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar2 + 0x10)" (( "(") (binary_expression "lVar2 + 0x10" (identifier "lVar2") (+ "+") (number_literal "0x10")) () ")"))))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(((param_3 == *(int *)(lVar2 + 0x18) && ((*(byte *)(lVar2 + 0x3b) & 0x20) != 0)) &&\n            (*(int *)(lVar2 + 0x18) != 0)))" (( "(") (parenthesized_expression "((param_3 == *(int *)(lVar2 + 0x18) && ((*(byte *)(lVar2 + 0x3b) & 0x20) != 0)) &&\n            (*(int *)(lVar2 + 0x18) != 0))" (( "(") (binary_expression "(param_3 == *(int *)(lVar2 + 0x18) && ((*(byte *)(lVar2 + 0x3b) & 0x20) != 0)) &&\n            (*(int *)(lVar2 + 0x18) != 0)" (parenthesized_expression "(param_3 == *(int *)(lVar2 + 0x18) && ((*(byte *)(lVar2 + 0x3b) & 0x20) != 0))" (( "(") (binary_expression "param_3 == *(int *)(lVar2 + 0x18) && ((*(byte *)(lVar2 + 0x3b) & 0x20) != 0)" (binary_expression "param_3 == *(int *)(lVar2 + 0x18)" (identifier "param_3") (== "==") (pointer_expression "*(int *)(lVar2 + 0x18)" (* "*") (cast_expression "(int *)(lVar2 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 0x18)" (( "(") (binary_expression "lVar2 + 0x18" (identifier "lVar2") (+ "+") (number_literal "0x18")) () ")"))))) (&& "&&") (parenthesized_expression "((*(byte *)(lVar2 + 0x3b) & 0x20) != 0)" (( "(") (binary_expression "(*(byte *)(lVar2 + 0x3b) & 0x20) != 0" (parenthesized_expression "(*(byte *)(lVar2 + 0x3b) & 0x20)" (( "(") (binary_expression "*(byte *)(lVar2 + 0x3b) & 0x20" (pointer_expression "*(byte *)(lVar2 + 0x3b)" (* "*") (cast_expression "(byte *)(lVar2 + 0x3b)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 0x3b)" (( "(") (binary_expression "lVar2 + 0x3b" (identifier "lVar2") (+ "+") (number_literal "0x3b")) () ")")))) (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(lVar2 + 0x18) != 0)" (( "(") (binary_expression "*(int *)(lVar2 + 0x18) != 0" (pointer_expression "*(int *)(lVar2 + 0x18)" (* "*") (cast_expression "(int *)(lVar2 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 0x18)" (( "(") (binary_expression "lVar2 + 0x18" (identifier "lVar2") (+ "+") (number_literal "0x18")) () ")")))) (!= "!=") (number_literal "0")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n          local_60 = 0x10;\n          do {\n            putc(0x20,(FILE *)*param_1);\n            local_60 = local_60 + -1;\n          } while (local_60 != 0);\n          FUN_00272230(local_58,lVar2);\n                    \n          fprintf((FILE *)*param_1,"0x%0*llx                %s\n",0x10,*(undefined8 *)(lVar2 + 0x40)\n                  ,local_58[0]);\n          if (local_58[0] != auStack_48) {\n            FUN_002dac70();\n          }\n        }" ({ "{") (expression_statement "local_60 = 0x10;" (assignment_expression "local_60 = 0x10" (identifier "local_60") (= "=") (number_literal "0x10")) (; ";")) (do_statement "do {\n            putc(0x20,(FILE *)*param_1);\n            local_60 = local_60 + -1;\n          } while (local_60 != 0);" (do "do") (compound_statement "{\n            putc(0x20,(FILE *)*param_1);\n            local_60 = local_60 + -1;\n          }" ({ "{") (expression_statement "putc(0x20,(FILE *)*param_1);" (call_expression "putc(0x20,(FILE *)*param_1)" (identifier "putc") (argument_list "(0x20,(FILE *)*param_1)" (( "(") (number_literal "0x20") (, ",") (cast_expression "(FILE *)*param_1" (( "(") (type_descriptor "FILE *" (type_identifier "FILE") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) () ")"))) (; ";")) (expression_statement "local_60 = local_60 + -1;" (assignment_expression "local_60 = local_60 + -1" (identifier "local_60") (= "=") (binary_expression "local_60 + -1" (identifier "local_60") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_60 != 0)" (( "(") (binary_expression "local_60 != 0" (identifier "local_60") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "FUN_00272230(local_58,lVar2);" (call_expression "FUN_00272230(local_58,lVar2)" (identifier "FUN_00272230") (argument_list "(local_58,lVar2)" (( "(") (identifier "local_58") (, ",") (identifier "lVar2") () ")"))) (; ";")) (expression_statement "fprintf((FILE *)*param_1,"0x%0*llx                %s\n",0x10,*(undefined8 *)(lVar2 + 0x40)\n                  ,local_58[0]);" (call_expression "fprintf((FILE *)*param_1,"0x%0*llx                %s\n",0x10,*(undefined8 *)(lVar2 + 0x40)\n                  ,local_58[0])" (identifier "fprintf") (argument_list "((FILE *)*param_1,"0x%0*llx                %s\n",0x10,*(undefined8 *)(lVar2 + 0x40)\n                  ,local_58[0])" (( "(") (cast_expression "(FILE *)*param_1" (( "(") (type_descriptor "FILE *" (type_identifier "FILE") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (, ",") (string_literal ""0x%0*llx                %s\n"" (" """) (string_content "0x%0*llx                %s") (escape_sequence "\n") (" """)) (, ",") (number_literal "0x10") (, ",") (pointer_expression "*(undefined8 *)(lVar2 + 0x40)" (* "*") (cast_expression "(undefined8 *)(lVar2 + 0x40)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 0x40)" (( "(") (binary_expression "lVar2 + 0x40" (identifier "lVar2") (+ "+") (number_literal "0x40")) () ")")))) (, ",") (subscript_expression "local_58[0]" (identifier "local_58") ([ "[") (number_literal "0") (] "]")) () ")"))) (; ";")) (if_statement "if (local_58[0] != auStack_48) {\n            FUN_002dac70();\n          }" (if "if") (parenthesized_expression "(local_58[0] != auStack_48)" (( "(") (binary_expression "local_58[0] != auStack_48" (subscript_expression "local_58[0]" (identifier "local_58") ([ "[") (number_literal "0") (] "]")) (!= "!=") (identifier "auStack_48")) () ")")) (compound_statement "{\n            FUN_002dac70();\n          }" ({ "{") (expression_statement "FUN_002dac70();" (call_expression "FUN_002dac70()" (identifier "FUN_002dac70") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (} "}"))) (} "}"))) (expression_statement "uVar3 = uVar3 + 1;" (assignment_expression "uVar3 = uVar3 + 1" (identifier "uVar3") (= "=") (binary_expression "uVar3 + 1" (identifier "uVar3") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar3 != uVar5)" (( "(") (binary_expression "uVar3 != uVar5" (identifier "uVar3") (!= "!=") (identifier "uVar5")) () ")")) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* DWARF original name: print_input_section_symbols<64, false>
   DWARF original prototype: void print_input_section_symbols<64,_false>(Mapfile * this,
   Sized_relobj_file<64,_false> * relobj, uint shndx) */

void __thiscall
var_1::Mapfile::print_input_section_symbols<64,var_11>
          (Mapfile *this,var_10<64,var_11> *var_9,type_4 var_12)

{
  type_1 **pp_Var1;
  type_1 *p_Var2;
  type_2 ppSVar3;
  type_3 *var_8;
  type_4 var_4;
  type_5 var_6;
  type_4 var_5;
  long var_14;
  type_6 local_58;
  
  pp_Var1 = (var_9->super_Sized_relobj<64,var_11>).super_Relobj.super_Object._vptr_Object;
  p_Var2 = pp_Var1[0x23];
  var_5 = (int)((long)(var_9->symbols_).
                      super__Vector_base<var_1::type_3*,var_2::var_17<var_1::type_3*>var_3>._M_impl.
                      _M_finish -
                (long)(var_9->symbols_).
                      super__Vector_base<var_1::type_3*,var_2::var_17<var_1::type_3*>var_3>._M_impl.
                      _M_start >> 3) + var_9->local_symbol_count_;
  if (p_Var2 == Relobj::local_symbol_count) {
    var_4 = (*pp_Var1[0x2f])();
  }
  else {
    var_4 = (*p_Var2)(var_9);
  }
  if (var_4 < var_5) {
    do {
      if (var_9->local_symbol_count_ <= var_4) {
        ppSVar3 = (var_9->symbols_).
                  super__Vector_base<var_1::type_3*,var_2::var_17<var_1::type_3*>var_3>._M_impl._M_start
        ;
        var_6 = (type_5)(var_4 - var_9->local_symbol_count_);
        if ((type_5)((long)(var_9->symbols_).
                          super__Vector_base<var_1::type_3*,var_2::var_17<var_1::type_3*>var_3>._M_impl.
                          _M_finish - (long)ppSVar3 >> 3) <= var_6) {
                    /* WARNING: Subroutine does not return */
          var_7("../../gold/object.h",0x8ad,"global_symbol");
        }
        var_8 = ppSVar3[var_6];
        if ((((var_8 != (type_3 *)0x0) && ((var_8->field_0x3a & 7) == 0)) &&
            (var_9 == (var_10<64,var_11> *)(var_8->u1_).object)) &&
           (((var_12 == (var_8->u2_).var_12 && ((var_8->field_0x3b & 0x20) != 0)) &&
            ((var_8->u2_).var_12 != 0)))) {
          var_14 = 0x10;
          do {
            var_13(0x20,(type_7 *)this->map_file_);
            var_14 = var_14 + -1;
          } while (var_14 != 0);
          Symbol::var_15(&local_58,var_8);
                    /* try { // try from 001bcb4b to 001bcb4f has its CatchHandler @ 001bcba1 */
          var_16((type_7 *)this->map_file_,"0x%0*llx                %s\n",0x10,var_8[1].name_,
                  local_58._M_dataplus._M_p);
          if ((anon_union_16_2_edb7204a_for_basic_string<var_18,var_2::char_traits<var_18>,var_2::var_17<var_18>var_3>var_19
               *)local_58._M_dataplus._M_p != &local_58.field_2) {
            var_20(local_58._M_dataplus._M_p);
          }
        }
      }
      var_4 = var_4 + 1;
    } while (var_4 != var_5);
  }
  return;
}


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

void MASKED(undefined8 *param_1,long *param_2,int param_3)

{
  code *pcVar1;
  long lVar2;
  uint uVar3;
  ulong uVar4;
  uint uVar5;
  long local_60;
  undefined1 *local_58 [2];
  undefined1 auStack_48 [24];
  
  pcVar1 = *(code **)(*param_2 + 0x118);
  uVar5 = (int)(param_2[0x27] - param_2[0x26] >> 3) + (int)param_2[0x24];
  if (pcVar1 == FUN_001550b0) {
    uVar3 = (**(code **)(*param_2 + 0x178))();
  }
  else {
    uVar3 = (*pcVar1)(param_2);
  }
  if (uVar3 < uVar5) {
    do {
      if (*(uint *)(param_2 + 0x24) <= uVar3) {
        uVar4 = (ulong)(uVar3 - *(uint *)(param_2 + 0x24));
        if ((ulong)(param_2[0x27] - param_2[0x26] >> 3) <= uVar4) {
                    /* WARNING: Subroutine does not return */
          FUN_0017c650("../../gold/object.h",0x8ad,"global_symbol");
        }
        lVar2 = *(long *)(param_2[0x26] + uVar4 * 8);
        if ((((lVar2 != 0) && ((*(byte *)(lVar2 + 0x3a) & 7) == 0)) &&
            (param_2 == *(long **)(lVar2 + 0x10))) &&
           (((param_3 == *(int *)(lVar2 + 0x18) && ((*(byte *)(lVar2 + 0x3b) & 0x20) != 0)) &&
            (*(int *)(lVar2 + 0x18) != 0)))) {
          local_60 = 0x10;
          do {
            putc(0x20,(FILE *)*param_1);
            local_60 = local_60 + -1;
          } while (local_60 != 0);
          FUN_00272230(local_58,lVar2);
                    /* try { // try from 001bcb4b to 001bcb4f has its CatchHandler @ 001bcba1 */
          fprintf((FILE *)*param_1,"0x%0*llx                %s\n",0x10,*(undefined8 *)(lVar2 + 0x40)
                  ,local_58[0]);
          if (local_58[0] != auStack_48) {
            FUN_002dac70();
          }
        }
      }
      uVar3 = uVar3 + 1;
    } while (uVar3 != uVar5);
  }
  return;
}

