
/* DWARF original prototype: uchar * read_lines(Sized_dwarf_line_info<32,_true> * this, uchar *
   lineptr, uint shndx) */

uchar * __thiscall
gold::Sized_dwarf_line_info<32,_true>::read_lines
          (Sized_dwarf_line_info<32,_true> *this,uchar *lineptr,uint shndx)

{
  iterator __position;
  Offset_to_lineno_entry *pOVar1;
  bool bVar2;
  mapped_type *this_00;
  uchar *local_98;
  size_t oplength;
  Offset_to_lineno_entry entry;
  LineStateMachine lsm;
  
  local_98 = this->buffer_ + 4;
  if ((this->header_).offset_size == 8) {
    local_98 = this->buffer_ + 0xc;
  }
  while (lineptr < local_98 + (this->header_).total_length) {
    lsm.is_stmt = (this->header_).default_is_stmt;
    lsm.file_num = 1;
    lsm.address = 0;
    lsm.line_num = 1;
    lsm.column_num = 0;
    lsm.shndx = 0xffffffff;
    lsm.basic_block = false;
    lsm.end_sequence = false;
    do {
      bVar2 = process_one_opcode(this,lineptr,&lsm,&oplength);
      if ((bVar2) && (((shndx == 0xffffffff || (lsm.shndx == shndx)) || (lsm.shndx == 0xffffffff))))
      {
        entry.offset = lsm.address;
        entry.header_num = this->current_header_index_;
        entry._20_4_ = 0;
        entry._12_4_ = lsm.file_num & 0x7fffffffU | 0x80000000;
        entry.line_num = lsm.line_num;
        this_00 = std::__detail::
                  _Map_base<unsigned_int,_std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>,_std::allocator<std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>
                  ::operator[]((_Map_base<unsigned_int,_std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>,_std::allocator<std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>
                                *)&this->line_number_map_,&lsm.shndx);
        __position._M_current =
             (this_00->
             super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>
             )._M_impl._M_finish;
        if ((((__position._M_current ==
               (this_00->
               super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>
               )._M_impl._M_start) || (__position._M_current[-1].offset != lsm.address)) ||
            (lsm.line_num == -1)) || (__position._M_current[-1].line_num == -1)) {
          pOVar1 = (this_00->
                   super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>
                   )._M_impl._M_end_of_storage;
        }
        else {
          __position._M_current[-1].field_0xf = __position._M_current[-1].field_0xf & 0x7f;
          pOVar1 = (this_00->
                   super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>
                   )._M_impl._M_end_of_storage;
        }
        if (__position._M_current == pOVar1) {
          std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>::
          _M_realloc_insert<const_gold::Offset_to_lineno_entry&>(this_00,__position,&entry);
        }
        else {
          (__position._M_current)->offset = entry.offset;
          *(ulong *)&(__position._M_current)->header_num = CONCAT44(entry._12_4_,entry.header_num);
          *(ulong *)&(__position._M_current)->line_num = CONCAT44(entry._20_4_,entry.line_num);
          (this_00->
          super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>
          )._M_impl._M_finish = __position._M_current + 1;
        }
      }
      lineptr = lineptr + oplength;
    } while (lsm.end_sequence == false);
  }
  return local_98 + (this->header_).total_length;
}



void FUN_0030a310(long param_1,ulong param_2,int param_3)

{
  long *plVar1;
  long *plVar2;
  char cVar3;
  long *plVar4;
  long local_98;
  long local_80;
  long local_78;
  undefined4 uStack_70;
  uint uStack_6c;
  undefined4 uStack_68;
  undefined4 uStack_64;
  uint local_58 [2];
  long local_50;
  undefined8 local_48;
  int local_40;
  undefined1 local_3c;
  undefined2 local_3b;
  
  local_98 = *(long *)(param_1 + 0x60) + 4;
  if (*(int *)(param_1 + 0x58) == 8) {
    local_98 = *(long *)(param_1 + 0x60) + 0xc;
  }
  while (param_2 < (ulong)(local_98 + *(long *)(param_1 + 0x10))) {
    local_3c = *(undefined1 *)(param_1 + 0x30);
    local_58[0] = 1;
    local_50 = 0;
    local_48 = 1;
    local_40 = -1;
    local_3b = 0;
    do {
      cVar3 = FUN_003086c0(param_1,param_2,local_58,&local_80);
      if ((cVar3 != '\0') && (((param_3 == -1 || (local_40 == param_3)) || (local_40 == -1)))) {
        local_78 = local_50;
        uStack_70 = *(undefined4 *)(param_1 + 200);
        uStack_64 = 0;
        uStack_6c = local_58[0] & 0x7fffffff | 0x80000000;
        uStack_68 = (int)local_48;
        plVar4 = (long *)FUN_0030a080(param_1 + 0x100,&local_40);
        plVar1 = (long *)plVar4[1];
        if ((((plVar1 == (long *)*plVar4) || (plVar1[-3] != local_50)) || ((int)local_48 == -1)) ||
           ((int)plVar1[-1] == -1)) {
          plVar2 = (long *)plVar4[2];
        }
        else {
          *(byte *)((long)plVar1 + -9) = *(byte *)((long)plVar1 + -9) & 0x7f;
          plVar2 = (long *)plVar4[2];
        }
        if (plVar1 == plVar2) {
          FUN_003064a0(plVar4,plVar1,&local_78);
        }
        else {
          *plVar1 = local_78;
          plVar1[1] = CONCAT44(uStack_6c,uStack_70);
          plVar1[2] = CONCAT44(uStack_64,uStack_68);
          plVar4[1] = (long)(plVar1 + 3);
        }
      }
      param_2 = param_2 + local_80;
    } while (local_3b._1_1_ == '\0');
  }
  return;
}


PUSH R15
MOV R15,RSI
PUSH R14
PUSH R13
MOV R13D,EDX
PUSH R12
PUSH RBP
PUSH RBX
MOV RBX,RDI
SUB RSP,0x68
MOV RAX,qword ptr [RDI + 0x60]
CMP dword ptr [RDI + 0x58],0x8
LEA RCX,[RAX + 0x4]
MOV qword ptr [RSP],RCX
JNZ 0x0030a341
ADD RAX,0xc
MOV qword ptr [RSP],RAX
LEA RAX,[RSP + 0x20]
LEA RBP,[RSP + 0x40]
MOV qword ptr [RSP + 0x8],RAX
LEA R12,[RSP + 0x18]
LEA R14,[RBP + 0x18]
NOP dword ptr [RAX]
MOV RAX,qword ptr [RSP]
ADD RAX,qword ptr [RBX + 0x10]
CMP RAX,R15
JBE 0x0030a4a8
MOVZX EAX,byte ptr [RBX + 0x30]
MOV dword ptr [RSP + 0x40],0x1
MOV qword ptr [RSP + 0x48],0x0
MOV byte ptr [RSP + 0x5c],AL
XOR EAX,EAX
MOV qword ptr [RSP + 0x50],0x1
MOV dword ptr [RSP + 0x58],0xffffffff
MOV word ptr [RSP + 0x5d],AX
JMP 0x0030a3b4
ADD R15,qword ptr [RSP + 0x18]
CMP byte ptr [RSP + 0x5e],0x0
JNZ 0x0030a360
MOV RCX,R12
MOV RDX,RBP
MOV RSI,R15
MOV RDI,RBX
CALL 0x003086c0
TEST AL,AL
JZ 0x0030a3a8
CMP R13D,-0x1
JZ 0x0030a3dd
MOV EAX,dword ptr [RSP + 0x58]
CMP EAX,R13D
JZ 0x0030a3dd
CMP EAX,-0x1
JNZ 0x0030a3a8
MOV RAX,qword ptr [RSP + 0x48]
MOV EDX,dword ptr [RSP + 0x40]
MOV RSI,R14
MOV qword ptr [RSP + 0x2c],0x0
MOV byte ptr [RSP + 0x2f],0x80
LEA RDI,[RBX + 0x100]
MOV qword ptr [RSP + 0x20],RAX
MOV EAX,dword ptr [RBX + 0xc8]
AND EDX,0x7fffffff
MOV dword ptr [RSP + 0x34],0x0
MOV dword ptr [RSP + 0x28],EAX
MOV EAX,dword ptr [RSP + 0x2c]
AND EAX,0x80000000
OR EAX,EDX
MOV dword ptr [RSP + 0x2c],EAX
MOV EAX,dword ptr [RSP + 0x50]
MOV dword ptr [RSP + 0x30],EAX
CALL 0x0030a080
MOV RSI,qword ptr [RAX + 0x8]
CMP RSI,qword ptr [RAX]
JZ 0x0030a44b
MOV RCX,qword ptr [RSP + 0x48]
CMP qword ptr [RSI + -0x18],RCX
JZ 0x0030a478
CMP RSI,qword ptr [RAX + 0x10]
JZ 0x0030a490
MOVDQA XMM0,xmmword ptr [RSP + 0x20]
ADD RSI,0x18
MOVUPS xmmword ptr [RSI + -0x18],XMM0
MOV RDX,qword ptr [RSP + 0x30]
MOV qword ptr [RSI + -0x8],RDX
MOV qword ptr [RAX + 0x8],RSI
JMP 0x0030a3a8
CMP dword ptr [RSP + 0x50],-0x1
JZ 0x0030a44b
CMP dword ptr [RSI + -0x8],-0x1
JZ 0x0030a44b
AND byte ptr [RSI + -0x9],0x7f
CMP RSI,qword ptr [RAX + 0x10]
JNZ 0x0030a451
NOP
MOV RDX,qword ptr [RSP + 0x8]
MOV RDI,RAX
CALL 0x003064a0
JMP 0x0030a3a8
ADD RSP,0x68
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
(translation_unit "void FUN_0030a310(long param_1,ulong param_2,int param_3)\n\n{\n  long *plVar1;\n  long *plVar2;\n  char cVar3;\n  long *plVar4;\n  long local_98;\n  long local_80;\n  long local_78;\n  undefined4 uStack_70;\n  uint uStack_6c;\n  undefined4 uStack_68;\n  undefined4 uStack_64;\n  uint local_58 [2];\n  long local_50;\n  undefined8 local_48;\n  int local_40;\n  undefined1 local_3c;\n  undefined2 local_3b;\n  \n  local_98 = *(long *)(param_1 + 0x60) + 4;\n  if (*(int *)(param_1 + 0x58) == 8) {\n    local_98 = *(long *)(param_1 + 0x60) + 0xc;\n  }\n  while (param_2 < (ulong)(local_98 + *(long *)(param_1 + 0x10))) {\n    local_3c = *(undefined1 *)(param_1 + 0x30);\n    local_58[0] = 1;\n    local_50 = 0;\n    local_48 = 1;\n    local_40 = -1;\n    local_3b = 0;\n    do {\n      cVar3 = FUN_003086c0(param_1,param_2,local_58,&local_80);\n      if ((cVar3 != '\0') && (((param_3 == -1 || (local_40 == param_3)) || (local_40 == -1)))) {\n        local_78 = local_50;\n        uStack_70 = *(undefined4 *)(param_1 + 200);\n        uStack_64 = 0;\n        uStack_6c = local_58[0] & 0x7fffffff | 0x80000000;\n        uStack_68 = (int)local_48;\n        plVar4 = (long *)FUN_0030a080(param_1 + 0x100,&local_40);\n        plVar1 = (long *)plVar4[1];\n        if ((((plVar1 == (long *)*plVar4) || (plVar1[-3] != local_50)) || ((int)local_48 == -1)) ||\n           ((int)plVar1[-1] == -1)) {\n          plVar2 = (long *)plVar4[2];\n        }\n        else {\n          *(byte *)((long)plVar1 + -9) = *(byte *)((long)plVar1 + -9) & 0x7f;\n          plVar2 = (long *)plVar4[2];\n        }\n        if (plVar1 == plVar2) {\n          FUN_003064a0(plVar4,plVar1,&local_78);\n        }\n        else {\n          *plVar1 = local_78;\n          plVar1[1] = CONCAT44(uStack_6c,uStack_70);\n          plVar1[2] = CONCAT44(uStack_64,uStack_68);\n          plVar4[1] = (long)(plVar1 + 3);\n        }\n      }\n      param_2 = param_2 + local_80;\n    } while (local_3b._1_1_ == '\0');\n  }\n  return;\n}\n\n" (function_definition "void FUN_0030a310(long param_1,ulong param_2,int param_3)\n\n{\n  long *plVar1;\n  long *plVar2;\n  char cVar3;\n  long *plVar4;\n  long local_98;\n  long local_80;\n  long local_78;\n  undefined4 uStack_70;\n  uint uStack_6c;\n  undefined4 uStack_68;\n  undefined4 uStack_64;\n  uint local_58 [2];\n  long local_50;\n  undefined8 local_48;\n  int local_40;\n  undefined1 local_3c;\n  undefined2 local_3b;\n  \n  local_98 = *(long *)(param_1 + 0x60) + 4;\n  if (*(int *)(param_1 + 0x58) == 8) {\n    local_98 = *(long *)(param_1 + 0x60) + 0xc;\n  }\n  while (param_2 < (ulong)(local_98 + *(long *)(param_1 + 0x10))) {\n    local_3c = *(undefined1 *)(param_1 + 0x30);\n    local_58[0] = 1;\n    local_50 = 0;\n    local_48 = 1;\n    local_40 = -1;\n    local_3b = 0;\n    do {\n      cVar3 = FUN_003086c0(param_1,param_2,local_58,&local_80);\n      if ((cVar3 != '\0') && (((param_3 == -1 || (local_40 == param_3)) || (local_40 == -1)))) {\n        local_78 = local_50;\n        uStack_70 = *(undefined4 *)(param_1 + 200);\n        uStack_64 = 0;\n        uStack_6c = local_58[0] & 0x7fffffff | 0x80000000;\n        uStack_68 = (int)local_48;\n        plVar4 = (long *)FUN_0030a080(param_1 + 0x100,&local_40);\n        plVar1 = (long *)plVar4[1];\n        if ((((plVar1 == (long *)*plVar4) || (plVar1[-3] != local_50)) || ((int)local_48 == -1)) ||\n           ((int)plVar1[-1] == -1)) {\n          plVar2 = (long *)plVar4[2];\n        }\n        else {\n          *(byte *)((long)plVar1 + -9) = *(byte *)((long)plVar1 + -9) & 0x7f;\n          plVar2 = (long *)plVar4[2];\n        }\n        if (plVar1 == plVar2) {\n          FUN_003064a0(plVar4,plVar1,&local_78);\n        }\n        else {\n          *plVar1 = local_78;\n          plVar1[1] = CONCAT44(uStack_6c,uStack_70);\n          plVar1[2] = CONCAT44(uStack_64,uStack_68);\n          plVar4[1] = (long)(plVar1 + 3);\n        }\n      }\n      param_2 = param_2 + local_80;\n    } while (local_3b._1_1_ == '\0');\n  }\n  return;\n}" primitive_type (function_declarator "FUN_0030a310(long param_1,ulong param_2,int param_3)" identifier (parameter_list "(long param_1,ulong param_2,int param_3)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "ulong param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  long *plVar1;\n  long *plVar2;\n  char cVar3;\n  long *plVar4;\n  long local_98;\n  long local_80;\n  long local_78;\n  undefined4 uStack_70;\n  uint uStack_6c;\n  undefined4 uStack_68;\n  undefined4 uStack_64;\n  uint local_58 [2];\n  long local_50;\n  undefined8 local_48;\n  int local_40;\n  undefined1 local_3c;\n  undefined2 local_3b;\n  \n  local_98 = *(long *)(param_1 + 0x60) + 4;\n  if (*(int *)(param_1 + 0x58) == 8) {\n    local_98 = *(long *)(param_1 + 0x60) + 0xc;\n  }\n  while (param_2 < (ulong)(local_98 + *(long *)(param_1 + 0x10))) {\n    local_3c = *(undefined1 *)(param_1 + 0x30);\n    local_58[0] = 1;\n    local_50 = 0;\n    local_48 = 1;\n    local_40 = -1;\n    local_3b = 0;\n    do {\n      cVar3 = FUN_003086c0(param_1,param_2,local_58,&local_80);\n      if ((cVar3 != '\0') && (((param_3 == -1 || (local_40 == param_3)) || (local_40 == -1)))) {\n        local_78 = local_50;\n        uStack_70 = *(undefined4 *)(param_1 + 200);\n        uStack_64 = 0;\n        uStack_6c = local_58[0] & 0x7fffffff | 0x80000000;\n        uStack_68 = (int)local_48;\n        plVar4 = (long *)FUN_0030a080(param_1 + 0x100,&local_40);\n        plVar1 = (long *)plVar4[1];\n        if ((((plVar1 == (long *)*plVar4) || (plVar1[-3] != local_50)) || ((int)local_48 == -1)) ||\n           ((int)plVar1[-1] == -1)) {\n          plVar2 = (long *)plVar4[2];\n        }\n        else {\n          *(byte *)((long)plVar1 + -9) = *(byte *)((long)plVar1 + -9) & 0x7f;\n          plVar2 = (long *)plVar4[2];\n        }\n        if (plVar1 == plVar2) {\n          FUN_003064a0(plVar4,plVar1,&local_78);\n        }\n        else {\n          *plVar1 = local_78;\n          plVar1[1] = CONCAT44(uStack_6c,uStack_70);\n          plVar1[2] = CONCAT44(uStack_64,uStack_68);\n          plVar4[1] = (long)(plVar1 + 3);\n        }\n      }\n      param_2 = param_2 + local_80;\n    } while (local_3b._1_1_ == '\0');\n  }\n  return;\n}" { (declaration "long *plVar1;" (sized_type_specifier "long" long) (pointer_declarator "*plVar1" * identifier) ;) (declaration "long *plVar2;" (sized_type_specifier "long" long) (pointer_declarator "*plVar2" * identifier) ;) (declaration "char cVar3;" primitive_type identifier ;) (declaration "long *plVar4;" (sized_type_specifier "long" long) (pointer_declarator "*plVar4" * identifier) ;) (declaration "long local_98;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_80;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_78;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined4 uStack_70;" type_identifier identifier ;) (declaration "uint uStack_6c;" type_identifier identifier ;) (declaration "undefined4 uStack_68;" type_identifier identifier ;) (declaration "undefined4 uStack_64;" type_identifier identifier ;) (declaration "uint local_58 [2];" type_identifier (array_declarator "local_58 [2]" identifier [ number_literal ]) ;) (declaration "long local_50;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 local_48;" type_identifier identifier ;) (declaration "int local_40;" primitive_type identifier ;) (declaration "undefined1 local_3c;" type_identifier identifier ;) (declaration "undefined2 local_3b;" type_identifier identifier ;) (expression_statement "local_98 = *(long *)(param_1 + 0x60) + 4;" (assignment_expression "local_98 = *(long *)(param_1 + 0x60) + 4" identifier = (binary_expression "*(long *)(param_1 + 0x60) + 4" (pointer_expression "*(long *)(param_1 + 0x60)" * (cast_expression "(long *)(param_1 + 0x60)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) )))) + number_literal)) ;) (if_statement "if (*(int *)(param_1 + 0x58) == 8) {\n    local_98 = *(long *)(param_1 + 0x60) + 0xc;\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0x58) == 8)" ( (binary_expression "*(int *)(param_1 + 0x58) == 8" (pointer_expression "*(int *)(param_1 + 0x58)" * (cast_expression "(int *)(param_1 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x58)" ( (binary_expression "param_1 + 0x58" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    local_98 = *(long *)(param_1 + 0x60) + 0xc;\n  }" { (expression_statement "local_98 = *(long *)(param_1 + 0x60) + 0xc;" (assignment_expression "local_98 = *(long *)(param_1 + 0x60) + 0xc" identifier = (binary_expression "*(long *)(param_1 + 0x60) + 0xc" (pointer_expression "*(long *)(param_1 + 0x60)" * (cast_expression "(long *)(param_1 + 0x60)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) )))) + number_literal)) ;) })) (while_statement "while (param_2 < (ulong)(local_98 + *(long *)(param_1 + 0x10))) {\n    local_3c = *(undefined1 *)(param_1 + 0x30);\n    local_58[0] = 1;\n    local_50 = 0;\n    local_48 = 1;\n    local_40 = -1;\n    local_3b = 0;\n    do {\n      cVar3 = FUN_003086c0(param_1,param_2,local_58,&local_80);\n      if ((cVar3 != '\0') && (((param_3 == -1 || (local_40 == param_3)) || (local_40 == -1)))) {\n        local_78 = local_50;\n        uStack_70 = *(undefined4 *)(param_1 + 200);\n        uStack_64 = 0;\n        uStack_6c = local_58[0] & 0x7fffffff | 0x80000000;\n        uStack_68 = (int)local_48;\n        plVar4 = (long *)FUN_0030a080(param_1 + 0x100,&local_40);\n        plVar1 = (long *)plVar4[1];\n        if ((((plVar1 == (long *)*plVar4) || (plVar1[-3] != local_50)) || ((int)local_48 == -1)) ||\n           ((int)plVar1[-1] == -1)) {\n          plVar2 = (long *)plVar4[2];\n        }\n        else {\n          *(byte *)((long)plVar1 + -9) = *(byte *)((long)plVar1 + -9) & 0x7f;\n          plVar2 = (long *)plVar4[2];\n        }\n        if (plVar1 == plVar2) {\n          FUN_003064a0(plVar4,plVar1,&local_78);\n        }\n        else {\n          *plVar1 = local_78;\n          plVar1[1] = CONCAT44(uStack_6c,uStack_70);\n          plVar1[2] = CONCAT44(uStack_64,uStack_68);\n          plVar4[1] = (long)(plVar1 + 3);\n        }\n      }\n      param_2 = param_2 + local_80;\n    } while (local_3b._1_1_ == '\0');\n  }" while (parenthesized_expression "(param_2 < (ulong)(local_98 + *(long *)(param_1 + 0x10)))" ( (binary_expression "param_2 < (ulong)(local_98 + *(long *)(param_1 + 0x10))" identifier < (call_expression "(ulong)(local_98 + *(long *)(param_1 + 0x10))" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(local_98 + *(long *)(param_1 + 0x10))" ( (binary_expression "local_98 + *(long *)(param_1 + 0x10)" identifier + (pointer_expression "*(long *)(param_1 + 0x10)" * (cast_expression "(long *)(param_1 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) )))) )) (compound_statement "{\n    local_3c = *(undefined1 *)(param_1 + 0x30);\n    local_58[0] = 1;\n    local_50 = 0;\n    local_48 = 1;\n    local_40 = -1;\n    local_3b = 0;\n    do {\n      cVar3 = FUN_003086c0(param_1,param_2,local_58,&local_80);\n      if ((cVar3 != '\0') && (((param_3 == -1 || (local_40 == param_3)) || (local_40 == -1)))) {\n        local_78 = local_50;\n        uStack_70 = *(undefined4 *)(param_1 + 200);\n        uStack_64 = 0;\n        uStack_6c = local_58[0] & 0x7fffffff | 0x80000000;\n        uStack_68 = (int)local_48;\n        plVar4 = (long *)FUN_0030a080(param_1 + 0x100,&local_40);\n        plVar1 = (long *)plVar4[1];\n        if ((((plVar1 == (long *)*plVar4) || (plVar1[-3] != local_50)) || ((int)local_48 == -1)) ||\n           ((int)plVar1[-1] == -1)) {\n          plVar2 = (long *)plVar4[2];\n        }\n        else {\n          *(byte *)((long)plVar1 + -9) = *(byte *)((long)plVar1 + -9) & 0x7f;\n          plVar2 = (long *)plVar4[2];\n        }\n        if (plVar1 == plVar2) {\n          FUN_003064a0(plVar4,plVar1,&local_78);\n        }\n        else {\n          *plVar1 = local_78;\n          plVar1[1] = CONCAT44(uStack_6c,uStack_70);\n          plVar1[2] = CONCAT44(uStack_64,uStack_68);\n          plVar4[1] = (long)(plVar1 + 3);\n        }\n      }\n      param_2 = param_2 + local_80;\n    } while (local_3b._1_1_ == '\0');\n  }" { (expression_statement "local_3c = *(undefined1 *)(param_1 + 0x30);" (assignment_expression "local_3c = *(undefined1 *)(param_1 + 0x30)" identifier = (pointer_expression "*(undefined1 *)(param_1 + 0x30)" * (cast_expression "(undefined1 *)(param_1 + 0x30)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "local_58[0] = 1;" (assignment_expression "local_58[0] = 1" (subscript_expression "local_58[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;) (expression_statement "local_48 = 1;" (assignment_expression "local_48 = 1" identifier = number_literal) ;) (expression_statement "local_40 = -1;" (assignment_expression "local_40 = -1" identifier = number_literal) ;) (expression_statement "local_3b = 0;" (assignment_expression "local_3b = 0" identifier = number_literal) ;) (do_statement "do {\n      cVar3 = FUN_003086c0(param_1,param_2,local_58,&local_80);\n      if ((cVar3 != '\0') && (((param_3 == -1 || (local_40 == param_3)) || (local_40 == -1)))) {\n        local_78 = local_50;\n        uStack_70 = *(undefined4 *)(param_1 + 200);\n        uStack_64 = 0;\n        uStack_6c = local_58[0] & 0x7fffffff | 0x80000000;\n        uStack_68 = (int)local_48;\n        plVar4 = (long *)FUN_0030a080(param_1 + 0x100,&local_40);\n        plVar1 = (long *)plVar4[1];\n        if ((((plVar1 == (long *)*plVar4) || (plVar1[-3] != local_50)) || ((int)local_48 == -1)) ||\n           ((int)plVar1[-1] == -1)) {\n          plVar2 = (long *)plVar4[2];\n        }\n        else {\n          *(byte *)((long)plVar1 + -9) = *(byte *)((long)plVar1 + -9) & 0x7f;\n          plVar2 = (long *)plVar4[2];\n        }\n        if (plVar1 == plVar2) {\n          FUN_003064a0(plVar4,plVar1,&local_78);\n        }\n        else {\n          *plVar1 = local_78;\n          plVar1[1] = CONCAT44(uStack_6c,uStack_70);\n          plVar1[2] = CONCAT44(uStack_64,uStack_68);\n          plVar4[1] = (long)(plVar1 + 3);\n        }\n      }\n      param_2 = param_2 + local_80;\n    } while (local_3b._1_1_ == '\0');" do (compound_statement "{\n      cVar3 = FUN_003086c0(param_1,param_2,local_58,&local_80);\n      if ((cVar3 != '\0') && (((param_3 == -1 || (local_40 == param_3)) || (local_40 == -1)))) {\n        local_78 = local_50;\n        uStack_70 = *(undefined4 *)(param_1 + 200);\n        uStack_64 = 0;\n        uStack_6c = local_58[0] & 0x7fffffff | 0x80000000;\n        uStack_68 = (int)local_48;\n        plVar4 = (long *)FUN_0030a080(param_1 + 0x100,&local_40);\n        plVar1 = (long *)plVar4[1];\n        if ((((plVar1 == (long *)*plVar4) || (plVar1[-3] != local_50)) || ((int)local_48 == -1)) ||\n           ((int)plVar1[-1] == -1)) {\n          plVar2 = (long *)plVar4[2];\n        }\n        else {\n          *(byte *)((long)plVar1 + -9) = *(byte *)((long)plVar1 + -9) & 0x7f;\n          plVar2 = (long *)plVar4[2];\n        }\n        if (plVar1 == plVar2) {\n          FUN_003064a0(plVar4,plVar1,&local_78);\n        }\n        else {\n          *plVar1 = local_78;\n          plVar1[1] = CONCAT44(uStack_6c,uStack_70);\n          plVar1[2] = CONCAT44(uStack_64,uStack_68);\n          plVar4[1] = (long)(plVar1 + 3);\n        }\n      }\n      param_2 = param_2 + local_80;\n    }" { (expression_statement "cVar3 = FUN_003086c0(param_1,param_2,local_58,&local_80);" (assignment_expression "cVar3 = FUN_003086c0(param_1,param_2,local_58,&local_80)" identifier = (call_expression "FUN_003086c0(param_1,param_2,local_58,&local_80)" identifier (argument_list "(param_1,param_2,local_58,&local_80)" ( identifier , identifier , identifier , (pointer_expression "&local_80" & identifier) )))) ;) (if_statement "if ((cVar3 != '\0') && (((param_3 == -1 || (local_40 == param_3)) || (local_40 == -1)))) {\n        local_78 = local_50;\n        uStack_70 = *(undefined4 *)(param_1 + 200);\n        uStack_64 = 0;\n        uStack_6c = local_58[0] & 0x7fffffff | 0x80000000;\n        uStack_68 = (int)local_48;\n        plVar4 = (long *)FUN_0030a080(param_1 + 0x100,&local_40);\n        plVar1 = (long *)plVar4[1];\n        if ((((plVar1 == (long *)*plVar4) || (plVar1[-3] != local_50)) || ((int)local_48 == -1)) ||\n           ((int)plVar1[-1] == -1)) {\n          plVar2 = (long *)plVar4[2];\n        }\n        else {\n          *(byte *)((long)plVar1 + -9) = *(byte *)((long)plVar1 + -9) & 0x7f;\n          plVar2 = (long *)plVar4[2];\n        }\n        if (plVar1 == plVar2) {\n          FUN_003064a0(plVar4,plVar1,&local_78);\n        }\n        else {\n          *plVar1 = local_78;\n          plVar1[1] = CONCAT44(uStack_6c,uStack_70);\n          plVar1[2] = CONCAT44(uStack_64,uStack_68);\n          plVar4[1] = (long)(plVar1 + 3);\n        }\n      }" if (parenthesized_expression "((cVar3 != '\0') && (((param_3 == -1 || (local_40 == param_3)) || (local_40 == -1))))" ( (binary_expression "(cVar3 != '\0') && (((param_3 == -1 || (local_40 == param_3)) || (local_40 == -1)))" (parenthesized_expression "(cVar3 != '\0')" ( (binary_expression "cVar3 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(((param_3 == -1 || (local_40 == param_3)) || (local_40 == -1)))" ( (parenthesized_expression "((param_3 == -1 || (local_40 == param_3)) || (local_40 == -1))" ( (binary_expression "(param_3 == -1 || (local_40 == param_3)) || (local_40 == -1)" (parenthesized_expression "(param_3 == -1 || (local_40 == param_3))" ( (binary_expression "param_3 == -1 || (local_40 == param_3)" (binary_expression "param_3 == -1" identifier == number_literal) || (parenthesized_expression "(local_40 == param_3)" ( (binary_expression "local_40 == param_3" identifier == identifier) ))) )) || (parenthesized_expression "(local_40 == -1)" ( (binary_expression "local_40 == -1" identifier == number_literal) ))) )) ))) )) (compound_statement "{\n        local_78 = local_50;\n        uStack_70 = *(undefined4 *)(param_1 + 200);\n        uStack_64 = 0;\n        uStack_6c = local_58[0] & 0x7fffffff | 0x80000000;\n        uStack_68 = (int)local_48;\n        plVar4 = (long *)FUN_0030a080(param_1 + 0x100,&local_40);\n        plVar1 = (long *)plVar4[1];\n        if ((((plVar1 == (long *)*plVar4) || (plVar1[-3] != local_50)) || ((int)local_48 == -1)) ||\n           ((int)plVar1[-1] == -1)) {\n          plVar2 = (long *)plVar4[2];\n        }\n        else {\n          *(byte *)((long)plVar1 + -9) = *(byte *)((long)plVar1 + -9) & 0x7f;\n          plVar2 = (long *)plVar4[2];\n        }\n        if (plVar1 == plVar2) {\n          FUN_003064a0(plVar4,plVar1,&local_78);\n        }\n        else {\n          *plVar1 = local_78;\n          plVar1[1] = CONCAT44(uStack_6c,uStack_70);\n          plVar1[2] = CONCAT44(uStack_64,uStack_68);\n          plVar4[1] = (long)(plVar1 + 3);\n        }\n      }" { (expression_statement "local_78 = local_50;" (assignment_expression "local_78 = local_50" identifier = identifier) ;) (expression_statement "uStack_70 = *(undefined4 *)(param_1 + 200);" (assignment_expression "uStack_70 = *(undefined4 *)(param_1 + 200)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 200)" * (cast_expression "(undefined4 *)(param_1 + 200)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 200)" ( (binary_expression "param_1 + 200" identifier + number_literal) ))))) ;) (expression_statement "uStack_64 = 0;" (assignment_expression "uStack_64 = 0" identifier = number_literal) ;) (expression_statement "uStack_6c = local_58[0] & 0x7fffffff | 0x80000000;" (assignment_expression "uStack_6c = local_58[0] & 0x7fffffff | 0x80000000" identifier = (binary_expression "local_58[0] & 0x7fffffff | 0x80000000" (binary_expression "local_58[0] & 0x7fffffff" (subscript_expression "local_58[0]" identifier [ number_literal ]) & number_literal) | number_literal)) ;) (expression_statement "uStack_68 = (int)local_48;" (assignment_expression "uStack_68 = (int)local_48" identifier = (cast_expression "(int)local_48" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "plVar4 = (long *)FUN_0030a080(param_1 + 0x100,&local_40);" (assignment_expression "plVar4 = (long *)FUN_0030a080(param_1 + 0x100,&local_40)" identifier = (cast_expression "(long *)FUN_0030a080(param_1 + 0x100,&local_40)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0030a080(param_1 + 0x100,&local_40)" identifier (argument_list "(param_1 + 0x100,&local_40)" ( (binary_expression "param_1 + 0x100" identifier + number_literal) , (pointer_expression "&local_40" & identifier) ))))) ;) (expression_statement "plVar1 = (long *)plVar4[1];" (assignment_expression "plVar1 = (long *)plVar4[1]" identifier = (cast_expression "(long *)plVar4[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar4[1]" identifier [ number_literal ]))) ;) (if_statement "if ((((plVar1 == (long *)*plVar4) || (plVar1[-3] != local_50)) || ((int)local_48 == -1)) ||\n           ((int)plVar1[-1] == -1)) {\n          plVar2 = (long *)plVar4[2];\n        }\n        else {\n          *(byte *)((long)plVar1 + -9) = *(byte *)((long)plVar1 + -9) & 0x7f;\n          plVar2 = (long *)plVar4[2];\n        }" if (parenthesized_expression "((((plVar1 == (long *)*plVar4) || (plVar1[-3] != local_50)) || ((int)local_48 == -1)) ||\n           ((int)plVar1[-1] == -1))" ( (binary_expression "(((plVar1 == (long *)*plVar4) || (plVar1[-3] != local_50)) || ((int)local_48 == -1)) ||\n           ((int)plVar1[-1] == -1)" (parenthesized_expression "(((plVar1 == (long *)*plVar4) || (plVar1[-3] != local_50)) || ((int)local_48 == -1))" ( (binary_expression "((plVar1 == (long *)*plVar4) || (plVar1[-3] != local_50)) || ((int)local_48 == -1)" (parenthesized_expression "((plVar1 == (long *)*plVar4) || (plVar1[-3] != local_50))" ( (binary_expression "(plVar1 == (long *)*plVar4) || (plVar1[-3] != local_50)" (parenthesized_expression "(plVar1 == (long *)*plVar4)" ( (binary_expression "plVar1 == (long *)*plVar4" identifier == (cast_expression "(long *)*plVar4" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar4" * identifier))) )) || (parenthesized_expression "(plVar1[-3] != local_50)" ( (binary_expression "plVar1[-3] != local_50" (subscript_expression "plVar1[-3]" identifier [ number_literal ]) != identifier) ))) )) || (parenthesized_expression "((int)local_48 == -1)" ( (binary_expression "(int)local_48 == -1" (cast_expression "(int)local_48" ( (type_descriptor "int" primitive_type) ) identifier) == number_literal) ))) )) || (parenthesized_expression "((int)plVar1[-1] == -1)" ( (binary_expression "(int)plVar1[-1] == -1" (cast_expression "(int)plVar1[-1]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "plVar1[-1]" identifier [ number_literal ])) == number_literal) ))) )) (compound_statement "{\n          plVar2 = (long *)plVar4[2];\n        }" { (expression_statement "plVar2 = (long *)plVar4[2];" (assignment_expression "plVar2 = (long *)plVar4[2]" identifier = (cast_expression "(long *)plVar4[2]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar4[2]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n          *(byte *)((long)plVar1 + -9) = *(byte *)((long)plVar1 + -9) & 0x7f;\n          plVar2 = (long *)plVar4[2];\n        }" else (compound_statement "{\n          *(byte *)((long)plVar1 + -9) = *(byte *)((long)plVar1 + -9) & 0x7f;\n          plVar2 = (long *)plVar4[2];\n        }" { (expression_statement "*(byte *)((long)plVar1 + -9) = *(byte *)((long)plVar1 + -9) & 0x7f;" (assignment_expression "*(byte *)((long)plVar1 + -9) = *(byte *)((long)plVar1 + -9) & 0x7f" (pointer_expression "*(byte *)((long)plVar1 + -9)" * (cast_expression "(byte *)((long)plVar1 + -9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar1 + -9)" ( (binary_expression "(long)plVar1 + -9" (cast_expression "(long)plVar1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (binary_expression "*(byte *)((long)plVar1 + -9) & 0x7f" (pointer_expression "*(byte *)((long)plVar1 + -9)" * (cast_expression "(byte *)((long)plVar1 + -9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar1 + -9)" ( (binary_expression "(long)plVar1 + -9" (cast_expression "(long)plVar1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) & number_literal)) ;) (expression_statement "plVar2 = (long *)plVar4[2];" (assignment_expression "plVar2 = (long *)plVar4[2]" identifier = (cast_expression "(long *)plVar4[2]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar4[2]" identifier [ number_literal ]))) ;) }))) (if_statement "if (plVar1 == plVar2) {\n          FUN_003064a0(plVar4,plVar1,&local_78);\n        }\n        else {\n          *plVar1 = local_78;\n          plVar1[1] = CONCAT44(uStack_6c,uStack_70);\n          plVar1[2] = CONCAT44(uStack_64,uStack_68);\n          plVar4[1] = (long)(plVar1 + 3);\n        }" if (parenthesized_expression "(plVar1 == plVar2)" ( (binary_expression "plVar1 == plVar2" identifier == identifier) )) (compound_statement "{\n          FUN_003064a0(plVar4,plVar1,&local_78);\n        }" { (expression_statement "FUN_003064a0(plVar4,plVar1,&local_78);" (call_expression "FUN_003064a0(plVar4,plVar1,&local_78)" identifier (argument_list "(plVar4,plVar1,&local_78)" ( identifier , identifier , (pointer_expression "&local_78" & identifier) ))) ;) }) (else_clause "else {\n          *plVar1 = local_78;\n          plVar1[1] = CONCAT44(uStack_6c,uStack_70);\n          plVar1[2] = CONCAT44(uStack_64,uStack_68);\n          plVar4[1] = (long)(plVar1 + 3);\n        }" else (compound_statement "{\n          *plVar1 = local_78;\n          plVar1[1] = CONCAT44(uStack_6c,uStack_70);\n          plVar1[2] = CONCAT44(uStack_64,uStack_68);\n          plVar4[1] = (long)(plVar1 + 3);\n        }" { (expression_statement "*plVar1 = local_78;" (assignment_expression "*plVar1 = local_78" (pointer_expression "*plVar1" * identifier) = identifier) ;) (expression_statement "plVar1[1] = CONCAT44(uStack_6c,uStack_70);" (assignment_expression "plVar1[1] = CONCAT44(uStack_6c,uStack_70)" (subscript_expression "plVar1[1]" identifier [ number_literal ]) = (call_expression "CONCAT44(uStack_6c,uStack_70)" identifier (argument_list "(uStack_6c,uStack_70)" ( identifier , identifier )))) ;) (expression_statement "plVar1[2] = CONCAT44(uStack_64,uStack_68);" (assignment_expression "plVar1[2] = CONCAT44(uStack_64,uStack_68)" (subscript_expression "plVar1[2]" identifier [ number_literal ]) = (call_expression "CONCAT44(uStack_64,uStack_68)" identifier (argument_list "(uStack_64,uStack_68)" ( identifier , identifier )))) ;) (expression_statement "plVar4[1] = (long)(plVar1 + 3);" (assignment_expression "plVar4[1] = (long)(plVar1 + 3)" (subscript_expression "plVar4[1]" identifier [ number_literal ]) = (cast_expression "(long)(plVar1 + 3)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(plVar1 + 3)" ( (binary_expression "plVar1 + 3" identifier + number_literal) )))) ;) }))) })) (expression_statement "param_2 = param_2 + local_80;" (assignment_expression "param_2 = param_2 + local_80" identifier = (binary_expression "param_2 + local_80" identifier + identifier)) ;) }) while (parenthesized_expression "(local_3b._1_1_ == '\0')" ( (binary_expression "local_3b._1_1_ == '\0'" (field_expression "local_3b._1_1_" identifier . field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit "/* DWARF original prototype: uchar * read_lines(Sized_dwarf_line_info<32,_true> * this, uchar *\n   lineptr, uint shndx) */\n\nuchar * __thiscall\ngold::Sized_dwarf_line_info<32,_true>::read_lines\n          (Sized_dwarf_line_info<32,_true> *this,uchar *lineptr,uint shndx)\n\n{\n  iterator __position;\n  Offset_to_lineno_entry *pOVar1;\n  bool bVar2;\n  mapped_type *this_00;\n  uchar *local_98;\n  size_t oplength;\n  Offset_to_lineno_entry entry;\n  LineStateMachine lsm;\n  \n  local_98 = this->buffer_ + 4;\n  if ((this->header_).offset_size == 8) {\n    local_98 = this->buffer_ + 0xc;\n  }\n  while (lineptr < local_98 + (this->header_).total_length) {\n    lsm.is_stmt = (this->header_).default_is_stmt;\n    lsm.file_num = 1;\n    lsm.address = 0;\n    lsm.line_num = 1;\n    lsm.column_num = 0;\n    lsm.shndx = 0xffffffff;\n    lsm.basic_block = false;\n    lsm.end_sequence = false;\n    do {\n      bVar2 = process_one_opcode(this,lineptr,&lsm,&oplength);\n      if ((bVar2) && (((shndx == 0xffffffff || (lsm.shndx == shndx)) || (lsm.shndx == 0xffffffff))))\n      {\n        entry.offset = lsm.address;\n        entry.header_num = this->current_header_index_;\n        entry._20_4_ = 0;\n        entry._12_4_ = lsm.file_num & 0x7fffffffU | 0x80000000;\n        entry.line_num = lsm.line_num;\n        this_00 = std::__detail::\n                  _Map_base<unsigned_int,_std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>,_std::allocator<std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                  ::operator[]((_Map_base<unsigned_int,_std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>,_std::allocator<std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                                *)&this->line_number_map_,&lsm.shndx);\n        __position._M_current =\n             (this_00->\n             super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n             )._M_impl._M_finish;\n        if ((((__position._M_current ==\n               (this_00->\n               super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n               )._M_impl._M_start) || (__position._M_current[-1].offset != lsm.address)) ||\n            (lsm.line_num == -1)) || (__position._M_current[-1].line_num == -1)) {\n          pOVar1 = (this_00->\n                   super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n                   )._M_impl._M_end_of_storage;\n        }\n        else {\n          __position._M_current[-1].field_0xf = __position._M_current[-1].field_0xf & 0x7f;\n          pOVar1 = (this_00->\n                   super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n                   )._M_impl._M_end_of_storage;\n        }\n        if (__position._M_current == pOVar1) {\n          std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>::\n          _M_realloc_insert<const_gold::Offset_to_lineno_entry&>(this_00,__position,&entry);\n        }\n        else {\n          (__position._M_current)->offset = entry.offset;\n          *(ulong *)&(__position._M_current)->header_num = CONCAT44(entry._12_4_,entry.header_num);\n          *(ulong *)&(__position._M_current)->line_num = CONCAT44(entry._20_4_,entry.line_num);\n          (this_00->\n          super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n          )._M_impl._M_finish = __position._M_current + 1;\n        }\n      }\n      lineptr = lineptr + oplength;\n    } while (lsm.end_sequence == false);\n  }\n  return local_98 + (this->header_).total_length;\n}\n\n" comment (ERROR "uchar * __thiscall\ngold::Sized_dwarf_line_info<32,_true>::read_lines\n          (Sized_dwarf_line_info<32,_true> *this,uchar *lineptr,uint shndx)" (binary_expression "uchar * __thiscall\ngold::Sized_dwarf_line_info<32,_true>::read_lines\n          (Sized_dwarf_line_info<32,_true> *this,uchar *lineptr,uint shndx)" (binary_expression "uchar * __thiscall\ngold::Sized_dwarf_line_info<32" (binary_expression "uchar * __thiscall" identifier * identifier) (ERROR "gold::Sized_dwarf_line_info" identifier : : identifier) < number_literal) (ERROR ",_true" , identifier) > (ERROR "::" : :) (call_expression "read_lines\n          (Sized_dwarf_line_info<32,_true> *this,uchar *lineptr,uint shndx)" identifier (argument_list "(Sized_dwarf_line_info<32,_true> *this,uchar *lineptr,uint shndx)" ( (binary_expression "Sized_dwarf_line_info<32" identifier < number_literal) , (binary_expression "_true> *this" identifier > (pointer_expression "*this" * identifier)) , (binary_expression "uchar *lineptr" identifier * identifier) , (ERROR "uint" identifier) identifier ))))) (compound_statement "{\n  iterator __position;\n  Offset_to_lineno_entry *pOVar1;\n  bool bVar2;\n  mapped_type *this_00;\n  uchar *local_98;\n  size_t oplength;\n  Offset_to_lineno_entry entry;\n  LineStateMachine lsm;\n  \n  local_98 = this->buffer_ + 4;\n  if ((this->header_).offset_size == 8) {\n    local_98 = this->buffer_ + 0xc;\n  }\n  while (lineptr < local_98 + (this->header_).total_length) {\n    lsm.is_stmt = (this->header_).default_is_stmt;\n    lsm.file_num = 1;\n    lsm.address = 0;\n    lsm.line_num = 1;\n    lsm.column_num = 0;\n    lsm.shndx = 0xffffffff;\n    lsm.basic_block = false;\n    lsm.end_sequence = false;\n    do {\n      bVar2 = process_one_opcode(this,lineptr,&lsm,&oplength);\n      if ((bVar2) && (((shndx == 0xffffffff || (lsm.shndx == shndx)) || (lsm.shndx == 0xffffffff))))\n      {\n        entry.offset = lsm.address;\n        entry.header_num = this->current_header_index_;\n        entry._20_4_ = 0;\n        entry._12_4_ = lsm.file_num & 0x7fffffffU | 0x80000000;\n        entry.line_num = lsm.line_num;\n        this_00 = std::__detail::\n                  _Map_base<unsigned_int,_std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>,_std::allocator<std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                  ::operator[]((_Map_base<unsigned_int,_std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>,_std::allocator<std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                                *)&this->line_number_map_,&lsm.shndx);\n        __position._M_current =\n             (this_00->\n             super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n             )._M_impl._M_finish;\n        if ((((__position._M_current ==\n               (this_00->\n               super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n               )._M_impl._M_start) || (__position._M_current[-1].offset != lsm.address)) ||\n            (lsm.line_num == -1)) || (__position._M_current[-1].line_num == -1)) {\n          pOVar1 = (this_00->\n                   super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n                   )._M_impl._M_end_of_storage;\n        }\n        else {\n          __position._M_current[-1].field_0xf = __position._M_current[-1].field_0xf & 0x7f;\n          pOVar1 = (this_00->\n                   super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n                   )._M_impl._M_end_of_storage;\n        }\n        if (__position._M_current == pOVar1) {\n          std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>::\n          _M_realloc_insert<const_gold::Offset_to_lineno_entry&>(this_00,__position,&entry);\n        }\n        else {\n          (__position._M_current)->offset = entry.offset;\n          *(ulong *)&(__position._M_current)->header_num = CONCAT44(entry._12_4_,entry.header_num);\n          *(ulong *)&(__position._M_current)->line_num = CONCAT44(entry._20_4_,entry.line_num);\n          (this_00->\n          super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n          )._M_impl._M_finish = __position._M_current + 1;\n        }\n      }\n      lineptr = lineptr + oplength;\n    } while (lsm.end_sequence == false);\n  }\n  return local_98 + (this->header_).total_length;\n}" { (declaration "iterator __position;" type_identifier identifier ;) (declaration "Offset_to_lineno_entry *pOVar1;" type_identifier (pointer_declarator "*pOVar1" * identifier) ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "mapped_type *this_00;" type_identifier (pointer_declarator "*this_00" * identifier) ;) (declaration "uchar *local_98;" type_identifier (pointer_declarator "*local_98" * identifier) ;) (declaration "size_t oplength;" primitive_type identifier ;) (declaration "Offset_to_lineno_entry entry;" type_identifier identifier ;) (declaration "LineStateMachine lsm;" type_identifier identifier ;) (expression_statement "local_98 = this->buffer_ + 4;" (assignment_expression "local_98 = this->buffer_ + 4" identifier = (binary_expression "this->buffer_ + 4" (field_expression "this->buffer_" identifier -> field_identifier) + number_literal)) ;) (if_statement "if ((this->header_).offset_size == 8) {\n    local_98 = this->buffer_ + 0xc;\n  }" if (parenthesized_expression "((this->header_).offset_size == 8)" ( (binary_expression "(this->header_).offset_size == 8" (field_expression "(this->header_).offset_size" (parenthesized_expression "(this->header_)" ( (field_expression "this->header_" identifier -> field_identifier) )) . field_identifier) == number_literal) )) (compound_statement "{\n    local_98 = this->buffer_ + 0xc;\n  }" { (expression_statement "local_98 = this->buffer_ + 0xc;" (assignment_expression "local_98 = this->buffer_ + 0xc" identifier = (binary_expression "this->buffer_ + 0xc" (field_expression "this->buffer_" identifier -> field_identifier) + number_literal)) ;) })) (while_statement "while (lineptr < local_98 + (this->header_).total_length) {\n    lsm.is_stmt = (this->header_).default_is_stmt;\n    lsm.file_num = 1;\n    lsm.address = 0;\n    lsm.line_num = 1;\n    lsm.column_num = 0;\n    lsm.shndx = 0xffffffff;\n    lsm.basic_block = false;\n    lsm.end_sequence = false;\n    do {\n      bVar2 = process_one_opcode(this,lineptr,&lsm,&oplength);\n      if ((bVar2) && (((shndx == 0xffffffff || (lsm.shndx == shndx)) || (lsm.shndx == 0xffffffff))))\n      {\n        entry.offset = lsm.address;\n        entry.header_num = this->current_header_index_;\n        entry._20_4_ = 0;\n        entry._12_4_ = lsm.file_num & 0x7fffffffU | 0x80000000;\n        entry.line_num = lsm.line_num;\n        this_00 = std::__detail::\n                  _Map_base<unsigned_int,_std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>,_std::allocator<std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                  ::operator[]((_Map_base<unsigned_int,_std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>,_std::allocator<std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                                *)&this->line_number_map_,&lsm.shndx);\n        __position._M_current =\n             (this_00->\n             super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n             )._M_impl._M_finish;\n        if ((((__position._M_current ==\n               (this_00->\n               super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n               )._M_impl._M_start) || (__position._M_current[-1].offset != lsm.address)) ||\n            (lsm.line_num == -1)) || (__position._M_current[-1].line_num == -1)) {\n          pOVar1 = (this_00->\n                   super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n                   )._M_impl._M_end_of_storage;\n        }\n        else {\n          __position._M_current[-1].field_0xf = __position._M_current[-1].field_0xf & 0x7f;\n          pOVar1 = (this_00->\n                   super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n                   )._M_impl._M_end_of_storage;\n        }\n        if (__position._M_current == pOVar1) {\n          std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>::\n          _M_realloc_insert<const_gold::Offset_to_lineno_entry&>(this_00,__position,&entry);\n        }\n        else {\n          (__position._M_current)->offset = entry.offset;\n          *(ulong *)&(__position._M_current)->header_num = CONCAT44(entry._12_4_,entry.header_num);\n          *(ulong *)&(__position._M_current)->line_num = CONCAT44(entry._20_4_,entry.line_num);\n          (this_00->\n          super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n          )._M_impl._M_finish = __position._M_current + 1;\n        }\n      }\n      lineptr = lineptr + oplength;\n    } while (lsm.end_sequence == false);\n  }" while (parenthesized_expression "(lineptr < local_98 + (this->header_).total_length)" ( (binary_expression "lineptr < local_98 + (this->header_).total_length" identifier < (binary_expression "local_98 + (this->header_).total_length" identifier + (field_expression "(this->header_).total_length" (parenthesized_expression "(this->header_)" ( (field_expression "this->header_" identifier -> field_identifier) )) . field_identifier))) )) (compound_statement "{\n    lsm.is_stmt = (this->header_).default_is_stmt;\n    lsm.file_num = 1;\n    lsm.address = 0;\n    lsm.line_num = 1;\n    lsm.column_num = 0;\n    lsm.shndx = 0xffffffff;\n    lsm.basic_block = false;\n    lsm.end_sequence = false;\n    do {\n      bVar2 = process_one_opcode(this,lineptr,&lsm,&oplength);\n      if ((bVar2) && (((shndx == 0xffffffff || (lsm.shndx == shndx)) || (lsm.shndx == 0xffffffff))))\n      {\n        entry.offset = lsm.address;\n        entry.header_num = this->current_header_index_;\n        entry._20_4_ = 0;\n        entry._12_4_ = lsm.file_num & 0x7fffffffU | 0x80000000;\n        entry.line_num = lsm.line_num;\n        this_00 = std::__detail::\n                  _Map_base<unsigned_int,_std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>,_std::allocator<std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                  ::operator[]((_Map_base<unsigned_int,_std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>,_std::allocator<std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                                *)&this->line_number_map_,&lsm.shndx);\n        __position._M_current =\n             (this_00->\n             super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n             )._M_impl._M_finish;\n        if ((((__position._M_current ==\n               (this_00->\n               super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n               )._M_impl._M_start) || (__position._M_current[-1].offset != lsm.address)) ||\n            (lsm.line_num == -1)) || (__position._M_current[-1].line_num == -1)) {\n          pOVar1 = (this_00->\n                   super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n                   )._M_impl._M_end_of_storage;\n        }\n        else {\n          __position._M_current[-1].field_0xf = __position._M_current[-1].field_0xf & 0x7f;\n          pOVar1 = (this_00->\n                   super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n                   )._M_impl._M_end_of_storage;\n        }\n        if (__position._M_current == pOVar1) {\n          std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>::\n          _M_realloc_insert<const_gold::Offset_to_lineno_entry&>(this_00,__position,&entry);\n        }\n        else {\n          (__position._M_current)->offset = entry.offset;\n          *(ulong *)&(__position._M_current)->header_num = CONCAT44(entry._12_4_,entry.header_num);\n          *(ulong *)&(__position._M_current)->line_num = CONCAT44(entry._20_4_,entry.line_num);\n          (this_00->\n          super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n          )._M_impl._M_finish = __position._M_current + 1;\n        }\n      }\n      lineptr = lineptr + oplength;\n    } while (lsm.end_sequence == false);\n  }" { (expression_statement "lsm.is_stmt = (this->header_).default_is_stmt;" (assignment_expression "lsm.is_stmt = (this->header_).default_is_stmt" (field_expression "lsm.is_stmt" identifier . field_identifier) = (field_expression "(this->header_).default_is_stmt" (parenthesized_expression "(this->header_)" ( (field_expression "this->header_" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "lsm.file_num = 1;" (assignment_expression "lsm.file_num = 1" (field_expression "lsm.file_num" identifier . field_identifier) = number_literal) ;) (expression_statement "lsm.address = 0;" (assignment_expression "lsm.address = 0" (field_expression "lsm.address" identifier . field_identifier) = number_literal) ;) (expression_statement "lsm.line_num = 1;" (assignment_expression "lsm.line_num = 1" (field_expression "lsm.line_num" identifier . field_identifier) = number_literal) ;) (expression_statement "lsm.column_num = 0;" (assignment_expression "lsm.column_num = 0" (field_expression "lsm.column_num" identifier . field_identifier) = number_literal) ;) (expression_statement "lsm.shndx = 0xffffffff;" (assignment_expression "lsm.shndx = 0xffffffff" (field_expression "lsm.shndx" identifier . field_identifier) = number_literal) ;) (expression_statement "lsm.basic_block = false;" (assignment_expression "lsm.basic_block = false" (field_expression "lsm.basic_block" identifier . field_identifier) = false) ;) (expression_statement "lsm.end_sequence = false;" (assignment_expression "lsm.end_sequence = false" (field_expression "lsm.end_sequence" identifier . field_identifier) = false) ;) (do_statement "do {\n      bVar2 = process_one_opcode(this,lineptr,&lsm,&oplength);\n      if ((bVar2) && (((shndx == 0xffffffff || (lsm.shndx == shndx)) || (lsm.shndx == 0xffffffff))))\n      {\n        entry.offset = lsm.address;\n        entry.header_num = this->current_header_index_;\n        entry._20_4_ = 0;\n        entry._12_4_ = lsm.file_num & 0x7fffffffU | 0x80000000;\n        entry.line_num = lsm.line_num;\n        this_00 = std::__detail::\n                  _Map_base<unsigned_int,_std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>,_std::allocator<std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                  ::operator[]((_Map_base<unsigned_int,_std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>,_std::allocator<std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                                *)&this->line_number_map_,&lsm.shndx);\n        __position._M_current =\n             (this_00->\n             super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n             )._M_impl._M_finish;\n        if ((((__position._M_current ==\n               (this_00->\n               super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n               )._M_impl._M_start) || (__position._M_current[-1].offset != lsm.address)) ||\n            (lsm.line_num == -1)) || (__position._M_current[-1].line_num == -1)) {\n          pOVar1 = (this_00->\n                   super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n                   )._M_impl._M_end_of_storage;\n        }\n        else {\n          __position._M_current[-1].field_0xf = __position._M_current[-1].field_0xf & 0x7f;\n          pOVar1 = (this_00->\n                   super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n                   )._M_impl._M_end_of_storage;\n        }\n        if (__position._M_current == pOVar1) {\n          std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>::\n          _M_realloc_insert<const_gold::Offset_to_lineno_entry&>(this_00,__position,&entry);\n        }\n        else {\n          (__position._M_current)->offset = entry.offset;\n          *(ulong *)&(__position._M_current)->header_num = CONCAT44(entry._12_4_,entry.header_num);\n          *(ulong *)&(__position._M_current)->line_num = CONCAT44(entry._20_4_,entry.line_num);\n          (this_00->\n          super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n          )._M_impl._M_finish = __position._M_current + 1;\n        }\n      }\n      lineptr = lineptr + oplength;\n    } while (lsm.end_sequence == false);" do (compound_statement "{\n      bVar2 = process_one_opcode(this,lineptr,&lsm,&oplength);\n      if ((bVar2) && (((shndx == 0xffffffff || (lsm.shndx == shndx)) || (lsm.shndx == 0xffffffff))))\n      {\n        entry.offset = lsm.address;\n        entry.header_num = this->current_header_index_;\n        entry._20_4_ = 0;\n        entry._12_4_ = lsm.file_num & 0x7fffffffU | 0x80000000;\n        entry.line_num = lsm.line_num;\n        this_00 = std::__detail::\n                  _Map_base<unsigned_int,_std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>,_std::allocator<std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                  ::operator[]((_Map_base<unsigned_int,_std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>,_std::allocator<std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                                *)&this->line_number_map_,&lsm.shndx);\n        __position._M_current =\n             (this_00->\n             super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n             )._M_impl._M_finish;\n        if ((((__position._M_current ==\n               (this_00->\n               super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n               )._M_impl._M_start) || (__position._M_current[-1].offset != lsm.address)) ||\n            (lsm.line_num == -1)) || (__position._M_current[-1].line_num == -1)) {\n          pOVar1 = (this_00->\n                   super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n                   )._M_impl._M_end_of_storage;\n        }\n        else {\n          __position._M_current[-1].field_0xf = __position._M_current[-1].field_0xf & 0x7f;\n          pOVar1 = (this_00->\n                   super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n                   )._M_impl._M_end_of_storage;\n        }\n        if (__position._M_current == pOVar1) {\n          std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>::\n          _M_realloc_insert<const_gold::Offset_to_lineno_entry&>(this_00,__position,&entry);\n        }\n        else {\n          (__position._M_current)->offset = entry.offset;\n          *(ulong *)&(__position._M_current)->header_num = CONCAT44(entry._12_4_,entry.header_num);\n          *(ulong *)&(__position._M_current)->line_num = CONCAT44(entry._20_4_,entry.line_num);\n          (this_00->\n          super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n          )._M_impl._M_finish = __position._M_current + 1;\n        }\n      }\n      lineptr = lineptr + oplength;\n    }" { (expression_statement "bVar2 = process_one_opcode(this,lineptr,&lsm,&oplength);" (assignment_expression "bVar2 = process_one_opcode(this,lineptr,&lsm,&oplength)" identifier = (call_expression "process_one_opcode(this,lineptr,&lsm,&oplength)" identifier (argument_list "(this,lineptr,&lsm,&oplength)" ( identifier , identifier , (pointer_expression "&lsm" & identifier) , (pointer_expression "&oplength" & identifier) )))) ;) (if_statement "if ((bVar2) && (((shndx == 0xffffffff || (lsm.shndx == shndx)) || (lsm.shndx == 0xffffffff))))\n      {\n        entry.offset = lsm.address;\n        entry.header_num = this->current_header_index_;\n        entry._20_4_ = 0;\n        entry._12_4_ = lsm.file_num & 0x7fffffffU | 0x80000000;\n        entry.line_num = lsm.line_num;\n        this_00 = std::__detail::\n                  _Map_base<unsigned_int,_std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>,_std::allocator<std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                  ::operator[]((_Map_base<unsigned_int,_std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>,_std::allocator<std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                                *)&this->line_number_map_,&lsm.shndx);\n        __position._M_current =\n             (this_00->\n             super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n             )._M_impl._M_finish;\n        if ((((__position._M_current ==\n               (this_00->\n               super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n               )._M_impl._M_start) || (__position._M_current[-1].offset != lsm.address)) ||\n            (lsm.line_num == -1)) || (__position._M_current[-1].line_num == -1)) {\n          pOVar1 = (this_00->\n                   super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n                   )._M_impl._M_end_of_storage;\n        }\n        else {\n          __position._M_current[-1].field_0xf = __position._M_current[-1].field_0xf & 0x7f;\n          pOVar1 = (this_00->\n                   super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n                   )._M_impl._M_end_of_storage;\n        }\n        if (__position._M_current == pOVar1) {\n          std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>::\n          _M_realloc_insert<const_gold::Offset_to_lineno_entry&>(this_00,__position,&entry);\n        }\n        else {\n          (__position._M_current)->offset = entry.offset;\n          *(ulong *)&(__position._M_current)->header_num = CONCAT44(entry._12_4_,entry.header_num);\n          *(ulong *)&(__position._M_current)->line_num = CONCAT44(entry._20_4_,entry.line_num);\n          (this_00->\n          super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n          )._M_impl._M_finish = __position._M_current + 1;\n        }\n      }" if (parenthesized_expression "((bVar2) && (((shndx == 0xffffffff || (lsm.shndx == shndx)) || (lsm.shndx == 0xffffffff))))" ( (binary_expression "(bVar2) && (((shndx == 0xffffffff || (lsm.shndx == shndx)) || (lsm.shndx == 0xffffffff)))" (parenthesized_expression "(bVar2)" ( identifier )) && (parenthesized_expression "(((shndx == 0xffffffff || (lsm.shndx == shndx)) || (lsm.shndx == 0xffffffff)))" ( (parenthesized_expression "((shndx == 0xffffffff || (lsm.shndx == shndx)) || (lsm.shndx == 0xffffffff))" ( (binary_expression "(shndx == 0xffffffff || (lsm.shndx == shndx)) || (lsm.shndx == 0xffffffff)" (parenthesized_expression "(shndx == 0xffffffff || (lsm.shndx == shndx))" ( (binary_expression "shndx == 0xffffffff || (lsm.shndx == shndx)" (binary_expression "shndx == 0xffffffff" identifier == number_literal) || (parenthesized_expression "(lsm.shndx == shndx)" ( (binary_expression "lsm.shndx == shndx" (field_expression "lsm.shndx" identifier . field_identifier) == identifier) ))) )) || (parenthesized_expression "(lsm.shndx == 0xffffffff)" ( (binary_expression "lsm.shndx == 0xffffffff" (field_expression "lsm.shndx" identifier . field_identifier) == number_literal) ))) )) ))) )) (compound_statement "{\n        entry.offset = lsm.address;\n        entry.header_num = this->current_header_index_;\n        entry._20_4_ = 0;\n        entry._12_4_ = lsm.file_num & 0x7fffffffU | 0x80000000;\n        entry.line_num = lsm.line_num;\n        this_00 = std::__detail::\n                  _Map_base<unsigned_int,_std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>,_std::allocator<std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                  ::operator[]((_Map_base<unsigned_int,_std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>,_std::allocator<std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                                *)&this->line_number_map_,&lsm.shndx);\n        __position._M_current =\n             (this_00->\n             super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n             )._M_impl._M_finish;\n        if ((((__position._M_current ==\n               (this_00->\n               super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n               )._M_impl._M_start) || (__position._M_current[-1].offset != lsm.address)) ||\n            (lsm.line_num == -1)) || (__position._M_current[-1].line_num == -1)) {\n          pOVar1 = (this_00->\n                   super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n                   )._M_impl._M_end_of_storage;\n        }\n        else {\n          __position._M_current[-1].field_0xf = __position._M_current[-1].field_0xf & 0x7f;\n          pOVar1 = (this_00->\n                   super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n                   )._M_impl._M_end_of_storage;\n        }\n        if (__position._M_current == pOVar1) {\n          std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>::\n          _M_realloc_insert<const_gold::Offset_to_lineno_entry&>(this_00,__position,&entry);\n        }\n        else {\n          (__position._M_current)->offset = entry.offset;\n          *(ulong *)&(__position._M_current)->header_num = CONCAT44(entry._12_4_,entry.header_num);\n          *(ulong *)&(__position._M_current)->line_num = CONCAT44(entry._20_4_,entry.line_num);\n          (this_00->\n          super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n          )._M_impl._M_finish = __position._M_current + 1;\n        }\n      }" { (expression_statement "entry.offset = lsm.address;" (assignment_expression "entry.offset = lsm.address" (field_expression "entry.offset" identifier . field_identifier) = (field_expression "lsm.address" identifier . field_identifier)) ;) (expression_statement "entry.header_num = this->current_header_index_;" (assignment_expression "entry.header_num = this->current_header_index_" (field_expression "entry.header_num" identifier . field_identifier) = (field_expression "this->current_header_index_" identifier -> field_identifier)) ;) (expression_statement "entry._20_4_ = 0;" (assignment_expression "entry._20_4_ = 0" (field_expression "entry._20_4_" identifier . field_identifier) = number_literal) ;) (expression_statement "entry._12_4_ = lsm.file_num & 0x7fffffffU | 0x80000000;" (assignment_expression "entry._12_4_ = lsm.file_num & 0x7fffffffU | 0x80000000" (field_expression "entry._12_4_" identifier . field_identifier) = (binary_expression "lsm.file_num & 0x7fffffffU | 0x80000000" (binary_expression "lsm.file_num & 0x7fffffffU" (field_expression "lsm.file_num" identifier . field_identifier) & number_literal) | number_literal)) ;) (expression_statement "entry.line_num = lsm.line_num;" (assignment_expression "entry.line_num = lsm.line_num" (field_expression "entry.line_num" identifier . field_identifier) = (field_expression "lsm.line_num" identifier . field_identifier)) ;) (ERROR "this_00 = std::__detail::\n                  _Map_base<unsigned_int,_std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>,_std::allocator<std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::" (assignment_expression "this_00 = std" identifier = identifier) : : (comma_expression "__detail::\n                  _Map_base<unsigned_int,_std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>,_std" identifier (ERROR "::\n                  _Map_base<unsigned_int,_std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>" : : (comma_expression "_Map_base<unsigned_int,_std" (binary_expression "_Map_base<unsigned_int" identifier < identifier) , identifier) : : (comma_expression "pair<unsigned_int_const,_std" (binary_expression "pair<unsigned_int_const" identifier < identifier) , identifier) : : (binary_expression "vector<gold" identifier < identifier) : : (comma_expression "Offset_to_lineno_entry,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : (binary_expression "Offset_to_lineno_entry>_>_" (binary_expression "Offset_to_lineno_entry>_" identifier > identifier) > identifier) >) , identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "pair<unsigned_int_const,_std" (binary_expression "pair<unsigned_int_const" identifier < identifier) , identifier) : : (binary_expression "vector<gold" identifier < identifier) : : (comma_expression "Offset_to_lineno_entry,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : (binary_expression "Offset_to_lineno_entry>_>_>_>,_std" (binary_expression "Offset_to_lineno_entry>_>_>_" (binary_expression "Offset_to_lineno_entry>_>_" (binary_expression "Offset_to_lineno_entry>_" identifier > identifier) > identifier) > identifier) > (ERROR "," ,) identifier) : : (comma_expression "__detail::_Select1st,_std::equal_to<unsigned_int>,_std" identifier (ERROR "::_Select1st,_std::equal_to<unsigned_int>" : : (comma_expression "_Select1st,_std" identifier , identifier) : : (binary_expression "equal_to<unsigned_int" identifier < identifier) >) , identifier) : : (binary_expression "hash<unsigned_int>,_std" (binary_expression "hash<unsigned_int" identifier < identifier) > (ERROR "," ,) identifier) : :) (labeled_statement "__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                  ::operator[]((_Map_base<unsigned_int,_std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>,_std::allocator<std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                                *)&this->line_number_map_,&lsm.shndx);" statement_identifier (ERROR "::_Mod_range_hashing,_std:" : : (comma_expression "_Mod_range_hashing,_std" identifier , identifier) :) : (labeled_statement "__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                  ::operator[]((_Map_base<unsigned_int,_std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>,_std::allocator<std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                                *)&this->line_number_map_,&lsm.shndx);" statement_identifier (ERROR "::_Default_ranged_hash,_std:" : : (comma_expression "_Default_ranged_hash,_std" identifier , identifier) :) : (labeled_statement "__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                  ::operator[]((_Map_base<unsigned_int,_std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>,_std::allocator<std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                                *)&this->line_number_map_,&lsm.shndx);" statement_identifier (ERROR "::_Prime_rehash_policy,_std:" : : (comma_expression "_Prime_rehash_policy,_std" identifier , identifier) :) : (labeled_statement "__detail::_Hashtable_traits<false,_false,_true>,_true>\n                  ::operator[]((_Map_base<unsigned_int,_std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>,_std::allocator<std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                                *)&this->line_number_map_,&lsm.shndx);" statement_identifier : (ERROR ":" :) (expression_statement "_Hashtable_traits<false,_false,_true>,_true>\n                  ::operator[]((_Map_base<unsigned_int,_std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>,_std::allocator<std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                                *)&this->line_number_map_,&lsm.shndx);" (comma_expression "_Hashtable_traits<false,_false,_true>,_true>\n                  ::operator[]((_Map_base<unsigned_int,_std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>,_std::allocator<std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                                *)&this->line_number_map_,&lsm.shndx)" (binary_expression "_Hashtable_traits<false" identifier < false) , (comma_expression "_false,_true>,_true>\n                  ::operator[]((_Map_base<unsigned_int,_std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>,_std::allocator<std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                                *)&this->line_number_map_,&lsm.shndx)" identifier , (binary_expression "_true>,_true>\n                  ::operator[]((_Map_base<unsigned_int,_std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>,_std::allocator<std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                                *)&this->line_number_map_,&lsm.shndx)" (binary_expression "_true>,_true" identifier > (ERROR "," ,) identifier) > (ERROR "::" : :) (call_expression "operator[]((_Map_base<unsigned_int,_std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>,_std::allocator<std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                                *)&this->line_number_map_,&lsm.shndx)" (subscript_expression "operator[]" identifier [ identifier ]) (argument_list "((_Map_base<unsigned_int,_std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>,_std::allocator<std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                                *)&this->line_number_map_,&lsm.shndx)" ( (binary_expression "(_Map_base<unsigned_int,_std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>,_std::allocator<std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                                *)&this->line_number_map_" (parenthesized_expression "(_Map_base<unsigned_int,_std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>,_std::allocator<std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>,_true>\n                                *)" ( (ERROR "_Map_base<unsigned_int,_std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>,_std::allocator<std::pair<unsigned_int_const,_std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>_>_>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::" (comma_expression "_Map_base<unsigned_int,_std" (binary_expression "_Map_base<unsigned_int" identifier < identifier) , identifier) : : (comma_expression "pair<unsigned_int_const,_std" (binary_expression "pair<unsigned_int_const" identifier < identifier) , identifier) : : (binary_expression "vector<gold" identifier < identifier) : : (comma_expression "Offset_to_lineno_entry,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : (binary_expression "Offset_to_lineno_entry>_>_>,_std" (binary_expression "Offset_to_lineno_entry>_>_" (binary_expression "Offset_to_lineno_entry>_" identifier > identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "pair<unsigned_int_const,_std" (binary_expression "pair<unsigned_int_const" identifier < identifier) , identifier) : : (binary_expression "vector<gold" identifier < identifier) : : (comma_expression "Offset_to_lineno_entry,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : (binary_expression "Offset_to_lineno_entry>_>_>_>,_std" (binary_expression "Offset_to_lineno_entry>_>_>_" (binary_expression "Offset_to_lineno_entry>_>_" (binary_expression "Offset_to_lineno_entry>_" identifier > identifier) > identifier) > identifier) > (ERROR "," ,) identifier) : : identifier : : (comma_expression "_Select1st,_std" identifier , identifier) : : (binary_expression "equal_to<unsigned_int>,_std" (binary_expression "equal_to<unsigned_int" identifier < identifier) > (ERROR "," ,) identifier) : : (binary_expression "hash<unsigned_int>,_std" (binary_expression "hash<unsigned_int" identifier < identifier) > (ERROR "," ,) identifier) : : identifier : : (comma_expression "_Mod_range_hashing,_std" identifier , identifier) : : identifier : : (comma_expression "_Default_ranged_hash,_std" identifier , identifier) : : identifier : : (comma_expression "_Prime_rehash_policy,_std" identifier , identifier) : : identifier : :) (comma_expression "_Hashtable_traits<false,_false,_true>,_true>\n                                *" (binary_expression "_Hashtable_traits<false" identifier < false) , (comma_expression "_false,_true>,_true>\n                                *" identifier , (binary_expression "_true>,_true>\n                                *" (binary_expression "_true>,_true" identifier > (ERROR "," ,) identifier) > (pointer_expression "*" * identifier)))) )) & (field_expression "this->line_number_map_" identifier -> field_identifier)) , (pointer_expression "&lsm.shndx" & (field_expression "lsm.shndx" identifier . field_identifier)) )))))) ;))))) (expression_statement "__position._M_current =\n             (this_00->\n             super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n             )._M_impl._M_finish;" (assignment_expression "__position._M_current =\n             (this_00->\n             super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n             )._M_impl._M_finish" (field_expression "__position._M_current" identifier . field_identifier) = (field_expression "(this_00->\n             super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n             )._M_impl._M_finish" (field_expression "(this_00->\n             super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n             )._M_impl" (parenthesized_expression "(this_00->\n             super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n             )" ( (ERROR "this_00->\n             super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::" (comma_expression "this_00->\n             super__Vector_base<gold::Offset_to_lineno_entry,_std" (binary_expression "this_00->\n             super__Vector_base<gold" (field_expression "this_00->\n             super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Offset_to_lineno_entry" : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (binary_expression "Offset_to_lineno_entry>_>" (binary_expression "Offset_to_lineno_entry>_" identifier > identifier) > identifier) )) . field_identifier) . field_identifier)) ;) (if_statement "if ((((__position._M_current ==\n               (this_00->\n               super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n               )._M_impl._M_start) || (__position._M_current[-1].offset != lsm.address)) ||\n            (lsm.line_num == -1)) || (__position._M_current[-1].line_num == -1)) {\n          pOVar1 = (this_00->\n                   super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n                   )._M_impl._M_end_of_storage;\n        }\n        else {\n          __position._M_current[-1].field_0xf = __position._M_current[-1].field_0xf & 0x7f;\n          pOVar1 = (this_00->\n                   super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n                   )._M_impl._M_end_of_storage;\n        }" if (parenthesized_expression "((((__position._M_current ==\n               (this_00->\n               super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n               )._M_impl._M_start) || (__position._M_current[-1].offset != lsm.address)) ||\n            (lsm.line_num == -1)) || (__position._M_current[-1].line_num == -1))" ( (binary_expression "(((__position._M_current ==\n               (this_00->\n               super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n               )._M_impl._M_start) || (__position._M_current[-1].offset != lsm.address)) ||\n            (lsm.line_num == -1)) || (__position._M_current[-1].line_num == -1)" (parenthesized_expression "(((__position._M_current ==\n               (this_00->\n               super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n               )._M_impl._M_start) || (__position._M_current[-1].offset != lsm.address)) ||\n            (lsm.line_num == -1))" ( (binary_expression "((__position._M_current ==\n               (this_00->\n               super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n               )._M_impl._M_start) || (__position._M_current[-1].offset != lsm.address)) ||\n            (lsm.line_num == -1)" (parenthesized_expression "((__position._M_current ==\n               (this_00->\n               super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n               )._M_impl._M_start) || (__position._M_current[-1].offset != lsm.address))" ( (binary_expression "(__position._M_current ==\n               (this_00->\n               super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n               )._M_impl._M_start) || (__position._M_current[-1].offset != lsm.address)" (parenthesized_expression "(__position._M_current ==\n               (this_00->\n               super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n               )._M_impl._M_start)" ( (binary_expression "__position._M_current ==\n               (this_00->\n               super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n               )._M_impl._M_start" (field_expression "__position._M_current" identifier . field_identifier) == (field_expression "(this_00->\n               super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n               )._M_impl._M_start" (field_expression "(this_00->\n               super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n               )._M_impl" (parenthesized_expression "(this_00->\n               super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n               )" ( (ERROR "this_00->\n               super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::" (comma_expression "this_00->\n               super__Vector_base<gold::Offset_to_lineno_entry,_std" (binary_expression "this_00->\n               super__Vector_base<gold" (field_expression "this_00->\n               super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Offset_to_lineno_entry" : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (binary_expression "Offset_to_lineno_entry>_>" (binary_expression "Offset_to_lineno_entry>_" identifier > identifier) > identifier) )) . field_identifier) . field_identifier)) )) || (parenthesized_expression "(__position._M_current[-1].offset != lsm.address)" ( (binary_expression "__position._M_current[-1].offset != lsm.address" (field_expression "__position._M_current[-1].offset" (subscript_expression "__position._M_current[-1]" (field_expression "__position._M_current" identifier . field_identifier) [ number_literal ]) . field_identifier) != (field_expression "lsm.address" identifier . field_identifier)) ))) )) || (parenthesized_expression "(lsm.line_num == -1)" ( (binary_expression "lsm.line_num == -1" (field_expression "lsm.line_num" identifier . field_identifier) == number_literal) ))) )) || (parenthesized_expression "(__position._M_current[-1].line_num == -1)" ( (binary_expression "__position._M_current[-1].line_num == -1" (field_expression "__position._M_current[-1].line_num" (subscript_expression "__position._M_current[-1]" (field_expression "__position._M_current" identifier . field_identifier) [ number_literal ]) . field_identifier) == number_literal) ))) )) (compound_statement "{\n          pOVar1 = (this_00->\n                   super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n                   )._M_impl._M_end_of_storage;\n        }" { (expression_statement "pOVar1 = (this_00->\n                   super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n                   )._M_impl._M_end_of_storage;" (assignment_expression "pOVar1 = (this_00->\n                   super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n                   )._M_impl._M_end_of_storage" identifier = (field_expression "(this_00->\n                   super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n                   )._M_impl._M_end_of_storage" (field_expression "(this_00->\n                   super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n                   )._M_impl" (parenthesized_expression "(this_00->\n                   super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n                   )" ( (ERROR "this_00->\n                   super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::" (comma_expression "this_00->\n                   super__Vector_base<gold::Offset_to_lineno_entry,_std" (binary_expression "this_00->\n                   super__Vector_base<gold" (field_expression "this_00->\n                   super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Offset_to_lineno_entry" : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (binary_expression "Offset_to_lineno_entry>_>" (binary_expression "Offset_to_lineno_entry>_" identifier > identifier) > identifier) )) . field_identifier) . field_identifier)) ;) }) (else_clause "else {\n          __position._M_current[-1].field_0xf = __position._M_current[-1].field_0xf & 0x7f;\n          pOVar1 = (this_00->\n                   super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n                   )._M_impl._M_end_of_storage;\n        }" else (compound_statement "{\n          __position._M_current[-1].field_0xf = __position._M_current[-1].field_0xf & 0x7f;\n          pOVar1 = (this_00->\n                   super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n                   )._M_impl._M_end_of_storage;\n        }" { (expression_statement "__position._M_current[-1].field_0xf = __position._M_current[-1].field_0xf & 0x7f;" (assignment_expression "__position._M_current[-1].field_0xf = __position._M_current[-1].field_0xf & 0x7f" (field_expression "__position._M_current[-1].field_0xf" (subscript_expression "__position._M_current[-1]" (field_expression "__position._M_current" identifier . field_identifier) [ number_literal ]) . field_identifier) = (binary_expression "__position._M_current[-1].field_0xf & 0x7f" (field_expression "__position._M_current[-1].field_0xf" (subscript_expression "__position._M_current[-1]" (field_expression "__position._M_current" identifier . field_identifier) [ number_literal ]) . field_identifier) & number_literal)) ;) (expression_statement "pOVar1 = (this_00->\n                   super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n                   )._M_impl._M_end_of_storage;" (assignment_expression "pOVar1 = (this_00->\n                   super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n                   )._M_impl._M_end_of_storage" identifier = (field_expression "(this_00->\n                   super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n                   )._M_impl._M_end_of_storage" (field_expression "(this_00->\n                   super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n                   )._M_impl" (parenthesized_expression "(this_00->\n                   super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n                   )" ( (ERROR "this_00->\n                   super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::" (comma_expression "this_00->\n                   super__Vector_base<gold::Offset_to_lineno_entry,_std" (binary_expression "this_00->\n                   super__Vector_base<gold" (field_expression "this_00->\n                   super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Offset_to_lineno_entry" : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (binary_expression "Offset_to_lineno_entry>_>" (binary_expression "Offset_to_lineno_entry>_" identifier > identifier) > identifier) )) . field_identifier) . field_identifier)) ;) }))) (if_statement "if (__position._M_current == pOVar1) {\n          std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>::\n          _M_realloc_insert<const_gold::Offset_to_lineno_entry&>(this_00,__position,&entry);\n        }\n        else {\n          (__position._M_current)->offset = entry.offset;\n          *(ulong *)&(__position._M_current)->header_num = CONCAT44(entry._12_4_,entry.header_num);\n          *(ulong *)&(__position._M_current)->line_num = CONCAT44(entry._20_4_,entry.line_num);\n          (this_00->\n          super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n          )._M_impl._M_finish = __position._M_current + 1;\n        }" if (parenthesized_expression "(__position._M_current == pOVar1)" ( (binary_expression "__position._M_current == pOVar1" (field_expression "__position._M_current" identifier . field_identifier) == identifier) )) (compound_statement "{\n          std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>::\n          _M_realloc_insert<const_gold::Offset_to_lineno_entry&>(this_00,__position,&entry);\n        }" { (labeled_statement "std::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>::\n          _M_realloc_insert<const_gold::Offset_to_lineno_entry&>(this_00,__position,&entry);" statement_identifier (ERROR "::vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>::\n          _M_realloc_insert<const_gold:" : : (binary_expression "vector<gold" identifier < identifier) : : (comma_expression "Offset_to_lineno_entry,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : (binary_expression "Offset_to_lineno_entry>_" identifier > identifier) > : : (binary_expression "_M_realloc_insert<const_gold" identifier < identifier) :) : (expression_statement "Offset_to_lineno_entry&>(this_00,__position,&entry);" (binary_expression "Offset_to_lineno_entry&>(this_00,__position,&entry)" identifier (ERROR "&" &) > (parenthesized_expression "(this_00,__position,&entry)" ( (comma_expression "this_00,__position,&entry" identifier , (comma_expression "__position,&entry" identifier , (pointer_expression "&entry" & identifier))) ))) ;)) }) (else_clause "else {\n          (__position._M_current)->offset = entry.offset;\n          *(ulong *)&(__position._M_current)->header_num = CONCAT44(entry._12_4_,entry.header_num);\n          *(ulong *)&(__position._M_current)->line_num = CONCAT44(entry._20_4_,entry.line_num);\n          (this_00->\n          super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n          )._M_impl._M_finish = __position._M_current + 1;\n        }" else (compound_statement "{\n          (__position._M_current)->offset = entry.offset;\n          *(ulong *)&(__position._M_current)->header_num = CONCAT44(entry._12_4_,entry.header_num);\n          *(ulong *)&(__position._M_current)->line_num = CONCAT44(entry._20_4_,entry.line_num);\n          (this_00->\n          super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n          )._M_impl._M_finish = __position._M_current + 1;\n        }" { (expression_statement "(__position._M_current)->offset = entry.offset;" (assignment_expression "(__position._M_current)->offset = entry.offset" (field_expression "(__position._M_current)->offset" (parenthesized_expression "(__position._M_current)" ( (field_expression "__position._M_current" identifier . field_identifier) )) -> field_identifier) = (field_expression "entry.offset" identifier . field_identifier)) ;) (expression_statement "*(ulong *)&(__position._M_current)->header_num = CONCAT44(entry._12_4_,entry.header_num);" (assignment_expression "*(ulong *)&(__position._M_current)->header_num = CONCAT44(entry._12_4_,entry.header_num)" (pointer_expression "*(ulong *)&(__position._M_current)->header_num" * (cast_expression "(ulong *)&(__position._M_current)->header_num" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(__position._M_current)->header_num" & (field_expression "(__position._M_current)->header_num" (parenthesized_expression "(__position._M_current)" ( (field_expression "__position._M_current" identifier . field_identifier) )) -> field_identifier)))) = (call_expression "CONCAT44(entry._12_4_,entry.header_num)" identifier (argument_list "(entry._12_4_,entry.header_num)" ( (field_expression "entry._12_4_" identifier . field_identifier) , (field_expression "entry.header_num" identifier . field_identifier) )))) ;) (expression_statement "*(ulong *)&(__position._M_current)->line_num = CONCAT44(entry._20_4_,entry.line_num);" (assignment_expression "*(ulong *)&(__position._M_current)->line_num = CONCAT44(entry._20_4_,entry.line_num)" (pointer_expression "*(ulong *)&(__position._M_current)->line_num" * (cast_expression "(ulong *)&(__position._M_current)->line_num" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(__position._M_current)->line_num" & (field_expression "(__position._M_current)->line_num" (parenthesized_expression "(__position._M_current)" ( (field_expression "__position._M_current" identifier . field_identifier) )) -> field_identifier)))) = (call_expression "CONCAT44(entry._20_4_,entry.line_num)" identifier (argument_list "(entry._20_4_,entry.line_num)" ( (field_expression "entry._20_4_" identifier . field_identifier) , (field_expression "entry.line_num" identifier . field_identifier) )))) ;) (expression_statement "(this_00->\n          super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n          )._M_impl._M_finish = __position._M_current + 1;" (assignment_expression "(this_00->\n          super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n          )._M_impl._M_finish = __position._M_current + 1" (field_expression "(this_00->\n          super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n          )._M_impl._M_finish" (field_expression "(this_00->\n          super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n          )._M_impl" (parenthesized_expression "(this_00->\n          super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n          )" ( (ERROR "this_00->\n          super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::" (comma_expression "this_00->\n          super__Vector_base<gold::Offset_to_lineno_entry,_std" (binary_expression "this_00->\n          super__Vector_base<gold" (field_expression "this_00->\n          super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Offset_to_lineno_entry" : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (binary_expression "Offset_to_lineno_entry>_>" (binary_expression "Offset_to_lineno_entry>_" identifier > identifier) > identifier) )) . field_identifier) . field_identifier) = (binary_expression "__position._M_current + 1" (field_expression "__position._M_current" identifier . field_identifier) + number_literal)) ;) }))) })) (expression_statement "lineptr = lineptr + oplength;" (assignment_expression "lineptr = lineptr + oplength" identifier = (binary_expression "lineptr + oplength" identifier + identifier)) ;) }) while (parenthesized_expression "(lsm.end_sequence == false)" ( (binary_expression "lsm.end_sequence == false" (field_expression "lsm.end_sequence" identifier . field_identifier) == false) )) ;) })) (return_statement "return local_98 + (this->header_).total_length;" return (binary_expression "local_98 + (this->header_).total_length" identifier + (field_expression "(this->header_).total_length" (parenthesized_expression "(this->header_)" ( (field_expression "this->header_" identifier -> field_identifier) )) . field_identifier)) ;) }))
(translation_unit "void FUN_0030a310(long param_1,ulong param_2,int param_3)\n\n{\n  long *plVar1;\n  long *plVar2;\n  char cVar3;\n  long *plVar4;\n  long local_98;\n  long local_80;\n  long local_78;\n  undefined4 uStack_70;\n  uint uStack_6c;\n  undefined4 uStack_68;\n  undefined4 uStack_64;\n  uint local_58 [2];\n  long local_50;\n  undefined8 local_48;\n  int local_40;\n  undefined1 local_3c;\n  undefined2 local_3b;\n  \n  local_98 = *(long *)(param_1 + 0x60) + 4;\n  if (*(int *)(param_1 + 0x58) == 8) {\n    local_98 = *(long *)(param_1 + 0x60) + 0xc;\n  }\n  while (param_2 < (ulong)(local_98 + *(long *)(param_1 + 0x10))) {\n    local_3c = *(undefined1 *)(param_1 + 0x30);\n    local_58[0] = 1;\n    local_50 = 0;\n    local_48 = 1;\n    local_40 = -1;\n    local_3b = 0;\n    do {\n      cVar3 = FUN_003086c0(param_1,param_2,local_58,&local_80);\n      if ((cVar3 != '\0') && (((param_3 == -1 || (local_40 == param_3)) || (local_40 == -1)))) {\n        local_78 = local_50;\n        uStack_70 = *(undefined4 *)(param_1 + 200);\n        uStack_64 = 0;\n        uStack_6c = local_58[0] & 0x7fffffff | 0x80000000;\n        uStack_68 = (int)local_48;\n        plVar4 = (long *)FUN_0030a080(param_1 + 0x100,&local_40);\n        plVar1 = (long *)plVar4[1];\n        if ((((plVar1 == (long *)*plVar4) || (plVar1[-3] != local_50)) || ((int)local_48 == -1)) ||\n           ((int)plVar1[-1] == -1)) {\n          plVar2 = (long *)plVar4[2];\n        }\n        else {\n          *(byte *)((long)plVar1 + -9) = *(byte *)((long)plVar1 + -9) & 0x7f;\n          plVar2 = (long *)plVar4[2];\n        }\n        if (plVar1 == plVar2) {\n          FUN_003064a0(plVar4,plVar1,&local_78);\n        }\n        else {\n          *plVar1 = local_78;\n          plVar1[1] = CONCAT44(uStack_6c,uStack_70);\n          plVar1[2] = CONCAT44(uStack_64,uStack_68);\n          plVar4[1] = (long)(plVar1 + 3);\n        }\n      }\n      param_2 = param_2 + local_80;\n    } while (local_3b._1_1_ == '\0');\n  }\n  return;\n}\n\n" (function_definition "void FUN_0030a310(long param_1,ulong param_2,int param_3)\n\n{\n  long *plVar1;\n  long *plVar2;\n  char cVar3;\n  long *plVar4;\n  long local_98;\n  long local_80;\n  long local_78;\n  undefined4 uStack_70;\n  uint uStack_6c;\n  undefined4 uStack_68;\n  undefined4 uStack_64;\n  uint local_58 [2];\n  long local_50;\n  undefined8 local_48;\n  int local_40;\n  undefined1 local_3c;\n  undefined2 local_3b;\n  \n  local_98 = *(long *)(param_1 + 0x60) + 4;\n  if (*(int *)(param_1 + 0x58) == 8) {\n    local_98 = *(long *)(param_1 + 0x60) + 0xc;\n  }\n  while (param_2 < (ulong)(local_98 + *(long *)(param_1 + 0x10))) {\n    local_3c = *(undefined1 *)(param_1 + 0x30);\n    local_58[0] = 1;\n    local_50 = 0;\n    local_48 = 1;\n    local_40 = -1;\n    local_3b = 0;\n    do {\n      cVar3 = FUN_003086c0(param_1,param_2,local_58,&local_80);\n      if ((cVar3 != '\0') && (((param_3 == -1 || (local_40 == param_3)) || (local_40 == -1)))) {\n        local_78 = local_50;\n        uStack_70 = *(undefined4 *)(param_1 + 200);\n        uStack_64 = 0;\n        uStack_6c = local_58[0] & 0x7fffffff | 0x80000000;\n        uStack_68 = (int)local_48;\n        plVar4 = (long *)FUN_0030a080(param_1 + 0x100,&local_40);\n        plVar1 = (long *)plVar4[1];\n        if ((((plVar1 == (long *)*plVar4) || (plVar1[-3] != local_50)) || ((int)local_48 == -1)) ||\n           ((int)plVar1[-1] == -1)) {\n          plVar2 = (long *)plVar4[2];\n        }\n        else {\n          *(byte *)((long)plVar1 + -9) = *(byte *)((long)plVar1 + -9) & 0x7f;\n          plVar2 = (long *)plVar4[2];\n        }\n        if (plVar1 == plVar2) {\n          FUN_003064a0(plVar4,plVar1,&local_78);\n        }\n        else {\n          *plVar1 = local_78;\n          plVar1[1] = CONCAT44(uStack_6c,uStack_70);\n          plVar1[2] = CONCAT44(uStack_64,uStack_68);\n          plVar4[1] = (long)(plVar1 + 3);\n        }\n      }\n      param_2 = param_2 + local_80;\n    } while (local_3b._1_1_ == '\0');\n  }\n  return;\n}" primitive_type (function_declarator "FUN_0030a310(long param_1,ulong param_2,int param_3)" identifier (parameter_list "(long param_1,ulong param_2,int param_3)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "ulong param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  long *plVar1;\n  long *plVar2;\n  char cVar3;\n  long *plVar4;\n  long local_98;\n  long local_80;\n  long local_78;\n  undefined4 uStack_70;\n  uint uStack_6c;\n  undefined4 uStack_68;\n  undefined4 uStack_64;\n  uint local_58 [2];\n  long local_50;\n  undefined8 local_48;\n  int local_40;\n  undefined1 local_3c;\n  undefined2 local_3b;\n  \n  local_98 = *(long *)(param_1 + 0x60) + 4;\n  if (*(int *)(param_1 + 0x58) == 8) {\n    local_98 = *(long *)(param_1 + 0x60) + 0xc;\n  }\n  while (param_2 < (ulong)(local_98 + *(long *)(param_1 + 0x10))) {\n    local_3c = *(undefined1 *)(param_1 + 0x30);\n    local_58[0] = 1;\n    local_50 = 0;\n    local_48 = 1;\n    local_40 = -1;\n    local_3b = 0;\n    do {\n      cVar3 = FUN_003086c0(param_1,param_2,local_58,&local_80);\n      if ((cVar3 != '\0') && (((param_3 == -1 || (local_40 == param_3)) || (local_40 == -1)))) {\n        local_78 = local_50;\n        uStack_70 = *(undefined4 *)(param_1 + 200);\n        uStack_64 = 0;\n        uStack_6c = local_58[0] & 0x7fffffff | 0x80000000;\n        uStack_68 = (int)local_48;\n        plVar4 = (long *)FUN_0030a080(param_1 + 0x100,&local_40);\n        plVar1 = (long *)plVar4[1];\n        if ((((plVar1 == (long *)*plVar4) || (plVar1[-3] != local_50)) || ((int)local_48 == -1)) ||\n           ((int)plVar1[-1] == -1)) {\n          plVar2 = (long *)plVar4[2];\n        }\n        else {\n          *(byte *)((long)plVar1 + -9) = *(byte *)((long)plVar1 + -9) & 0x7f;\n          plVar2 = (long *)plVar4[2];\n        }\n        if (plVar1 == plVar2) {\n          FUN_003064a0(plVar4,plVar1,&local_78);\n        }\n        else {\n          *plVar1 = local_78;\n          plVar1[1] = CONCAT44(uStack_6c,uStack_70);\n          plVar1[2] = CONCAT44(uStack_64,uStack_68);\n          plVar4[1] = (long)(plVar1 + 3);\n        }\n      }\n      param_2 = param_2 + local_80;\n    } while (local_3b._1_1_ == '\0');\n  }\n  return;\n}" { (declaration "long *plVar1;" (sized_type_specifier "long" long) (pointer_declarator "*plVar1" * identifier) ;) (declaration "long *plVar2;" (sized_type_specifier "long" long) (pointer_declarator "*plVar2" * identifier) ;) (declaration "char cVar3;" primitive_type identifier ;) (declaration "long *plVar4;" (sized_type_specifier "long" long) (pointer_declarator "*plVar4" * identifier) ;) (declaration "long local_98;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_80;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_78;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined4 uStack_70;" type_identifier identifier ;) (declaration "uint uStack_6c;" type_identifier identifier ;) (declaration "undefined4 uStack_68;" type_identifier identifier ;) (declaration "undefined4 uStack_64;" type_identifier identifier ;) (declaration "uint local_58 [2];" type_identifier (array_declarator "local_58 [2]" identifier [ number_literal ]) ;) (declaration "long local_50;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 local_48;" type_identifier identifier ;) (declaration "int local_40;" primitive_type identifier ;) (declaration "undefined1 local_3c;" type_identifier identifier ;) (declaration "undefined2 local_3b;" type_identifier identifier ;) (expression_statement "local_98 = *(long *)(param_1 + 0x60) + 4;" (assignment_expression "local_98 = *(long *)(param_1 + 0x60) + 4" identifier = (binary_expression "*(long *)(param_1 + 0x60) + 4" (pointer_expression "*(long *)(param_1 + 0x60)" * (cast_expression "(long *)(param_1 + 0x60)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) )))) + number_literal)) ;) (if_statement "if (*(int *)(param_1 + 0x58) == 8) {\n    local_98 = *(long *)(param_1 + 0x60) + 0xc;\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0x58) == 8)" ( (binary_expression "*(int *)(param_1 + 0x58) == 8" (pointer_expression "*(int *)(param_1 + 0x58)" * (cast_expression "(int *)(param_1 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x58)" ( (binary_expression "param_1 + 0x58" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    local_98 = *(long *)(param_1 + 0x60) + 0xc;\n  }" { (expression_statement "local_98 = *(long *)(param_1 + 0x60) + 0xc;" (assignment_expression "local_98 = *(long *)(param_1 + 0x60) + 0xc" identifier = (binary_expression "*(long *)(param_1 + 0x60) + 0xc" (pointer_expression "*(long *)(param_1 + 0x60)" * (cast_expression "(long *)(param_1 + 0x60)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) )))) + number_literal)) ;) })) (while_statement "while (param_2 < (ulong)(local_98 + *(long *)(param_1 + 0x10))) {\n    local_3c = *(undefined1 *)(param_1 + 0x30);\n    local_58[0] = 1;\n    local_50 = 0;\n    local_48 = 1;\n    local_40 = -1;\n    local_3b = 0;\n    do {\n      cVar3 = FUN_003086c0(param_1,param_2,local_58,&local_80);\n      if ((cVar3 != '\0') && (((param_3 == -1 || (local_40 == param_3)) || (local_40 == -1)))) {\n        local_78 = local_50;\n        uStack_70 = *(undefined4 *)(param_1 + 200);\n        uStack_64 = 0;\n        uStack_6c = local_58[0] & 0x7fffffff | 0x80000000;\n        uStack_68 = (int)local_48;\n        plVar4 = (long *)FUN_0030a080(param_1 + 0x100,&local_40);\n        plVar1 = (long *)plVar4[1];\n        if ((((plVar1 == (long *)*plVar4) || (plVar1[-3] != local_50)) || ((int)local_48 == -1)) ||\n           ((int)plVar1[-1] == -1)) {\n          plVar2 = (long *)plVar4[2];\n        }\n        else {\n          *(byte *)((long)plVar1 + -9) = *(byte *)((long)plVar1 + -9) & 0x7f;\n          plVar2 = (long *)plVar4[2];\n        }\n        if (plVar1 == plVar2) {\n          FUN_003064a0(plVar4,plVar1,&local_78);\n        }\n        else {\n          *plVar1 = local_78;\n          plVar1[1] = CONCAT44(uStack_6c,uStack_70);\n          plVar1[2] = CONCAT44(uStack_64,uStack_68);\n          plVar4[1] = (long)(plVar1 + 3);\n        }\n      }\n      param_2 = param_2 + local_80;\n    } while (local_3b._1_1_ == '\0');\n  }" while (parenthesized_expression "(param_2 < (ulong)(local_98 + *(long *)(param_1 + 0x10)))" ( (binary_expression "param_2 < (ulong)(local_98 + *(long *)(param_1 + 0x10))" identifier < (call_expression "(ulong)(local_98 + *(long *)(param_1 + 0x10))" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(local_98 + *(long *)(param_1 + 0x10))" ( (binary_expression "local_98 + *(long *)(param_1 + 0x10)" identifier + (pointer_expression "*(long *)(param_1 + 0x10)" * (cast_expression "(long *)(param_1 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) )))) )) (compound_statement "{\n    local_3c = *(undefined1 *)(param_1 + 0x30);\n    local_58[0] = 1;\n    local_50 = 0;\n    local_48 = 1;\n    local_40 = -1;\n    local_3b = 0;\n    do {\n      cVar3 = FUN_003086c0(param_1,param_2,local_58,&local_80);\n      if ((cVar3 != '\0') && (((param_3 == -1 || (local_40 == param_3)) || (local_40 == -1)))) {\n        local_78 = local_50;\n        uStack_70 = *(undefined4 *)(param_1 + 200);\n        uStack_64 = 0;\n        uStack_6c = local_58[0] & 0x7fffffff | 0x80000000;\n        uStack_68 = (int)local_48;\n        plVar4 = (long *)FUN_0030a080(param_1 + 0x100,&local_40);\n        plVar1 = (long *)plVar4[1];\n        if ((((plVar1 == (long *)*plVar4) || (plVar1[-3] != local_50)) || ((int)local_48 == -1)) ||\n           ((int)plVar1[-1] == -1)) {\n          plVar2 = (long *)plVar4[2];\n        }\n        else {\n          *(byte *)((long)plVar1 + -9) = *(byte *)((long)plVar1 + -9) & 0x7f;\n          plVar2 = (long *)plVar4[2];\n        }\n        if (plVar1 == plVar2) {\n          FUN_003064a0(plVar4,plVar1,&local_78);\n        }\n        else {\n          *plVar1 = local_78;\n          plVar1[1] = CONCAT44(uStack_6c,uStack_70);\n          plVar1[2] = CONCAT44(uStack_64,uStack_68);\n          plVar4[1] = (long)(plVar1 + 3);\n        }\n      }\n      param_2 = param_2 + local_80;\n    } while (local_3b._1_1_ == '\0');\n  }" { (expression_statement "local_3c = *(undefined1 *)(param_1 + 0x30);" (assignment_expression "local_3c = *(undefined1 *)(param_1 + 0x30)" identifier = (pointer_expression "*(undefined1 *)(param_1 + 0x30)" * (cast_expression "(undefined1 *)(param_1 + 0x30)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "local_58[0] = 1;" (assignment_expression "local_58[0] = 1" (subscript_expression "local_58[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;) (expression_statement "local_48 = 1;" (assignment_expression "local_48 = 1" identifier = number_literal) ;) (expression_statement "local_40 = -1;" (assignment_expression "local_40 = -1" identifier = number_literal) ;) (expression_statement "local_3b = 0;" (assignment_expression "local_3b = 0" identifier = number_literal) ;) (do_statement "do {\n      cVar3 = FUN_003086c0(param_1,param_2,local_58,&local_80);\n      if ((cVar3 != '\0') && (((param_3 == -1 || (local_40 == param_3)) || (local_40 == -1)))) {\n        local_78 = local_50;\n        uStack_70 = *(undefined4 *)(param_1 + 200);\n        uStack_64 = 0;\n        uStack_6c = local_58[0] & 0x7fffffff | 0x80000000;\n        uStack_68 = (int)local_48;\n        plVar4 = (long *)FUN_0030a080(param_1 + 0x100,&local_40);\n        plVar1 = (long *)plVar4[1];\n        if ((((plVar1 == (long *)*plVar4) || (plVar1[-3] != local_50)) || ((int)local_48 == -1)) ||\n           ((int)plVar1[-1] == -1)) {\n          plVar2 = (long *)plVar4[2];\n        }\n        else {\n          *(byte *)((long)plVar1 + -9) = *(byte *)((long)plVar1 + -9) & 0x7f;\n          plVar2 = (long *)plVar4[2];\n        }\n        if (plVar1 == plVar2) {\n          FUN_003064a0(plVar4,plVar1,&local_78);\n        }\n        else {\n          *plVar1 = local_78;\n          plVar1[1] = CONCAT44(uStack_6c,uStack_70);\n          plVar1[2] = CONCAT44(uStack_64,uStack_68);\n          plVar4[1] = (long)(plVar1 + 3);\n        }\n      }\n      param_2 = param_2 + local_80;\n    } while (local_3b._1_1_ == '\0');" do (compound_statement "{\n      cVar3 = FUN_003086c0(param_1,param_2,local_58,&local_80);\n      if ((cVar3 != '\0') && (((param_3 == -1 || (local_40 == param_3)) || (local_40 == -1)))) {\n        local_78 = local_50;\n        uStack_70 = *(undefined4 *)(param_1 + 200);\n        uStack_64 = 0;\n        uStack_6c = local_58[0] & 0x7fffffff | 0x80000000;\n        uStack_68 = (int)local_48;\n        plVar4 = (long *)FUN_0030a080(param_1 + 0x100,&local_40);\n        plVar1 = (long *)plVar4[1];\n        if ((((plVar1 == (long *)*plVar4) || (plVar1[-3] != local_50)) || ((int)local_48 == -1)) ||\n           ((int)plVar1[-1] == -1)) {\n          plVar2 = (long *)plVar4[2];\n        }\n        else {\n          *(byte *)((long)plVar1 + -9) = *(byte *)((long)plVar1 + -9) & 0x7f;\n          plVar2 = (long *)plVar4[2];\n        }\n        if (plVar1 == plVar2) {\n          FUN_003064a0(plVar4,plVar1,&local_78);\n        }\n        else {\n          *plVar1 = local_78;\n          plVar1[1] = CONCAT44(uStack_6c,uStack_70);\n          plVar1[2] = CONCAT44(uStack_64,uStack_68);\n          plVar4[1] = (long)(plVar1 + 3);\n        }\n      }\n      param_2 = param_2 + local_80;\n    }" { (expression_statement "cVar3 = FUN_003086c0(param_1,param_2,local_58,&local_80);" (assignment_expression "cVar3 = FUN_003086c0(param_1,param_2,local_58,&local_80)" identifier = (call_expression "FUN_003086c0(param_1,param_2,local_58,&local_80)" identifier (argument_list "(param_1,param_2,local_58,&local_80)" ( identifier , identifier , identifier , (pointer_expression "&local_80" & identifier) )))) ;) (if_statement "if ((cVar3 != '\0') && (((param_3 == -1 || (local_40 == param_3)) || (local_40 == -1)))) {\n        local_78 = local_50;\n        uStack_70 = *(undefined4 *)(param_1 + 200);\n        uStack_64 = 0;\n        uStack_6c = local_58[0] & 0x7fffffff | 0x80000000;\n        uStack_68 = (int)local_48;\n        plVar4 = (long *)FUN_0030a080(param_1 + 0x100,&local_40);\n        plVar1 = (long *)plVar4[1];\n        if ((((plVar1 == (long *)*plVar4) || (plVar1[-3] != local_50)) || ((int)local_48 == -1)) ||\n           ((int)plVar1[-1] == -1)) {\n          plVar2 = (long *)plVar4[2];\n        }\n        else {\n          *(byte *)((long)plVar1 + -9) = *(byte *)((long)plVar1 + -9) & 0x7f;\n          plVar2 = (long *)plVar4[2];\n        }\n        if (plVar1 == plVar2) {\n          FUN_003064a0(plVar4,plVar1,&local_78);\n        }\n        else {\n          *plVar1 = local_78;\n          plVar1[1] = CONCAT44(uStack_6c,uStack_70);\n          plVar1[2] = CONCAT44(uStack_64,uStack_68);\n          plVar4[1] = (long)(plVar1 + 3);\n        }\n      }" if (parenthesized_expression "((cVar3 != '\0') && (((param_3 == -1 || (local_40 == param_3)) || (local_40 == -1))))" ( (binary_expression "(cVar3 != '\0') && (((param_3 == -1 || (local_40 == param_3)) || (local_40 == -1)))" (parenthesized_expression "(cVar3 != '\0')" ( (binary_expression "cVar3 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(((param_3 == -1 || (local_40 == param_3)) || (local_40 == -1)))" ( (parenthesized_expression "((param_3 == -1 || (local_40 == param_3)) || (local_40 == -1))" ( (binary_expression "(param_3 == -1 || (local_40 == param_3)) || (local_40 == -1)" (parenthesized_expression "(param_3 == -1 || (local_40 == param_3))" ( (binary_expression "param_3 == -1 || (local_40 == param_3)" (binary_expression "param_3 == -1" identifier == number_literal) || (parenthesized_expression "(local_40 == param_3)" ( (binary_expression "local_40 == param_3" identifier == identifier) ))) )) || (parenthesized_expression "(local_40 == -1)" ( (binary_expression "local_40 == -1" identifier == number_literal) ))) )) ))) )) (compound_statement "{\n        local_78 = local_50;\n        uStack_70 = *(undefined4 *)(param_1 + 200);\n        uStack_64 = 0;\n        uStack_6c = local_58[0] & 0x7fffffff | 0x80000000;\n        uStack_68 = (int)local_48;\n        plVar4 = (long *)FUN_0030a080(param_1 + 0x100,&local_40);\n        plVar1 = (long *)plVar4[1];\n        if ((((plVar1 == (long *)*plVar4) || (plVar1[-3] != local_50)) || ((int)local_48 == -1)) ||\n           ((int)plVar1[-1] == -1)) {\n          plVar2 = (long *)plVar4[2];\n        }\n        else {\n          *(byte *)((long)plVar1 + -9) = *(byte *)((long)plVar1 + -9) & 0x7f;\n          plVar2 = (long *)plVar4[2];\n        }\n        if (plVar1 == plVar2) {\n          FUN_003064a0(plVar4,plVar1,&local_78);\n        }\n        else {\n          *plVar1 = local_78;\n          plVar1[1] = CONCAT44(uStack_6c,uStack_70);\n          plVar1[2] = CONCAT44(uStack_64,uStack_68);\n          plVar4[1] = (long)(plVar1 + 3);\n        }\n      }" { (expression_statement "local_78 = local_50;" (assignment_expression "local_78 = local_50" identifier = identifier) ;) (expression_statement "uStack_70 = *(undefined4 *)(param_1 + 200);" (assignment_expression "uStack_70 = *(undefined4 *)(param_1 + 200)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 200)" * (cast_expression "(undefined4 *)(param_1 + 200)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 200)" ( (binary_expression "param_1 + 200" identifier + number_literal) ))))) ;) (expression_statement "uStack_64 = 0;" (assignment_expression "uStack_64 = 0" identifier = number_literal) ;) (expression_statement "uStack_6c = local_58[0] & 0x7fffffff | 0x80000000;" (assignment_expression "uStack_6c = local_58[0] & 0x7fffffff | 0x80000000" identifier = (binary_expression "local_58[0] & 0x7fffffff | 0x80000000" (binary_expression "local_58[0] & 0x7fffffff" (subscript_expression "local_58[0]" identifier [ number_literal ]) & number_literal) | number_literal)) ;) (expression_statement "uStack_68 = (int)local_48;" (assignment_expression "uStack_68 = (int)local_48" identifier = (cast_expression "(int)local_48" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "plVar4 = (long *)FUN_0030a080(param_1 + 0x100,&local_40);" (assignment_expression "plVar4 = (long *)FUN_0030a080(param_1 + 0x100,&local_40)" identifier = (cast_expression "(long *)FUN_0030a080(param_1 + 0x100,&local_40)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0030a080(param_1 + 0x100,&local_40)" identifier (argument_list "(param_1 + 0x100,&local_40)" ( (binary_expression "param_1 + 0x100" identifier + number_literal) , (pointer_expression "&local_40" & identifier) ))))) ;) (expression_statement "plVar1 = (long *)plVar4[1];" (assignment_expression "plVar1 = (long *)plVar4[1]" identifier = (cast_expression "(long *)plVar4[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar4[1]" identifier [ number_literal ]))) ;) (if_statement "if ((((plVar1 == (long *)*plVar4) || (plVar1[-3] != local_50)) || ((int)local_48 == -1)) ||\n           ((int)plVar1[-1] == -1)) {\n          plVar2 = (long *)plVar4[2];\n        }\n        else {\n          *(byte *)((long)plVar1 + -9) = *(byte *)((long)plVar1 + -9) & 0x7f;\n          plVar2 = (long *)plVar4[2];\n        }" if (parenthesized_expression "((((plVar1 == (long *)*plVar4) || (plVar1[-3] != local_50)) || ((int)local_48 == -1)) ||\n           ((int)plVar1[-1] == -1))" ( (binary_expression "(((plVar1 == (long *)*plVar4) || (plVar1[-3] != local_50)) || ((int)local_48 == -1)) ||\n           ((int)plVar1[-1] == -1)" (parenthesized_expression "(((plVar1 == (long *)*plVar4) || (plVar1[-3] != local_50)) || ((int)local_48 == -1))" ( (binary_expression "((plVar1 == (long *)*plVar4) || (plVar1[-3] != local_50)) || ((int)local_48 == -1)" (parenthesized_expression "((plVar1 == (long *)*plVar4) || (plVar1[-3] != local_50))" ( (binary_expression "(plVar1 == (long *)*plVar4) || (plVar1[-3] != local_50)" (parenthesized_expression "(plVar1 == (long *)*plVar4)" ( (binary_expression "plVar1 == (long *)*plVar4" identifier == (cast_expression "(long *)*plVar4" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar4" * identifier))) )) || (parenthesized_expression "(plVar1[-3] != local_50)" ( (binary_expression "plVar1[-3] != local_50" (subscript_expression "plVar1[-3]" identifier [ number_literal ]) != identifier) ))) )) || (parenthesized_expression "((int)local_48 == -1)" ( (binary_expression "(int)local_48 == -1" (cast_expression "(int)local_48" ( (type_descriptor "int" primitive_type) ) identifier) == number_literal) ))) )) || (parenthesized_expression "((int)plVar1[-1] == -1)" ( (binary_expression "(int)plVar1[-1] == -1" (cast_expression "(int)plVar1[-1]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "plVar1[-1]" identifier [ number_literal ])) == number_literal) ))) )) (compound_statement "{\n          plVar2 = (long *)plVar4[2];\n        }" { (expression_statement "plVar2 = (long *)plVar4[2];" (assignment_expression "plVar2 = (long *)plVar4[2]" identifier = (cast_expression "(long *)plVar4[2]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar4[2]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n          *(byte *)((long)plVar1 + -9) = *(byte *)((long)plVar1 + -9) & 0x7f;\n          plVar2 = (long *)plVar4[2];\n        }" else (compound_statement "{\n          *(byte *)((long)plVar1 + -9) = *(byte *)((long)plVar1 + -9) & 0x7f;\n          plVar2 = (long *)plVar4[2];\n        }" { (expression_statement "*(byte *)((long)plVar1 + -9) = *(byte *)((long)plVar1 + -9) & 0x7f;" (assignment_expression "*(byte *)((long)plVar1 + -9) = *(byte *)((long)plVar1 + -9) & 0x7f" (pointer_expression "*(byte *)((long)plVar1 + -9)" * (cast_expression "(byte *)((long)plVar1 + -9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar1 + -9)" ( (binary_expression "(long)plVar1 + -9" (cast_expression "(long)plVar1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (binary_expression "*(byte *)((long)plVar1 + -9) & 0x7f" (pointer_expression "*(byte *)((long)plVar1 + -9)" * (cast_expression "(byte *)((long)plVar1 + -9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar1 + -9)" ( (binary_expression "(long)plVar1 + -9" (cast_expression "(long)plVar1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) & number_literal)) ;) (expression_statement "plVar2 = (long *)plVar4[2];" (assignment_expression "plVar2 = (long *)plVar4[2]" identifier = (cast_expression "(long *)plVar4[2]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar4[2]" identifier [ number_literal ]))) ;) }))) (if_statement "if (plVar1 == plVar2) {\n          FUN_003064a0(plVar4,plVar1,&local_78);\n        }\n        else {\n          *plVar1 = local_78;\n          plVar1[1] = CONCAT44(uStack_6c,uStack_70);\n          plVar1[2] = CONCAT44(uStack_64,uStack_68);\n          plVar4[1] = (long)(plVar1 + 3);\n        }" if (parenthesized_expression "(plVar1 == plVar2)" ( (binary_expression "plVar1 == plVar2" identifier == identifier) )) (compound_statement "{\n          FUN_003064a0(plVar4,plVar1,&local_78);\n        }" { (expression_statement "FUN_003064a0(plVar4,plVar1,&local_78);" (call_expression "FUN_003064a0(plVar4,plVar1,&local_78)" identifier (argument_list "(plVar4,plVar1,&local_78)" ( identifier , identifier , (pointer_expression "&local_78" & identifier) ))) ;) }) (else_clause "else {\n          *plVar1 = local_78;\n          plVar1[1] = CONCAT44(uStack_6c,uStack_70);\n          plVar1[2] = CONCAT44(uStack_64,uStack_68);\n          plVar4[1] = (long)(plVar1 + 3);\n        }" else (compound_statement "{\n          *plVar1 = local_78;\n          plVar1[1] = CONCAT44(uStack_6c,uStack_70);\n          plVar1[2] = CONCAT44(uStack_64,uStack_68);\n          plVar4[1] = (long)(plVar1 + 3);\n        }" { (expression_statement "*plVar1 = local_78;" (assignment_expression "*plVar1 = local_78" (pointer_expression "*plVar1" * identifier) = identifier) ;) (expression_statement "plVar1[1] = CONCAT44(uStack_6c,uStack_70);" (assignment_expression "plVar1[1] = CONCAT44(uStack_6c,uStack_70)" (subscript_expression "plVar1[1]" identifier [ number_literal ]) = (call_expression "CONCAT44(uStack_6c,uStack_70)" identifier (argument_list "(uStack_6c,uStack_70)" ( identifier , identifier )))) ;) (expression_statement "plVar1[2] = CONCAT44(uStack_64,uStack_68);" (assignment_expression "plVar1[2] = CONCAT44(uStack_64,uStack_68)" (subscript_expression "plVar1[2]" identifier [ number_literal ]) = (call_expression "CONCAT44(uStack_64,uStack_68)" identifier (argument_list "(uStack_64,uStack_68)" ( identifier , identifier )))) ;) (expression_statement "plVar4[1] = (long)(plVar1 + 3);" (assignment_expression "plVar4[1] = (long)(plVar1 + 3)" (subscript_expression "plVar4[1]" identifier [ number_literal ]) = (cast_expression "(long)(plVar1 + 3)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(plVar1 + 3)" ( (binary_expression "plVar1 + 3" identifier + number_literal) )))) ;) }))) })) (expression_statement "param_2 = param_2 + local_80;" (assignment_expression "param_2 = param_2 + local_80" identifier = (binary_expression "param_2 + local_80" identifier + identifier)) ;) }) while (parenthesized_expression "(local_3b._1_1_ == '\0')" ( (binary_expression "local_3b._1_1_ == '\0'" (field_expression "local_3b._1_1_" identifier . field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) })) (while_statement while (parenthesized_expression ( (binary_expression IDENT < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) || (parenthesized_expression ( (binary_expression IDENT == IDENT) ))) )) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) | LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (pointer_expression & IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) )) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != IDENT) ))) )) || (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == LIT) ))) )) || (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) & LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (pointer_expression & IDENT) ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) }))) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) }) while (parenthesized_expression ( (binary_expression (field_expression IDENT . field_identifier) == (char_literal ' escape_sequence ')) )) ;) })) (return_statement return ;) })))
(function_definition "void FUN_0030a310(long param_1,ulong param_2,int param_3)\n\n{\n  long *plVar1;\n  long *plVar2;\n  char cVar3;\n  long *plVar4;\n  long local_98;\n  long local_80;\n  long local_78;\n  undefined4 uStack_70;\n  uint uStack_6c;\n  undefined4 uStack_68;\n  undefined4 uStack_64;\n  uint local_58 [2];\n  long local_50;\n  undefined8 local_48;\n  int local_40;\n  undefined1 local_3c;\n  undefined2 local_3b;\n  \n  local_98 = *(long *)(param_1 + 0x60) + 4;\n  if (*(int *)(param_1 + 0x58) == 8) {\n    local_98 = *(long *)(param_1 + 0x60) + 0xc;\n  }\n  while (param_2 < (ulong)(local_98 + *(long *)(param_1 + 0x10))) {\n    local_3c = *(undefined1 *)(param_1 + 0x30);\n    local_58[0] = 1;\n    local_50 = 0;\n    local_48 = 1;\n    local_40 = -1;\n    local_3b = 0;\n    do {\n      cVar3 = FUN_003086c0(param_1,param_2,local_58,&local_80);\n      if ((cVar3 != '\0') && (((param_3 == -1 || (local_40 == param_3)) || (local_40 == -1)))) {\n        local_78 = local_50;\n        uStack_70 = *(undefined4 *)(param_1 + 200);\n        uStack_64 = 0;\n        uStack_6c = local_58[0] & 0x7fffffff | 0x80000000;\n        uStack_68 = (int)local_48;\n        plVar4 = (long *)FUN_0030a080(param_1 + 0x100,&local_40);\n        plVar1 = (long *)plVar4[1];\n        if ((((plVar1 == (long *)*plVar4) || (plVar1[-3] != local_50)) || ((int)local_48 == -1)) ||\n           ((int)plVar1[-1] == -1)) {\n          plVar2 = (long *)plVar4[2];\n        }\n        else {\n          *(byte *)((long)plVar1 + -9) = *(byte *)((long)plVar1 + -9) & 0x7f;\n          plVar2 = (long *)plVar4[2];\n        }\n        if (plVar1 == plVar2) {\n          FUN_003064a0(plVar4,plVar1,&local_78);\n        }\n        else {\n          *plVar1 = local_78;\n          plVar1[1] = CONCAT44(uStack_6c,uStack_70);\n          plVar1[2] = CONCAT44(uStack_64,uStack_68);\n          plVar4[1] = (long)(plVar1 + 3);\n        }\n      }\n      param_2 = param_2 + local_80;\n    } while (local_3b._1_1_ == '\0');\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_0030a310(long param_1,ulong param_2,int param_3)" (identifier "FUN_0030a310") (parameter_list "(long param_1,ulong param_2,int param_3)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "ulong param_2" (type_identifier "ulong") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) () ")"))) (compound_statement "{\n  long *plVar1;\n  long *plVar2;\n  char cVar3;\n  long *plVar4;\n  long local_98;\n  long local_80;\n  long local_78;\n  undefined4 uStack_70;\n  uint uStack_6c;\n  undefined4 uStack_68;\n  undefined4 uStack_64;\n  uint local_58 [2];\n  long local_50;\n  undefined8 local_48;\n  int local_40;\n  undefined1 local_3c;\n  undefined2 local_3b;\n  \n  local_98 = *(long *)(param_1 + 0x60) + 4;\n  if (*(int *)(param_1 + 0x58) == 8) {\n    local_98 = *(long *)(param_1 + 0x60) + 0xc;\n  }\n  while (param_2 < (ulong)(local_98 + *(long *)(param_1 + 0x10))) {\n    local_3c = *(undefined1 *)(param_1 + 0x30);\n    local_58[0] = 1;\n    local_50 = 0;\n    local_48 = 1;\n    local_40 = -1;\n    local_3b = 0;\n    do {\n      cVar3 = FUN_003086c0(param_1,param_2,local_58,&local_80);\n      if ((cVar3 != '\0') && (((param_3 == -1 || (local_40 == param_3)) || (local_40 == -1)))) {\n        local_78 = local_50;\n        uStack_70 = *(undefined4 *)(param_1 + 200);\n        uStack_64 = 0;\n        uStack_6c = local_58[0] & 0x7fffffff | 0x80000000;\n        uStack_68 = (int)local_48;\n        plVar4 = (long *)FUN_0030a080(param_1 + 0x100,&local_40);\n        plVar1 = (long *)plVar4[1];\n        if ((((plVar1 == (long *)*plVar4) || (plVar1[-3] != local_50)) || ((int)local_48 == -1)) ||\n           ((int)plVar1[-1] == -1)) {\n          plVar2 = (long *)plVar4[2];\n        }\n        else {\n          *(byte *)((long)plVar1 + -9) = *(byte *)((long)plVar1 + -9) & 0x7f;\n          plVar2 = (long *)plVar4[2];\n        }\n        if (plVar1 == plVar2) {\n          FUN_003064a0(plVar4,plVar1,&local_78);\n        }\n        else {\n          *plVar1 = local_78;\n          plVar1[1] = CONCAT44(uStack_6c,uStack_70);\n          plVar1[2] = CONCAT44(uStack_64,uStack_68);\n          plVar4[1] = (long)(plVar1 + 3);\n        }\n      }\n      param_2 = param_2 + local_80;\n    } while (local_3b._1_1_ == '\0');\n  }\n  return;\n}" ({ "{") (declaration "long *plVar1;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar1" (* "*") (identifier "plVar1")) (; ";")) (declaration "long *plVar2;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar2" (* "*") (identifier "plVar2")) (; ";")) (declaration "char cVar3;" (primitive_type "char") (identifier "cVar3") (; ";")) (declaration "long *plVar4;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar4" (* "*") (identifier "plVar4")) (; ";")) (declaration "long local_98;" (sized_type_specifier "long" (long "long")) (identifier "local_98") (; ";")) (declaration "long local_80;" (sized_type_specifier "long" (long "long")) (identifier "local_80") (; ";")) (declaration "long local_78;" (sized_type_specifier "long" (long "long")) (identifier "local_78") (; ";")) (declaration "undefined4 uStack_70;" (type_identifier "undefined4") (identifier "uStack_70") (; ";")) (declaration "uint uStack_6c;" (type_identifier "uint") (identifier "uStack_6c") (; ";")) (declaration "undefined4 uStack_68;" (type_identifier "undefined4") (identifier "uStack_68") (; ";")) (declaration "undefined4 uStack_64;" (type_identifier "undefined4") (identifier "uStack_64") (; ";")) (declaration "uint local_58 [2];" (type_identifier "uint") (array_declarator "local_58 [2]" (identifier "local_58") ([ "[") (number_literal "2") (] "]")) (; ";")) (declaration "long local_50;" (sized_type_specifier "long" (long "long")) (identifier "local_50") (; ";")) (declaration "undefined8 local_48;" (type_identifier "undefined8") (identifier "local_48") (; ";")) (declaration "int local_40;" (primitive_type "int") (identifier "local_40") (; ";")) (declaration "undefined1 local_3c;" (type_identifier "undefined1") (identifier "local_3c") (; ";")) (declaration "undefined2 local_3b;" (type_identifier "undefined2") (identifier "local_3b") (; ";")) (expression_statement "local_98 = *(long *)(param_1 + 0x60) + 4;" (assignment_expression "local_98 = *(long *)(param_1 + 0x60) + 4" (identifier "local_98") (= "=") (binary_expression "*(long *)(param_1 + 0x60) + 4" (pointer_expression "*(long *)(param_1 + 0x60)" (* "*") (cast_expression "(long *)(param_1 + 0x60)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x60)" (( "(") (binary_expression "param_1 + 0x60" (identifier "param_1") (+ "+") (number_literal "0x60")) () ")")))) (+ "+") (number_literal "4"))) (; ";")) (if_statement "if (*(int *)(param_1 + 0x58) == 8) {\n    local_98 = *(long *)(param_1 + 0x60) + 0xc;\n  }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x58) == 8)" (( "(") (binary_expression "*(int *)(param_1 + 0x58) == 8" (pointer_expression "*(int *)(param_1 + 0x58)" (* "*") (cast_expression "(int *)(param_1 + 0x58)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x58)" (( "(") (binary_expression "param_1 + 0x58" (identifier "param_1") (+ "+") (number_literal "0x58")) () ")")))) (== "==") (number_literal "8")) () ")")) (compound_statement "{\n    local_98 = *(long *)(param_1 + 0x60) + 0xc;\n  }" ({ "{") (expression_statement "local_98 = *(long *)(param_1 + 0x60) + 0xc;" (assignment_expression "local_98 = *(long *)(param_1 + 0x60) + 0xc" (identifier "local_98") (= "=") (binary_expression "*(long *)(param_1 + 0x60) + 0xc" (pointer_expression "*(long *)(param_1 + 0x60)" (* "*") (cast_expression "(long *)(param_1 + 0x60)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x60)" (( "(") (binary_expression "param_1 + 0x60" (identifier "param_1") (+ "+") (number_literal "0x60")) () ")")))) (+ "+") (number_literal "0xc"))) (; ";")) (} "}"))) (while_statement "while (param_2 < (ulong)(local_98 + *(long *)(param_1 + 0x10))) {\n    local_3c = *(undefined1 *)(param_1 + 0x30);\n    local_58[0] = 1;\n    local_50 = 0;\n    local_48 = 1;\n    local_40 = -1;\n    local_3b = 0;\n    do {\n      cVar3 = FUN_003086c0(param_1,param_2,local_58,&local_80);\n      if ((cVar3 != '\0') && (((param_3 == -1 || (local_40 == param_3)) || (local_40 == -1)))) {\n        local_78 = local_50;\n        uStack_70 = *(undefined4 *)(param_1 + 200);\n        uStack_64 = 0;\n        uStack_6c = local_58[0] & 0x7fffffff | 0x80000000;\n        uStack_68 = (int)local_48;\n        plVar4 = (long *)FUN_0030a080(param_1 + 0x100,&local_40);\n        plVar1 = (long *)plVar4[1];\n        if ((((plVar1 == (long *)*plVar4) || (plVar1[-3] != local_50)) || ((int)local_48 == -1)) ||\n           ((int)plVar1[-1] == -1)) {\n          plVar2 = (long *)plVar4[2];\n        }\n        else {\n          *(byte *)((long)plVar1 + -9) = *(byte *)((long)plVar1 + -9) & 0x7f;\n          plVar2 = (long *)plVar4[2];\n        }\n        if (plVar1 == plVar2) {\n          FUN_003064a0(plVar4,plVar1,&local_78);\n        }\n        else {\n          *plVar1 = local_78;\n          plVar1[1] = CONCAT44(uStack_6c,uStack_70);\n          plVar1[2] = CONCAT44(uStack_64,uStack_68);\n          plVar4[1] = (long)(plVar1 + 3);\n        }\n      }\n      param_2 = param_2 + local_80;\n    } while (local_3b._1_1_ == '\0');\n  }" (while "while") (parenthesized_expression "(param_2 < (ulong)(local_98 + *(long *)(param_1 + 0x10)))" (( "(") (binary_expression "param_2 < (ulong)(local_98 + *(long *)(param_1 + 0x10))" (identifier "param_2") (< "<") (call_expression "(ulong)(local_98 + *(long *)(param_1 + 0x10))" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(local_98 + *(long *)(param_1 + 0x10))" (( "(") (binary_expression "local_98 + *(long *)(param_1 + 0x10)" (identifier "local_98") (+ "+") (pointer_expression "*(long *)(param_1 + 0x10)" (* "*") (cast_expression "(long *)(param_1 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) () ")")))) () ")")) (compound_statement "{\n    local_3c = *(undefined1 *)(param_1 + 0x30);\n    local_58[0] = 1;\n    local_50 = 0;\n    local_48 = 1;\n    local_40 = -1;\n    local_3b = 0;\n    do {\n      cVar3 = FUN_003086c0(param_1,param_2,local_58,&local_80);\n      if ((cVar3 != '\0') && (((param_3 == -1 || (local_40 == param_3)) || (local_40 == -1)))) {\n        local_78 = local_50;\n        uStack_70 = *(undefined4 *)(param_1 + 200);\n        uStack_64 = 0;\n        uStack_6c = local_58[0] & 0x7fffffff | 0x80000000;\n        uStack_68 = (int)local_48;\n        plVar4 = (long *)FUN_0030a080(param_1 + 0x100,&local_40);\n        plVar1 = (long *)plVar4[1];\n        if ((((plVar1 == (long *)*plVar4) || (plVar1[-3] != local_50)) || ((int)local_48 == -1)) ||\n           ((int)plVar1[-1] == -1)) {\n          plVar2 = (long *)plVar4[2];\n        }\n        else {\n          *(byte *)((long)plVar1 + -9) = *(byte *)((long)plVar1 + -9) & 0x7f;\n          plVar2 = (long *)plVar4[2];\n        }\n        if (plVar1 == plVar2) {\n          FUN_003064a0(plVar4,plVar1,&local_78);\n        }\n        else {\n          *plVar1 = local_78;\n          plVar1[1] = CONCAT44(uStack_6c,uStack_70);\n          plVar1[2] = CONCAT44(uStack_64,uStack_68);\n          plVar4[1] = (long)(plVar1 + 3);\n        }\n      }\n      param_2 = param_2 + local_80;\n    } while (local_3b._1_1_ == '\0');\n  }" ({ "{") (expression_statement "local_3c = *(undefined1 *)(param_1 + 0x30);" (assignment_expression "local_3c = *(undefined1 *)(param_1 + 0x30)" (identifier "local_3c") (= "=") (pointer_expression "*(undefined1 *)(param_1 + 0x30)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0x30)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x30)" (( "(") (binary_expression "param_1 + 0x30" (identifier "param_1") (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (expression_statement "local_58[0] = 1;" (assignment_expression "local_58[0] = 1" (subscript_expression "local_58[0]" (identifier "local_58") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" (identifier "local_50") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_48 = 1;" (assignment_expression "local_48 = 1" (identifier "local_48") (= "=") (number_literal "1")) (; ";")) (expression_statement "local_40 = -1;" (assignment_expression "local_40 = -1" (identifier "local_40") (= "=") (number_literal "-1")) (; ";")) (expression_statement "local_3b = 0;" (assignment_expression "local_3b = 0" (identifier "local_3b") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n      cVar3 = FUN_003086c0(param_1,param_2,local_58,&local_80);\n      if ((cVar3 != '\0') && (((param_3 == -1 || (local_40 == param_3)) || (local_40 == -1)))) {\n        local_78 = local_50;\n        uStack_70 = *(undefined4 *)(param_1 + 200);\n        uStack_64 = 0;\n        uStack_6c = local_58[0] & 0x7fffffff | 0x80000000;\n        uStack_68 = (int)local_48;\n        plVar4 = (long *)FUN_0030a080(param_1 + 0x100,&local_40);\n        plVar1 = (long *)plVar4[1];\n        if ((((plVar1 == (long *)*plVar4) || (plVar1[-3] != local_50)) || ((int)local_48 == -1)) ||\n           ((int)plVar1[-1] == -1)) {\n          plVar2 = (long *)plVar4[2];\n        }\n        else {\n          *(byte *)((long)plVar1 + -9) = *(byte *)((long)plVar1 + -9) & 0x7f;\n          plVar2 = (long *)plVar4[2];\n        }\n        if (plVar1 == plVar2) {\n          FUN_003064a0(plVar4,plVar1,&local_78);\n        }\n        else {\n          *plVar1 = local_78;\n          plVar1[1] = CONCAT44(uStack_6c,uStack_70);\n          plVar1[2] = CONCAT44(uStack_64,uStack_68);\n          plVar4[1] = (long)(plVar1 + 3);\n        }\n      }\n      param_2 = param_2 + local_80;\n    } while (local_3b._1_1_ == '\0');" (do "do") (compound_statement "{\n      cVar3 = FUN_003086c0(param_1,param_2,local_58,&local_80);\n      if ((cVar3 != '\0') && (((param_3 == -1 || (local_40 == param_3)) || (local_40 == -1)))) {\n        local_78 = local_50;\n        uStack_70 = *(undefined4 *)(param_1 + 200);\n        uStack_64 = 0;\n        uStack_6c = local_58[0] & 0x7fffffff | 0x80000000;\n        uStack_68 = (int)local_48;\n        plVar4 = (long *)FUN_0030a080(param_1 + 0x100,&local_40);\n        plVar1 = (long *)plVar4[1];\n        if ((((plVar1 == (long *)*plVar4) || (plVar1[-3] != local_50)) || ((int)local_48 == -1)) ||\n           ((int)plVar1[-1] == -1)) {\n          plVar2 = (long *)plVar4[2];\n        }\n        else {\n          *(byte *)((long)plVar1 + -9) = *(byte *)((long)plVar1 + -9) & 0x7f;\n          plVar2 = (long *)plVar4[2];\n        }\n        if (plVar1 == plVar2) {\n          FUN_003064a0(plVar4,plVar1,&local_78);\n        }\n        else {\n          *plVar1 = local_78;\n          plVar1[1] = CONCAT44(uStack_6c,uStack_70);\n          plVar1[2] = CONCAT44(uStack_64,uStack_68);\n          plVar4[1] = (long)(plVar1 + 3);\n        }\n      }\n      param_2 = param_2 + local_80;\n    }" ({ "{") (expression_statement "cVar3 = FUN_003086c0(param_1,param_2,local_58,&local_80);" (assignment_expression "cVar3 = FUN_003086c0(param_1,param_2,local_58,&local_80)" (identifier "cVar3") (= "=") (call_expression "FUN_003086c0(param_1,param_2,local_58,&local_80)" (identifier "FUN_003086c0") (argument_list "(param_1,param_2,local_58,&local_80)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "local_58") (, ",") (pointer_expression "&local_80" (& "&") (identifier "local_80")) () ")")))) (; ";")) (if_statement "if ((cVar3 != '\0') && (((param_3 == -1 || (local_40 == param_3)) || (local_40 == -1)))) {\n        local_78 = local_50;\n        uStack_70 = *(undefined4 *)(param_1 + 200);\n        uStack_64 = 0;\n        uStack_6c = local_58[0] & 0x7fffffff | 0x80000000;\n        uStack_68 = (int)local_48;\n        plVar4 = (long *)FUN_0030a080(param_1 + 0x100,&local_40);\n        plVar1 = (long *)plVar4[1];\n        if ((((plVar1 == (long *)*plVar4) || (plVar1[-3] != local_50)) || ((int)local_48 == -1)) ||\n           ((int)plVar1[-1] == -1)) {\n          plVar2 = (long *)plVar4[2];\n        }\n        else {\n          *(byte *)((long)plVar1 + -9) = *(byte *)((long)plVar1 + -9) & 0x7f;\n          plVar2 = (long *)plVar4[2];\n        }\n        if (plVar1 == plVar2) {\n          FUN_003064a0(plVar4,plVar1,&local_78);\n        }\n        else {\n          *plVar1 = local_78;\n          plVar1[1] = CONCAT44(uStack_6c,uStack_70);\n          plVar1[2] = CONCAT44(uStack_64,uStack_68);\n          plVar4[1] = (long)(plVar1 + 3);\n        }\n      }" (if "if") (parenthesized_expression "((cVar3 != '\0') && (((param_3 == -1 || (local_40 == param_3)) || (local_40 == -1))))" (( "(") (binary_expression "(cVar3 != '\0') && (((param_3 == -1 || (local_40 == param_3)) || (local_40 == -1)))" (parenthesized_expression "(cVar3 != '\0')" (( "(") (binary_expression "cVar3 != '\0'" (identifier "cVar3") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(((param_3 == -1 || (local_40 == param_3)) || (local_40 == -1)))" (( "(") (parenthesized_expression "((param_3 == -1 || (local_40 == param_3)) || (local_40 == -1))" (( "(") (binary_expression "(param_3 == -1 || (local_40 == param_3)) || (local_40 == -1)" (parenthesized_expression "(param_3 == -1 || (local_40 == param_3))" (( "(") (binary_expression "param_3 == -1 || (local_40 == param_3)" (binary_expression "param_3 == -1" (identifier "param_3") (== "==") (number_literal "-1")) (|| "||") (parenthesized_expression "(local_40 == param_3)" (( "(") (binary_expression "local_40 == param_3" (identifier "local_40") (== "==") (identifier "param_3")) () ")"))) () ")")) (|| "||") (parenthesized_expression "(local_40 == -1)" (( "(") (binary_expression "local_40 == -1" (identifier "local_40") (== "==") (number_literal "-1")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n        local_78 = local_50;\n        uStack_70 = *(undefined4 *)(param_1 + 200);\n        uStack_64 = 0;\n        uStack_6c = local_58[0] & 0x7fffffff | 0x80000000;\n        uStack_68 = (int)local_48;\n        plVar4 = (long *)FUN_0030a080(param_1 + 0x100,&local_40);\n        plVar1 = (long *)plVar4[1];\n        if ((((plVar1 == (long *)*plVar4) || (plVar1[-3] != local_50)) || ((int)local_48 == -1)) ||\n           ((int)plVar1[-1] == -1)) {\n          plVar2 = (long *)plVar4[2];\n        }\n        else {\n          *(byte *)((long)plVar1 + -9) = *(byte *)((long)plVar1 + -9) & 0x7f;\n          plVar2 = (long *)plVar4[2];\n        }\n        if (plVar1 == plVar2) {\n          FUN_003064a0(plVar4,plVar1,&local_78);\n        }\n        else {\n          *plVar1 = local_78;\n          plVar1[1] = CONCAT44(uStack_6c,uStack_70);\n          plVar1[2] = CONCAT44(uStack_64,uStack_68);\n          plVar4[1] = (long)(plVar1 + 3);\n        }\n      }" ({ "{") (expression_statement "local_78 = local_50;" (assignment_expression "local_78 = local_50" (identifier "local_78") (= "=") (identifier "local_50")) (; ";")) (expression_statement "uStack_70 = *(undefined4 *)(param_1 + 200);" (assignment_expression "uStack_70 = *(undefined4 *)(param_1 + 200)" (identifier "uStack_70") (= "=") (pointer_expression "*(undefined4 *)(param_1 + 200)" (* "*") (cast_expression "(undefined4 *)(param_1 + 200)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 200)" (( "(") (binary_expression "param_1 + 200" (identifier "param_1") (+ "+") (number_literal "200")) () ")"))))) (; ";")) (expression_statement "uStack_64 = 0;" (assignment_expression "uStack_64 = 0" (identifier "uStack_64") (= "=") (number_literal "0")) (; ";")) (expression_statement "uStack_6c = local_58[0] & 0x7fffffff | 0x80000000;" (assignment_expression "uStack_6c = local_58[0] & 0x7fffffff | 0x80000000" (identifier "uStack_6c") (= "=") (binary_expression "local_58[0] & 0x7fffffff | 0x80000000" (binary_expression "local_58[0] & 0x7fffffff" (subscript_expression "local_58[0]" (identifier "local_58") ([ "[") (number_literal "0") (] "]")) (& "&") (number_literal "0x7fffffff")) (| "|") (number_literal "0x80000000"))) (; ";")) (expression_statement "uStack_68 = (int)local_48;" (assignment_expression "uStack_68 = (int)local_48" (identifier "uStack_68") (= "=") (cast_expression "(int)local_48" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_48"))) (; ";")) (expression_statement "plVar4 = (long *)FUN_0030a080(param_1 + 0x100,&local_40);" (assignment_expression "plVar4 = (long *)FUN_0030a080(param_1 + 0x100,&local_40)" (identifier "plVar4") (= "=") (cast_expression "(long *)FUN_0030a080(param_1 + 0x100,&local_40)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0030a080(param_1 + 0x100,&local_40)" (identifier "FUN_0030a080") (argument_list "(param_1 + 0x100,&local_40)" (( "(") (binary_expression "param_1 + 0x100" (identifier "param_1") (+ "+") (number_literal "0x100")) (, ",") (pointer_expression "&local_40" (& "&") (identifier "local_40")) () ")"))))) (; ";")) (expression_statement "plVar1 = (long *)plVar4[1];" (assignment_expression "plVar1 = (long *)plVar4[1]" (identifier "plVar1") (= "=") (cast_expression "(long *)plVar4[1]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "plVar4[1]" (identifier "plVar4") ([ "[") (number_literal "1") (] "]")))) (; ";")) (if_statement "if ((((plVar1 == (long *)*plVar4) || (plVar1[-3] != local_50)) || ((int)local_48 == -1)) ||\n           ((int)plVar1[-1] == -1)) {\n          plVar2 = (long *)plVar4[2];\n        }\n        else {\n          *(byte *)((long)plVar1 + -9) = *(byte *)((long)plVar1 + -9) & 0x7f;\n          plVar2 = (long *)plVar4[2];\n        }" (if "if") (parenthesized_expression "((((plVar1 == (long *)*plVar4) || (plVar1[-3] != local_50)) || ((int)local_48 == -1)) ||\n           ((int)plVar1[-1] == -1))" (( "(") (binary_expression "(((plVar1 == (long *)*plVar4) || (plVar1[-3] != local_50)) || ((int)local_48 == -1)) ||\n           ((int)plVar1[-1] == -1)" (parenthesized_expression "(((plVar1 == (long *)*plVar4) || (plVar1[-3] != local_50)) || ((int)local_48 == -1))" (( "(") (binary_expression "((plVar1 == (long *)*plVar4) || (plVar1[-3] != local_50)) || ((int)local_48 == -1)" (parenthesized_expression "((plVar1 == (long *)*plVar4) || (plVar1[-3] != local_50))" (( "(") (binary_expression "(plVar1 == (long *)*plVar4) || (plVar1[-3] != local_50)" (parenthesized_expression "(plVar1 == (long *)*plVar4)" (( "(") (binary_expression "plVar1 == (long *)*plVar4" (identifier "plVar1") (== "==") (cast_expression "(long *)*plVar4" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar4" (* "*") (identifier "plVar4")))) () ")")) (|| "||") (parenthesized_expression "(plVar1[-3] != local_50)" (( "(") (binary_expression "plVar1[-3] != local_50" (subscript_expression "plVar1[-3]" (identifier "plVar1") ([ "[") (number_literal "-3") (] "]")) (!= "!=") (identifier "local_50")) () ")"))) () ")")) (|| "||") (parenthesized_expression "((int)local_48 == -1)" (( "(") (binary_expression "(int)local_48 == -1" (cast_expression "(int)local_48" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_48")) (== "==") (number_literal "-1")) () ")"))) () ")")) (|| "||") (parenthesized_expression "((int)plVar1[-1] == -1)" (( "(") (binary_expression "(int)plVar1[-1] == -1" (cast_expression "(int)plVar1[-1]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "plVar1[-1]" (identifier "plVar1") ([ "[") (number_literal "-1") (] "]"))) (== "==") (number_literal "-1")) () ")"))) () ")")) (compound_statement "{\n          plVar2 = (long *)plVar4[2];\n        }" ({ "{") (expression_statement "plVar2 = (long *)plVar4[2];" (assignment_expression "plVar2 = (long *)plVar4[2]" (identifier "plVar2") (= "=") (cast_expression "(long *)plVar4[2]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "plVar4[2]" (identifier "plVar4") ([ "[") (number_literal "2") (] "]")))) (; ";")) (} "}")) (else_clause "else {\n          *(byte *)((long)plVar1 + -9) = *(byte *)((long)plVar1 + -9) & 0x7f;\n          plVar2 = (long *)plVar4[2];\n        }" (else "else") (compound_statement "{\n          *(byte *)((long)plVar1 + -9) = *(byte *)((long)plVar1 + -9) & 0x7f;\n          plVar2 = (long *)plVar4[2];\n        }" ({ "{") (expression_statement "*(byte *)((long)plVar1 + -9) = *(byte *)((long)plVar1 + -9) & 0x7f;" (assignment_expression "*(byte *)((long)plVar1 + -9) = *(byte *)((long)plVar1 + -9) & 0x7f" (pointer_expression "*(byte *)((long)plVar1 + -9)" (* "*") (cast_expression "(byte *)((long)plVar1 + -9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar1 + -9)" (( "(") (binary_expression "(long)plVar1 + -9" (cast_expression "(long)plVar1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar1")) (+ "+") (number_literal "-9")) () ")")))) (= "=") (binary_expression "*(byte *)((long)plVar1 + -9) & 0x7f" (pointer_expression "*(byte *)((long)plVar1 + -9)" (* "*") (cast_expression "(byte *)((long)plVar1 + -9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar1 + -9)" (( "(") (binary_expression "(long)plVar1 + -9" (cast_expression "(long)plVar1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar1")) (+ "+") (number_literal "-9")) () ")")))) (& "&") (number_literal "0x7f"))) (; ";")) (expression_statement "plVar2 = (long *)plVar4[2];" (assignment_expression "plVar2 = (long *)plVar4[2]" (identifier "plVar2") (= "=") (cast_expression "(long *)plVar4[2]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "plVar4[2]" (identifier "plVar4") ([ "[") (number_literal "2") (] "]")))) (; ";")) (} "}")))) (if_statement "if (plVar1 == plVar2) {\n          FUN_003064a0(plVar4,plVar1,&local_78);\n        }\n        else {\n          *plVar1 = local_78;\n          plVar1[1] = CONCAT44(uStack_6c,uStack_70);\n          plVar1[2] = CONCAT44(uStack_64,uStack_68);\n          plVar4[1] = (long)(plVar1 + 3);\n        }" (if "if") (parenthesized_expression "(plVar1 == plVar2)" (( "(") (binary_expression "plVar1 == plVar2" (identifier "plVar1") (== "==") (identifier "plVar2")) () ")")) (compound_statement "{\n          FUN_003064a0(plVar4,plVar1,&local_78);\n        }" ({ "{") (expression_statement "FUN_003064a0(plVar4,plVar1,&local_78);" (call_expression "FUN_003064a0(plVar4,plVar1,&local_78)" (identifier "FUN_003064a0") (argument_list "(plVar4,plVar1,&local_78)" (( "(") (identifier "plVar4") (, ",") (identifier "plVar1") (, ",") (pointer_expression "&local_78" (& "&") (identifier "local_78")) () ")"))) (; ";")) (} "}")) (else_clause "else {\n          *plVar1 = local_78;\n          plVar1[1] = CONCAT44(uStack_6c,uStack_70);\n          plVar1[2] = CONCAT44(uStack_64,uStack_68);\n          plVar4[1] = (long)(plVar1 + 3);\n        }" (else "else") (compound_statement "{\n          *plVar1 = local_78;\n          plVar1[1] = CONCAT44(uStack_6c,uStack_70);\n          plVar1[2] = CONCAT44(uStack_64,uStack_68);\n          plVar4[1] = (long)(plVar1 + 3);\n        }" ({ "{") (expression_statement "*plVar1 = local_78;" (assignment_expression "*plVar1 = local_78" (pointer_expression "*plVar1" (* "*") (identifier "plVar1")) (= "=") (identifier "local_78")) (; ";")) (expression_statement "plVar1[1] = CONCAT44(uStack_6c,uStack_70);" (assignment_expression "plVar1[1] = CONCAT44(uStack_6c,uStack_70)" (subscript_expression "plVar1[1]" (identifier "plVar1") ([ "[") (number_literal "1") (] "]")) (= "=") (call_expression "CONCAT44(uStack_6c,uStack_70)" (identifier "CONCAT44") (argument_list "(uStack_6c,uStack_70)" (( "(") (identifier "uStack_6c") (, ",") (identifier "uStack_70") () ")")))) (; ";")) (expression_statement "plVar1[2] = CONCAT44(uStack_64,uStack_68);" (assignment_expression "plVar1[2] = CONCAT44(uStack_64,uStack_68)" (subscript_expression "plVar1[2]" (identifier "plVar1") ([ "[") (number_literal "2") (] "]")) (= "=") (call_expression "CONCAT44(uStack_64,uStack_68)" (identifier "CONCAT44") (argument_list "(uStack_64,uStack_68)" (( "(") (identifier "uStack_64") (, ",") (identifier "uStack_68") () ")")))) (; ";")) (expression_statement "plVar4[1] = (long)(plVar1 + 3);" (assignment_expression "plVar4[1] = (long)(plVar1 + 3)" (subscript_expression "plVar4[1]" (identifier "plVar4") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(long)(plVar1 + 3)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(plVar1 + 3)" (( "(") (binary_expression "plVar1 + 3" (identifier "plVar1") (+ "+") (number_literal "3")) () ")")))) (; ";")) (} "}")))) (} "}"))) (expression_statement "param_2 = param_2 + local_80;" (assignment_expression "param_2 = param_2 + local_80" (identifier "param_2") (= "=") (binary_expression "param_2 + local_80" (identifier "param_2") (+ "+") (identifier "local_80"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_3b._1_1_ == '\0')" (( "(") (binary_expression "local_3b._1_1_ == '\0'" (field_expression "local_3b._1_1_" (identifier "local_3b") (. ".") (field_identifier "_1_1_")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* DWARF original prototype: uchar * read_lines(Sized_dwarf_line_info<32,_true> * this, uchar *
   lineptr, uint shndx) */

type_4 * __thiscall
gold::Sized_dwarf_line_info<32,var_6>::read_lines
          (Sized_dwarf_line_info<32,var_6> *this,type_4 *var_1,uint var_4)

{
  type_1 __position;
  type_2 *var_9;
  bool bVar2;
  type_3 *this_00;
  type_4 *var_2;
  size_t var_11;
  type_2 entry;
  type_5 lsm;
  
  var_2 = this->buffer_ + 4;
  if ((this->header_).offset_size == 8) {
    var_2 = this->buffer_ + 0xc;
  }
  while (var_1 < var_2 + (this->header_).total_length) {
    lsm.is_stmt = (this->header_).default_is_stmt;
    lsm.file_num = 1;
    lsm.address = 0;
    lsm.line_num = 1;
    lsm.column_num = 0;
    lsm.var_4 = 0xffffffff;
    lsm.basic_block = false;
    lsm.end_sequence = false;
    do {
      bVar2 = var_3(this,var_1,&lsm,&var_11);
      if ((bVar2) && (((var_4 == 0xffffffff || (lsm.var_4 == var_4)) || (lsm.var_4 == 0xffffffff))))
      {
        entry.offset = lsm.address;
        entry.header_num = this->current_header_index_;
        entry._20_4_ = 0;
        entry._12_4_ = lsm.file_num & 0x7fffffffU | 0x80000000;
        entry.line_num = lsm.line_num;
        this_00 = std::__detail::
                  _Map_base<unsigned_int,_std::pair<unsigned_int_const,_std::vector<gold::type_2,_std::allocator<gold::type_2>var_7>var_7>,_std::allocator<std::pair<unsigned_int_const,_std::vector<gold::type_2,_std::allocator<gold::type_2>var_7>var_7>var_7>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::var_5<false,_false,var_6>,var_6>
                  ::operator[var_8]((_Map_base<unsigned_int,_std::pair<unsigned_int_const,_std::vector<gold::type_2,_std::allocator<gold::type_2>var_7>var_7>,_std::allocator<std::pair<unsigned_int_const,_std::vector<gold::type_2,_std::allocator<gold::type_2>var_7>var_7>var_7>,_std::__detail::_Select1st,_std::equal_to<unsigned_int>,_std::hash<unsigned_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::var_5<false,_false,var_6>,var_6>
                                *var_8)&this->line_number_map_,&lsm.var_4);
        __position._M_current =
             (this_00->
             super__Vector_base<gold::type_2,_std::allocator<gold::type_2>var_7>var_8
             )._M_impl._M_finish;
        if ((((__position._M_current ==
               (this_00->
               super__Vector_base<gold::type_2,_std::allocator<gold::type_2>var_7>var_8
               )._M_impl._M_start) || (__position._M_current[-1].offset != lsm.address)) ||
            (lsm.line_num == -1)) || (__position._M_current[-1].line_num == -1)) {
          var_9 = (this_00->
                   super__Vector_base<gold::type_2,_std::allocator<gold::type_2>var_7>var_8
                   )._M_impl._M_end_of_storage;
        }
        else {
          __position._M_current[-1].field_0xf = __position._M_current[-1].field_0xf & 0x7f;
          var_9 = (this_00->
                   super__Vector_base<gold::type_2,_std::allocator<gold::type_2>var_7>var_8
                   )._M_impl._M_end_of_storage;
        }
        if (__position._M_current == var_9) {
          std::vector<gold::type_2,_std::allocator<gold::type_2>var_7>::
          _M_realloc_insert<const_gold::type_2&>(this_00,__position,&entry);
        }
        else {
          (__position._M_current)->offset = entry.offset;
          *(type_6 *)&(__position._M_current)->header_num = var_10(entry._12_4_,entry.header_num);
          *(type_6 *)&(__position._M_current)->line_num = var_10(entry._20_4_,entry.line_num);
          (this_00->
          super__Vector_base<gold::type_2,_std::allocator<gold::type_2>var_7>var_8
          )._M_impl._M_finish = __position._M_current + 1;
        }
      }
      var_1 = var_1 + var_11;
    } while (lsm.end_sequence == false);
  }
  return var_2 + (this->header_).total_length;
}


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

void MASKED(long param_1,ulong param_2,int param_3)

{
  long *plVar1;
  long *plVar2;
  char cVar3;
  long *plVar4;
  long local_98;
  long local_80;
  long local_78;
  undefined4 uStack_70;
  uint uStack_6c;
  undefined4 uStack_68;
  undefined4 uStack_64;
  uint local_58 [2];
  long local_50;
  undefined8 local_48;
  int local_40;
  undefined1 local_3c;
  undefined2 local_3b;
  
  local_98 = *(long *)(param_1 + 0x60) + 4;
  if (*(int *)(param_1 + 0x58) == 8) {
    local_98 = *(long *)(param_1 + 0x60) + 0xc;
  }
  while (param_2 < (ulong)(local_98 + *(long *)(param_1 + 0x10))) {
    local_3c = *(undefined1 *)(param_1 + 0x30);
    local_58[0] = 1;
    local_50 = 0;
    local_48 = 1;
    local_40 = -1;
    local_3b = 0;
    do {
      cVar3 = FUN_003086c0(param_1,param_2,local_58,&local_80);
      if ((cVar3 != '\0') && (((param_3 == -1 || (local_40 == param_3)) || (local_40 == -1)))) {
        local_78 = local_50;
        uStack_70 = *(undefined4 *)(param_1 + 200);
        uStack_64 = 0;
        uStack_6c = local_58[0] & 0x7fffffff | 0x80000000;
        uStack_68 = (int)local_48;
        plVar4 = (long *)FUN_0030a080(param_1 + 0x100,&local_40);
        plVar1 = (long *)plVar4[1];
        if ((((plVar1 == (long *)*plVar4) || (plVar1[-3] != local_50)) || ((int)local_48 == -1)) ||
           ((int)plVar1[-1] == -1)) {
          plVar2 = (long *)plVar4[2];
        }
        else {
          *(byte *)((long)plVar1 + -9) = *(byte *)((long)plVar1 + -9) & 0x7f;
          plVar2 = (long *)plVar4[2];
        }
        if (plVar1 == plVar2) {
          FUN_003064a0(plVar4,plVar1,&local_78);
        }
        else {
          *plVar1 = local_78;
          plVar1[1] = CONCAT44(uStack_6c,uStack_70);
          plVar1[2] = CONCAT44(uStack_64,uStack_68);
          plVar4[1] = (long)(plVar1 + 3);
        }
      }
      param_2 = param_2 + local_80;
    } while (local_3b._1_1_ == '\0');
  }
  return;
}

