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

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

{
  Offset_to_lineno_entry *pOVar1;
  iterator __position;
  bool bVar2;
  mapped_type *this_00;
  uchar *local_60;
  size_t oplength;
  Offset_to_lineno_entry entry;
  LineStateMachine lsm;
  
  local_60 = this->buffer_ + 4;
  if ((this->header_).offset_size == 8) {
    local_60 = this->buffer_ + 0xc;
  }
  while (lineptr < local_60 + (int)(this->header_).total_length) {
    lsm.is_stmt = (this->header_).default_is_stmt;
    lsm.file_num = 1;
    lsm.address._0_4_ = 0;
    lsm.basic_block = false;
    lsm.end_sequence = false;
    lsm.address._4_4_ = 0;
    lsm.line_num = 1;
    lsm.column_num = 0;
    lsm.shndx = 0xffffffff;
    do {
      bVar2 = process_one_opcode(this,lineptr,&lsm,&oplength);
      if ((bVar2) && (((shndx == 0xffffffff || (lsm.shndx == shndx)) || (lsm.shndx == 0xffffffff))))
      {
        entry.offset._0_4_ = (int)lsm.address;
        entry.header_num = this->current_header_index_;
        entry.offset._4_4_ = lsm.address._4_4_;
        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) ||
             (*(int *)((int)&__position._M_current[-1].offset + 4) != lsm.address._4_4_ ||
              (int)__position._M_current[-1].offset != (int)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 {
          *(int *)&(__position._M_current)->offset = (int)entry.offset;
          *(int *)((int)&(__position._M_current)->offset + 4) = entry.offset._4_4_;
          (__position._M_current)->header_num = entry.header_num;
          *(undefined4 *)&(__position._M_current)->field_0xc = entry._12_4_;
          (__position._M_current)->line_num = 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_60 + (int)(this->header_).total_length;
}



void FUN_00216ad0(int param_1,uint param_2,int param_3)

{
  int *piVar1;
  int *piVar2;
  char cVar3;
  int *piVar4;
  int local_60;
  int local_50;
  int local_4c;
  int local_48;
  int local_44;
  uint local_40;
  int local_3c;
  uint local_38;
  int local_34;
  int local_30;
  int local_2c;
  undefined4 local_28;
  int local_24;
  undefined1 local_20;
  undefined2 local_1f;
  
  local_60 = *(int *)(param_1 + 0x40) + 4;
  if (*(int *)(param_1 + 0x3c) == 8) {
    local_60 = *(int *)(param_1 + 0x40) + 0xc;
  }
  while (param_2 < (uint)(local_60 + *(int *)(param_1 + 8))) {
    local_20 = *(undefined1 *)(param_1 + 0x24);
    local_38 = 1;
    local_34 = 0;
    local_1f = 0;
    local_30 = 0;
    local_2c = 1;
    local_28 = 0;
    local_24 = -1;
    do {
      cVar3 = FUN_00214340(param_1,param_2,&local_38,&local_50);
      if ((cVar3 != '\0') && (((param_3 == -1 || (local_24 == param_3)) || (local_24 == -1)))) {
        local_4c = local_34;
        local_44 = *(int *)(param_1 + 0x74);
        local_48 = local_30;
        local_40 = local_38 & 0x7fffffff | 0x80000000;
        local_3c = local_2c;
        piVar4 = (int *)FUN_002169f0(param_1 + 0x90,&local_24);
        piVar2 = (int *)piVar4[1];
        if ((((piVar2 == (int *)*piVar4) || (piVar2[-4] != local_30 || piVar2[-5] != local_34)) ||
            (local_2c == -1)) || (piVar2[-1] == -1)) {
          piVar1 = (int *)piVar4[2];
        }
        else {
          *(byte *)((int)piVar2 + -5) = *(byte *)((int)piVar2 + -5) & 0x7f;
          piVar1 = (int *)piVar4[2];
        }
        if (piVar2 == piVar1) {
          FUN_002121f0(piVar4,piVar2,&local_4c);
        }
        else {
          *piVar2 = local_4c;
          piVar2[1] = local_48;
          piVar2[2] = local_44;
          piVar2[3] = local_40;
          piVar2[4] = local_3c;
          piVar4[1] = (int)(piVar2 + 5);
        }
      }
      param_2 = param_2 + local_50;
    } while (local_1f._1_1_ == '\0');
  }
  return;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x5c
MOV EDI,dword ptr [ESP + 0x70]
MOV EBP,dword ptr [ESP + 0x74]
MOV EAX,dword ptr [EDI + 0x40]
CMP dword ptr [EDI + 0x3c],0x8
LEA EBX,[EAX + 0x4]
MOV dword ptr [ESP + 0xc],EBX
JNZ 0x00216af6
ADD EAX,0xc
MOV dword ptr [ESP + 0xc],EAX
LEA EAX,[ESP + 0x48]
MOV dword ptr [ESP + 0x8],EAX
NOP
MOV EAX,dword ptr [ESP + 0xc]
ADD EAX,dword ptr [EDI + 0x8]
CMP EAX,EBP
JBE 0x00216c80
MOVZX EAX,byte ptr [EDI + 0x24]
MOV dword ptr [ESP + 0x34],0x1
LEA EBX,[ESP + 0x1c]
LEA ESI,[ESP + 0x34]
MOV dword ptr [ESP + 0x38],0x0
MOV byte ptr [ESP + 0x4c],AL
XOR EAX,EAX
MOV word ptr [ESP + 0x4d],AX
LEA EAX,[EDI + 0x90]
MOV dword ptr [ESP + 0x3c],0x0
MOV dword ptr [ESP + 0x40],0x1
MOV dword ptr [ESP + 0x44],0x0
MOV dword ptr [ESP + 0x48],0xffffffff
MOV dword ptr [ESP + 0x4],EAX
JMP 0x00216b73
ADD EBP,dword ptr [ESP + 0x1c]
CMP byte ptr [ESP + 0x4e],0x0
JNZ 0x00216b00
PUSH EBX
PUSH ESI
PUSH EBP
PUSH EDI
CALL 0x00214340
ADD ESP,0x10
TEST AL,AL
JZ 0x00216b68
CMP dword ptr [ESP + 0x78],-0x1
JZ 0x00216b99
MOV EAX,dword ptr [ESP + 0x48]
CMP EAX,dword ptr [ESP + 0x78]
JZ 0x00216b99
CMP EAX,-0x1
JNZ 0x00216b68
MOV EAX,dword ptr [ESP + 0x38]
MOV dword ptr [ESP + 0x2c],0x0
SUB ESP,0x8
MOV byte ptr [ESP + 0x37],0x80
MOV EDX,dword ptr [ESP + 0x44]
MOV dword ptr [ESP + 0x28],EAX
MOV EAX,dword ptr [EDI + 0x74]
MOV dword ptr [ESP + 0x2c],EDX
MOV EDX,dword ptr [ESP + 0x3c]
MOV dword ptr [ESP + 0x30],EAX
MOV EAX,dword ptr [ESP + 0x34]
AND EDX,0x7fffffff
AND EAX,0x80000000
OR EAX,EDX
MOV dword ptr [ESP + 0x34],EAX
MOV EAX,dword ptr [ESP + 0x48]
MOV dword ptr [ESP + 0x38],EAX
PUSH dword ptr [ESP + 0x10]
PUSH dword ptr [ESP + 0x10]
CALL 0x002169f0
ADD ESP,0x10
MOV EDX,dword ptr [EAX + 0x4]
CMP EDX,dword ptr [EAX]
JZ 0x00216c0e
MOV ECX,dword ptr [EDX + -0x14]
XOR ECX,dword ptr [ESP + 0x38]
MOV dword ptr [ESP],ECX
MOV ECX,dword ptr [EDX + -0x10]
XOR ECX,dword ptr [ESP + 0x3c]
OR ECX,dword ptr [ESP]
JZ 0x00216c48
CMP EDX,dword ptr [EAX + 0x8]
JZ 0x00216c60
MOV ECX,dword ptr [ESP + 0x20]
ADD EDX,0x14
MOV dword ptr [EDX + -0x14],ECX
MOV ECX,dword ptr [ESP + 0x24]
MOV dword ptr [EDX + -0x10],ECX
MOV ECX,dword ptr [ESP + 0x28]
MOV dword ptr [EDX + -0xc],ECX
MOV ECX,dword ptr [ESP + 0x2c]
MOV dword ptr [EDX + -0x8],ECX
MOV ECX,dword ptr [ESP + 0x30]
MOV dword ptr [EDX + -0x4],ECX
MOV dword ptr [EAX + 0x4],EDX
JMP 0x00216b68
CMP dword ptr [ESP + 0x40],-0x1
JZ 0x00216c0e
CMP dword ptr [EDX + -0x4],-0x1
JZ 0x00216c0e
AND byte ptr [EDX + -0x5],0x7f
CMP EDX,dword ptr [EAX + 0x8]
JNZ 0x00216c13
NOP
SUB ESP,0x4
LEA ECX,[ESP + 0x24]
PUSH ECX
PUSH EDX
PUSH EAX
CALL 0x002121f0
ADD ESP,0x10
JMP 0x00216b68
ADD ESP,0x5c
POP EBX
POP ESI
POP EDI
POP EBP
RET
(translation_unit "void FUN_00216ad0(int param_1,uint param_2,int param_3)\n\n{\n  int *piVar1;\n  int *piVar2;\n  char cVar3;\n  int *piVar4;\n  int local_60;\n  int local_50;\n  int local_4c;\n  int local_48;\n  int local_44;\n  uint local_40;\n  int local_3c;\n  uint local_38;\n  int local_34;\n  int local_30;\n  int local_2c;\n  undefined4 local_28;\n  int local_24;\n  undefined1 local_20;\n  undefined2 local_1f;\n  \n  local_60 = *(int *)(param_1 + 0x40) + 4;\n  if (*(int *)(param_1 + 0x3c) == 8) {\n    local_60 = *(int *)(param_1 + 0x40) + 0xc;\n  }\n  while (param_2 < (uint)(local_60 + *(int *)(param_1 + 8))) {\n    local_20 = *(undefined1 *)(param_1 + 0x24);\n    local_38 = 1;\n    local_34 = 0;\n    local_1f = 0;\n    local_30 = 0;\n    local_2c = 1;\n    local_28 = 0;\n    local_24 = -1;\n    do {\n      cVar3 = FUN_00214340(param_1,param_2,&local_38,&local_50);\n      if ((cVar3 != '\0') && (((param_3 == -1 || (local_24 == param_3)) || (local_24 == -1)))) {\n        local_4c = local_34;\n        local_44 = *(int *)(param_1 + 0x74);\n        local_48 = local_30;\n        local_40 = local_38 & 0x7fffffff | 0x80000000;\n        local_3c = local_2c;\n        piVar4 = (int *)FUN_002169f0(param_1 + 0x90,&local_24);\n        piVar2 = (int *)piVar4[1];\n        if ((((piVar2 == (int *)*piVar4) || (piVar2[-4] != local_30 || piVar2[-5] != local_34)) ||\n            (local_2c == -1)) || (piVar2[-1] == -1)) {\n          piVar1 = (int *)piVar4[2];\n        }\n        else {\n          *(byte *)((int)piVar2 + -5) = *(byte *)((int)piVar2 + -5) & 0x7f;\n          piVar1 = (int *)piVar4[2];\n        }\n        if (piVar2 == piVar1) {\n          FUN_002121f0(piVar4,piVar2,&local_4c);\n        }\n        else {\n          *piVar2 = local_4c;\n          piVar2[1] = local_48;\n          piVar2[2] = local_44;\n          piVar2[3] = local_40;\n          piVar2[4] = local_3c;\n          piVar4[1] = (int)(piVar2 + 5);\n        }\n      }\n      param_2 = param_2 + local_50;\n    } while (local_1f._1_1_ == '\0');\n  }\n  return;\n}\n\n" (function_definition "void FUN_00216ad0(int param_1,uint param_2,int param_3)\n\n{\n  int *piVar1;\n  int *piVar2;\n  char cVar3;\n  int *piVar4;\n  int local_60;\n  int local_50;\n  int local_4c;\n  int local_48;\n  int local_44;\n  uint local_40;\n  int local_3c;\n  uint local_38;\n  int local_34;\n  int local_30;\n  int local_2c;\n  undefined4 local_28;\n  int local_24;\n  undefined1 local_20;\n  undefined2 local_1f;\n  \n  local_60 = *(int *)(param_1 + 0x40) + 4;\n  if (*(int *)(param_1 + 0x3c) == 8) {\n    local_60 = *(int *)(param_1 + 0x40) + 0xc;\n  }\n  while (param_2 < (uint)(local_60 + *(int *)(param_1 + 8))) {\n    local_20 = *(undefined1 *)(param_1 + 0x24);\n    local_38 = 1;\n    local_34 = 0;\n    local_1f = 0;\n    local_30 = 0;\n    local_2c = 1;\n    local_28 = 0;\n    local_24 = -1;\n    do {\n      cVar3 = FUN_00214340(param_1,param_2,&local_38,&local_50);\n      if ((cVar3 != '\0') && (((param_3 == -1 || (local_24 == param_3)) || (local_24 == -1)))) {\n        local_4c = local_34;\n        local_44 = *(int *)(param_1 + 0x74);\n        local_48 = local_30;\n        local_40 = local_38 & 0x7fffffff | 0x80000000;\n        local_3c = local_2c;\n        piVar4 = (int *)FUN_002169f0(param_1 + 0x90,&local_24);\n        piVar2 = (int *)piVar4[1];\n        if ((((piVar2 == (int *)*piVar4) || (piVar2[-4] != local_30 || piVar2[-5] != local_34)) ||\n            (local_2c == -1)) || (piVar2[-1] == -1)) {\n          piVar1 = (int *)piVar4[2];\n        }\n        else {\n          *(byte *)((int)piVar2 + -5) = *(byte *)((int)piVar2 + -5) & 0x7f;\n          piVar1 = (int *)piVar4[2];\n        }\n        if (piVar2 == piVar1) {\n          FUN_002121f0(piVar4,piVar2,&local_4c);\n        }\n        else {\n          *piVar2 = local_4c;\n          piVar2[1] = local_48;\n          piVar2[2] = local_44;\n          piVar2[3] = local_40;\n          piVar2[4] = local_3c;\n          piVar4[1] = (int)(piVar2 + 5);\n        }\n      }\n      param_2 = param_2 + local_50;\n    } while (local_1f._1_1_ == '\0');\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00216ad0(int param_1,uint param_2,int param_3)" identifier (parameter_list "(int param_1,uint param_2,int param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  int *piVar1;\n  int *piVar2;\n  char cVar3;\n  int *piVar4;\n  int local_60;\n  int local_50;\n  int local_4c;\n  int local_48;\n  int local_44;\n  uint local_40;\n  int local_3c;\n  uint local_38;\n  int local_34;\n  int local_30;\n  int local_2c;\n  undefined4 local_28;\n  int local_24;\n  undefined1 local_20;\n  undefined2 local_1f;\n  \n  local_60 = *(int *)(param_1 + 0x40) + 4;\n  if (*(int *)(param_1 + 0x3c) == 8) {\n    local_60 = *(int *)(param_1 + 0x40) + 0xc;\n  }\n  while (param_2 < (uint)(local_60 + *(int *)(param_1 + 8))) {\n    local_20 = *(undefined1 *)(param_1 + 0x24);\n    local_38 = 1;\n    local_34 = 0;\n    local_1f = 0;\n    local_30 = 0;\n    local_2c = 1;\n    local_28 = 0;\n    local_24 = -1;\n    do {\n      cVar3 = FUN_00214340(param_1,param_2,&local_38,&local_50);\n      if ((cVar3 != '\0') && (((param_3 == -1 || (local_24 == param_3)) || (local_24 == -1)))) {\n        local_4c = local_34;\n        local_44 = *(int *)(param_1 + 0x74);\n        local_48 = local_30;\n        local_40 = local_38 & 0x7fffffff | 0x80000000;\n        local_3c = local_2c;\n        piVar4 = (int *)FUN_002169f0(param_1 + 0x90,&local_24);\n        piVar2 = (int *)piVar4[1];\n        if ((((piVar2 == (int *)*piVar4) || (piVar2[-4] != local_30 || piVar2[-5] != local_34)) ||\n            (local_2c == -1)) || (piVar2[-1] == -1)) {\n          piVar1 = (int *)piVar4[2];\n        }\n        else {\n          *(byte *)((int)piVar2 + -5) = *(byte *)((int)piVar2 + -5) & 0x7f;\n          piVar1 = (int *)piVar4[2];\n        }\n        if (piVar2 == piVar1) {\n          FUN_002121f0(piVar4,piVar2,&local_4c);\n        }\n        else {\n          *piVar2 = local_4c;\n          piVar2[1] = local_48;\n          piVar2[2] = local_44;\n          piVar2[3] = local_40;\n          piVar2[4] = local_3c;\n          piVar4[1] = (int)(piVar2 + 5);\n        }\n      }\n      param_2 = param_2 + local_50;\n    } while (local_1f._1_1_ == '\0');\n  }\n  return;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "char cVar3;" primitive_type identifier ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "int local_60;" primitive_type identifier ;) (declaration "int local_50;" primitive_type identifier ;) (declaration "int local_4c;" primitive_type identifier ;) (declaration "int local_48;" primitive_type identifier ;) (declaration "int local_44;" primitive_type identifier ;) (declaration "uint local_40;" type_identifier identifier ;) (declaration "int local_3c;" primitive_type identifier ;) (declaration "uint local_38;" type_identifier identifier ;) (declaration "int local_34;" primitive_type identifier ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (declaration "int local_24;" primitive_type identifier ;) (declaration "undefined1 local_20;" type_identifier identifier ;) (declaration "undefined2 local_1f;" type_identifier identifier ;) (expression_statement "local_60 = *(int *)(param_1 + 0x40) + 4;" (assignment_expression "local_60 = *(int *)(param_1 + 0x40) + 4" identifier = (binary_expression "*(int *)(param_1 + 0x40) + 4" (pointer_expression "*(int *)(param_1 + 0x40)" * (cast_expression "(int *)(param_1 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) + number_literal)) ;) (if_statement "if (*(int *)(param_1 + 0x3c) == 8) {\n    local_60 = *(int *)(param_1 + 0x40) + 0xc;\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0x3c) == 8)" ( (binary_expression "*(int *)(param_1 + 0x3c) == 8" (pointer_expression "*(int *)(param_1 + 0x3c)" * (cast_expression "(int *)(param_1 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    local_60 = *(int *)(param_1 + 0x40) + 0xc;\n  }" { (expression_statement "local_60 = *(int *)(param_1 + 0x40) + 0xc;" (assignment_expression "local_60 = *(int *)(param_1 + 0x40) + 0xc" identifier = (binary_expression "*(int *)(param_1 + 0x40) + 0xc" (pointer_expression "*(int *)(param_1 + 0x40)" * (cast_expression "(int *)(param_1 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) + number_literal)) ;) })) (while_statement "while (param_2 < (uint)(local_60 + *(int *)(param_1 + 8))) {\n    local_20 = *(undefined1 *)(param_1 + 0x24);\n    local_38 = 1;\n    local_34 = 0;\n    local_1f = 0;\n    local_30 = 0;\n    local_2c = 1;\n    local_28 = 0;\n    local_24 = -1;\n    do {\n      cVar3 = FUN_00214340(param_1,param_2,&local_38,&local_50);\n      if ((cVar3 != '\0') && (((param_3 == -1 || (local_24 == param_3)) || (local_24 == -1)))) {\n        local_4c = local_34;\n        local_44 = *(int *)(param_1 + 0x74);\n        local_48 = local_30;\n        local_40 = local_38 & 0x7fffffff | 0x80000000;\n        local_3c = local_2c;\n        piVar4 = (int *)FUN_002169f0(param_1 + 0x90,&local_24);\n        piVar2 = (int *)piVar4[1];\n        if ((((piVar2 == (int *)*piVar4) || (piVar2[-4] != local_30 || piVar2[-5] != local_34)) ||\n            (local_2c == -1)) || (piVar2[-1] == -1)) {\n          piVar1 = (int *)piVar4[2];\n        }\n        else {\n          *(byte *)((int)piVar2 + -5) = *(byte *)((int)piVar2 + -5) & 0x7f;\n          piVar1 = (int *)piVar4[2];\n        }\n        if (piVar2 == piVar1) {\n          FUN_002121f0(piVar4,piVar2,&local_4c);\n        }\n        else {\n          *piVar2 = local_4c;\n          piVar2[1] = local_48;\n          piVar2[2] = local_44;\n          piVar2[3] = local_40;\n          piVar2[4] = local_3c;\n          piVar4[1] = (int)(piVar2 + 5);\n        }\n      }\n      param_2 = param_2 + local_50;\n    } while (local_1f._1_1_ == '\0');\n  }" while (parenthesized_expression "(param_2 < (uint)(local_60 + *(int *)(param_1 + 8)))" ( (binary_expression "param_2 < (uint)(local_60 + *(int *)(param_1 + 8))" identifier < (call_expression "(uint)(local_60 + *(int *)(param_1 + 8))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_60 + *(int *)(param_1 + 8))" ( (binary_expression "local_60 + *(int *)(param_1 + 8)" identifier + (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) )))) )) (compound_statement "{\n    local_20 = *(undefined1 *)(param_1 + 0x24);\n    local_38 = 1;\n    local_34 = 0;\n    local_1f = 0;\n    local_30 = 0;\n    local_2c = 1;\n    local_28 = 0;\n    local_24 = -1;\n    do {\n      cVar3 = FUN_00214340(param_1,param_2,&local_38,&local_50);\n      if ((cVar3 != '\0') && (((param_3 == -1 || (local_24 == param_3)) || (local_24 == -1)))) {\n        local_4c = local_34;\n        local_44 = *(int *)(param_1 + 0x74);\n        local_48 = local_30;\n        local_40 = local_38 & 0x7fffffff | 0x80000000;\n        local_3c = local_2c;\n        piVar4 = (int *)FUN_002169f0(param_1 + 0x90,&local_24);\n        piVar2 = (int *)piVar4[1];\n        if ((((piVar2 == (int *)*piVar4) || (piVar2[-4] != local_30 || piVar2[-5] != local_34)) ||\n            (local_2c == -1)) || (piVar2[-1] == -1)) {\n          piVar1 = (int *)piVar4[2];\n        }\n        else {\n          *(byte *)((int)piVar2 + -5) = *(byte *)((int)piVar2 + -5) & 0x7f;\n          piVar1 = (int *)piVar4[2];\n        }\n        if (piVar2 == piVar1) {\n          FUN_002121f0(piVar4,piVar2,&local_4c);\n        }\n        else {\n          *piVar2 = local_4c;\n          piVar2[1] = local_48;\n          piVar2[2] = local_44;\n          piVar2[3] = local_40;\n          piVar2[4] = local_3c;\n          piVar4[1] = (int)(piVar2 + 5);\n        }\n      }\n      param_2 = param_2 + local_50;\n    } while (local_1f._1_1_ == '\0');\n  }" { (expression_statement "local_20 = *(undefined1 *)(param_1 + 0x24);" (assignment_expression "local_20 = *(undefined1 *)(param_1 + 0x24)" identifier = (pointer_expression "*(undefined1 *)(param_1 + 0x24)" * (cast_expression "(undefined1 *)(param_1 + 0x24)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x24)" ( (binary_expression "param_1 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "local_38 = 1;" (assignment_expression "local_38 = 1" identifier = number_literal) ;) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" identifier = number_literal) ;) (expression_statement "local_1f = 0;" (assignment_expression "local_1f = 0" identifier = number_literal) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "local_2c = 1;" (assignment_expression "local_2c = 1" identifier = number_literal) ;) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" identifier = number_literal) ;) (expression_statement "local_24 = -1;" (assignment_expression "local_24 = -1" identifier = number_literal) ;) (do_statement "do {\n      cVar3 = FUN_00214340(param_1,param_2,&local_38,&local_50);\n      if ((cVar3 != '\0') && (((param_3 == -1 || (local_24 == param_3)) || (local_24 == -1)))) {\n        local_4c = local_34;\n        local_44 = *(int *)(param_1 + 0x74);\n        local_48 = local_30;\n        local_40 = local_38 & 0x7fffffff | 0x80000000;\n        local_3c = local_2c;\n        piVar4 = (int *)FUN_002169f0(param_1 + 0x90,&local_24);\n        piVar2 = (int *)piVar4[1];\n        if ((((piVar2 == (int *)*piVar4) || (piVar2[-4] != local_30 || piVar2[-5] != local_34)) ||\n            (local_2c == -1)) || (piVar2[-1] == -1)) {\n          piVar1 = (int *)piVar4[2];\n        }\n        else {\n          *(byte *)((int)piVar2 + -5) = *(byte *)((int)piVar2 + -5) & 0x7f;\n          piVar1 = (int *)piVar4[2];\n        }\n        if (piVar2 == piVar1) {\n          FUN_002121f0(piVar4,piVar2,&local_4c);\n        }\n        else {\n          *piVar2 = local_4c;\n          piVar2[1] = local_48;\n          piVar2[2] = local_44;\n          piVar2[3] = local_40;\n          piVar2[4] = local_3c;\n          piVar4[1] = (int)(piVar2 + 5);\n        }\n      }\n      param_2 = param_2 + local_50;\n    } while (local_1f._1_1_ == '\0');" do (compound_statement "{\n      cVar3 = FUN_00214340(param_1,param_2,&local_38,&local_50);\n      if ((cVar3 != '\0') && (((param_3 == -1 || (local_24 == param_3)) || (local_24 == -1)))) {\n        local_4c = local_34;\n        local_44 = *(int *)(param_1 + 0x74);\n        local_48 = local_30;\n        local_40 = local_38 & 0x7fffffff | 0x80000000;\n        local_3c = local_2c;\n        piVar4 = (int *)FUN_002169f0(param_1 + 0x90,&local_24);\n        piVar2 = (int *)piVar4[1];\n        if ((((piVar2 == (int *)*piVar4) || (piVar2[-4] != local_30 || piVar2[-5] != local_34)) ||\n            (local_2c == -1)) || (piVar2[-1] == -1)) {\n          piVar1 = (int *)piVar4[2];\n        }\n        else {\n          *(byte *)((int)piVar2 + -5) = *(byte *)((int)piVar2 + -5) & 0x7f;\n          piVar1 = (int *)piVar4[2];\n        }\n        if (piVar2 == piVar1) {\n          FUN_002121f0(piVar4,piVar2,&local_4c);\n        }\n        else {\n          *piVar2 = local_4c;\n          piVar2[1] = local_48;\n          piVar2[2] = local_44;\n          piVar2[3] = local_40;\n          piVar2[4] = local_3c;\n          piVar4[1] = (int)(piVar2 + 5);\n        }\n      }\n      param_2 = param_2 + local_50;\n    }" { (expression_statement "cVar3 = FUN_00214340(param_1,param_2,&local_38,&local_50);" (assignment_expression "cVar3 = FUN_00214340(param_1,param_2,&local_38,&local_50)" identifier = (call_expression "FUN_00214340(param_1,param_2,&local_38,&local_50)" identifier (argument_list "(param_1,param_2,&local_38,&local_50)" ( identifier , identifier , (pointer_expression "&local_38" & identifier) , (pointer_expression "&local_50" & identifier) )))) ;) (if_statement "if ((cVar3 != '\0') && (((param_3 == -1 || (local_24 == param_3)) || (local_24 == -1)))) {\n        local_4c = local_34;\n        local_44 = *(int *)(param_1 + 0x74);\n        local_48 = local_30;\n        local_40 = local_38 & 0x7fffffff | 0x80000000;\n        local_3c = local_2c;\n        piVar4 = (int *)FUN_002169f0(param_1 + 0x90,&local_24);\n        piVar2 = (int *)piVar4[1];\n        if ((((piVar2 == (int *)*piVar4) || (piVar2[-4] != local_30 || piVar2[-5] != local_34)) ||\n            (local_2c == -1)) || (piVar2[-1] == -1)) {\n          piVar1 = (int *)piVar4[2];\n        }\n        else {\n          *(byte *)((int)piVar2 + -5) = *(byte *)((int)piVar2 + -5) & 0x7f;\n          piVar1 = (int *)piVar4[2];\n        }\n        if (piVar2 == piVar1) {\n          FUN_002121f0(piVar4,piVar2,&local_4c);\n        }\n        else {\n          *piVar2 = local_4c;\n          piVar2[1] = local_48;\n          piVar2[2] = local_44;\n          piVar2[3] = local_40;\n          piVar2[4] = local_3c;\n          piVar4[1] = (int)(piVar2 + 5);\n        }\n      }" if (parenthesized_expression "((cVar3 != '\0') && (((param_3 == -1 || (local_24 == param_3)) || (local_24 == -1))))" ( (binary_expression "(cVar3 != '\0') && (((param_3 == -1 || (local_24 == param_3)) || (local_24 == -1)))" (parenthesized_expression "(cVar3 != '\0')" ( (binary_expression "cVar3 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(((param_3 == -1 || (local_24 == param_3)) || (local_24 == -1)))" ( (parenthesized_expression "((param_3 == -1 || (local_24 == param_3)) || (local_24 == -1))" ( (binary_expression "(param_3 == -1 || (local_24 == param_3)) || (local_24 == -1)" (parenthesized_expression "(param_3 == -1 || (local_24 == param_3))" ( (binary_expression "param_3 == -1 || (local_24 == param_3)" (binary_expression "param_3 == -1" identifier == number_literal) || (parenthesized_expression "(local_24 == param_3)" ( (binary_expression "local_24 == param_3" identifier == identifier) ))) )) || (parenthesized_expression "(local_24 == -1)" ( (binary_expression "local_24 == -1" identifier == number_literal) ))) )) ))) )) (compound_statement "{\n        local_4c = local_34;\n        local_44 = *(int *)(param_1 + 0x74);\n        local_48 = local_30;\n        local_40 = local_38 & 0x7fffffff | 0x80000000;\n        local_3c = local_2c;\n        piVar4 = (int *)FUN_002169f0(param_1 + 0x90,&local_24);\n        piVar2 = (int *)piVar4[1];\n        if ((((piVar2 == (int *)*piVar4) || (piVar2[-4] != local_30 || piVar2[-5] != local_34)) ||\n            (local_2c == -1)) || (piVar2[-1] == -1)) {\n          piVar1 = (int *)piVar4[2];\n        }\n        else {\n          *(byte *)((int)piVar2 + -5) = *(byte *)((int)piVar2 + -5) & 0x7f;\n          piVar1 = (int *)piVar4[2];\n        }\n        if (piVar2 == piVar1) {\n          FUN_002121f0(piVar4,piVar2,&local_4c);\n        }\n        else {\n          *piVar2 = local_4c;\n          piVar2[1] = local_48;\n          piVar2[2] = local_44;\n          piVar2[3] = local_40;\n          piVar2[4] = local_3c;\n          piVar4[1] = (int)(piVar2 + 5);\n        }\n      }" { (expression_statement "local_4c = local_34;" (assignment_expression "local_4c = local_34" identifier = identifier) ;) (expression_statement "local_44 = *(int *)(param_1 + 0x74);" (assignment_expression "local_44 = *(int *)(param_1 + 0x74)" identifier = (pointer_expression "*(int *)(param_1 + 0x74)" * (cast_expression "(int *)(param_1 + 0x74)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x74)" ( (binary_expression "param_1 + 0x74" identifier + number_literal) ))))) ;) (expression_statement "local_48 = local_30;" (assignment_expression "local_48 = local_30" identifier = identifier) ;) (expression_statement "local_40 = local_38 & 0x7fffffff | 0x80000000;" (assignment_expression "local_40 = local_38 & 0x7fffffff | 0x80000000" identifier = (binary_expression "local_38 & 0x7fffffff | 0x80000000" (binary_expression "local_38 & 0x7fffffff" identifier & number_literal) | number_literal)) ;) (expression_statement "local_3c = local_2c;" (assignment_expression "local_3c = local_2c" identifier = identifier) ;) (expression_statement "piVar4 = (int *)FUN_002169f0(param_1 + 0x90,&local_24);" (assignment_expression "piVar4 = (int *)FUN_002169f0(param_1 + 0x90,&local_24)" identifier = (cast_expression "(int *)FUN_002169f0(param_1 + 0x90,&local_24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002169f0(param_1 + 0x90,&local_24)" identifier (argument_list "(param_1 + 0x90,&local_24)" ( (binary_expression "param_1 + 0x90" identifier + number_literal) , (pointer_expression "&local_24" & identifier) ))))) ;) (expression_statement "piVar2 = (int *)piVar4[1];" (assignment_expression "piVar2 = (int *)piVar4[1]" identifier = (cast_expression "(int *)piVar4[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar4[1]" identifier [ number_literal ]))) ;) (if_statement "if ((((piVar2 == (int *)*piVar4) || (piVar2[-4] != local_30 || piVar2[-5] != local_34)) ||\n            (local_2c == -1)) || (piVar2[-1] == -1)) {\n          piVar1 = (int *)piVar4[2];\n        }\n        else {\n          *(byte *)((int)piVar2 + -5) = *(byte *)((int)piVar2 + -5) & 0x7f;\n          piVar1 = (int *)piVar4[2];\n        }" if (parenthesized_expression "((((piVar2 == (int *)*piVar4) || (piVar2[-4] != local_30 || piVar2[-5] != local_34)) ||\n            (local_2c == -1)) || (piVar2[-1] == -1))" ( (binary_expression "(((piVar2 == (int *)*piVar4) || (piVar2[-4] != local_30 || piVar2[-5] != local_34)) ||\n            (local_2c == -1)) || (piVar2[-1] == -1)" (parenthesized_expression "(((piVar2 == (int *)*piVar4) || (piVar2[-4] != local_30 || piVar2[-5] != local_34)) ||\n            (local_2c == -1))" ( (binary_expression "((piVar2 == (int *)*piVar4) || (piVar2[-4] != local_30 || piVar2[-5] != local_34)) ||\n            (local_2c == -1)" (parenthesized_expression "((piVar2 == (int *)*piVar4) || (piVar2[-4] != local_30 || piVar2[-5] != local_34))" ( (binary_expression "(piVar2 == (int *)*piVar4) || (piVar2[-4] != local_30 || piVar2[-5] != local_34)" (parenthesized_expression "(piVar2 == (int *)*piVar4)" ( (binary_expression "piVar2 == (int *)*piVar4" identifier == (cast_expression "(int *)*piVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar4" * identifier))) )) || (parenthesized_expression "(piVar2[-4] != local_30 || piVar2[-5] != local_34)" ( (binary_expression "piVar2[-4] != local_30 || piVar2[-5] != local_34" (binary_expression "piVar2[-4] != local_30" (subscript_expression "piVar2[-4]" identifier [ number_literal ]) != identifier) || (binary_expression "piVar2[-5] != local_34" (subscript_expression "piVar2[-5]" identifier [ number_literal ]) != identifier)) ))) )) || (parenthesized_expression "(local_2c == -1)" ( (binary_expression "local_2c == -1" identifier == number_literal) ))) )) || (parenthesized_expression "(piVar2[-1] == -1)" ( (binary_expression "piVar2[-1] == -1" (subscript_expression "piVar2[-1]" identifier [ number_literal ]) == number_literal) ))) )) (compound_statement "{\n          piVar1 = (int *)piVar4[2];\n        }" { (expression_statement "piVar1 = (int *)piVar4[2];" (assignment_expression "piVar1 = (int *)piVar4[2]" identifier = (cast_expression "(int *)piVar4[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar4[2]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n          *(byte *)((int)piVar2 + -5) = *(byte *)((int)piVar2 + -5) & 0x7f;\n          piVar1 = (int *)piVar4[2];\n        }" else (compound_statement "{\n          *(byte *)((int)piVar2 + -5) = *(byte *)((int)piVar2 + -5) & 0x7f;\n          piVar1 = (int *)piVar4[2];\n        }" { (expression_statement "*(byte *)((int)piVar2 + -5) = *(byte *)((int)piVar2 + -5) & 0x7f;" (assignment_expression "*(byte *)((int)piVar2 + -5) = *(byte *)((int)piVar2 + -5) & 0x7f" (pointer_expression "*(byte *)((int)piVar2 + -5)" * (cast_expression "(byte *)((int)piVar2 + -5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar2 + -5)" ( (binary_expression "(int)piVar2 + -5" (cast_expression "(int)piVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(byte *)((int)piVar2 + -5) & 0x7f" (pointer_expression "*(byte *)((int)piVar2 + -5)" * (cast_expression "(byte *)((int)piVar2 + -5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar2 + -5)" ( (binary_expression "(int)piVar2 + -5" (cast_expression "(int)piVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal)) ;) (expression_statement "piVar1 = (int *)piVar4[2];" (assignment_expression "piVar1 = (int *)piVar4[2]" identifier = (cast_expression "(int *)piVar4[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar4[2]" identifier [ number_literal ]))) ;) }))) (if_statement "if (piVar2 == piVar1) {\n          FUN_002121f0(piVar4,piVar2,&local_4c);\n        }\n        else {\n          *piVar2 = local_4c;\n          piVar2[1] = local_48;\n          piVar2[2] = local_44;\n          piVar2[3] = local_40;\n          piVar2[4] = local_3c;\n          piVar4[1] = (int)(piVar2 + 5);\n        }" if (parenthesized_expression "(piVar2 == piVar1)" ( (binary_expression "piVar2 == piVar1" identifier == identifier) )) (compound_statement "{\n          FUN_002121f0(piVar4,piVar2,&local_4c);\n        }" { (expression_statement "FUN_002121f0(piVar4,piVar2,&local_4c);" (call_expression "FUN_002121f0(piVar4,piVar2,&local_4c)" identifier (argument_list "(piVar4,piVar2,&local_4c)" ( identifier , identifier , (pointer_expression "&local_4c" & identifier) ))) ;) }) (else_clause "else {\n          *piVar2 = local_4c;\n          piVar2[1] = local_48;\n          piVar2[2] = local_44;\n          piVar2[3] = local_40;\n          piVar2[4] = local_3c;\n          piVar4[1] = (int)(piVar2 + 5);\n        }" else (compound_statement "{\n          *piVar2 = local_4c;\n          piVar2[1] = local_48;\n          piVar2[2] = local_44;\n          piVar2[3] = local_40;\n          piVar2[4] = local_3c;\n          piVar4[1] = (int)(piVar2 + 5);\n        }" { (expression_statement "*piVar2 = local_4c;" (assignment_expression "*piVar2 = local_4c" (pointer_expression "*piVar2" * identifier) = identifier) ;) (expression_statement "piVar2[1] = local_48;" (assignment_expression "piVar2[1] = local_48" (subscript_expression "piVar2[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar2[2] = local_44;" (assignment_expression "piVar2[2] = local_44" (subscript_expression "piVar2[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar2[3] = local_40;" (assignment_expression "piVar2[3] = local_40" (subscript_expression "piVar2[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar2[4] = local_3c;" (assignment_expression "piVar2[4] = local_3c" (subscript_expression "piVar2[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar4[1] = (int)(piVar2 + 5);" (assignment_expression "piVar4[1] = (int)(piVar2 + 5)" (subscript_expression "piVar4[1]" identifier [ number_literal ]) = (cast_expression "(int)(piVar2 + 5)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(piVar2 + 5)" ( (binary_expression "piVar2 + 5" identifier + number_literal) )))) ;) }))) })) (expression_statement "param_2 = param_2 + local_50;" (assignment_expression "param_2 = param_2 + local_50" identifier = (binary_expression "param_2 + local_50" identifier + identifier)) ;) }) while (parenthesized_expression "(local_1f._1_1_ == '\0')" ( (binary_expression "local_1f._1_1_ == '\0'" (field_expression "local_1f._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,_false> * this, uchar *\n   lineptr, uint shndx) */\n\nuchar * __thiscall\ngold::Sized_dwarf_line_info<32,_false>::read_lines\n          (Sized_dwarf_line_info<32,_false> *this,uchar *lineptr,uint shndx)\n\n{\n  Offset_to_lineno_entry *pOVar1;\n  iterator __position;\n  bool bVar2;\n  mapped_type *this_00;\n  uchar *local_60;\n  size_t oplength;\n  Offset_to_lineno_entry entry;\n  LineStateMachine lsm;\n  \n  local_60 = this->buffer_ + 4;\n  if ((this->header_).offset_size == 8) {\n    local_60 = this->buffer_ + 0xc;\n  }\n  while (lineptr < local_60 + (int)(this->header_).total_length) {\n    lsm.is_stmt = (this->header_).default_is_stmt;\n    lsm.file_num = 1;\n    lsm.address._0_4_ = 0;\n    lsm.basic_block = false;\n    lsm.end_sequence = false;\n    lsm.address._4_4_ = 0;\n    lsm.line_num = 1;\n    lsm.column_num = 0;\n    lsm.shndx = 0xffffffff;\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._0_4_ = (int)lsm.address;\n        entry.header_num = this->current_header_index_;\n        entry.offset._4_4_ = lsm.address._4_4_;\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) ||\n             (*(int *)((int)&__position._M_current[-1].offset + 4) != lsm.address._4_4_ ||\n              (int)__position._M_current[-1].offset != (int)lsm.address)) || (lsm.line_num == -1))\n           || (__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          *(int *)&(__position._M_current)->offset = (int)entry.offset;\n          *(int *)((int)&(__position._M_current)->offset + 4) = entry.offset._4_4_;\n          (__position._M_current)->header_num = entry.header_num;\n          *(undefined4 *)&(__position._M_current)->field_0xc = entry._12_4_;\n          (__position._M_current)->line_num = 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_60 + (int)(this->header_).total_length;\n}\n\n" comment (expression_statement "uchar * __thiscall\ngold::Sized_dwarf_line_info<32,_false>::read_lines\n          (Sized_dwarf_line_info<32,_false> *this,uchar *lineptr,uint shndx)\n\n{\n  Offset_to_lineno_entry *pOVar1;" (update_expression "uchar * __thiscall\ngold::Sized_dwarf_line_info<32,_false>::read_lines\n          (Sized_dwarf_line_info<32,_false> *this,uchar *lineptr,uint shndx)\n\n{\n  Offset_to_lineno_entry *pOVar1" (binary_expression "uchar * __thiscall\ngold::Sized_dwarf_line_info<32,_false>::read_lines\n          (Sized_dwarf_line_info<32,_false> *this,uchar *lineptr,uint shndx)\n\n{\n  Offset_to_lineno_entry *pOVar1" (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 ",_false" , identifier) > (ERROR "::read_lines\n          (Sized_dwarf_line_info<32,_false> *this,uchar *lineptr,uint shndx)\n\n{" : : (call_expression "read_lines\n          (Sized_dwarf_line_info<32,_false> *this,uchar *lineptr,uint shndx)" identifier (argument_list "(Sized_dwarf_line_info<32,_false> *this,uchar *lineptr,uint shndx)" ( (binary_expression "Sized_dwarf_line_info<32" identifier < number_literal) , (binary_expression "_false> *this" identifier > (pointer_expression "*this" * identifier)) , (binary_expression "uchar *lineptr" identifier * identifier) , (ERROR "uint" identifier) identifier ))) {) (binary_expression "Offset_to_lineno_entry *pOVar1" identifier * identifier)) --) ;) (declaration "iterator __position;" type_identifier identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "mapped_type *this_00;" type_identifier (pointer_declarator "*this_00" * identifier) ;) (declaration "uchar *local_60;" type_identifier (pointer_declarator "*local_60" * 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_60 = this->buffer_ + 4;" (assignment_expression "local_60 = 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_60 = 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_60 = this->buffer_ + 0xc;\n  }" { (expression_statement "local_60 = this->buffer_ + 0xc;" (assignment_expression "local_60 = this->buffer_ + 0xc" identifier = (binary_expression "this->buffer_ + 0xc" (field_expression "this->buffer_" identifier -> field_identifier) + number_literal)) ;) })) (while_statement "while (lineptr < local_60 + (int)(this->header_).total_length) {\n    lsm.is_stmt = (this->header_).default_is_stmt;\n    lsm.file_num = 1;\n    lsm.address._0_4_ = 0;\n    lsm.basic_block = false;\n    lsm.end_sequence = false;\n    lsm.address._4_4_ = 0;\n    lsm.line_num = 1;\n    lsm.column_num = 0;\n    lsm.shndx = 0xffffffff;\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._0_4_ = (int)lsm.address;\n        entry.header_num = this->current_header_index_;\n        entry.offset._4_4_ = lsm.address._4_4_;\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) ||\n             (*(int *)((int)&__position._M_current[-1].offset + 4) != lsm.address._4_4_ ||\n              (int)__position._M_current[-1].offset != (int)lsm.address)) || (lsm.line_num == -1))\n           || (__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          *(int *)&(__position._M_current)->offset = (int)entry.offset;\n          *(int *)((int)&(__position._M_current)->offset + 4) = entry.offset._4_4_;\n          (__position._M_current)->header_num = entry.header_num;\n          *(undefined4 *)&(__position._M_current)->field_0xc = entry._12_4_;\n          (__position._M_current)->line_num = 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_60 + (int)(this->header_).total_length)" ( (binary_expression "lineptr < local_60 + (int)(this->header_).total_length" identifier < (binary_expression "local_60 + (int)(this->header_).total_length" identifier + (cast_expression "(int)(this->header_).total_length" ( (type_descriptor "int" primitive_type) ) (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_4_ = 0;\n    lsm.basic_block = false;\n    lsm.end_sequence = false;\n    lsm.address._4_4_ = 0;\n    lsm.line_num = 1;\n    lsm.column_num = 0;\n    lsm.shndx = 0xffffffff;\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._0_4_ = (int)lsm.address;\n        entry.header_num = this->current_header_index_;\n        entry.offset._4_4_ = lsm.address._4_4_;\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) ||\n             (*(int *)((int)&__position._M_current[-1].offset + 4) != lsm.address._4_4_ ||\n              (int)__position._M_current[-1].offset != (int)lsm.address)) || (lsm.line_num == -1))\n           || (__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          *(int *)&(__position._M_current)->offset = (int)entry.offset;\n          *(int *)((int)&(__position._M_current)->offset + 4) = entry.offset._4_4_;\n          (__position._M_current)->header_num = entry.header_num;\n          *(undefined4 *)&(__position._M_current)->field_0xc = entry._12_4_;\n          (__position._M_current)->line_num = 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_4_ = 0;" (assignment_expression "lsm.address._0_4_ = 0" (field_expression "lsm.address._0_4_" (field_expression "lsm.address" identifier . field_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) ;) (expression_statement "lsm.address._4_4_ = 0;" (assignment_expression "lsm.address._4_4_ = 0" (field_expression "lsm.address._4_4_" (field_expression "lsm.address" identifier . field_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) ;) (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._0_4_ = (int)lsm.address;\n        entry.header_num = this->current_header_index_;\n        entry.offset._4_4_ = lsm.address._4_4_;\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) ||\n             (*(int *)((int)&__position._M_current[-1].offset + 4) != lsm.address._4_4_ ||\n              (int)__position._M_current[-1].offset != (int)lsm.address)) || (lsm.line_num == -1))\n           || (__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          *(int *)&(__position._M_current)->offset = (int)entry.offset;\n          *(int *)((int)&(__position._M_current)->offset + 4) = entry.offset._4_4_;\n          (__position._M_current)->header_num = entry.header_num;\n          *(undefined4 *)&(__position._M_current)->field_0xc = entry._12_4_;\n          (__position._M_current)->line_num = 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._0_4_ = (int)lsm.address;\n        entry.header_num = this->current_header_index_;\n        entry.offset._4_4_ = lsm.address._4_4_;\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) ||\n             (*(int *)((int)&__position._M_current[-1].offset + 4) != lsm.address._4_4_ ||\n              (int)__position._M_current[-1].offset != (int)lsm.address)) || (lsm.line_num == -1))\n           || (__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          *(int *)&(__position._M_current)->offset = (int)entry.offset;\n          *(int *)((int)&(__position._M_current)->offset + 4) = entry.offset._4_4_;\n          (__position._M_current)->header_num = entry.header_num;\n          *(undefined4 *)&(__position._M_current)->field_0xc = entry._12_4_;\n          (__position._M_current)->line_num = 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._0_4_ = (int)lsm.address;\n        entry.header_num = this->current_header_index_;\n        entry.offset._4_4_ = lsm.address._4_4_;\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) ||\n             (*(int *)((int)&__position._M_current[-1].offset + 4) != lsm.address._4_4_ ||\n              (int)__position._M_current[-1].offset != (int)lsm.address)) || (lsm.line_num == -1))\n           || (__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          *(int *)&(__position._M_current)->offset = (int)entry.offset;\n          *(int *)((int)&(__position._M_current)->offset + 4) = entry.offset._4_4_;\n          (__position._M_current)->header_num = entry.header_num;\n          *(undefined4 *)&(__position._M_current)->field_0xc = entry._12_4_;\n          (__position._M_current)->line_num = 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._0_4_ = (int)lsm.address;\n        entry.header_num = this->current_header_index_;\n        entry.offset._4_4_ = lsm.address._4_4_;\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) ||\n             (*(int *)((int)&__position._M_current[-1].offset + 4) != lsm.address._4_4_ ||\n              (int)__position._M_current[-1].offset != (int)lsm.address)) || (lsm.line_num == -1))\n           || (__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          *(int *)&(__position._M_current)->offset = (int)entry.offset;\n          *(int *)((int)&(__position._M_current)->offset + 4) = entry.offset._4_4_;\n          (__position._M_current)->header_num = entry.header_num;\n          *(undefined4 *)&(__position._M_current)->field_0xc = entry._12_4_;\n          (__position._M_current)->line_num = 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._0_4_ = (int)lsm.address;" (assignment_expression "entry.offset._0_4_ = (int)lsm.address" (field_expression "entry.offset._0_4_" (field_expression "entry.offset" identifier . field_identifier) . field_identifier) = (cast_expression "(int)lsm.address" ( (type_descriptor "int" primitive_type) ) (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.offset._4_4_ = lsm.address._4_4_;" (assignment_expression "entry.offset._4_4_ = lsm.address._4_4_" (field_expression "entry.offset._4_4_" (field_expression "entry.offset" identifier . field_identifier) . field_identifier) = (field_expression "lsm.address._4_4_" (field_expression "lsm.address" identifier . field_identifier) . field_identifier)) ;) (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) ||\n             (*(int *)((int)&__position._M_current[-1].offset + 4) != lsm.address._4_4_ ||\n              (int)__position._M_current[-1].offset != (int)lsm.address)) || (lsm.line_num == -1))\n           || (__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) ||\n             (*(int *)((int)&__position._M_current[-1].offset + 4) != lsm.address._4_4_ ||\n              (int)__position._M_current[-1].offset != (int)lsm.address)) || (lsm.line_num == -1))\n           || (__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) ||\n             (*(int *)((int)&__position._M_current[-1].offset + 4) != lsm.address._4_4_ ||\n              (int)__position._M_current[-1].offset != (int)lsm.address)) || (lsm.line_num == -1))\n           || (__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) ||\n             (*(int *)((int)&__position._M_current[-1].offset + 4) != lsm.address._4_4_ ||\n              (int)__position._M_current[-1].offset != (int)lsm.address)) || (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) ||\n             (*(int *)((int)&__position._M_current[-1].offset + 4) != lsm.address._4_4_ ||\n              (int)__position._M_current[-1].offset != (int)lsm.address)) || (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) ||\n             (*(int *)((int)&__position._M_current[-1].offset + 4) != lsm.address._4_4_ ||\n              (int)__position._M_current[-1].offset != (int)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) ||\n             (*(int *)((int)&__position._M_current[-1].offset + 4) != lsm.address._4_4_ ||\n              (int)__position._M_current[-1].offset != (int)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 "(*(int *)((int)&__position._M_current[-1].offset + 4) != lsm.address._4_4_ ||\n              (int)__position._M_current[-1].offset != (int)lsm.address)" ( (binary_expression "*(int *)((int)&__position._M_current[-1].offset + 4) != lsm.address._4_4_ ||\n              (int)__position._M_current[-1].offset != (int)lsm.address" (binary_expression "*(int *)((int)&__position._M_current[-1].offset + 4) != lsm.address._4_4_" (pointer_expression "*(int *)((int)&__position._M_current[-1].offset + 4)" * (cast_expression "(int *)((int)&__position._M_current[-1].offset + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&__position._M_current[-1].offset + 4)" ( (binary_expression "(int)&__position._M_current[-1].offset + 4" (cast_expression "(int)&__position._M_current[-1].offset" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&__position._M_current[-1].offset" & (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))) + number_literal) )))) != (field_expression "lsm.address._4_4_" (field_expression "lsm.address" identifier . field_identifier) . field_identifier)) || (binary_expression "(int)__position._M_current[-1].offset != (int)lsm.address" (cast_expression "(int)__position._M_current[-1].offset" ( (type_descriptor "int" primitive_type) ) (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)) != (cast_expression "(int)lsm.address" ( (type_descriptor "int" primitive_type) ) (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          *(int *)&(__position._M_current)->offset = (int)entry.offset;\n          *(int *)((int)&(__position._M_current)->offset + 4) = entry.offset._4_4_;\n          (__position._M_current)->header_num = entry.header_num;\n          *(undefined4 *)&(__position._M_current)->field_0xc = entry._12_4_;\n          (__position._M_current)->line_num = 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          *(int *)&(__position._M_current)->offset = (int)entry.offset;\n          *(int *)((int)&(__position._M_current)->offset + 4) = entry.offset._4_4_;\n          (__position._M_current)->header_num = entry.header_num;\n          *(undefined4 *)&(__position._M_current)->field_0xc = entry._12_4_;\n          (__position._M_current)->line_num = 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          *(int *)&(__position._M_current)->offset = (int)entry.offset;\n          *(int *)((int)&(__position._M_current)->offset + 4) = entry.offset._4_4_;\n          (__position._M_current)->header_num = entry.header_num;\n          *(undefined4 *)&(__position._M_current)->field_0xc = entry._12_4_;\n          (__position._M_current)->line_num = 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 "*(int *)&(__position._M_current)->offset = (int)entry.offset;" (assignment_expression "*(int *)&(__position._M_current)->offset = (int)entry.offset" (pointer_expression "*(int *)&(__position._M_current)->offset" * (cast_expression "(int *)&(__position._M_current)->offset" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(__position._M_current)->offset" & (field_expression "(__position._M_current)->offset" (parenthesized_expression "(__position._M_current)" ( (field_expression "__position._M_current" identifier . field_identifier) )) -> field_identifier)))) = (cast_expression "(int)entry.offset" ( (type_descriptor "int" primitive_type) ) (field_expression "entry.offset" identifier . field_identifier))) ;) (expression_statement "*(int *)((int)&(__position._M_current)->offset + 4) = entry.offset._4_4_;" (assignment_expression "*(int *)((int)&(__position._M_current)->offset + 4) = entry.offset._4_4_" (pointer_expression "*(int *)((int)&(__position._M_current)->offset + 4)" * (cast_expression "(int *)((int)&(__position._M_current)->offset + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(__position._M_current)->offset + 4)" ( (binary_expression "(int)&(__position._M_current)->offset + 4" (cast_expression "(int)&(__position._M_current)->offset" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(__position._M_current)->offset" & (field_expression "(__position._M_current)->offset" (parenthesized_expression "(__position._M_current)" ( (field_expression "__position._M_current" identifier . field_identifier) )) -> field_identifier))) + number_literal) )))) = (field_expression "entry.offset._4_4_" (field_expression "entry.offset" identifier . field_identifier) . field_identifier)) ;) (expression_statement "(__position._M_current)->header_num = entry.header_num;" (assignment_expression "(__position._M_current)->header_num = entry.header_num" (field_expression "(__position._M_current)->header_num" (parenthesized_expression "(__position._M_current)" ( (field_expression "__position._M_current" identifier . field_identifier) )) -> field_identifier) = (field_expression "entry.header_num" identifier . field_identifier)) ;) (expression_statement "*(undefined4 *)&(__position._M_current)->field_0xc = entry._12_4_;" (assignment_expression "*(undefined4 *)&(__position._M_current)->field_0xc = entry._12_4_" (pointer_expression "*(undefined4 *)&(__position._M_current)->field_0xc" * (cast_expression "(undefined4 *)&(__position._M_current)->field_0xc" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(__position._M_current)->field_0xc" & (field_expression "(__position._M_current)->field_0xc" (parenthesized_expression "(__position._M_current)" ( (field_expression "__position._M_current" identifier . field_identifier) )) -> field_identifier)))) = (field_expression "entry._12_4_" identifier . field_identifier)) ;) (expression_statement "(__position._M_current)->line_num = entry.line_num;" (assignment_expression "(__position._M_current)->line_num = entry.line_num" (field_expression "(__position._M_current)->line_num" (parenthesized_expression "(__position._M_current)" ( (field_expression "__position._M_current" identifier . field_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_60 + (int)(this->header_).total_length;" return (binary_expression "local_60 + (int)(this->header_).total_length" identifier + (cast_expression "(int)(this->header_).total_length" ( (type_descriptor "int" primitive_type) ) (field_expression "(this->header_).total_length" (parenthesized_expression "(this->header_)" ( (field_expression "this->header_" identifier -> field_identifier) )) . field_identifier))) ;) (ERROR "}" }))
(translation_unit "void FUN_00216ad0(int param_1,uint param_2,int param_3)\n\n{\n  int *piVar1;\n  int *piVar2;\n  char cVar3;\n  int *piVar4;\n  int local_60;\n  int local_50;\n  int local_4c;\n  int local_48;\n  int local_44;\n  uint local_40;\n  int local_3c;\n  uint local_38;\n  int local_34;\n  int local_30;\n  int local_2c;\n  undefined4 local_28;\n  int local_24;\n  undefined1 local_20;\n  undefined2 local_1f;\n  \n  local_60 = *(int *)(param_1 + 0x40) + 4;\n  if (*(int *)(param_1 + 0x3c) == 8) {\n    local_60 = *(int *)(param_1 + 0x40) + 0xc;\n  }\n  while (param_2 < (uint)(local_60 + *(int *)(param_1 + 8))) {\n    local_20 = *(undefined1 *)(param_1 + 0x24);\n    local_38 = 1;\n    local_34 = 0;\n    local_1f = 0;\n    local_30 = 0;\n    local_2c = 1;\n    local_28 = 0;\n    local_24 = -1;\n    do {\n      cVar3 = FUN_00214340(param_1,param_2,&local_38,&local_50);\n      if ((cVar3 != '\0') && (((param_3 == -1 || (local_24 == param_3)) || (local_24 == -1)))) {\n        local_4c = local_34;\n        local_44 = *(int *)(param_1 + 0x74);\n        local_48 = local_30;\n        local_40 = local_38 & 0x7fffffff | 0x80000000;\n        local_3c = local_2c;\n        piVar4 = (int *)FUN_002169f0(param_1 + 0x90,&local_24);\n        piVar2 = (int *)piVar4[1];\n        if ((((piVar2 == (int *)*piVar4) || (piVar2[-4] != local_30 || piVar2[-5] != local_34)) ||\n            (local_2c == -1)) || (piVar2[-1] == -1)) {\n          piVar1 = (int *)piVar4[2];\n        }\n        else {\n          *(byte *)((int)piVar2 + -5) = *(byte *)((int)piVar2 + -5) & 0x7f;\n          piVar1 = (int *)piVar4[2];\n        }\n        if (piVar2 == piVar1) {\n          FUN_002121f0(piVar4,piVar2,&local_4c);\n        }\n        else {\n          *piVar2 = local_4c;\n          piVar2[1] = local_48;\n          piVar2[2] = local_44;\n          piVar2[3] = local_40;\n          piVar2[4] = local_3c;\n          piVar4[1] = (int)(piVar2 + 5);\n        }\n      }\n      param_2 = param_2 + local_50;\n    } while (local_1f._1_1_ == '\0');\n  }\n  return;\n}\n\n" (function_definition "void FUN_00216ad0(int param_1,uint param_2,int param_3)\n\n{\n  int *piVar1;\n  int *piVar2;\n  char cVar3;\n  int *piVar4;\n  int local_60;\n  int local_50;\n  int local_4c;\n  int local_48;\n  int local_44;\n  uint local_40;\n  int local_3c;\n  uint local_38;\n  int local_34;\n  int local_30;\n  int local_2c;\n  undefined4 local_28;\n  int local_24;\n  undefined1 local_20;\n  undefined2 local_1f;\n  \n  local_60 = *(int *)(param_1 + 0x40) + 4;\n  if (*(int *)(param_1 + 0x3c) == 8) {\n    local_60 = *(int *)(param_1 + 0x40) + 0xc;\n  }\n  while (param_2 < (uint)(local_60 + *(int *)(param_1 + 8))) {\n    local_20 = *(undefined1 *)(param_1 + 0x24);\n    local_38 = 1;\n    local_34 = 0;\n    local_1f = 0;\n    local_30 = 0;\n    local_2c = 1;\n    local_28 = 0;\n    local_24 = -1;\n    do {\n      cVar3 = FUN_00214340(param_1,param_2,&local_38,&local_50);\n      if ((cVar3 != '\0') && (((param_3 == -1 || (local_24 == param_3)) || (local_24 == -1)))) {\n        local_4c = local_34;\n        local_44 = *(int *)(param_1 + 0x74);\n        local_48 = local_30;\n        local_40 = local_38 & 0x7fffffff | 0x80000000;\n        local_3c = local_2c;\n        piVar4 = (int *)FUN_002169f0(param_1 + 0x90,&local_24);\n        piVar2 = (int *)piVar4[1];\n        if ((((piVar2 == (int *)*piVar4) || (piVar2[-4] != local_30 || piVar2[-5] != local_34)) ||\n            (local_2c == -1)) || (piVar2[-1] == -1)) {\n          piVar1 = (int *)piVar4[2];\n        }\n        else {\n          *(byte *)((int)piVar2 + -5) = *(byte *)((int)piVar2 + -5) & 0x7f;\n          piVar1 = (int *)piVar4[2];\n        }\n        if (piVar2 == piVar1) {\n          FUN_002121f0(piVar4,piVar2,&local_4c);\n        }\n        else {\n          *piVar2 = local_4c;\n          piVar2[1] = local_48;\n          piVar2[2] = local_44;\n          piVar2[3] = local_40;\n          piVar2[4] = local_3c;\n          piVar4[1] = (int)(piVar2 + 5);\n        }\n      }\n      param_2 = param_2 + local_50;\n    } while (local_1f._1_1_ == '\0');\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00216ad0(int param_1,uint param_2,int param_3)" identifier (parameter_list "(int param_1,uint param_2,int param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  int *piVar1;\n  int *piVar2;\n  char cVar3;\n  int *piVar4;\n  int local_60;\n  int local_50;\n  int local_4c;\n  int local_48;\n  int local_44;\n  uint local_40;\n  int local_3c;\n  uint local_38;\n  int local_34;\n  int local_30;\n  int local_2c;\n  undefined4 local_28;\n  int local_24;\n  undefined1 local_20;\n  undefined2 local_1f;\n  \n  local_60 = *(int *)(param_1 + 0x40) + 4;\n  if (*(int *)(param_1 + 0x3c) == 8) {\n    local_60 = *(int *)(param_1 + 0x40) + 0xc;\n  }\n  while (param_2 < (uint)(local_60 + *(int *)(param_1 + 8))) {\n    local_20 = *(undefined1 *)(param_1 + 0x24);\n    local_38 = 1;\n    local_34 = 0;\n    local_1f = 0;\n    local_30 = 0;\n    local_2c = 1;\n    local_28 = 0;\n    local_24 = -1;\n    do {\n      cVar3 = FUN_00214340(param_1,param_2,&local_38,&local_50);\n      if ((cVar3 != '\0') && (((param_3 == -1 || (local_24 == param_3)) || (local_24 == -1)))) {\n        local_4c = local_34;\n        local_44 = *(int *)(param_1 + 0x74);\n        local_48 = local_30;\n        local_40 = local_38 & 0x7fffffff | 0x80000000;\n        local_3c = local_2c;\n        piVar4 = (int *)FUN_002169f0(param_1 + 0x90,&local_24);\n        piVar2 = (int *)piVar4[1];\n        if ((((piVar2 == (int *)*piVar4) || (piVar2[-4] != local_30 || piVar2[-5] != local_34)) ||\n            (local_2c == -1)) || (piVar2[-1] == -1)) {\n          piVar1 = (int *)piVar4[2];\n        }\n        else {\n          *(byte *)((int)piVar2 + -5) = *(byte *)((int)piVar2 + -5) & 0x7f;\n          piVar1 = (int *)piVar4[2];\n        }\n        if (piVar2 == piVar1) {\n          FUN_002121f0(piVar4,piVar2,&local_4c);\n        }\n        else {\n          *piVar2 = local_4c;\n          piVar2[1] = local_48;\n          piVar2[2] = local_44;\n          piVar2[3] = local_40;\n          piVar2[4] = local_3c;\n          piVar4[1] = (int)(piVar2 + 5);\n        }\n      }\n      param_2 = param_2 + local_50;\n    } while (local_1f._1_1_ == '\0');\n  }\n  return;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "char cVar3;" primitive_type identifier ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "int local_60;" primitive_type identifier ;) (declaration "int local_50;" primitive_type identifier ;) (declaration "int local_4c;" primitive_type identifier ;) (declaration "int local_48;" primitive_type identifier ;) (declaration "int local_44;" primitive_type identifier ;) (declaration "uint local_40;" type_identifier identifier ;) (declaration "int local_3c;" primitive_type identifier ;) (declaration "uint local_38;" type_identifier identifier ;) (declaration "int local_34;" primitive_type identifier ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (declaration "int local_24;" primitive_type identifier ;) (declaration "undefined1 local_20;" type_identifier identifier ;) (declaration "undefined2 local_1f;" type_identifier identifier ;) (expression_statement "local_60 = *(int *)(param_1 + 0x40) + 4;" (assignment_expression "local_60 = *(int *)(param_1 + 0x40) + 4" identifier = (binary_expression "*(int *)(param_1 + 0x40) + 4" (pointer_expression "*(int *)(param_1 + 0x40)" * (cast_expression "(int *)(param_1 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) + number_literal)) ;) (if_statement "if (*(int *)(param_1 + 0x3c) == 8) {\n    local_60 = *(int *)(param_1 + 0x40) + 0xc;\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0x3c) == 8)" ( (binary_expression "*(int *)(param_1 + 0x3c) == 8" (pointer_expression "*(int *)(param_1 + 0x3c)" * (cast_expression "(int *)(param_1 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    local_60 = *(int *)(param_1 + 0x40) + 0xc;\n  }" { (expression_statement "local_60 = *(int *)(param_1 + 0x40) + 0xc;" (assignment_expression "local_60 = *(int *)(param_1 + 0x40) + 0xc" identifier = (binary_expression "*(int *)(param_1 + 0x40) + 0xc" (pointer_expression "*(int *)(param_1 + 0x40)" * (cast_expression "(int *)(param_1 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) + number_literal)) ;) })) (while_statement "while (param_2 < (uint)(local_60 + *(int *)(param_1 + 8))) {\n    local_20 = *(undefined1 *)(param_1 + 0x24);\n    local_38 = 1;\n    local_34 = 0;\n    local_1f = 0;\n    local_30 = 0;\n    local_2c = 1;\n    local_28 = 0;\n    local_24 = -1;\n    do {\n      cVar3 = FUN_00214340(param_1,param_2,&local_38,&local_50);\n      if ((cVar3 != '\0') && (((param_3 == -1 || (local_24 == param_3)) || (local_24 == -1)))) {\n        local_4c = local_34;\n        local_44 = *(int *)(param_1 + 0x74);\n        local_48 = local_30;\n        local_40 = local_38 & 0x7fffffff | 0x80000000;\n        local_3c = local_2c;\n        piVar4 = (int *)FUN_002169f0(param_1 + 0x90,&local_24);\n        piVar2 = (int *)piVar4[1];\n        if ((((piVar2 == (int *)*piVar4) || (piVar2[-4] != local_30 || piVar2[-5] != local_34)) ||\n            (local_2c == -1)) || (piVar2[-1] == -1)) {\n          piVar1 = (int *)piVar4[2];\n        }\n        else {\n          *(byte *)((int)piVar2 + -5) = *(byte *)((int)piVar2 + -5) & 0x7f;\n          piVar1 = (int *)piVar4[2];\n        }\n        if (piVar2 == piVar1) {\n          FUN_002121f0(piVar4,piVar2,&local_4c);\n        }\n        else {\n          *piVar2 = local_4c;\n          piVar2[1] = local_48;\n          piVar2[2] = local_44;\n          piVar2[3] = local_40;\n          piVar2[4] = local_3c;\n          piVar4[1] = (int)(piVar2 + 5);\n        }\n      }\n      param_2 = param_2 + local_50;\n    } while (local_1f._1_1_ == '\0');\n  }" while (parenthesized_expression "(param_2 < (uint)(local_60 + *(int *)(param_1 + 8)))" ( (binary_expression "param_2 < (uint)(local_60 + *(int *)(param_1 + 8))" identifier < (call_expression "(uint)(local_60 + *(int *)(param_1 + 8))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_60 + *(int *)(param_1 + 8))" ( (binary_expression "local_60 + *(int *)(param_1 + 8)" identifier + (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) )))) )) (compound_statement "{\n    local_20 = *(undefined1 *)(param_1 + 0x24);\n    local_38 = 1;\n    local_34 = 0;\n    local_1f = 0;\n    local_30 = 0;\n    local_2c = 1;\n    local_28 = 0;\n    local_24 = -1;\n    do {\n      cVar3 = FUN_00214340(param_1,param_2,&local_38,&local_50);\n      if ((cVar3 != '\0') && (((param_3 == -1 || (local_24 == param_3)) || (local_24 == -1)))) {\n        local_4c = local_34;\n        local_44 = *(int *)(param_1 + 0x74);\n        local_48 = local_30;\n        local_40 = local_38 & 0x7fffffff | 0x80000000;\n        local_3c = local_2c;\n        piVar4 = (int *)FUN_002169f0(param_1 + 0x90,&local_24);\n        piVar2 = (int *)piVar4[1];\n        if ((((piVar2 == (int *)*piVar4) || (piVar2[-4] != local_30 || piVar2[-5] != local_34)) ||\n            (local_2c == -1)) || (piVar2[-1] == -1)) {\n          piVar1 = (int *)piVar4[2];\n        }\n        else {\n          *(byte *)((int)piVar2 + -5) = *(byte *)((int)piVar2 + -5) & 0x7f;\n          piVar1 = (int *)piVar4[2];\n        }\n        if (piVar2 == piVar1) {\n          FUN_002121f0(piVar4,piVar2,&local_4c);\n        }\n        else {\n          *piVar2 = local_4c;\n          piVar2[1] = local_48;\n          piVar2[2] = local_44;\n          piVar2[3] = local_40;\n          piVar2[4] = local_3c;\n          piVar4[1] = (int)(piVar2 + 5);\n        }\n      }\n      param_2 = param_2 + local_50;\n    } while (local_1f._1_1_ == '\0');\n  }" { (expression_statement "local_20 = *(undefined1 *)(param_1 + 0x24);" (assignment_expression "local_20 = *(undefined1 *)(param_1 + 0x24)" identifier = (pointer_expression "*(undefined1 *)(param_1 + 0x24)" * (cast_expression "(undefined1 *)(param_1 + 0x24)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x24)" ( (binary_expression "param_1 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "local_38 = 1;" (assignment_expression "local_38 = 1" identifier = number_literal) ;) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" identifier = number_literal) ;) (expression_statement "local_1f = 0;" (assignment_expression "local_1f = 0" identifier = number_literal) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "local_2c = 1;" (assignment_expression "local_2c = 1" identifier = number_literal) ;) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" identifier = number_literal) ;) (expression_statement "local_24 = -1;" (assignment_expression "local_24 = -1" identifier = number_literal) ;) (do_statement "do {\n      cVar3 = FUN_00214340(param_1,param_2,&local_38,&local_50);\n      if ((cVar3 != '\0') && (((param_3 == -1 || (local_24 == param_3)) || (local_24 == -1)))) {\n        local_4c = local_34;\n        local_44 = *(int *)(param_1 + 0x74);\n        local_48 = local_30;\n        local_40 = local_38 & 0x7fffffff | 0x80000000;\n        local_3c = local_2c;\n        piVar4 = (int *)FUN_002169f0(param_1 + 0x90,&local_24);\n        piVar2 = (int *)piVar4[1];\n        if ((((piVar2 == (int *)*piVar4) || (piVar2[-4] != local_30 || piVar2[-5] != local_34)) ||\n            (local_2c == -1)) || (piVar2[-1] == -1)) {\n          piVar1 = (int *)piVar4[2];\n        }\n        else {\n          *(byte *)((int)piVar2 + -5) = *(byte *)((int)piVar2 + -5) & 0x7f;\n          piVar1 = (int *)piVar4[2];\n        }\n        if (piVar2 == piVar1) {\n          FUN_002121f0(piVar4,piVar2,&local_4c);\n        }\n        else {\n          *piVar2 = local_4c;\n          piVar2[1] = local_48;\n          piVar2[2] = local_44;\n          piVar2[3] = local_40;\n          piVar2[4] = local_3c;\n          piVar4[1] = (int)(piVar2 + 5);\n        }\n      }\n      param_2 = param_2 + local_50;\n    } while (local_1f._1_1_ == '\0');" do (compound_statement "{\n      cVar3 = FUN_00214340(param_1,param_2,&local_38,&local_50);\n      if ((cVar3 != '\0') && (((param_3 == -1 || (local_24 == param_3)) || (local_24 == -1)))) {\n        local_4c = local_34;\n        local_44 = *(int *)(param_1 + 0x74);\n        local_48 = local_30;\n        local_40 = local_38 & 0x7fffffff | 0x80000000;\n        local_3c = local_2c;\n        piVar4 = (int *)FUN_002169f0(param_1 + 0x90,&local_24);\n        piVar2 = (int *)piVar4[1];\n        if ((((piVar2 == (int *)*piVar4) || (piVar2[-4] != local_30 || piVar2[-5] != local_34)) ||\n            (local_2c == -1)) || (piVar2[-1] == -1)) {\n          piVar1 = (int *)piVar4[2];\n        }\n        else {\n          *(byte *)((int)piVar2 + -5) = *(byte *)((int)piVar2 + -5) & 0x7f;\n          piVar1 = (int *)piVar4[2];\n        }\n        if (piVar2 == piVar1) {\n          FUN_002121f0(piVar4,piVar2,&local_4c);\n        }\n        else {\n          *piVar2 = local_4c;\n          piVar2[1] = local_48;\n          piVar2[2] = local_44;\n          piVar2[3] = local_40;\n          piVar2[4] = local_3c;\n          piVar4[1] = (int)(piVar2 + 5);\n        }\n      }\n      param_2 = param_2 + local_50;\n    }" { (expression_statement "cVar3 = FUN_00214340(param_1,param_2,&local_38,&local_50);" (assignment_expression "cVar3 = FUN_00214340(param_1,param_2,&local_38,&local_50)" identifier = (call_expression "FUN_00214340(param_1,param_2,&local_38,&local_50)" identifier (argument_list "(param_1,param_2,&local_38,&local_50)" ( identifier , identifier , (pointer_expression "&local_38" & identifier) , (pointer_expression "&local_50" & identifier) )))) ;) (if_statement "if ((cVar3 != '\0') && (((param_3 == -1 || (local_24 == param_3)) || (local_24 == -1)))) {\n        local_4c = local_34;\n        local_44 = *(int *)(param_1 + 0x74);\n        local_48 = local_30;\n        local_40 = local_38 & 0x7fffffff | 0x80000000;\n        local_3c = local_2c;\n        piVar4 = (int *)FUN_002169f0(param_1 + 0x90,&local_24);\n        piVar2 = (int *)piVar4[1];\n        if ((((piVar2 == (int *)*piVar4) || (piVar2[-4] != local_30 || piVar2[-5] != local_34)) ||\n            (local_2c == -1)) || (piVar2[-1] == -1)) {\n          piVar1 = (int *)piVar4[2];\n        }\n        else {\n          *(byte *)((int)piVar2 + -5) = *(byte *)((int)piVar2 + -5) & 0x7f;\n          piVar1 = (int *)piVar4[2];\n        }\n        if (piVar2 == piVar1) {\n          FUN_002121f0(piVar4,piVar2,&local_4c);\n        }\n        else {\n          *piVar2 = local_4c;\n          piVar2[1] = local_48;\n          piVar2[2] = local_44;\n          piVar2[3] = local_40;\n          piVar2[4] = local_3c;\n          piVar4[1] = (int)(piVar2 + 5);\n        }\n      }" if (parenthesized_expression "((cVar3 != '\0') && (((param_3 == -1 || (local_24 == param_3)) || (local_24 == -1))))" ( (binary_expression "(cVar3 != '\0') && (((param_3 == -1 || (local_24 == param_3)) || (local_24 == -1)))" (parenthesized_expression "(cVar3 != '\0')" ( (binary_expression "cVar3 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(((param_3 == -1 || (local_24 == param_3)) || (local_24 == -1)))" ( (parenthesized_expression "((param_3 == -1 || (local_24 == param_3)) || (local_24 == -1))" ( (binary_expression "(param_3 == -1 || (local_24 == param_3)) || (local_24 == -1)" (parenthesized_expression "(param_3 == -1 || (local_24 == param_3))" ( (binary_expression "param_3 == -1 || (local_24 == param_3)" (binary_expression "param_3 == -1" identifier == number_literal) || (parenthesized_expression "(local_24 == param_3)" ( (binary_expression "local_24 == param_3" identifier == identifier) ))) )) || (parenthesized_expression "(local_24 == -1)" ( (binary_expression "local_24 == -1" identifier == number_literal) ))) )) ))) )) (compound_statement "{\n        local_4c = local_34;\n        local_44 = *(int *)(param_1 + 0x74);\n        local_48 = local_30;\n        local_40 = local_38 & 0x7fffffff | 0x80000000;\n        local_3c = local_2c;\n        piVar4 = (int *)FUN_002169f0(param_1 + 0x90,&local_24);\n        piVar2 = (int *)piVar4[1];\n        if ((((piVar2 == (int *)*piVar4) || (piVar2[-4] != local_30 || piVar2[-5] != local_34)) ||\n            (local_2c == -1)) || (piVar2[-1] == -1)) {\n          piVar1 = (int *)piVar4[2];\n        }\n        else {\n          *(byte *)((int)piVar2 + -5) = *(byte *)((int)piVar2 + -5) & 0x7f;\n          piVar1 = (int *)piVar4[2];\n        }\n        if (piVar2 == piVar1) {\n          FUN_002121f0(piVar4,piVar2,&local_4c);\n        }\n        else {\n          *piVar2 = local_4c;\n          piVar2[1] = local_48;\n          piVar2[2] = local_44;\n          piVar2[3] = local_40;\n          piVar2[4] = local_3c;\n          piVar4[1] = (int)(piVar2 + 5);\n        }\n      }" { (expression_statement "local_4c = local_34;" (assignment_expression "local_4c = local_34" identifier = identifier) ;) (expression_statement "local_44 = *(int *)(param_1 + 0x74);" (assignment_expression "local_44 = *(int *)(param_1 + 0x74)" identifier = (pointer_expression "*(int *)(param_1 + 0x74)" * (cast_expression "(int *)(param_1 + 0x74)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x74)" ( (binary_expression "param_1 + 0x74" identifier + number_literal) ))))) ;) (expression_statement "local_48 = local_30;" (assignment_expression "local_48 = local_30" identifier = identifier) ;) (expression_statement "local_40 = local_38 & 0x7fffffff | 0x80000000;" (assignment_expression "local_40 = local_38 & 0x7fffffff | 0x80000000" identifier = (binary_expression "local_38 & 0x7fffffff | 0x80000000" (binary_expression "local_38 & 0x7fffffff" identifier & number_literal) | number_literal)) ;) (expression_statement "local_3c = local_2c;" (assignment_expression "local_3c = local_2c" identifier = identifier) ;) (expression_statement "piVar4 = (int *)FUN_002169f0(param_1 + 0x90,&local_24);" (assignment_expression "piVar4 = (int *)FUN_002169f0(param_1 + 0x90,&local_24)" identifier = (cast_expression "(int *)FUN_002169f0(param_1 + 0x90,&local_24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002169f0(param_1 + 0x90,&local_24)" identifier (argument_list "(param_1 + 0x90,&local_24)" ( (binary_expression "param_1 + 0x90" identifier + number_literal) , (pointer_expression "&local_24" & identifier) ))))) ;) (expression_statement "piVar2 = (int *)piVar4[1];" (assignment_expression "piVar2 = (int *)piVar4[1]" identifier = (cast_expression "(int *)piVar4[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar4[1]" identifier [ number_literal ]))) ;) (if_statement "if ((((piVar2 == (int *)*piVar4) || (piVar2[-4] != local_30 || piVar2[-5] != local_34)) ||\n            (local_2c == -1)) || (piVar2[-1] == -1)) {\n          piVar1 = (int *)piVar4[2];\n        }\n        else {\n          *(byte *)((int)piVar2 + -5) = *(byte *)((int)piVar2 + -5) & 0x7f;\n          piVar1 = (int *)piVar4[2];\n        }" if (parenthesized_expression "((((piVar2 == (int *)*piVar4) || (piVar2[-4] != local_30 || piVar2[-5] != local_34)) ||\n            (local_2c == -1)) || (piVar2[-1] == -1))" ( (binary_expression "(((piVar2 == (int *)*piVar4) || (piVar2[-4] != local_30 || piVar2[-5] != local_34)) ||\n            (local_2c == -1)) || (piVar2[-1] == -1)" (parenthesized_expression "(((piVar2 == (int *)*piVar4) || (piVar2[-4] != local_30 || piVar2[-5] != local_34)) ||\n            (local_2c == -1))" ( (binary_expression "((piVar2 == (int *)*piVar4) || (piVar2[-4] != local_30 || piVar2[-5] != local_34)) ||\n            (local_2c == -1)" (parenthesized_expression "((piVar2 == (int *)*piVar4) || (piVar2[-4] != local_30 || piVar2[-5] != local_34))" ( (binary_expression "(piVar2 == (int *)*piVar4) || (piVar2[-4] != local_30 || piVar2[-5] != local_34)" (parenthesized_expression "(piVar2 == (int *)*piVar4)" ( (binary_expression "piVar2 == (int *)*piVar4" identifier == (cast_expression "(int *)*piVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar4" * identifier))) )) || (parenthesized_expression "(piVar2[-4] != local_30 || piVar2[-5] != local_34)" ( (binary_expression "piVar2[-4] != local_30 || piVar2[-5] != local_34" (binary_expression "piVar2[-4] != local_30" (subscript_expression "piVar2[-4]" identifier [ number_literal ]) != identifier) || (binary_expression "piVar2[-5] != local_34" (subscript_expression "piVar2[-5]" identifier [ number_literal ]) != identifier)) ))) )) || (parenthesized_expression "(local_2c == -1)" ( (binary_expression "local_2c == -1" identifier == number_literal) ))) )) || (parenthesized_expression "(piVar2[-1] == -1)" ( (binary_expression "piVar2[-1] == -1" (subscript_expression "piVar2[-1]" identifier [ number_literal ]) == number_literal) ))) )) (compound_statement "{\n          piVar1 = (int *)piVar4[2];\n        }" { (expression_statement "piVar1 = (int *)piVar4[2];" (assignment_expression "piVar1 = (int *)piVar4[2]" identifier = (cast_expression "(int *)piVar4[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar4[2]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n          *(byte *)((int)piVar2 + -5) = *(byte *)((int)piVar2 + -5) & 0x7f;\n          piVar1 = (int *)piVar4[2];\n        }" else (compound_statement "{\n          *(byte *)((int)piVar2 + -5) = *(byte *)((int)piVar2 + -5) & 0x7f;\n          piVar1 = (int *)piVar4[2];\n        }" { (expression_statement "*(byte *)((int)piVar2 + -5) = *(byte *)((int)piVar2 + -5) & 0x7f;" (assignment_expression "*(byte *)((int)piVar2 + -5) = *(byte *)((int)piVar2 + -5) & 0x7f" (pointer_expression "*(byte *)((int)piVar2 + -5)" * (cast_expression "(byte *)((int)piVar2 + -5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar2 + -5)" ( (binary_expression "(int)piVar2 + -5" (cast_expression "(int)piVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(byte *)((int)piVar2 + -5) & 0x7f" (pointer_expression "*(byte *)((int)piVar2 + -5)" * (cast_expression "(byte *)((int)piVar2 + -5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar2 + -5)" ( (binary_expression "(int)piVar2 + -5" (cast_expression "(int)piVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal)) ;) (expression_statement "piVar1 = (int *)piVar4[2];" (assignment_expression "piVar1 = (int *)piVar4[2]" identifier = (cast_expression "(int *)piVar4[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar4[2]" identifier [ number_literal ]))) ;) }))) (if_statement "if (piVar2 == piVar1) {\n          FUN_002121f0(piVar4,piVar2,&local_4c);\n        }\n        else {\n          *piVar2 = local_4c;\n          piVar2[1] = local_48;\n          piVar2[2] = local_44;\n          piVar2[3] = local_40;\n          piVar2[4] = local_3c;\n          piVar4[1] = (int)(piVar2 + 5);\n        }" if (parenthesized_expression "(piVar2 == piVar1)" ( (binary_expression "piVar2 == piVar1" identifier == identifier) )) (compound_statement "{\n          FUN_002121f0(piVar4,piVar2,&local_4c);\n        }" { (expression_statement "FUN_002121f0(piVar4,piVar2,&local_4c);" (call_expression "FUN_002121f0(piVar4,piVar2,&local_4c)" identifier (argument_list "(piVar4,piVar2,&local_4c)" ( identifier , identifier , (pointer_expression "&local_4c" & identifier) ))) ;) }) (else_clause "else {\n          *piVar2 = local_4c;\n          piVar2[1] = local_48;\n          piVar2[2] = local_44;\n          piVar2[3] = local_40;\n          piVar2[4] = local_3c;\n          piVar4[1] = (int)(piVar2 + 5);\n        }" else (compound_statement "{\n          *piVar2 = local_4c;\n          piVar2[1] = local_48;\n          piVar2[2] = local_44;\n          piVar2[3] = local_40;\n          piVar2[4] = local_3c;\n          piVar4[1] = (int)(piVar2 + 5);\n        }" { (expression_statement "*piVar2 = local_4c;" (assignment_expression "*piVar2 = local_4c" (pointer_expression "*piVar2" * identifier) = identifier) ;) (expression_statement "piVar2[1] = local_48;" (assignment_expression "piVar2[1] = local_48" (subscript_expression "piVar2[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar2[2] = local_44;" (assignment_expression "piVar2[2] = local_44" (subscript_expression "piVar2[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar2[3] = local_40;" (assignment_expression "piVar2[3] = local_40" (subscript_expression "piVar2[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar2[4] = local_3c;" (assignment_expression "piVar2[4] = local_3c" (subscript_expression "piVar2[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar4[1] = (int)(piVar2 + 5);" (assignment_expression "piVar4[1] = (int)(piVar2 + 5)" (subscript_expression "piVar4[1]" identifier [ number_literal ]) = (cast_expression "(int)(piVar2 + 5)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(piVar2 + 5)" ( (binary_expression "piVar2 + 5" identifier + number_literal) )))) ;) }))) })) (expression_statement "param_2 = param_2 + local_50;" (assignment_expression "param_2 = param_2 + local_50" identifier = (binary_expression "param_2 + local_50" identifier + identifier)) ;) }) while (parenthesized_expression "(local_1f._1_1_ == '\0')" ( (binary_expression "local_1f._1_1_ == '\0'" (field_expression "local_1f._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 TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE 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 TYPE (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 TYPE (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 TYPE (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 IDENT = 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) ;) (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 , (pointer_expression & 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 = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT & LIT) | LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (pointer_expression & IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (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 TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) )) || (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) != IDENT) || (binary_expression (subscript_expression IDENT [ LIT ]) != IDENT)) ))) )) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (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 TYPE) ) IDENT) + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) & LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (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 ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) (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_00216ad0(int param_1,uint param_2,int param_3)\n\n{\n  int *piVar1;\n  int *piVar2;\n  char cVar3;\n  int *piVar4;\n  int local_60;\n  int local_50;\n  int local_4c;\n  int local_48;\n  int local_44;\n  uint local_40;\n  int local_3c;\n  uint local_38;\n  int local_34;\n  int local_30;\n  int local_2c;\n  undefined4 local_28;\n  int local_24;\n  undefined1 local_20;\n  undefined2 local_1f;\n  \n  local_60 = *(int *)(param_1 + 0x40) + 4;\n  if (*(int *)(param_1 + 0x3c) == 8) {\n    local_60 = *(int *)(param_1 + 0x40) + 0xc;\n  }\n  while (param_2 < (uint)(local_60 + *(int *)(param_1 + 8))) {\n    local_20 = *(undefined1 *)(param_1 + 0x24);\n    local_38 = 1;\n    local_34 = 0;\n    local_1f = 0;\n    local_30 = 0;\n    local_2c = 1;\n    local_28 = 0;\n    local_24 = -1;\n    do {\n      cVar3 = FUN_00214340(param_1,param_2,&local_38,&local_50);\n      if ((cVar3 != '\0') && (((param_3 == -1 || (local_24 == param_3)) || (local_24 == -1)))) {\n        local_4c = local_34;\n        local_44 = *(int *)(param_1 + 0x74);\n        local_48 = local_30;\n        local_40 = local_38 & 0x7fffffff | 0x80000000;\n        local_3c = local_2c;\n        piVar4 = (int *)FUN_002169f0(param_1 + 0x90,&local_24);\n        piVar2 = (int *)piVar4[1];\n        if ((((piVar2 == (int *)*piVar4) || (piVar2[-4] != local_30 || piVar2[-5] != local_34)) ||\n            (local_2c == -1)) || (piVar2[-1] == -1)) {\n          piVar1 = (int *)piVar4[2];\n        }\n        else {\n          *(byte *)((int)piVar2 + -5) = *(byte *)((int)piVar2 + -5) & 0x7f;\n          piVar1 = (int *)piVar4[2];\n        }\n        if (piVar2 == piVar1) {\n          FUN_002121f0(piVar4,piVar2,&local_4c);\n        }\n        else {\n          *piVar2 = local_4c;\n          piVar2[1] = local_48;\n          piVar2[2] = local_44;\n          piVar2[3] = local_40;\n          piVar2[4] = local_3c;\n          piVar4[1] = (int)(piVar2 + 5);\n        }\n      }\n      param_2 = param_2 + local_50;\n    } while (local_1f._1_1_ == '\0');\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00216ad0(int param_1,uint param_2,int param_3)" (identifier "FUN_00216ad0") (parameter_list "(int param_1,uint param_2,int param_3)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "uint param_2" (type_identifier "uint") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) () ")"))) (compound_statement "{\n  int *piVar1;\n  int *piVar2;\n  char cVar3;\n  int *piVar4;\n  int local_60;\n  int local_50;\n  int local_4c;\n  int local_48;\n  int local_44;\n  uint local_40;\n  int local_3c;\n  uint local_38;\n  int local_34;\n  int local_30;\n  int local_2c;\n  undefined4 local_28;\n  int local_24;\n  undefined1 local_20;\n  undefined2 local_1f;\n  \n  local_60 = *(int *)(param_1 + 0x40) + 4;\n  if (*(int *)(param_1 + 0x3c) == 8) {\n    local_60 = *(int *)(param_1 + 0x40) + 0xc;\n  }\n  while (param_2 < (uint)(local_60 + *(int *)(param_1 + 8))) {\n    local_20 = *(undefined1 *)(param_1 + 0x24);\n    local_38 = 1;\n    local_34 = 0;\n    local_1f = 0;\n    local_30 = 0;\n    local_2c = 1;\n    local_28 = 0;\n    local_24 = -1;\n    do {\n      cVar3 = FUN_00214340(param_1,param_2,&local_38,&local_50);\n      if ((cVar3 != '\0') && (((param_3 == -1 || (local_24 == param_3)) || (local_24 == -1)))) {\n        local_4c = local_34;\n        local_44 = *(int *)(param_1 + 0x74);\n        local_48 = local_30;\n        local_40 = local_38 & 0x7fffffff | 0x80000000;\n        local_3c = local_2c;\n        piVar4 = (int *)FUN_002169f0(param_1 + 0x90,&local_24);\n        piVar2 = (int *)piVar4[1];\n        if ((((piVar2 == (int *)*piVar4) || (piVar2[-4] != local_30 || piVar2[-5] != local_34)) ||\n            (local_2c == -1)) || (piVar2[-1] == -1)) {\n          piVar1 = (int *)piVar4[2];\n        }\n        else {\n          *(byte *)((int)piVar2 + -5) = *(byte *)((int)piVar2 + -5) & 0x7f;\n          piVar1 = (int *)piVar4[2];\n        }\n        if (piVar2 == piVar1) {\n          FUN_002121f0(piVar4,piVar2,&local_4c);\n        }\n        else {\n          *piVar2 = local_4c;\n          piVar2[1] = local_48;\n          piVar2[2] = local_44;\n          piVar2[3] = local_40;\n          piVar2[4] = local_3c;\n          piVar4[1] = (int)(piVar2 + 5);\n        }\n      }\n      param_2 = param_2 + local_50;\n    } while (local_1f._1_1_ == '\0');\n  }\n  return;\n}" ({ "{") (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "int *piVar2;" (primitive_type "int") (pointer_declarator "*piVar2" (* "*") (identifier "piVar2")) (; ";")) (declaration "char cVar3;" (primitive_type "char") (identifier "cVar3") (; ";")) (declaration "int *piVar4;" (primitive_type "int") (pointer_declarator "*piVar4" (* "*") (identifier "piVar4")) (; ";")) (declaration "int local_60;" (primitive_type "int") (identifier "local_60") (; ";")) (declaration "int local_50;" (primitive_type "int") (identifier "local_50") (; ";")) (declaration "int local_4c;" (primitive_type "int") (identifier "local_4c") (; ";")) (declaration "int local_48;" (primitive_type "int") (identifier "local_48") (; ";")) (declaration "int local_44;" (primitive_type "int") (identifier "local_44") (; ";")) (declaration "uint local_40;" (type_identifier "uint") (identifier "local_40") (; ";")) (declaration "int local_3c;" (primitive_type "int") (identifier "local_3c") (; ";")) (declaration "uint local_38;" (type_identifier "uint") (identifier "local_38") (; ";")) (declaration "int local_34;" (primitive_type "int") (identifier "local_34") (; ";")) (declaration "int local_30;" (primitive_type "int") (identifier "local_30") (; ";")) (declaration "int local_2c;" (primitive_type "int") (identifier "local_2c") (; ";")) (declaration "undefined4 local_28;" (type_identifier "undefined4") (identifier "local_28") (; ";")) (declaration "int local_24;" (primitive_type "int") (identifier "local_24") (; ";")) (declaration "undefined1 local_20;" (type_identifier "undefined1") (identifier "local_20") (; ";")) (declaration "undefined2 local_1f;" (type_identifier "undefined2") (identifier "local_1f") (; ";")) (expression_statement "local_60 = *(int *)(param_1 + 0x40) + 4;" (assignment_expression "local_60 = *(int *)(param_1 + 0x40) + 4" (identifier "local_60") (= "=") (binary_expression "*(int *)(param_1 + 0x40) + 4" (pointer_expression "*(int *)(param_1 + 0x40)" (* "*") (cast_expression "(int *)(param_1 + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x40)" (( "(") (binary_expression "param_1 + 0x40" (identifier "param_1") (+ "+") (number_literal "0x40")) () ")")))) (+ "+") (number_literal "4"))) (; ";")) (if_statement "if (*(int *)(param_1 + 0x3c) == 8) {\n    local_60 = *(int *)(param_1 + 0x40) + 0xc;\n  }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x3c) == 8)" (( "(") (binary_expression "*(int *)(param_1 + 0x3c) == 8" (pointer_expression "*(int *)(param_1 + 0x3c)" (* "*") (cast_expression "(int *)(param_1 + 0x3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x3c)" (( "(") (binary_expression "param_1 + 0x3c" (identifier "param_1") (+ "+") (number_literal "0x3c")) () ")")))) (== "==") (number_literal "8")) () ")")) (compound_statement "{\n    local_60 = *(int *)(param_1 + 0x40) + 0xc;\n  }" ({ "{") (expression_statement "local_60 = *(int *)(param_1 + 0x40) + 0xc;" (assignment_expression "local_60 = *(int *)(param_1 + 0x40) + 0xc" (identifier "local_60") (= "=") (binary_expression "*(int *)(param_1 + 0x40) + 0xc" (pointer_expression "*(int *)(param_1 + 0x40)" (* "*") (cast_expression "(int *)(param_1 + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x40)" (( "(") (binary_expression "param_1 + 0x40" (identifier "param_1") (+ "+") (number_literal "0x40")) () ")")))) (+ "+") (number_literal "0xc"))) (; ";")) (} "}"))) (while_statement "while (param_2 < (uint)(local_60 + *(int *)(param_1 + 8))) {\n    local_20 = *(undefined1 *)(param_1 + 0x24);\n    local_38 = 1;\n    local_34 = 0;\n    local_1f = 0;\n    local_30 = 0;\n    local_2c = 1;\n    local_28 = 0;\n    local_24 = -1;\n    do {\n      cVar3 = FUN_00214340(param_1,param_2,&local_38,&local_50);\n      if ((cVar3 != '\0') && (((param_3 == -1 || (local_24 == param_3)) || (local_24 == -1)))) {\n        local_4c = local_34;\n        local_44 = *(int *)(param_1 + 0x74);\n        local_48 = local_30;\n        local_40 = local_38 & 0x7fffffff | 0x80000000;\n        local_3c = local_2c;\n        piVar4 = (int *)FUN_002169f0(param_1 + 0x90,&local_24);\n        piVar2 = (int *)piVar4[1];\n        if ((((piVar2 == (int *)*piVar4) || (piVar2[-4] != local_30 || piVar2[-5] != local_34)) ||\n            (local_2c == -1)) || (piVar2[-1] == -1)) {\n          piVar1 = (int *)piVar4[2];\n        }\n        else {\n          *(byte *)((int)piVar2 + -5) = *(byte *)((int)piVar2 + -5) & 0x7f;\n          piVar1 = (int *)piVar4[2];\n        }\n        if (piVar2 == piVar1) {\n          FUN_002121f0(piVar4,piVar2,&local_4c);\n        }\n        else {\n          *piVar2 = local_4c;\n          piVar2[1] = local_48;\n          piVar2[2] = local_44;\n          piVar2[3] = local_40;\n          piVar2[4] = local_3c;\n          piVar4[1] = (int)(piVar2 + 5);\n        }\n      }\n      param_2 = param_2 + local_50;\n    } while (local_1f._1_1_ == '\0');\n  }" (while "while") (parenthesized_expression "(param_2 < (uint)(local_60 + *(int *)(param_1 + 8)))" (( "(") (binary_expression "param_2 < (uint)(local_60 + *(int *)(param_1 + 8))" (identifier "param_2") (< "<") (call_expression "(uint)(local_60 + *(int *)(param_1 + 8))" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(local_60 + *(int *)(param_1 + 8))" (( "(") (binary_expression "local_60 + *(int *)(param_1 + 8)" (identifier "local_60") (+ "+") (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) () ")")))) () ")")) (compound_statement "{\n    local_20 = *(undefined1 *)(param_1 + 0x24);\n    local_38 = 1;\n    local_34 = 0;\n    local_1f = 0;\n    local_30 = 0;\n    local_2c = 1;\n    local_28 = 0;\n    local_24 = -1;\n    do {\n      cVar3 = FUN_00214340(param_1,param_2,&local_38,&local_50);\n      if ((cVar3 != '\0') && (((param_3 == -1 || (local_24 == param_3)) || (local_24 == -1)))) {\n        local_4c = local_34;\n        local_44 = *(int *)(param_1 + 0x74);\n        local_48 = local_30;\n        local_40 = local_38 & 0x7fffffff | 0x80000000;\n        local_3c = local_2c;\n        piVar4 = (int *)FUN_002169f0(param_1 + 0x90,&local_24);\n        piVar2 = (int *)piVar4[1];\n        if ((((piVar2 == (int *)*piVar4) || (piVar2[-4] != local_30 || piVar2[-5] != local_34)) ||\n            (local_2c == -1)) || (piVar2[-1] == -1)) {\n          piVar1 = (int *)piVar4[2];\n        }\n        else {\n          *(byte *)((int)piVar2 + -5) = *(byte *)((int)piVar2 + -5) & 0x7f;\n          piVar1 = (int *)piVar4[2];\n        }\n        if (piVar2 == piVar1) {\n          FUN_002121f0(piVar4,piVar2,&local_4c);\n        }\n        else {\n          *piVar2 = local_4c;\n          piVar2[1] = local_48;\n          piVar2[2] = local_44;\n          piVar2[3] = local_40;\n          piVar2[4] = local_3c;\n          piVar4[1] = (int)(piVar2 + 5);\n        }\n      }\n      param_2 = param_2 + local_50;\n    } while (local_1f._1_1_ == '\0');\n  }" ({ "{") (expression_statement "local_20 = *(undefined1 *)(param_1 + 0x24);" (assignment_expression "local_20 = *(undefined1 *)(param_1 + 0x24)" (identifier "local_20") (= "=") (pointer_expression "*(undefined1 *)(param_1 + 0x24)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0x24)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x24)" (( "(") (binary_expression "param_1 + 0x24" (identifier "param_1") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (expression_statement "local_38 = 1;" (assignment_expression "local_38 = 1" (identifier "local_38") (= "=") (number_literal "1")) (; ";")) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" (identifier "local_34") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_1f = 0;" (assignment_expression "local_1f = 0" (identifier "local_1f") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" (identifier "local_30") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_2c = 1;" (assignment_expression "local_2c = 1" (identifier "local_2c") (= "=") (number_literal "1")) (; ";")) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" (identifier "local_28") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_24 = -1;" (assignment_expression "local_24 = -1" (identifier "local_24") (= "=") (number_literal "-1")) (; ";")) (do_statement "do {\n      cVar3 = FUN_00214340(param_1,param_2,&local_38,&local_50);\n      if ((cVar3 != '\0') && (((param_3 == -1 || (local_24 == param_3)) || (local_24 == -1)))) {\n        local_4c = local_34;\n        local_44 = *(int *)(param_1 + 0x74);\n        local_48 = local_30;\n        local_40 = local_38 & 0x7fffffff | 0x80000000;\n        local_3c = local_2c;\n        piVar4 = (int *)FUN_002169f0(param_1 + 0x90,&local_24);\n        piVar2 = (int *)piVar4[1];\n        if ((((piVar2 == (int *)*piVar4) || (piVar2[-4] != local_30 || piVar2[-5] != local_34)) ||\n            (local_2c == -1)) || (piVar2[-1] == -1)) {\n          piVar1 = (int *)piVar4[2];\n        }\n        else {\n          *(byte *)((int)piVar2 + -5) = *(byte *)((int)piVar2 + -5) & 0x7f;\n          piVar1 = (int *)piVar4[2];\n        }\n        if (piVar2 == piVar1) {\n          FUN_002121f0(piVar4,piVar2,&local_4c);\n        }\n        else {\n          *piVar2 = local_4c;\n          piVar2[1] = local_48;\n          piVar2[2] = local_44;\n          piVar2[3] = local_40;\n          piVar2[4] = local_3c;\n          piVar4[1] = (int)(piVar2 + 5);\n        }\n      }\n      param_2 = param_2 + local_50;\n    } while (local_1f._1_1_ == '\0');" (do "do") (compound_statement "{\n      cVar3 = FUN_00214340(param_1,param_2,&local_38,&local_50);\n      if ((cVar3 != '\0') && (((param_3 == -1 || (local_24 == param_3)) || (local_24 == -1)))) {\n        local_4c = local_34;\n        local_44 = *(int *)(param_1 + 0x74);\n        local_48 = local_30;\n        local_40 = local_38 & 0x7fffffff | 0x80000000;\n        local_3c = local_2c;\n        piVar4 = (int *)FUN_002169f0(param_1 + 0x90,&local_24);\n        piVar2 = (int *)piVar4[1];\n        if ((((piVar2 == (int *)*piVar4) || (piVar2[-4] != local_30 || piVar2[-5] != local_34)) ||\n            (local_2c == -1)) || (piVar2[-1] == -1)) {\n          piVar1 = (int *)piVar4[2];\n        }\n        else {\n          *(byte *)((int)piVar2 + -5) = *(byte *)((int)piVar2 + -5) & 0x7f;\n          piVar1 = (int *)piVar4[2];\n        }\n        if (piVar2 == piVar1) {\n          FUN_002121f0(piVar4,piVar2,&local_4c);\n        }\n        else {\n          *piVar2 = local_4c;\n          piVar2[1] = local_48;\n          piVar2[2] = local_44;\n          piVar2[3] = local_40;\n          piVar2[4] = local_3c;\n          piVar4[1] = (int)(piVar2 + 5);\n        }\n      }\n      param_2 = param_2 + local_50;\n    }" ({ "{") (expression_statement "cVar3 = FUN_00214340(param_1,param_2,&local_38,&local_50);" (assignment_expression "cVar3 = FUN_00214340(param_1,param_2,&local_38,&local_50)" (identifier "cVar3") (= "=") (call_expression "FUN_00214340(param_1,param_2,&local_38,&local_50)" (identifier "FUN_00214340") (argument_list "(param_1,param_2,&local_38,&local_50)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (pointer_expression "&local_38" (& "&") (identifier "local_38")) (, ",") (pointer_expression "&local_50" (& "&") (identifier "local_50")) () ")")))) (; ";")) (if_statement "if ((cVar3 != '\0') && (((param_3 == -1 || (local_24 == param_3)) || (local_24 == -1)))) {\n        local_4c = local_34;\n        local_44 = *(int *)(param_1 + 0x74);\n        local_48 = local_30;\n        local_40 = local_38 & 0x7fffffff | 0x80000000;\n        local_3c = local_2c;\n        piVar4 = (int *)FUN_002169f0(param_1 + 0x90,&local_24);\n        piVar2 = (int *)piVar4[1];\n        if ((((piVar2 == (int *)*piVar4) || (piVar2[-4] != local_30 || piVar2[-5] != local_34)) ||\n            (local_2c == -1)) || (piVar2[-1] == -1)) {\n          piVar1 = (int *)piVar4[2];\n        }\n        else {\n          *(byte *)((int)piVar2 + -5) = *(byte *)((int)piVar2 + -5) & 0x7f;\n          piVar1 = (int *)piVar4[2];\n        }\n        if (piVar2 == piVar1) {\n          FUN_002121f0(piVar4,piVar2,&local_4c);\n        }\n        else {\n          *piVar2 = local_4c;\n          piVar2[1] = local_48;\n          piVar2[2] = local_44;\n          piVar2[3] = local_40;\n          piVar2[4] = local_3c;\n          piVar4[1] = (int)(piVar2 + 5);\n        }\n      }" (if "if") (parenthesized_expression "((cVar3 != '\0') && (((param_3 == -1 || (local_24 == param_3)) || (local_24 == -1))))" (( "(") (binary_expression "(cVar3 != '\0') && (((param_3 == -1 || (local_24 == param_3)) || (local_24 == -1)))" (parenthesized_expression "(cVar3 != '\0')" (( "(") (binary_expression "cVar3 != '\0'" (identifier "cVar3") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(((param_3 == -1 || (local_24 == param_3)) || (local_24 == -1)))" (( "(") (parenthesized_expression "((param_3 == -1 || (local_24 == param_3)) || (local_24 == -1))" (( "(") (binary_expression "(param_3 == -1 || (local_24 == param_3)) || (local_24 == -1)" (parenthesized_expression "(param_3 == -1 || (local_24 == param_3))" (( "(") (binary_expression "param_3 == -1 || (local_24 == param_3)" (binary_expression "param_3 == -1" (identifier "param_3") (== "==") (number_literal "-1")) (|| "||") (parenthesized_expression "(local_24 == param_3)" (( "(") (binary_expression "local_24 == param_3" (identifier "local_24") (== "==") (identifier "param_3")) () ")"))) () ")")) (|| "||") (parenthesized_expression "(local_24 == -1)" (( "(") (binary_expression "local_24 == -1" (identifier "local_24") (== "==") (number_literal "-1")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n        local_4c = local_34;\n        local_44 = *(int *)(param_1 + 0x74);\n        local_48 = local_30;\n        local_40 = local_38 & 0x7fffffff | 0x80000000;\n        local_3c = local_2c;\n        piVar4 = (int *)FUN_002169f0(param_1 + 0x90,&local_24);\n        piVar2 = (int *)piVar4[1];\n        if ((((piVar2 == (int *)*piVar4) || (piVar2[-4] != local_30 || piVar2[-5] != local_34)) ||\n            (local_2c == -1)) || (piVar2[-1] == -1)) {\n          piVar1 = (int *)piVar4[2];\n        }\n        else {\n          *(byte *)((int)piVar2 + -5) = *(byte *)((int)piVar2 + -5) & 0x7f;\n          piVar1 = (int *)piVar4[2];\n        }\n        if (piVar2 == piVar1) {\n          FUN_002121f0(piVar4,piVar2,&local_4c);\n        }\n        else {\n          *piVar2 = local_4c;\n          piVar2[1] = local_48;\n          piVar2[2] = local_44;\n          piVar2[3] = local_40;\n          piVar2[4] = local_3c;\n          piVar4[1] = (int)(piVar2 + 5);\n        }\n      }" ({ "{") (expression_statement "local_4c = local_34;" (assignment_expression "local_4c = local_34" (identifier "local_4c") (= "=") (identifier "local_34")) (; ";")) (expression_statement "local_44 = *(int *)(param_1 + 0x74);" (assignment_expression "local_44 = *(int *)(param_1 + 0x74)" (identifier "local_44") (= "=") (pointer_expression "*(int *)(param_1 + 0x74)" (* "*") (cast_expression "(int *)(param_1 + 0x74)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x74)" (( "(") (binary_expression "param_1 + 0x74" (identifier "param_1") (+ "+") (number_literal "0x74")) () ")"))))) (; ";")) (expression_statement "local_48 = local_30;" (assignment_expression "local_48 = local_30" (identifier "local_48") (= "=") (identifier "local_30")) (; ";")) (expression_statement "local_40 = local_38 & 0x7fffffff | 0x80000000;" (assignment_expression "local_40 = local_38 & 0x7fffffff | 0x80000000" (identifier "local_40") (= "=") (binary_expression "local_38 & 0x7fffffff | 0x80000000" (binary_expression "local_38 & 0x7fffffff" (identifier "local_38") (& "&") (number_literal "0x7fffffff")) (| "|") (number_literal "0x80000000"))) (; ";")) (expression_statement "local_3c = local_2c;" (assignment_expression "local_3c = local_2c" (identifier "local_3c") (= "=") (identifier "local_2c")) (; ";")) (expression_statement "piVar4 = (int *)FUN_002169f0(param_1 + 0x90,&local_24);" (assignment_expression "piVar4 = (int *)FUN_002169f0(param_1 + 0x90,&local_24)" (identifier "piVar4") (= "=") (cast_expression "(int *)FUN_002169f0(param_1 + 0x90,&local_24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002169f0(param_1 + 0x90,&local_24)" (identifier "FUN_002169f0") (argument_list "(param_1 + 0x90,&local_24)" (( "(") (binary_expression "param_1 + 0x90" (identifier "param_1") (+ "+") (number_literal "0x90")) (, ",") (pointer_expression "&local_24" (& "&") (identifier "local_24")) () ")"))))) (; ";")) (expression_statement "piVar2 = (int *)piVar4[1];" (assignment_expression "piVar2 = (int *)piVar4[1]" (identifier "piVar2") (= "=") (cast_expression "(int *)piVar4[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar4[1]" (identifier "piVar4") ([ "[") (number_literal "1") (] "]")))) (; ";")) (if_statement "if ((((piVar2 == (int *)*piVar4) || (piVar2[-4] != local_30 || piVar2[-5] != local_34)) ||\n            (local_2c == -1)) || (piVar2[-1] == -1)) {\n          piVar1 = (int *)piVar4[2];\n        }\n        else {\n          *(byte *)((int)piVar2 + -5) = *(byte *)((int)piVar2 + -5) & 0x7f;\n          piVar1 = (int *)piVar4[2];\n        }" (if "if") (parenthesized_expression "((((piVar2 == (int *)*piVar4) || (piVar2[-4] != local_30 || piVar2[-5] != local_34)) ||\n            (local_2c == -1)) || (piVar2[-1] == -1))" (( "(") (binary_expression "(((piVar2 == (int *)*piVar4) || (piVar2[-4] != local_30 || piVar2[-5] != local_34)) ||\n            (local_2c == -1)) || (piVar2[-1] == -1)" (parenthesized_expression "(((piVar2 == (int *)*piVar4) || (piVar2[-4] != local_30 || piVar2[-5] != local_34)) ||\n            (local_2c == -1))" (( "(") (binary_expression "((piVar2 == (int *)*piVar4) || (piVar2[-4] != local_30 || piVar2[-5] != local_34)) ||\n            (local_2c == -1)" (parenthesized_expression "((piVar2 == (int *)*piVar4) || (piVar2[-4] != local_30 || piVar2[-5] != local_34))" (( "(") (binary_expression "(piVar2 == (int *)*piVar4) || (piVar2[-4] != local_30 || piVar2[-5] != local_34)" (parenthesized_expression "(piVar2 == (int *)*piVar4)" (( "(") (binary_expression "piVar2 == (int *)*piVar4" (identifier "piVar2") (== "==") (cast_expression "(int *)*piVar4" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar4" (* "*") (identifier "piVar4")))) () ")")) (|| "||") (parenthesized_expression "(piVar2[-4] != local_30 || piVar2[-5] != local_34)" (( "(") (binary_expression "piVar2[-4] != local_30 || piVar2[-5] != local_34" (binary_expression "piVar2[-4] != local_30" (subscript_expression "piVar2[-4]" (identifier "piVar2") ([ "[") (number_literal "-4") (] "]")) (!= "!=") (identifier "local_30")) (|| "||") (binary_expression "piVar2[-5] != local_34" (subscript_expression "piVar2[-5]" (identifier "piVar2") ([ "[") (number_literal "-5") (] "]")) (!= "!=") (identifier "local_34"))) () ")"))) () ")")) (|| "||") (parenthesized_expression "(local_2c == -1)" (( "(") (binary_expression "local_2c == -1" (identifier "local_2c") (== "==") (number_literal "-1")) () ")"))) () ")")) (|| "||") (parenthesized_expression "(piVar2[-1] == -1)" (( "(") (binary_expression "piVar2[-1] == -1" (subscript_expression "piVar2[-1]" (identifier "piVar2") ([ "[") (number_literal "-1") (] "]")) (== "==") (number_literal "-1")) () ")"))) () ")")) (compound_statement "{\n          piVar1 = (int *)piVar4[2];\n        }" ({ "{") (expression_statement "piVar1 = (int *)piVar4[2];" (assignment_expression "piVar1 = (int *)piVar4[2]" (identifier "piVar1") (= "=") (cast_expression "(int *)piVar4[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar4[2]" (identifier "piVar4") ([ "[") (number_literal "2") (] "]")))) (; ";")) (} "}")) (else_clause "else {\n          *(byte *)((int)piVar2 + -5) = *(byte *)((int)piVar2 + -5) & 0x7f;\n          piVar1 = (int *)piVar4[2];\n        }" (else "else") (compound_statement "{\n          *(byte *)((int)piVar2 + -5) = *(byte *)((int)piVar2 + -5) & 0x7f;\n          piVar1 = (int *)piVar4[2];\n        }" ({ "{") (expression_statement "*(byte *)((int)piVar2 + -5) = *(byte *)((int)piVar2 + -5) & 0x7f;" (assignment_expression "*(byte *)((int)piVar2 + -5) = *(byte *)((int)piVar2 + -5) & 0x7f" (pointer_expression "*(byte *)((int)piVar2 + -5)" (* "*") (cast_expression "(byte *)((int)piVar2 + -5)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar2 + -5)" (( "(") (binary_expression "(int)piVar2 + -5" (cast_expression "(int)piVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar2")) (+ "+") (number_literal "-5")) () ")")))) (= "=") (binary_expression "*(byte *)((int)piVar2 + -5) & 0x7f" (pointer_expression "*(byte *)((int)piVar2 + -5)" (* "*") (cast_expression "(byte *)((int)piVar2 + -5)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar2 + -5)" (( "(") (binary_expression "(int)piVar2 + -5" (cast_expression "(int)piVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar2")) (+ "+") (number_literal "-5")) () ")")))) (& "&") (number_literal "0x7f"))) (; ";")) (expression_statement "piVar1 = (int *)piVar4[2];" (assignment_expression "piVar1 = (int *)piVar4[2]" (identifier "piVar1") (= "=") (cast_expression "(int *)piVar4[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar4[2]" (identifier "piVar4") ([ "[") (number_literal "2") (] "]")))) (; ";")) (} "}")))) (if_statement "if (piVar2 == piVar1) {\n          FUN_002121f0(piVar4,piVar2,&local_4c);\n        }\n        else {\n          *piVar2 = local_4c;\n          piVar2[1] = local_48;\n          piVar2[2] = local_44;\n          piVar2[3] = local_40;\n          piVar2[4] = local_3c;\n          piVar4[1] = (int)(piVar2 + 5);\n        }" (if "if") (parenthesized_expression "(piVar2 == piVar1)" (( "(") (binary_expression "piVar2 == piVar1" (identifier "piVar2") (== "==") (identifier "piVar1")) () ")")) (compound_statement "{\n          FUN_002121f0(piVar4,piVar2,&local_4c);\n        }" ({ "{") (expression_statement "FUN_002121f0(piVar4,piVar2,&local_4c);" (call_expression "FUN_002121f0(piVar4,piVar2,&local_4c)" (identifier "FUN_002121f0") (argument_list "(piVar4,piVar2,&local_4c)" (( "(") (identifier "piVar4") (, ",") (identifier "piVar2") (, ",") (pointer_expression "&local_4c" (& "&") (identifier "local_4c")) () ")"))) (; ";")) (} "}")) (else_clause "else {\n          *piVar2 = local_4c;\n          piVar2[1] = local_48;\n          piVar2[2] = local_44;\n          piVar2[3] = local_40;\n          piVar2[4] = local_3c;\n          piVar4[1] = (int)(piVar2 + 5);\n        }" (else "else") (compound_statement "{\n          *piVar2 = local_4c;\n          piVar2[1] = local_48;\n          piVar2[2] = local_44;\n          piVar2[3] = local_40;\n          piVar2[4] = local_3c;\n          piVar4[1] = (int)(piVar2 + 5);\n        }" ({ "{") (expression_statement "*piVar2 = local_4c;" (assignment_expression "*piVar2 = local_4c" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (= "=") (identifier "local_4c")) (; ";")) (expression_statement "piVar2[1] = local_48;" (assignment_expression "piVar2[1] = local_48" (subscript_expression "piVar2[1]" (identifier "piVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "local_48")) (; ";")) (expression_statement "piVar2[2] = local_44;" (assignment_expression "piVar2[2] = local_44" (subscript_expression "piVar2[2]" (identifier "piVar2") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "local_44")) (; ";")) (expression_statement "piVar2[3] = local_40;" (assignment_expression "piVar2[3] = local_40" (subscript_expression "piVar2[3]" (identifier "piVar2") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "local_40")) (; ";")) (expression_statement "piVar2[4] = local_3c;" (assignment_expression "piVar2[4] = local_3c" (subscript_expression "piVar2[4]" (identifier "piVar2") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "local_3c")) (; ";")) (expression_statement "piVar4[1] = (int)(piVar2 + 5);" (assignment_expression "piVar4[1] = (int)(piVar2 + 5)" (subscript_expression "piVar4[1]" (identifier "piVar4") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(int)(piVar2 + 5)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(piVar2 + 5)" (( "(") (binary_expression "piVar2 + 5" (identifier "piVar2") (+ "+") (number_literal "5")) () ")")))) (; ";")) (} "}")))) (} "}"))) (expression_statement "param_2 = param_2 + local_50;" (assignment_expression "param_2 = param_2 + local_50" (identifier "param_2") (= "=") (binary_expression "param_2 + local_50" (identifier "param_2") (+ "+") (identifier "local_50"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_1f._1_1_ == '\0')" (( "(") (binary_expression "local_1f._1_1_ == '\0'" (field_expression "local_1f._1_1_" (identifier "local_1f") (. ".") (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,_false> * this, uchar *
   lineptr, uint shndx) */

var_1 * var_2
gold::Sized_dwarf_line_info<32,_false>::read_lines
          (Sized_dwarf_line_info<32,_false> *this,var_1 *var_5,uint var_8)

{
  var_3 *var_4;
  type_1 __position;
  bool bVar2;
  type_2 *this_00;
  var_1 *var_6;
  size_t var_13;
  var_3 entry;
  type_3 lsm;
  
  var_6 = this->buffer_ + 4;
  if ((this->header_).offset_size == 8) {
    var_6 = this->buffer_ + 0xc;
  }
  while (var_5 < var_6 + (int)(this->header_).total_length) {
    lsm.is_stmt = (this->header_).default_is_stmt;
    lsm.file_num = 1;
    lsm.address._0_4_ = 0;
    lsm.basic_block = false;
    lsm.end_sequence = false;
    lsm.address._4_4_ = 0;
    lsm.line_num = 1;
    lsm.column_num = 0;
    lsm.var_8 = 0xffffffff;
    do {
      bVar2 = var_7(this,var_5,&lsm,&var_13);
      if ((bVar2) && (((var_8 == 0xffffffff || (lsm.var_8 == var_8)) || (lsm.var_8 == 0xffffffff))))
      {
        entry.offset._0_4_ = (int)lsm.address;
        entry.header_num = this->current_header_index_;
        entry.offset._4_4_ = lsm.address._4_4_;
        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::var_3,_std::allocator<gold::var_3>var_11>var_11>,_std::allocator<std::pair<unsigned_int_const,_std::vector<gold::var_3,_std::allocator<gold::var_3>var_11>var_11>var_11>,_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_9<false,_false,var_10>,var_10>
                  ::operator[var_12]((_Map_base<unsigned_int,_std::pair<unsigned_int_const,_std::vector<gold::var_3,_std::allocator<gold::var_3>var_11>var_11>,_std::allocator<std::pair<unsigned_int_const,_std::vector<gold::var_3,_std::allocator<gold::var_3>var_11>var_11>var_11>,_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_9<false,_false,var_10>,var_10>
                                *var_12)&this->line_number_map_,&lsm.var_8);
        __position._M_current =
             (this_00->
             super__Vector_base<gold::var_3,_std::allocator<gold::var_3>var_11>var_12
             )._M_impl._M_finish;
        if ((((__position._M_current ==
               (this_00->
               super__Vector_base<gold::var_3,_std::allocator<gold::var_3>var_11>var_12
               )._M_impl._M_start) ||
             (*(int *)((int)&__position._M_current[-1].offset + 4) != lsm.address._4_4_ ||
              (int)__position._M_current[-1].offset != (int)lsm.address)) || (lsm.line_num == -1))
           || (__position._M_current[-1].line_num == -1)) {
          var_4 = (this_00->
                   super__Vector_base<gold::var_3,_std::allocator<gold::var_3>var_11>var_12
                   )._M_impl._M_end_of_storage;
        }
        else {
          __position._M_current[-1].field_0xf = __position._M_current[-1].field_0xf & 0x7f;
          var_4 = (this_00->
                   super__Vector_base<gold::var_3,_std::allocator<gold::var_3>var_11>var_12
                   )._M_impl._M_end_of_storage;
        }
        if (__position._M_current == var_4) {
          std::vector<gold::var_3,_std::allocator<gold::var_3>var_11>::
          _M_realloc_insert<const_gold::var_3&>(this_00,__position,&entry);
        }
        else {
          *(int *)&(__position._M_current)->offset = (int)entry.offset;
          *(int *)((int)&(__position._M_current)->offset + 4) = entry.offset._4_4_;
          (__position._M_current)->header_num = entry.header_num;
          *(type_4 *)&(__position._M_current)->field_0xc = entry._12_4_;
          (__position._M_current)->line_num = entry.line_num;
          (this_00->
          super__Vector_base<gold::var_3,_std::allocator<gold::var_3>var_11>var_12
          )._M_impl._M_finish = __position._M_current + 1;
        }
      }
      var_5 = var_5 + var_13;
    } while (lsm.end_sequence == false);
  }
  return var_6 + (int)(this->header_).total_length;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) 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: (primitive_type) 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: (primitive_type) 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: (primitive_type) 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: (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))) (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) (pointer_expression argument: (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: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) 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: (primitive_type) 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: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) right: (parenthesized_expression (binary_expression left: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier)) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier)))))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (parenthesized_expression (binary_expression left: (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: (primitive_type) 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: (primitive_type)) 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: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) 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: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) 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(int param_1,uint param_2,int param_3)

{
  int *piVar1;
  int *piVar2;
  char cVar3;
  int *piVar4;
  int local_60;
  int local_50;
  int local_4c;
  int local_48;
  int local_44;
  uint local_40;
  int local_3c;
  uint local_38;
  int local_34;
  int local_30;
  int local_2c;
  undefined4 local_28;
  int local_24;
  undefined1 local_20;
  undefined2 local_1f;
  
  local_60 = *(int *)(param_1 + 0x40) + 4;
  if (*(int *)(param_1 + 0x3c) == 8) {
    local_60 = *(int *)(param_1 + 0x40) + 0xc;
  }
  while (param_2 < (uint)(local_60 + *(int *)(param_1 + 8))) {
    local_20 = *(undefined1 *)(param_1 + 0x24);
    local_38 = 1;
    local_34 = 0;
    local_1f = 0;
    local_30 = 0;
    local_2c = 1;
    local_28 = 0;
    local_24 = -1;
    do {
      cVar3 = FUN_00214340(param_1,param_2,&local_38,&local_50);
      if ((cVar3 != '\0') && (((param_3 == -1 || (local_24 == param_3)) || (local_24 == -1)))) {
        local_4c = local_34;
        local_44 = *(int *)(param_1 + 0x74);
        local_48 = local_30;
        local_40 = local_38 & 0x7fffffff | 0x80000000;
        local_3c = local_2c;
        piVar4 = (int *)FUN_002169f0(param_1 + 0x90,&local_24);
        piVar2 = (int *)piVar4[1];
        if ((((piVar2 == (int *)*piVar4) || (piVar2[-4] != local_30 || piVar2[-5] != local_34)) ||
            (local_2c == -1)) || (piVar2[-1] == -1)) {
          piVar1 = (int *)piVar4[2];
        }
        else {
          *(byte *)((int)piVar2 + -5) = *(byte *)((int)piVar2 + -5) & 0x7f;
          piVar1 = (int *)piVar4[2];
        }
        if (piVar2 == piVar1) {
          FUN_002121f0(piVar4,piVar2,&local_4c);
        }
        else {
          *piVar2 = local_4c;
          piVar2[1] = local_48;
          piVar2[2] = local_44;
          piVar2[3] = local_40;
          piVar2[4] = local_3c;
          piVar4[1] = (int)(piVar2 + 5);
        }
      }
      param_2 = param_2 + local_50;
    } while (local_1f._1_1_ == '\0');
  }
  return;
}

