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

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

{
  undefined3 extraout_var;
  bool bVar2;
  int *piVar1;
  int *piVar3;
  int *piVar4;
  LineStateMachine lsm;
  Offset_to_lineno_entry entry;
  size_t oplength;
  code *local_38;
  code *local_34;
  uchar *local_30;
  
  if ((this->header_).offset_size == 8) {
    local_30 = this->buffer_ + 0xc;
  }
  else {
    local_30 = this->buffer_ + 4;
  }
  while( true ) {
    local_38 = (code *)PTR_operator___004c2a98;
    if (local_30 + (int)(this->header_).total_length <= lineptr) break;
    lsm.address._0_4_ = 0;
    lsm.address._4_4_ = 0;
    lsm.file_num = 1;
    lsm.line_num = 1;
    lsm.column_num = 0;
    lsm.shndx = 0xffffffff;
    lsm.basic_block = false;
    lsm.end_sequence = false;
    lsm.is_stmt = (this->header_).default_is_stmt;
    local_34 = (code *)PTR__M_realloc_insert<const_gold_Offset_to_lineno_entry&>_004c2aa0;
    do {
      bVar2 = process_one_opcode(this,lineptr,&lsm,&oplength);
      if ((CONCAT31(extraout_var,bVar2) != 0) &&
         (((shndx == 0xffffffff || (lsm.shndx == 0xffffffff)) || (lsm.shndx == shndx)))) {
        entry.header_num = this->current_header_index_;
        entry._12_4_ = lsm.file_num << 1 | 1;
        entry.offset._4_4_ = lsm.address._4_4_;
        entry.offset._0_4_ = lsm.address._0_4_;
        entry._20_4_ = 0;
        entry.line_num = lsm.line_num;
        piVar1 = (int *)(*local_38)(&this->line_number_map_,&lsm.shndx);
        piVar4 = (int *)piVar1[1];
        if ((((piVar4 == (int *)*piVar1) || (piVar4[-6] != lsm.address._0_4_)) ||
            (piVar4[-5] != lsm.address._4_4_)) || ((lsm.line_num == -1 || (piVar4[-2] == -1)))) {
          piVar3 = (int *)piVar1[2];
        }
        else {
          piVar4[-3] = piVar4[-3] & 0xfffffffe;
          piVar3 = (int *)piVar1[2];
        }
        if (piVar4 == piVar3) {
          (*local_34)(piVar1,piVar4,&entry);
        }
        else {
          piVar4[1] = entry.offset._4_4_;
          piVar4[2] = entry.header_num;
          *piVar4 = entry.offset._0_4_;
          piVar4[3] = entry._12_4_;
          piVar4[4] = entry.line_num;
          piVar4[5] = entry._20_4_;
          piVar1[1] = (int)(piVar4 + 6);
        }
      }
      lineptr = lineptr + oplength;
    } while (lsm.end_sequence == false);
  }
  return local_30 + (int)(this->header_).total_length;
}



/* gold::Sized_dwarf_line_info<32, true>::read_lines(unsigned char const*, unsigned int) */

void __thiscall
gold::Sized_dwarf_line_info<32,true>::read_lines
          (Sized_dwarf_line_info<32,true> *this,uchar *param_1,uint param_2)

{
  int iVar1;
  int *piVar2;
  int *piVar3;
  int *piVar4;
  int local_78 [2];
  int local_70;
  int local_6c;
  int local_68;
  undefined4 local_64;
  uint local_60;
  Sized_dwarf_line_info<32,true> local_5c;
  undefined1 local_5b;
  char local_5a;
  int local_58;
  int local_54;
  int local_50;
  uint local_4c;
  int local_48;
  int local_44;
  uint local_40 [2];
  code *local_38;
  code *local_34;
  int local_30;
  
  if (*(int *)(this + 0x40) == 8) {
    local_30 = *(int *)(this + 0x48) + 0xc;
  }
  else {
    local_30 = *(int *)(this + 0x48) + 4;
  }
  while (local_38 = (code *)PTR_operator___004c2a98,
        param_1 < (uchar *)(local_30 + *(int *)(this + 0xc))) {
    local_70 = 0;
    local_6c = 0;
    local_78[0] = 1;
    local_68 = 1;
    local_64 = 0;
    local_60 = 0xffffffff;
    local_5b = 0;
    local_5a = '\0';
    local_5c = this[0x28];
    local_34 = (code *)PTR__M_realloc_insert<gold_Offset_to_lineno_entry_const&>_004c2aa0;
    do {
      iVar1 = process_one_opcode(this,param_1,(LineStateMachine *)local_78,local_40);
      if ((iVar1 != 0) &&
         (((param_2 == 0xffffffff || (local_60 == 0xffffffff)) || (local_60 == param_2)))) {
        local_50 = *(int *)(this + 0x7c);
        local_4c = local_78[0] << 1 | 1;
        local_54 = local_6c;
        local_58 = local_70;
        local_44 = 0;
        local_48 = local_68;
        piVar2 = (int *)(*local_38)(this + 0x98,&local_60);
        piVar4 = (int *)piVar2[1];
        if ((((piVar4 == (int *)*piVar2) || (piVar4[-6] != local_70)) || (piVar4[-5] != local_6c))
           || ((local_68 == -1 || (piVar4[-2] == -1)))) {
          piVar3 = (int *)piVar2[2];
        }
        else {
          piVar4[-3] = piVar4[-3] & 0xfffffffe;
          piVar3 = (int *)piVar2[2];
        }
        if (piVar4 == piVar3) {
          (*local_34)(piVar2,piVar4,&local_58);
        }
        else {
          piVar4[1] = local_54;
          piVar4[2] = local_50;
          *piVar4 = local_58;
          piVar4[3] = local_4c;
          piVar4[4] = local_48;
          piVar4[5] = local_44;
          piVar2[1] = (int)(piVar4 + 6);
        }
      }
      param_1 = param_1 + local_40[0];
    } while (local_5a == '\0');
  }
  return;
}


lui gp,0x1e
addiu gp,gp,-0x4e8c
addu gp,gp,t9
addiu sp,sp,-0x90
lw v1,0x40(a0)
li v0,0x8
sw gp,0x10(sp)
sw s6,0x80(sp)
sw s3,0x74(sp)
or s3,a2,zero
sw s1,0x6c(sp)
or s1,a0,zero
sw s0,0x68(sp)
or s0,a1,zero
sw ra,0x8c(sp)
sw s8,0x88(sp)
sw s7,0x84(sp)
sw s5,0x7c(sp)
sw s4,0x78(sp)
sw s2,0x70(sp)
beq v1,v0,0x002ee320
_lw s6,0x48(a0)
addiu v0,s6,0x4
sw v0,0x60(sp)
addiu s6,sp,0x50
addiu s7,sp,0x30
addiu s5,s1,0x98
lw v1,0x60(sp)
lw v0,0xc(s1)
addu v0,v1,v0
sltu v1,s0,v0
beq v1,zero,0x002ee2f0
_lw a0,-0x67a8(gp)
or v0,zero,zero
or v1,zero,zero
lw s2,-0x679c(gp)
sw v0,0x20(sp)
li v0,0x1
sw v1,0x24(sp)
addiu s8,sp,0x18
sw a0,0x58(sp)
addiu s4,sp,0x38
sw v0,0x18(sp)
sw v0,0x28(sp)
li v0,-0x1
sw zero,0x2c(sp)
sw v0,0x30(sp)
sb zero,0x35(sp)
sb zero,0x36(sp)
lbu v1,0x28(s1)
lw a0,-0x67a0(gp)
sb v1,0x34(sp)
b 0x002ee1bc
_sw a0,0x5c(sp)
beq v1,s3,0x002ee1f4
_lw v0,0x18(sp)
lw v1,0x50(sp)
lbu v0,0x36(sp)
bne v0,zero,0x002ee138
_addu s0,s0,v1
or a3,s6,zero
or a2,s8,zero
or a1,s0,zero
or t9,s2,zero
bal 0x002ebb0c
_or a0,s1,zero
beq v0,zero,0x002ee1ac
_lw gp,0x10(sp)
li v0,-0x1
beq s3,v0,0x002ee1f0
_lw v1,0x30(sp)
bne v1,v0,0x002ee1a4
_nop
lw v0,0x18(sp)
li a2,0x1
lw v1,0x24(sp)
or a1,s7,zero
lw a3,0x7c(s1)
or a0,s5,zero
ins a2,v0,0x1,0x1f
lw v0,0x20(sp)
lw t9,0x58(sp)
sw v1,0x3c(sp)
sw v0,0x38(sp)
sw zero,0x4c(sp)
sw a3,0x40(sp)
sw a2,0x44(sp)
lw v0,0x28(sp)
jalr t9
_sw v0,0x48(sp)
lw a1,0x4(v0)
lw v1,0x0(v0)
beq a1,v1,0x002ee254
_lw gp,0x10(sp)
lw a0,-0x18(a1)
lw v1,0x20(sp)
beq a0,v1,0x002ee29c
_lw v1,0x24(sp)
lw v1,0x8(v0)
beq a1,v1,0x002ee2dc
_lw t9,0x5c(sp)
lw t4,0x3c(sp)
addiu v1,a1,0x18
lw t3,0x40(sp)
lw a3,0x44(sp)
lw a2,0x48(sp)
lw a0,0x4c(sp)
lw t5,0x38(sp)
sw t4,0x4(a1)
sw t3,0x8(a1)
sw t5,0x0(a1)
sw a3,0xc(a1)
sw a2,0x10(a1)
sw a0,0x14(a1)
b 0x002ee1ac
_sw v1,0x4(v0)
lw a0,-0x14(a1)
bne a0,v1,0x002ee254
_lw a0,0x28(sp)
li v1,-0x1
beq a0,v1,0x002ee254
_nop
lw a0,-0x8(a1)
beq a0,v1,0x002ee254
_nop
lw v1,-0xc(a1)
ins v1,zero,0x0,0x1
sw v1,-0xc(a1)
lw v1,0x8(v0)
bne a1,v1,0x002ee264
_lw t4,0x3c(sp)
lw t9,0x5c(sp)
or a2,s4,zero
jalr t9
_or a0,v0,zero
b 0x002ee1ac
_lw gp,0x10(sp)
lw ra,0x8c(sp)
lw s8,0x88(sp)
lw s7,0x84(sp)
lw s6,0x80(sp)
lw s5,0x7c(sp)
lw s4,0x78(sp)
lw s3,0x74(sp)
lw s2,0x70(sp)
lw s1,0x6c(sp)
lw s0,0x68(sp)
jr ra
_addiu sp,sp,0x90
addiu v0,s6,0xc
b 0x002ee12c
_sw v0,0x60(sp)
(translation_unit "/* gold::Sized_dwarf_line_info<32, true>::read_lines(unsigned char const*, unsigned int) */\n\nvoid __thiscall\ngold::Sized_dwarf_line_info<32,true>::read_lines\n          (Sized_dwarf_line_info<32,true> *this,uchar *param_1,uint param_2)\n\n{\n  int iVar1;\n  int *piVar2;\n  int *piVar3;\n  int *piVar4;\n  int local_78 [2];\n  int local_70;\n  int local_6c;\n  int local_68;\n  undefined4 local_64;\n  uint local_60;\n  Sized_dwarf_line_info<32,true> local_5c;\n  undefined1 local_5b;\n  char local_5a;\n  int local_58;\n  int local_54;\n  int local_50;\n  uint local_4c;\n  int local_48;\n  int local_44;\n  uint local_40 [2];\n  code *local_38;\n  code *local_34;\n  int local_30;\n  \n  if (*(int *)(this + 0x40) == 8) {\n    local_30 = *(int *)(this + 0x48) + 0xc;\n  }\n  else {\n    local_30 = *(int *)(this + 0x48) + 4;\n  }\n  while (local_38 = (code *)PTR_operator___004c2a98,\n        param_1 < (uchar *)(local_30 + *(int *)(this + 0xc))) {\n    local_70 = 0;\n    local_6c = 0;\n    local_78[0] = 1;\n    local_68 = 1;\n    local_64 = 0;\n    local_60 = 0xffffffff;\n    local_5b = 0;\n    local_5a = '\0';\n    local_5c = this[0x28];\n    local_34 = (code *)PTR__M_realloc_insert<gold_Offset_to_lineno_entry_const&>_004c2aa0;\n    do {\n      iVar1 = process_one_opcode(this,param_1,(LineStateMachine *)local_78,local_40);\n      if ((iVar1 != 0) &&\n         (((param_2 == 0xffffffff || (local_60 == 0xffffffff)) || (local_60 == param_2)))) {\n        local_50 = *(int *)(this + 0x7c);\n        local_4c = local_78[0] << 1 | 1;\n        local_54 = local_6c;\n        local_58 = local_70;\n        local_44 = 0;\n        local_48 = local_68;\n        piVar2 = (int *)(*local_38)(this + 0x98,&local_60);\n        piVar4 = (int *)piVar2[1];\n        if ((((piVar4 == (int *)*piVar2) || (piVar4[-6] != local_70)) || (piVar4[-5] != local_6c))\n           || ((local_68 == -1 || (piVar4[-2] == -1)))) {\n          piVar3 = (int *)piVar2[2];\n        }\n        else {\n          piVar4[-3] = piVar4[-3] & 0xfffffffe;\n          piVar3 = (int *)piVar2[2];\n        }\n        if (piVar4 == piVar3) {\n          (*local_34)(piVar2,piVar4,&local_58);\n        }\n        else {\n          piVar4[1] = local_54;\n          piVar4[2] = local_50;\n          *piVar4 = local_58;\n          piVar4[3] = local_4c;\n          piVar4[4] = local_48;\n          piVar4[5] = local_44;\n          piVar2[1] = (int)(piVar4 + 6);\n        }\n      }\n      param_1 = param_1 + local_40[0];\n    } while (local_5a == '\0');\n  }\n  return;\n}\n\n" comment (declaration "void __thiscall\ngold::Sized_dwarf_line_info<32,true>::read_lines\n          (Sized_dwarf_line_info<32,true> *this,uchar *param_1,uint param_2)\n\n{\n  int iVar1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::" identifier : :) identifier (ERROR "<32" < number_literal) , (ERROR "true>::read_lines\n          (Sized_dwarf_line_info<32,true> *this,uchar *param_1,uint param_2)\n\n{\n  int" identifier > : : (function_declarator "read_lines\n          (Sized_dwarf_line_info<32,true> *this,uchar *param_1,uint param_2)" identifier (parameter_list "(Sized_dwarf_line_info<32,true> *this,uchar *param_1,uint param_2)" ( (parameter_declaration "Sized_dwarf_line_info" type_identifier) (ERROR "<32" < number_literal) , (parameter_declaration "true> *this" type_identifier (ERROR ">" >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "uchar *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint param_2" type_identifier identifier) ))) { primitive_type) identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "int local_78 [2];" primitive_type (array_declarator "local_78 [2]" identifier [ number_literal ]) ;) (declaration "int local_70;" primitive_type identifier ;) (declaration "int local_6c;" primitive_type identifier ;) (declaration "int local_68;" primitive_type identifier ;) (declaration "undefined4 local_64;" type_identifier identifier ;) (declaration "uint local_60;" type_identifier identifier ;) (expression_statement "Sized_dwarf_line_info<32,true> local_5c;" (update_expression "Sized_dwarf_line_info<32,true> local_5c" (binary_expression "Sized_dwarf_line_info<32,true> local_5c" (binary_expression "Sized_dwarf_line_info<32" identifier < number_literal) (ERROR ",true" , true) > identifier) --) ;) (declaration "undefined1 local_5b;" type_identifier identifier ;) (declaration "char local_5a;" primitive_type identifier ;) (declaration "int local_58;" primitive_type identifier ;) (declaration "int local_54;" primitive_type identifier ;) (declaration "int local_50;" primitive_type identifier ;) (declaration "uint local_4c;" type_identifier identifier ;) (declaration "int local_48;" primitive_type identifier ;) (declaration "int local_44;" primitive_type identifier ;) (declaration "uint local_40 [2];" type_identifier (array_declarator "local_40 [2]" identifier [ number_literal ]) ;) (declaration "code *local_38;" type_identifier (pointer_declarator "*local_38" * identifier) ;) (declaration "code *local_34;" type_identifier (pointer_declarator "*local_34" * identifier) ;) (declaration "int local_30;" primitive_type identifier ;) (if_statement "if (*(int *)(this + 0x40) == 8) {\n    local_30 = *(int *)(this + 0x48) + 0xc;\n  }\n  else {\n    local_30 = *(int *)(this + 0x48) + 4;\n  }" if (parenthesized_expression "(*(int *)(this + 0x40) == 8)" ( (binary_expression "*(int *)(this + 0x40) == 8" (pointer_expression "*(int *)(this + 0x40)" * (cast_expression "(int *)(this + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x40)" ( (binary_expression "this + 0x40" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    local_30 = *(int *)(this + 0x48) + 0xc;\n  }" { (expression_statement "local_30 = *(int *)(this + 0x48) + 0xc;" (assignment_expression "local_30 = *(int *)(this + 0x48) + 0xc" identifier = (binary_expression "*(int *)(this + 0x48) + 0xc" (pointer_expression "*(int *)(this + 0x48)" * (cast_expression "(int *)(this + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x48)" ( (binary_expression "this + 0x48" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n    local_30 = *(int *)(this + 0x48) + 4;\n  }" else (compound_statement "{\n    local_30 = *(int *)(this + 0x48) + 4;\n  }" { (expression_statement "local_30 = *(int *)(this + 0x48) + 4;" (assignment_expression "local_30 = *(int *)(this + 0x48) + 4" identifier = (binary_expression "*(int *)(this + 0x48) + 4" (pointer_expression "*(int *)(this + 0x48)" * (cast_expression "(int *)(this + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x48)" ( (binary_expression "this + 0x48" identifier + number_literal) )))) + number_literal)) ;) }))) (while_statement "while (local_38 = (code *)PTR_operator___004c2a98,\n        param_1 < (uchar *)(local_30 + *(int *)(this + 0xc))) {\n    local_70 = 0;\n    local_6c = 0;\n    local_78[0] = 1;\n    local_68 = 1;\n    local_64 = 0;\n    local_60 = 0xffffffff;\n    local_5b = 0;\n    local_5a = '\0';\n    local_5c = this[0x28];\n    local_34 = (code *)PTR__M_realloc_insert<gold_Offset_to_lineno_entry_const&>_004c2aa0;\n    do {\n      iVar1 = process_one_opcode(this,param_1,(LineStateMachine *)local_78,local_40);\n      if ((iVar1 != 0) &&\n         (((param_2 == 0xffffffff || (local_60 == 0xffffffff)) || (local_60 == param_2)))) {\n        local_50 = *(int *)(this + 0x7c);\n        local_4c = local_78[0] << 1 | 1;\n        local_54 = local_6c;\n        local_58 = local_70;\n        local_44 = 0;\n        local_48 = local_68;\n        piVar2 = (int *)(*local_38)(this + 0x98,&local_60);\n        piVar4 = (int *)piVar2[1];\n        if ((((piVar4 == (int *)*piVar2) || (piVar4[-6] != local_70)) || (piVar4[-5] != local_6c))\n           || ((local_68 == -1 || (piVar4[-2] == -1)))) {\n          piVar3 = (int *)piVar2[2];\n        }\n        else {\n          piVar4[-3] = piVar4[-3] & 0xfffffffe;\n          piVar3 = (int *)piVar2[2];\n        }\n        if (piVar4 == piVar3) {\n          (*local_34)(piVar2,piVar4,&local_58);\n        }\n        else {\n          piVar4[1] = local_54;\n          piVar4[2] = local_50;\n          *piVar4 = local_58;\n          piVar4[3] = local_4c;\n          piVar4[4] = local_48;\n          piVar4[5] = local_44;\n          piVar2[1] = (int)(piVar4 + 6);\n        }\n      }\n      param_1 = param_1 + local_40[0];\n    } while (local_5a == '\0');\n  }" while (parenthesized_expression "(local_38 = (code *)PTR_operator___004c2a98,\n        param_1 < (uchar *)(local_30 + *(int *)(this + 0xc)))" ( (comma_expression "local_38 = (code *)PTR_operator___004c2a98,\n        param_1 < (uchar *)(local_30 + *(int *)(this + 0xc))" (assignment_expression "local_38 = (code *)PTR_operator___004c2a98" identifier = (cast_expression "(code *)PTR_operator___004c2a98" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , (binary_expression "param_1 < (uchar *)(local_30 + *(int *)(this + 0xc))" identifier < (cast_expression "(uchar *)(local_30 + *(int *)(this + 0xc))" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_30 + *(int *)(this + 0xc))" ( (binary_expression "local_30 + *(int *)(this + 0xc)" identifier + (pointer_expression "*(int *)(this + 0xc)" * (cast_expression "(int *)(this + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0xc)" ( (binary_expression "this + 0xc" identifier + number_literal) ))))) ))))) )) (compound_statement "{\n    local_70 = 0;\n    local_6c = 0;\n    local_78[0] = 1;\n    local_68 = 1;\n    local_64 = 0;\n    local_60 = 0xffffffff;\n    local_5b = 0;\n    local_5a = '\0';\n    local_5c = this[0x28];\n    local_34 = (code *)PTR__M_realloc_insert<gold_Offset_to_lineno_entry_const&>_004c2aa0;\n    do {\n      iVar1 = process_one_opcode(this,param_1,(LineStateMachine *)local_78,local_40);\n      if ((iVar1 != 0) &&\n         (((param_2 == 0xffffffff || (local_60 == 0xffffffff)) || (local_60 == param_2)))) {\n        local_50 = *(int *)(this + 0x7c);\n        local_4c = local_78[0] << 1 | 1;\n        local_54 = local_6c;\n        local_58 = local_70;\n        local_44 = 0;\n        local_48 = local_68;\n        piVar2 = (int *)(*local_38)(this + 0x98,&local_60);\n        piVar4 = (int *)piVar2[1];\n        if ((((piVar4 == (int *)*piVar2) || (piVar4[-6] != local_70)) || (piVar4[-5] != local_6c))\n           || ((local_68 == -1 || (piVar4[-2] == -1)))) {\n          piVar3 = (int *)piVar2[2];\n        }\n        else {\n          piVar4[-3] = piVar4[-3] & 0xfffffffe;\n          piVar3 = (int *)piVar2[2];\n        }\n        if (piVar4 == piVar3) {\n          (*local_34)(piVar2,piVar4,&local_58);\n        }\n        else {\n          piVar4[1] = local_54;\n          piVar4[2] = local_50;\n          *piVar4 = local_58;\n          piVar4[3] = local_4c;\n          piVar4[4] = local_48;\n          piVar4[5] = local_44;\n          piVar2[1] = (int)(piVar4 + 6);\n        }\n      }\n      param_1 = param_1 + local_40[0];\n    } while (local_5a == '\0');\n  }" { (expression_statement "local_70 = 0;" (assignment_expression "local_70 = 0" identifier = number_literal) ;) (expression_statement "local_6c = 0;" (assignment_expression "local_6c = 0" identifier = number_literal) ;) (expression_statement "local_78[0] = 1;" (assignment_expression "local_78[0] = 1" (subscript_expression "local_78[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_68 = 1;" (assignment_expression "local_68 = 1" identifier = number_literal) ;) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" identifier = number_literal) ;) (expression_statement "local_60 = 0xffffffff;" (assignment_expression "local_60 = 0xffffffff" identifier = number_literal) ;) (expression_statement "local_5b = 0;" (assignment_expression "local_5b = 0" identifier = number_literal) ;) (expression_statement "local_5a = '\0';" (assignment_expression "local_5a = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "local_5c = this[0x28];" (assignment_expression "local_5c = this[0x28]" identifier = (subscript_expression "this[0x28]" identifier [ number_literal ])) ;) (expression_statement "local_34 = (code *)PTR__M_realloc_insert<gold_Offset_to_lineno_entry_const&>_004c2aa0;" (assignment_expression "local_34 = (code *)PTR__M_realloc_insert<gold_Offset_to_lineno_entry_const&>_004c2aa0" identifier = (binary_expression "(code *)PTR__M_realloc_insert<gold_Offset_to_lineno_entry_const&>_004c2aa0" (binary_expression "(code *)PTR__M_realloc_insert<gold_Offset_to_lineno_entry_const" (cast_expression "(code *)PTR__M_realloc_insert" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) < identifier) (ERROR "&" &) > identifier)) ;) (do_statement "do {\n      iVar1 = process_one_opcode(this,param_1,(LineStateMachine *)local_78,local_40);\n      if ((iVar1 != 0) &&\n         (((param_2 == 0xffffffff || (local_60 == 0xffffffff)) || (local_60 == param_2)))) {\n        local_50 = *(int *)(this + 0x7c);\n        local_4c = local_78[0] << 1 | 1;\n        local_54 = local_6c;\n        local_58 = local_70;\n        local_44 = 0;\n        local_48 = local_68;\n        piVar2 = (int *)(*local_38)(this + 0x98,&local_60);\n        piVar4 = (int *)piVar2[1];\n        if ((((piVar4 == (int *)*piVar2) || (piVar4[-6] != local_70)) || (piVar4[-5] != local_6c))\n           || ((local_68 == -1 || (piVar4[-2] == -1)))) {\n          piVar3 = (int *)piVar2[2];\n        }\n        else {\n          piVar4[-3] = piVar4[-3] & 0xfffffffe;\n          piVar3 = (int *)piVar2[2];\n        }\n        if (piVar4 == piVar3) {\n          (*local_34)(piVar2,piVar4,&local_58);\n        }\n        else {\n          piVar4[1] = local_54;\n          piVar4[2] = local_50;\n          *piVar4 = local_58;\n          piVar4[3] = local_4c;\n          piVar4[4] = local_48;\n          piVar4[5] = local_44;\n          piVar2[1] = (int)(piVar4 + 6);\n        }\n      }\n      param_1 = param_1 + local_40[0];\n    } while (local_5a == '\0');" do (compound_statement "{\n      iVar1 = process_one_opcode(this,param_1,(LineStateMachine *)local_78,local_40);\n      if ((iVar1 != 0) &&\n         (((param_2 == 0xffffffff || (local_60 == 0xffffffff)) || (local_60 == param_2)))) {\n        local_50 = *(int *)(this + 0x7c);\n        local_4c = local_78[0] << 1 | 1;\n        local_54 = local_6c;\n        local_58 = local_70;\n        local_44 = 0;\n        local_48 = local_68;\n        piVar2 = (int *)(*local_38)(this + 0x98,&local_60);\n        piVar4 = (int *)piVar2[1];\n        if ((((piVar4 == (int *)*piVar2) || (piVar4[-6] != local_70)) || (piVar4[-5] != local_6c))\n           || ((local_68 == -1 || (piVar4[-2] == -1)))) {\n          piVar3 = (int *)piVar2[2];\n        }\n        else {\n          piVar4[-3] = piVar4[-3] & 0xfffffffe;\n          piVar3 = (int *)piVar2[2];\n        }\n        if (piVar4 == piVar3) {\n          (*local_34)(piVar2,piVar4,&local_58);\n        }\n        else {\n          piVar4[1] = local_54;\n          piVar4[2] = local_50;\n          *piVar4 = local_58;\n          piVar4[3] = local_4c;\n          piVar4[4] = local_48;\n          piVar4[5] = local_44;\n          piVar2[1] = (int)(piVar4 + 6);\n        }\n      }\n      param_1 = param_1 + local_40[0];\n    }" { (expression_statement "iVar1 = process_one_opcode(this,param_1,(LineStateMachine *)local_78,local_40);" (assignment_expression "iVar1 = process_one_opcode(this,param_1,(LineStateMachine *)local_78,local_40)" identifier = (call_expression "process_one_opcode(this,param_1,(LineStateMachine *)local_78,local_40)" identifier (argument_list "(this,param_1,(LineStateMachine *)local_78,local_40)" ( identifier , identifier , (cast_expression "(LineStateMachine *)local_78" ( (type_descriptor "LineStateMachine *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier )))) ;) (if_statement "if ((iVar1 != 0) &&\n         (((param_2 == 0xffffffff || (local_60 == 0xffffffff)) || (local_60 == param_2)))) {\n        local_50 = *(int *)(this + 0x7c);\n        local_4c = local_78[0] << 1 | 1;\n        local_54 = local_6c;\n        local_58 = local_70;\n        local_44 = 0;\n        local_48 = local_68;\n        piVar2 = (int *)(*local_38)(this + 0x98,&local_60);\n        piVar4 = (int *)piVar2[1];\n        if ((((piVar4 == (int *)*piVar2) || (piVar4[-6] != local_70)) || (piVar4[-5] != local_6c))\n           || ((local_68 == -1 || (piVar4[-2] == -1)))) {\n          piVar3 = (int *)piVar2[2];\n        }\n        else {\n          piVar4[-3] = piVar4[-3] & 0xfffffffe;\n          piVar3 = (int *)piVar2[2];\n        }\n        if (piVar4 == piVar3) {\n          (*local_34)(piVar2,piVar4,&local_58);\n        }\n        else {\n          piVar4[1] = local_54;\n          piVar4[2] = local_50;\n          *piVar4 = local_58;\n          piVar4[3] = local_4c;\n          piVar4[4] = local_48;\n          piVar4[5] = local_44;\n          piVar2[1] = (int)(piVar4 + 6);\n        }\n      }" if (parenthesized_expression "((iVar1 != 0) &&\n         (((param_2 == 0xffffffff || (local_60 == 0xffffffff)) || (local_60 == param_2))))" ( (binary_expression "(iVar1 != 0) &&\n         (((param_2 == 0xffffffff || (local_60 == 0xffffffff)) || (local_60 == param_2)))" (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) && (parenthesized_expression "(((param_2 == 0xffffffff || (local_60 == 0xffffffff)) || (local_60 == param_2)))" ( (parenthesized_expression "((param_2 == 0xffffffff || (local_60 == 0xffffffff)) || (local_60 == param_2))" ( (binary_expression "(param_2 == 0xffffffff || (local_60 == 0xffffffff)) || (local_60 == param_2)" (parenthesized_expression "(param_2 == 0xffffffff || (local_60 == 0xffffffff))" ( (binary_expression "param_2 == 0xffffffff || (local_60 == 0xffffffff)" (binary_expression "param_2 == 0xffffffff" identifier == number_literal) || (parenthesized_expression "(local_60 == 0xffffffff)" ( (binary_expression "local_60 == 0xffffffff" identifier == number_literal) ))) )) || (parenthesized_expression "(local_60 == param_2)" ( (binary_expression "local_60 == param_2" identifier == identifier) ))) )) ))) )) (compound_statement "{\n        local_50 = *(int *)(this + 0x7c);\n        local_4c = local_78[0] << 1 | 1;\n        local_54 = local_6c;\n        local_58 = local_70;\n        local_44 = 0;\n        local_48 = local_68;\n        piVar2 = (int *)(*local_38)(this + 0x98,&local_60);\n        piVar4 = (int *)piVar2[1];\n        if ((((piVar4 == (int *)*piVar2) || (piVar4[-6] != local_70)) || (piVar4[-5] != local_6c))\n           || ((local_68 == -1 || (piVar4[-2] == -1)))) {\n          piVar3 = (int *)piVar2[2];\n        }\n        else {\n          piVar4[-3] = piVar4[-3] & 0xfffffffe;\n          piVar3 = (int *)piVar2[2];\n        }\n        if (piVar4 == piVar3) {\n          (*local_34)(piVar2,piVar4,&local_58);\n        }\n        else {\n          piVar4[1] = local_54;\n          piVar4[2] = local_50;\n          *piVar4 = local_58;\n          piVar4[3] = local_4c;\n          piVar4[4] = local_48;\n          piVar4[5] = local_44;\n          piVar2[1] = (int)(piVar4 + 6);\n        }\n      }" { (expression_statement "local_50 = *(int *)(this + 0x7c);" (assignment_expression "local_50 = *(int *)(this + 0x7c)" identifier = (pointer_expression "*(int *)(this + 0x7c)" * (cast_expression "(int *)(this + 0x7c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x7c)" ( (binary_expression "this + 0x7c" identifier + number_literal) ))))) ;) (expression_statement "local_4c = local_78[0] << 1 | 1;" (assignment_expression "local_4c = local_78[0] << 1 | 1" identifier = (binary_expression "local_78[0] << 1 | 1" (binary_expression "local_78[0] << 1" (subscript_expression "local_78[0]" identifier [ number_literal ]) << number_literal) | number_literal)) ;) (expression_statement "local_54 = local_6c;" (assignment_expression "local_54 = local_6c" identifier = identifier) ;) (expression_statement "local_58 = local_70;" (assignment_expression "local_58 = local_70" identifier = identifier) ;) (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" identifier = number_literal) ;) (expression_statement "local_48 = local_68;" (assignment_expression "local_48 = local_68" identifier = identifier) ;) (expression_statement "piVar2 = (int *)(*local_38)(this + 0x98,&local_60);" (assignment_expression "piVar2 = (int *)(*local_38)(this + 0x98,&local_60)" identifier = (cast_expression "(int *)(*local_38)(this + 0x98,&local_60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*local_38)(this + 0x98,&local_60)" (parenthesized_expression "(*local_38)" ( (pointer_expression "*local_38" * identifier) )) (argument_list "(this + 0x98,&local_60)" ( (binary_expression "this + 0x98" identifier + number_literal) , (pointer_expression "&local_60" & identifier) ))))) ;) (expression_statement "piVar4 = (int *)piVar2[1];" (assignment_expression "piVar4 = (int *)piVar2[1]" identifier = (cast_expression "(int *)piVar2[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[1]" identifier [ number_literal ]))) ;) (if_statement "if ((((piVar4 == (int *)*piVar2) || (piVar4[-6] != local_70)) || (piVar4[-5] != local_6c))\n           || ((local_68 == -1 || (piVar4[-2] == -1)))) {\n          piVar3 = (int *)piVar2[2];\n        }\n        else {\n          piVar4[-3] = piVar4[-3] & 0xfffffffe;\n          piVar3 = (int *)piVar2[2];\n        }" if (parenthesized_expression "((((piVar4 == (int *)*piVar2) || (piVar4[-6] != local_70)) || (piVar4[-5] != local_6c))\n           || ((local_68 == -1 || (piVar4[-2] == -1))))" ( (binary_expression "(((piVar4 == (int *)*piVar2) || (piVar4[-6] != local_70)) || (piVar4[-5] != local_6c))\n           || ((local_68 == -1 || (piVar4[-2] == -1)))" (parenthesized_expression "(((piVar4 == (int *)*piVar2) || (piVar4[-6] != local_70)) || (piVar4[-5] != local_6c))" ( (binary_expression "((piVar4 == (int *)*piVar2) || (piVar4[-6] != local_70)) || (piVar4[-5] != local_6c)" (parenthesized_expression "((piVar4 == (int *)*piVar2) || (piVar4[-6] != local_70))" ( (binary_expression "(piVar4 == (int *)*piVar2) || (piVar4[-6] != local_70)" (parenthesized_expression "(piVar4 == (int *)*piVar2)" ( (binary_expression "piVar4 == (int *)*piVar2" identifier == (cast_expression "(int *)*piVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar2" * identifier))) )) || (parenthesized_expression "(piVar4[-6] != local_70)" ( (binary_expression "piVar4[-6] != local_70" (subscript_expression "piVar4[-6]" identifier [ number_literal ]) != identifier) ))) )) || (parenthesized_expression "(piVar4[-5] != local_6c)" ( (binary_expression "piVar4[-5] != local_6c" (subscript_expression "piVar4[-5]" identifier [ number_literal ]) != identifier) ))) )) || (parenthesized_expression "((local_68 == -1 || (piVar4[-2] == -1)))" ( (parenthesized_expression "(local_68 == -1 || (piVar4[-2] == -1))" ( (binary_expression "local_68 == -1 || (piVar4[-2] == -1)" (binary_expression "local_68 == -1" identifier == number_literal) || (parenthesized_expression "(piVar4[-2] == -1)" ( (binary_expression "piVar4[-2] == -1" (subscript_expression "piVar4[-2]" identifier [ number_literal ]) == number_literal) ))) )) ))) )) (compound_statement "{\n          piVar3 = (int *)piVar2[2];\n        }" { (expression_statement "piVar3 = (int *)piVar2[2];" (assignment_expression "piVar3 = (int *)piVar2[2]" identifier = (cast_expression "(int *)piVar2[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[2]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n          piVar4[-3] = piVar4[-3] & 0xfffffffe;\n          piVar3 = (int *)piVar2[2];\n        }" else (compound_statement "{\n          piVar4[-3] = piVar4[-3] & 0xfffffffe;\n          piVar3 = (int *)piVar2[2];\n        }" { (expression_statement "piVar4[-3] = piVar4[-3] & 0xfffffffe;" (assignment_expression "piVar4[-3] = piVar4[-3] & 0xfffffffe" (subscript_expression "piVar4[-3]" identifier [ number_literal ]) = (binary_expression "piVar4[-3] & 0xfffffffe" (subscript_expression "piVar4[-3]" identifier [ number_literal ]) & number_literal)) ;) (expression_statement "piVar3 = (int *)piVar2[2];" (assignment_expression "piVar3 = (int *)piVar2[2]" identifier = (cast_expression "(int *)piVar2[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[2]" identifier [ number_literal ]))) ;) }))) (if_statement "if (piVar4 == piVar3) {\n          (*local_34)(piVar2,piVar4,&local_58);\n        }\n        else {\n          piVar4[1] = local_54;\n          piVar4[2] = local_50;\n          *piVar4 = local_58;\n          piVar4[3] = local_4c;\n          piVar4[4] = local_48;\n          piVar4[5] = local_44;\n          piVar2[1] = (int)(piVar4 + 6);\n        }" if (parenthesized_expression "(piVar4 == piVar3)" ( (binary_expression "piVar4 == piVar3" identifier == identifier) )) (compound_statement "{\n          (*local_34)(piVar2,piVar4,&local_58);\n        }" { (expression_statement "(*local_34)(piVar2,piVar4,&local_58);" (call_expression "(*local_34)(piVar2,piVar4,&local_58)" (parenthesized_expression "(*local_34)" ( (pointer_expression "*local_34" * identifier) )) (argument_list "(piVar2,piVar4,&local_58)" ( identifier , identifier , (pointer_expression "&local_58" & identifier) ))) ;) }) (else_clause "else {\n          piVar4[1] = local_54;\n          piVar4[2] = local_50;\n          *piVar4 = local_58;\n          piVar4[3] = local_4c;\n          piVar4[4] = local_48;\n          piVar4[5] = local_44;\n          piVar2[1] = (int)(piVar4 + 6);\n        }" else (compound_statement "{\n          piVar4[1] = local_54;\n          piVar4[2] = local_50;\n          *piVar4 = local_58;\n          piVar4[3] = local_4c;\n          piVar4[4] = local_48;\n          piVar4[5] = local_44;\n          piVar2[1] = (int)(piVar4 + 6);\n        }" { (expression_statement "piVar4[1] = local_54;" (assignment_expression "piVar4[1] = local_54" (subscript_expression "piVar4[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar4[2] = local_50;" (assignment_expression "piVar4[2] = local_50" (subscript_expression "piVar4[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*piVar4 = local_58;" (assignment_expression "*piVar4 = local_58" (pointer_expression "*piVar4" * identifier) = identifier) ;) (expression_statement "piVar4[3] = local_4c;" (assignment_expression "piVar4[3] = local_4c" (subscript_expression "piVar4[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar4[4] = local_48;" (assignment_expression "piVar4[4] = local_48" (subscript_expression "piVar4[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar4[5] = local_44;" (assignment_expression "piVar4[5] = local_44" (subscript_expression "piVar4[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar2[1] = (int)(piVar4 + 6);" (assignment_expression "piVar2[1] = (int)(piVar4 + 6)" (subscript_expression "piVar2[1]" identifier [ number_literal ]) = (cast_expression "(int)(piVar4 + 6)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(piVar4 + 6)" ( (binary_expression "piVar4 + 6" identifier + number_literal) )))) ;) }))) })) (expression_statement "param_1 = param_1 + local_40[0];" (assignment_expression "param_1 = param_1 + local_40[0]" identifier = (binary_expression "param_1 + local_40[0]" identifier + (subscript_expression "local_40[0]" identifier [ number_literal ]))) ;) }) while (parenthesized_expression "(local_5a == '\0')" ( (binary_expression "local_5a == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) ;) })) (return_statement "return;" return ;) (ERROR "}" }))
(translation_unit "/* DWARF original prototype: uchar * read_lines(Sized_dwarf_line_info<32,_true> * this, uchar *\n   lineptr, uint shndx) */\n\nuchar * __thiscall\ngold::Sized_dwarf_line_info<32,_true>::read_lines\n          (Sized_dwarf_line_info<32,_true> *this,uchar *lineptr,uint shndx)\n\n{\n  undefined3 extraout_var;\n  bool bVar2;\n  int *piVar1;\n  int *piVar3;\n  int *piVar4;\n  LineStateMachine lsm;\n  Offset_to_lineno_entry entry;\n  size_t oplength;\n  code *local_38;\n  code *local_34;\n  uchar *local_30;\n  \n  if ((this->header_).offset_size == 8) {\n    local_30 = this->buffer_ + 0xc;\n  }\n  else {\n    local_30 = this->buffer_ + 4;\n  }\n  while( true ) {\n    local_38 = (code *)PTR_operator___004c2a98;\n    if (local_30 + (int)(this->header_).total_length <= lineptr) break;\n    lsm.address._0_4_ = 0;\n    lsm.address._4_4_ = 0;\n    lsm.file_num = 1;\n    lsm.line_num = 1;\n    lsm.column_num = 0;\n    lsm.shndx = 0xffffffff;\n    lsm.basic_block = false;\n    lsm.end_sequence = false;\n    lsm.is_stmt = (this->header_).default_is_stmt;\n    local_34 = (code *)PTR__M_realloc_insert<const_gold_Offset_to_lineno_entry&>_004c2aa0;\n    do {\n      bVar2 = process_one_opcode(this,lineptr,&lsm,&oplength);\n      if ((CONCAT31(extraout_var,bVar2) != 0) &&\n         (((shndx == 0xffffffff || (lsm.shndx == 0xffffffff)) || (lsm.shndx == shndx)))) {\n        entry.header_num = this->current_header_index_;\n        entry._12_4_ = lsm.file_num << 1 | 1;\n        entry.offset._4_4_ = lsm.address._4_4_;\n        entry.offset._0_4_ = lsm.address._0_4_;\n        entry._20_4_ = 0;\n        entry.line_num = lsm.line_num;\n        piVar1 = (int *)(*local_38)(&this->line_number_map_,&lsm.shndx);\n        piVar4 = (int *)piVar1[1];\n        if ((((piVar4 == (int *)*piVar1) || (piVar4[-6] != lsm.address._0_4_)) ||\n            (piVar4[-5] != lsm.address._4_4_)) || ((lsm.line_num == -1 || (piVar4[-2] == -1)))) {\n          piVar3 = (int *)piVar1[2];\n        }\n        else {\n          piVar4[-3] = piVar4[-3] & 0xfffffffe;\n          piVar3 = (int *)piVar1[2];\n        }\n        if (piVar4 == piVar3) {\n          (*local_34)(piVar1,piVar4,&entry);\n        }\n        else {\n          piVar4[1] = entry.offset._4_4_;\n          piVar4[2] = entry.header_num;\n          *piVar4 = entry.offset._0_4_;\n          piVar4[3] = entry._12_4_;\n          piVar4[4] = entry.line_num;\n          piVar4[5] = entry._20_4_;\n          piVar1[1] = (int)(piVar4 + 6);\n        }\n      }\n      lineptr = lineptr + oplength;\n    } while (lsm.end_sequence == false);\n  }\n  return local_30 + (int)(this->header_).total_length;\n}\n\n" comment (ERROR "uchar * __thiscall\ngold::Sized_dwarf_line_info<32,_true>::read_lines\n          (Sized_dwarf_line_info<32,_true> *this,uchar *lineptr,uint shndx)" (binary_expression "uchar * __thiscall\ngold::Sized_dwarf_line_info<32,_true>::read_lines\n          (Sized_dwarf_line_info<32,_true> *this,uchar *lineptr,uint shndx)" (binary_expression "uchar * __thiscall\ngold::Sized_dwarf_line_info<32" (binary_expression "uchar * __thiscall" identifier * identifier) (ERROR "gold::Sized_dwarf_line_info" identifier : : identifier) < number_literal) (ERROR ",_true" , identifier) > (ERROR "::" : :) (call_expression "read_lines\n          (Sized_dwarf_line_info<32,_true> *this,uchar *lineptr,uint shndx)" identifier (argument_list "(Sized_dwarf_line_info<32,_true> *this,uchar *lineptr,uint shndx)" ( (binary_expression "Sized_dwarf_line_info<32" identifier < number_literal) , (binary_expression "_true> *this" identifier > (pointer_expression "*this" * identifier)) , (binary_expression "uchar *lineptr" identifier * identifier) , (ERROR "uint" identifier) identifier ))))) (compound_statement "{\n  undefined3 extraout_var;\n  bool bVar2;\n  int *piVar1;\n  int *piVar3;\n  int *piVar4;\n  LineStateMachine lsm;\n  Offset_to_lineno_entry entry;\n  size_t oplength;\n  code *local_38;\n  code *local_34;\n  uchar *local_30;\n  \n  if ((this->header_).offset_size == 8) {\n    local_30 = this->buffer_ + 0xc;\n  }\n  else {\n    local_30 = this->buffer_ + 4;\n  }\n  while( true ) {\n    local_38 = (code *)PTR_operator___004c2a98;\n    if (local_30 + (int)(this->header_).total_length <= lineptr) break;\n    lsm.address._0_4_ = 0;\n    lsm.address._4_4_ = 0;\n    lsm.file_num = 1;\n    lsm.line_num = 1;\n    lsm.column_num = 0;\n    lsm.shndx = 0xffffffff;\n    lsm.basic_block = false;\n    lsm.end_sequence = false;\n    lsm.is_stmt = (this->header_).default_is_stmt;\n    local_34 = (code *)PTR__M_realloc_insert<const_gold_Offset_to_lineno_entry&>_004c2aa0;\n    do {\n      bVar2 = process_one_opcode(this,lineptr,&lsm,&oplength);\n      if ((CONCAT31(extraout_var,bVar2) != 0) &&\n         (((shndx == 0xffffffff || (lsm.shndx == 0xffffffff)) || (lsm.shndx == shndx)))) {\n        entry.header_num = this->current_header_index_;\n        entry._12_4_ = lsm.file_num << 1 | 1;\n        entry.offset._4_4_ = lsm.address._4_4_;\n        entry.offset._0_4_ = lsm.address._0_4_;\n        entry._20_4_ = 0;\n        entry.line_num = lsm.line_num;\n        piVar1 = (int *)(*local_38)(&this->line_number_map_,&lsm.shndx);\n        piVar4 = (int *)piVar1[1];\n        if ((((piVar4 == (int *)*piVar1) || (piVar4[-6] != lsm.address._0_4_)) ||\n            (piVar4[-5] != lsm.address._4_4_)) || ((lsm.line_num == -1 || (piVar4[-2] == -1)))) {\n          piVar3 = (int *)piVar1[2];\n        }\n        else {\n          piVar4[-3] = piVar4[-3] & 0xfffffffe;\n          piVar3 = (int *)piVar1[2];\n        }\n        if (piVar4 == piVar3) {\n          (*local_34)(piVar1,piVar4,&entry);\n        }\n        else {\n          piVar4[1] = entry.offset._4_4_;\n          piVar4[2] = entry.header_num;\n          *piVar4 = entry.offset._0_4_;\n          piVar4[3] = entry._12_4_;\n          piVar4[4] = entry.line_num;\n          piVar4[5] = entry._20_4_;\n          piVar1[1] = (int)(piVar4 + 6);\n        }\n      }\n      lineptr = lineptr + oplength;\n    } while (lsm.end_sequence == false);\n  }\n  return local_30 + (int)(this->header_).total_length;\n}" { (declaration "undefined3 extraout_var;" type_identifier identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "LineStateMachine lsm;" type_identifier identifier ;) (declaration "Offset_to_lineno_entry entry;" type_identifier identifier ;) (declaration "size_t oplength;" primitive_type identifier ;) (declaration "code *local_38;" type_identifier (pointer_declarator "*local_38" * identifier) ;) (declaration "code *local_34;" type_identifier (pointer_declarator "*local_34" * identifier) ;) (declaration "uchar *local_30;" type_identifier (pointer_declarator "*local_30" * identifier) ;) (if_statement "if ((this->header_).offset_size == 8) {\n    local_30 = this->buffer_ + 0xc;\n  }\n  else {\n    local_30 = this->buffer_ + 4;\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_30 = this->buffer_ + 0xc;\n  }" { (expression_statement "local_30 = this->buffer_ + 0xc;" (assignment_expression "local_30 = this->buffer_ + 0xc" identifier = (binary_expression "this->buffer_ + 0xc" (field_expression "this->buffer_" identifier -> field_identifier) + number_literal)) ;) }) (else_clause "else {\n    local_30 = this->buffer_ + 4;\n  }" else (compound_statement "{\n    local_30 = this->buffer_ + 4;\n  }" { (expression_statement "local_30 = this->buffer_ + 4;" (assignment_expression "local_30 = this->buffer_ + 4" identifier = (binary_expression "this->buffer_ + 4" (field_expression "this->buffer_" identifier -> field_identifier) + number_literal)) ;) }))) (while_statement "while( true ) {\n    local_38 = (code *)PTR_operator___004c2a98;\n    if (local_30 + (int)(this->header_).total_length <= lineptr) break;\n    lsm.address._0_4_ = 0;\n    lsm.address._4_4_ = 0;\n    lsm.file_num = 1;\n    lsm.line_num = 1;\n    lsm.column_num = 0;\n    lsm.shndx = 0xffffffff;\n    lsm.basic_block = false;\n    lsm.end_sequence = false;\n    lsm.is_stmt = (this->header_).default_is_stmt;\n    local_34 = (code *)PTR__M_realloc_insert<const_gold_Offset_to_lineno_entry&>_004c2aa0;\n    do {\n      bVar2 = process_one_opcode(this,lineptr,&lsm,&oplength);\n      if ((CONCAT31(extraout_var,bVar2) != 0) &&\n         (((shndx == 0xffffffff || (lsm.shndx == 0xffffffff)) || (lsm.shndx == shndx)))) {\n        entry.header_num = this->current_header_index_;\n        entry._12_4_ = lsm.file_num << 1 | 1;\n        entry.offset._4_4_ = lsm.address._4_4_;\n        entry.offset._0_4_ = lsm.address._0_4_;\n        entry._20_4_ = 0;\n        entry.line_num = lsm.line_num;\n        piVar1 = (int *)(*local_38)(&this->line_number_map_,&lsm.shndx);\n        piVar4 = (int *)piVar1[1];\n        if ((((piVar4 == (int *)*piVar1) || (piVar4[-6] != lsm.address._0_4_)) ||\n            (piVar4[-5] != lsm.address._4_4_)) || ((lsm.line_num == -1 || (piVar4[-2] == -1)))) {\n          piVar3 = (int *)piVar1[2];\n        }\n        else {\n          piVar4[-3] = piVar4[-3] & 0xfffffffe;\n          piVar3 = (int *)piVar1[2];\n        }\n        if (piVar4 == piVar3) {\n          (*local_34)(piVar1,piVar4,&entry);\n        }\n        else {\n          piVar4[1] = entry.offset._4_4_;\n          piVar4[2] = entry.header_num;\n          *piVar4 = entry.offset._0_4_;\n          piVar4[3] = entry._12_4_;\n          piVar4[4] = entry.line_num;\n          piVar4[5] = entry._20_4_;\n          piVar1[1] = (int)(piVar4 + 6);\n        }\n      }\n      lineptr = lineptr + oplength;\n    } while (lsm.end_sequence == false);\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    local_38 = (code *)PTR_operator___004c2a98;\n    if (local_30 + (int)(this->header_).total_length <= lineptr) break;\n    lsm.address._0_4_ = 0;\n    lsm.address._4_4_ = 0;\n    lsm.file_num = 1;\n    lsm.line_num = 1;\n    lsm.column_num = 0;\n    lsm.shndx = 0xffffffff;\n    lsm.basic_block = false;\n    lsm.end_sequence = false;\n    lsm.is_stmt = (this->header_).default_is_stmt;\n    local_34 = (code *)PTR__M_realloc_insert<const_gold_Offset_to_lineno_entry&>_004c2aa0;\n    do {\n      bVar2 = process_one_opcode(this,lineptr,&lsm,&oplength);\n      if ((CONCAT31(extraout_var,bVar2) != 0) &&\n         (((shndx == 0xffffffff || (lsm.shndx == 0xffffffff)) || (lsm.shndx == shndx)))) {\n        entry.header_num = this->current_header_index_;\n        entry._12_4_ = lsm.file_num << 1 | 1;\n        entry.offset._4_4_ = lsm.address._4_4_;\n        entry.offset._0_4_ = lsm.address._0_4_;\n        entry._20_4_ = 0;\n        entry.line_num = lsm.line_num;\n        piVar1 = (int *)(*local_38)(&this->line_number_map_,&lsm.shndx);\n        piVar4 = (int *)piVar1[1];\n        if ((((piVar4 == (int *)*piVar1) || (piVar4[-6] != lsm.address._0_4_)) ||\n            (piVar4[-5] != lsm.address._4_4_)) || ((lsm.line_num == -1 || (piVar4[-2] == -1)))) {\n          piVar3 = (int *)piVar1[2];\n        }\n        else {\n          piVar4[-3] = piVar4[-3] & 0xfffffffe;\n          piVar3 = (int *)piVar1[2];\n        }\n        if (piVar4 == piVar3) {\n          (*local_34)(piVar1,piVar4,&entry);\n        }\n        else {\n          piVar4[1] = entry.offset._4_4_;\n          piVar4[2] = entry.header_num;\n          *piVar4 = entry.offset._0_4_;\n          piVar4[3] = entry._12_4_;\n          piVar4[4] = entry.line_num;\n          piVar4[5] = entry._20_4_;\n          piVar1[1] = (int)(piVar4 + 6);\n        }\n      }\n      lineptr = lineptr + oplength;\n    } while (lsm.end_sequence == false);\n  }" { (expression_statement "local_38 = (code *)PTR_operator___004c2a98;" (assignment_expression "local_38 = (code *)PTR_operator___004c2a98" identifier = (cast_expression "(code *)PTR_operator___004c2a98" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (local_30 + (int)(this->header_).total_length <= lineptr) break;" if (parenthesized_expression "(local_30 + (int)(this->header_).total_length <= lineptr)" ( (binary_expression "local_30 + (int)(this->header_).total_length <= lineptr" (binary_expression "local_30 + (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))) <= identifier) )) (break_statement "break;" break ;)) (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.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.file_num = 1;" (assignment_expression "lsm.file_num = 1" (field_expression "lsm.file_num" identifier . field_identifier) = number_literal) ;) (expression_statement "lsm.line_num = 1;" (assignment_expression "lsm.line_num = 1" (field_expression "lsm.line_num" identifier . field_identifier) = number_literal) ;) (expression_statement "lsm.column_num = 0;" (assignment_expression "lsm.column_num = 0" (field_expression "lsm.column_num" identifier . field_identifier) = number_literal) ;) (expression_statement "lsm.shndx = 0xffffffff;" (assignment_expression "lsm.shndx = 0xffffffff" (field_expression "lsm.shndx" identifier . field_identifier) = number_literal) ;) (expression_statement "lsm.basic_block = false;" (assignment_expression "lsm.basic_block = false" (field_expression "lsm.basic_block" identifier . field_identifier) = false) ;) (expression_statement "lsm.end_sequence = false;" (assignment_expression "lsm.end_sequence = false" (field_expression "lsm.end_sequence" identifier . field_identifier) = false) ;) (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 "local_34 = (code *)PTR__M_realloc_insert<const_gold_Offset_to_lineno_entry&>_004c2aa0;" (assignment_expression "local_34 = (code *)PTR__M_realloc_insert<const_gold_Offset_to_lineno_entry&>_004c2aa0" identifier = (binary_expression "(code *)PTR__M_realloc_insert<const_gold_Offset_to_lineno_entry&>_004c2aa0" (binary_expression "(code *)PTR__M_realloc_insert<const_gold_Offset_to_lineno_entry" (cast_expression "(code *)PTR__M_realloc_insert" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) < identifier) (ERROR "&" &) > identifier)) ;) (do_statement "do {\n      bVar2 = process_one_opcode(this,lineptr,&lsm,&oplength);\n      if ((CONCAT31(extraout_var,bVar2) != 0) &&\n         (((shndx == 0xffffffff || (lsm.shndx == 0xffffffff)) || (lsm.shndx == shndx)))) {\n        entry.header_num = this->current_header_index_;\n        entry._12_4_ = lsm.file_num << 1 | 1;\n        entry.offset._4_4_ = lsm.address._4_4_;\n        entry.offset._0_4_ = lsm.address._0_4_;\n        entry._20_4_ = 0;\n        entry.line_num = lsm.line_num;\n        piVar1 = (int *)(*local_38)(&this->line_number_map_,&lsm.shndx);\n        piVar4 = (int *)piVar1[1];\n        if ((((piVar4 == (int *)*piVar1) || (piVar4[-6] != lsm.address._0_4_)) ||\n            (piVar4[-5] != lsm.address._4_4_)) || ((lsm.line_num == -1 || (piVar4[-2] == -1)))) {\n          piVar3 = (int *)piVar1[2];\n        }\n        else {\n          piVar4[-3] = piVar4[-3] & 0xfffffffe;\n          piVar3 = (int *)piVar1[2];\n        }\n        if (piVar4 == piVar3) {\n          (*local_34)(piVar1,piVar4,&entry);\n        }\n        else {\n          piVar4[1] = entry.offset._4_4_;\n          piVar4[2] = entry.header_num;\n          *piVar4 = entry.offset._0_4_;\n          piVar4[3] = entry._12_4_;\n          piVar4[4] = entry.line_num;\n          piVar4[5] = entry._20_4_;\n          piVar1[1] = (int)(piVar4 + 6);\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 ((CONCAT31(extraout_var,bVar2) != 0) &&\n         (((shndx == 0xffffffff || (lsm.shndx == 0xffffffff)) || (lsm.shndx == shndx)))) {\n        entry.header_num = this->current_header_index_;\n        entry._12_4_ = lsm.file_num << 1 | 1;\n        entry.offset._4_4_ = lsm.address._4_4_;\n        entry.offset._0_4_ = lsm.address._0_4_;\n        entry._20_4_ = 0;\n        entry.line_num = lsm.line_num;\n        piVar1 = (int *)(*local_38)(&this->line_number_map_,&lsm.shndx);\n        piVar4 = (int *)piVar1[1];\n        if ((((piVar4 == (int *)*piVar1) || (piVar4[-6] != lsm.address._0_4_)) ||\n            (piVar4[-5] != lsm.address._4_4_)) || ((lsm.line_num == -1 || (piVar4[-2] == -1)))) {\n          piVar3 = (int *)piVar1[2];\n        }\n        else {\n          piVar4[-3] = piVar4[-3] & 0xfffffffe;\n          piVar3 = (int *)piVar1[2];\n        }\n        if (piVar4 == piVar3) {\n          (*local_34)(piVar1,piVar4,&entry);\n        }\n        else {\n          piVar4[1] = entry.offset._4_4_;\n          piVar4[2] = entry.header_num;\n          *piVar4 = entry.offset._0_4_;\n          piVar4[3] = entry._12_4_;\n          piVar4[4] = entry.line_num;\n          piVar4[5] = entry._20_4_;\n          piVar1[1] = (int)(piVar4 + 6);\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 ((CONCAT31(extraout_var,bVar2) != 0) &&\n         (((shndx == 0xffffffff || (lsm.shndx == 0xffffffff)) || (lsm.shndx == shndx)))) {\n        entry.header_num = this->current_header_index_;\n        entry._12_4_ = lsm.file_num << 1 | 1;\n        entry.offset._4_4_ = lsm.address._4_4_;\n        entry.offset._0_4_ = lsm.address._0_4_;\n        entry._20_4_ = 0;\n        entry.line_num = lsm.line_num;\n        piVar1 = (int *)(*local_38)(&this->line_number_map_,&lsm.shndx);\n        piVar4 = (int *)piVar1[1];\n        if ((((piVar4 == (int *)*piVar1) || (piVar4[-6] != lsm.address._0_4_)) ||\n            (piVar4[-5] != lsm.address._4_4_)) || ((lsm.line_num == -1 || (piVar4[-2] == -1)))) {\n          piVar3 = (int *)piVar1[2];\n        }\n        else {\n          piVar4[-3] = piVar4[-3] & 0xfffffffe;\n          piVar3 = (int *)piVar1[2];\n        }\n        if (piVar4 == piVar3) {\n          (*local_34)(piVar1,piVar4,&entry);\n        }\n        else {\n          piVar4[1] = entry.offset._4_4_;\n          piVar4[2] = entry.header_num;\n          *piVar4 = entry.offset._0_4_;\n          piVar4[3] = entry._12_4_;\n          piVar4[4] = entry.line_num;\n          piVar4[5] = entry._20_4_;\n          piVar1[1] = (int)(piVar4 + 6);\n        }\n      }" if (parenthesized_expression "((CONCAT31(extraout_var,bVar2) != 0) &&\n         (((shndx == 0xffffffff || (lsm.shndx == 0xffffffff)) || (lsm.shndx == shndx))))" ( (binary_expression "(CONCAT31(extraout_var,bVar2) != 0) &&\n         (((shndx == 0xffffffff || (lsm.shndx == 0xffffffff)) || (lsm.shndx == shndx)))" (parenthesized_expression "(CONCAT31(extraout_var,bVar2) != 0)" ( (binary_expression "CONCAT31(extraout_var,bVar2) != 0" (call_expression "CONCAT31(extraout_var,bVar2)" identifier (argument_list "(extraout_var,bVar2)" ( identifier , identifier ))) != number_literal) )) && (parenthesized_expression "(((shndx == 0xffffffff || (lsm.shndx == 0xffffffff)) || (lsm.shndx == shndx)))" ( (parenthesized_expression "((shndx == 0xffffffff || (lsm.shndx == 0xffffffff)) || (lsm.shndx == shndx))" ( (binary_expression "(shndx == 0xffffffff || (lsm.shndx == 0xffffffff)) || (lsm.shndx == shndx)" (parenthesized_expression "(shndx == 0xffffffff || (lsm.shndx == 0xffffffff))" ( (binary_expression "shndx == 0xffffffff || (lsm.shndx == 0xffffffff)" (binary_expression "shndx == 0xffffffff" identifier == number_literal) || (parenthesized_expression "(lsm.shndx == 0xffffffff)" ( (binary_expression "lsm.shndx == 0xffffffff" (field_expression "lsm.shndx" identifier . field_identifier) == number_literal) ))) )) || (parenthesized_expression "(lsm.shndx == shndx)" ( (binary_expression "lsm.shndx == shndx" (field_expression "lsm.shndx" identifier . field_identifier) == identifier) ))) )) ))) )) (compound_statement "{\n        entry.header_num = this->current_header_index_;\n        entry._12_4_ = lsm.file_num << 1 | 1;\n        entry.offset._4_4_ = lsm.address._4_4_;\n        entry.offset._0_4_ = lsm.address._0_4_;\n        entry._20_4_ = 0;\n        entry.line_num = lsm.line_num;\n        piVar1 = (int *)(*local_38)(&this->line_number_map_,&lsm.shndx);\n        piVar4 = (int *)piVar1[1];\n        if ((((piVar4 == (int *)*piVar1) || (piVar4[-6] != lsm.address._0_4_)) ||\n            (piVar4[-5] != lsm.address._4_4_)) || ((lsm.line_num == -1 || (piVar4[-2] == -1)))) {\n          piVar3 = (int *)piVar1[2];\n        }\n        else {\n          piVar4[-3] = piVar4[-3] & 0xfffffffe;\n          piVar3 = (int *)piVar1[2];\n        }\n        if (piVar4 == piVar3) {\n          (*local_34)(piVar1,piVar4,&entry);\n        }\n        else {\n          piVar4[1] = entry.offset._4_4_;\n          piVar4[2] = entry.header_num;\n          *piVar4 = entry.offset._0_4_;\n          piVar4[3] = entry._12_4_;\n          piVar4[4] = entry.line_num;\n          piVar4[5] = entry._20_4_;\n          piVar1[1] = (int)(piVar4 + 6);\n        }\n      }" { (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._12_4_ = lsm.file_num << 1 | 1;" (assignment_expression "entry._12_4_ = lsm.file_num << 1 | 1" (field_expression "entry._12_4_" identifier . field_identifier) = (binary_expression "lsm.file_num << 1 | 1" (binary_expression "lsm.file_num << 1" (field_expression "lsm.file_num" identifier . field_identifier) << number_literal) | number_literal)) ;) (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.offset._0_4_ = lsm.address._0_4_;" (assignment_expression "entry.offset._0_4_ = lsm.address._0_4_" (field_expression "entry.offset._0_4_" (field_expression "entry.offset" identifier . field_identifier) . field_identifier) = (field_expression "lsm.address._0_4_" (field_expression "lsm.address" identifier . field_identifier) . field_identifier)) ;) (expression_statement "entry._20_4_ = 0;" (assignment_expression "entry._20_4_ = 0" (field_expression "entry._20_4_" identifier . field_identifier) = number_literal) ;) (expression_statement "entry.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)) ;) (expression_statement "piVar1 = (int *)(*local_38)(&this->line_number_map_,&lsm.shndx);" (assignment_expression "piVar1 = (int *)(*local_38)(&this->line_number_map_,&lsm.shndx)" identifier = (cast_expression "(int *)(*local_38)(&this->line_number_map_,&lsm.shndx)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*local_38)(&this->line_number_map_,&lsm.shndx)" (parenthesized_expression "(*local_38)" ( (pointer_expression "*local_38" * identifier) )) (argument_list "(&this->line_number_map_,&lsm.shndx)" ( (pointer_expression "&this->line_number_map_" & (field_expression "this->line_number_map_" identifier -> field_identifier)) , (pointer_expression "&lsm.shndx" & (field_expression "lsm.shndx" identifier . field_identifier)) ))))) ;) (expression_statement "piVar4 = (int *)piVar1[1];" (assignment_expression "piVar4 = (int *)piVar1[1]" identifier = (cast_expression "(int *)piVar1[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar1[1]" identifier [ number_literal ]))) ;) (if_statement "if ((((piVar4 == (int *)*piVar1) || (piVar4[-6] != lsm.address._0_4_)) ||\n            (piVar4[-5] != lsm.address._4_4_)) || ((lsm.line_num == -1 || (piVar4[-2] == -1)))) {\n          piVar3 = (int *)piVar1[2];\n        }\n        else {\n          piVar4[-3] = piVar4[-3] & 0xfffffffe;\n          piVar3 = (int *)piVar1[2];\n        }" if (parenthesized_expression "((((piVar4 == (int *)*piVar1) || (piVar4[-6] != lsm.address._0_4_)) ||\n            (piVar4[-5] != lsm.address._4_4_)) || ((lsm.line_num == -1 || (piVar4[-2] == -1))))" ( (binary_expression "(((piVar4 == (int *)*piVar1) || (piVar4[-6] != lsm.address._0_4_)) ||\n            (piVar4[-5] != lsm.address._4_4_)) || ((lsm.line_num == -1 || (piVar4[-2] == -1)))" (parenthesized_expression "(((piVar4 == (int *)*piVar1) || (piVar4[-6] != lsm.address._0_4_)) ||\n            (piVar4[-5] != lsm.address._4_4_))" ( (binary_expression "((piVar4 == (int *)*piVar1) || (piVar4[-6] != lsm.address._0_4_)) ||\n            (piVar4[-5] != lsm.address._4_4_)" (parenthesized_expression "((piVar4 == (int *)*piVar1) || (piVar4[-6] != lsm.address._0_4_))" ( (binary_expression "(piVar4 == (int *)*piVar1) || (piVar4[-6] != lsm.address._0_4_)" (parenthesized_expression "(piVar4 == (int *)*piVar1)" ( (binary_expression "piVar4 == (int *)*piVar1" identifier == (cast_expression "(int *)*piVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar1" * identifier))) )) || (parenthesized_expression "(piVar4[-6] != lsm.address._0_4_)" ( (binary_expression "piVar4[-6] != lsm.address._0_4_" (subscript_expression "piVar4[-6]" identifier [ number_literal ]) != (field_expression "lsm.address._0_4_" (field_expression "lsm.address" identifier . field_identifier) . field_identifier)) ))) )) || (parenthesized_expression "(piVar4[-5] != lsm.address._4_4_)" ( (binary_expression "piVar4[-5] != lsm.address._4_4_" (subscript_expression "piVar4[-5]" identifier [ number_literal ]) != (field_expression "lsm.address._4_4_" (field_expression "lsm.address" identifier . field_identifier) . field_identifier)) ))) )) || (parenthesized_expression "((lsm.line_num == -1 || (piVar4[-2] == -1)))" ( (parenthesized_expression "(lsm.line_num == -1 || (piVar4[-2] == -1))" ( (binary_expression "lsm.line_num == -1 || (piVar4[-2] == -1)" (binary_expression "lsm.line_num == -1" (field_expression "lsm.line_num" identifier . field_identifier) == number_literal) || (parenthesized_expression "(piVar4[-2] == -1)" ( (binary_expression "piVar4[-2] == -1" (subscript_expression "piVar4[-2]" identifier [ number_literal ]) == number_literal) ))) )) ))) )) (compound_statement "{\n          piVar3 = (int *)piVar1[2];\n        }" { (expression_statement "piVar3 = (int *)piVar1[2];" (assignment_expression "piVar3 = (int *)piVar1[2]" identifier = (cast_expression "(int *)piVar1[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar1[2]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n          piVar4[-3] = piVar4[-3] & 0xfffffffe;\n          piVar3 = (int *)piVar1[2];\n        }" else (compound_statement "{\n          piVar4[-3] = piVar4[-3] & 0xfffffffe;\n          piVar3 = (int *)piVar1[2];\n        }" { (expression_statement "piVar4[-3] = piVar4[-3] & 0xfffffffe;" (assignment_expression "piVar4[-3] = piVar4[-3] & 0xfffffffe" (subscript_expression "piVar4[-3]" identifier [ number_literal ]) = (binary_expression "piVar4[-3] & 0xfffffffe" (subscript_expression "piVar4[-3]" identifier [ number_literal ]) & number_literal)) ;) (expression_statement "piVar3 = (int *)piVar1[2];" (assignment_expression "piVar3 = (int *)piVar1[2]" identifier = (cast_expression "(int *)piVar1[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar1[2]" identifier [ number_literal ]))) ;) }))) (if_statement "if (piVar4 == piVar3) {\n          (*local_34)(piVar1,piVar4,&entry);\n        }\n        else {\n          piVar4[1] = entry.offset._4_4_;\n          piVar4[2] = entry.header_num;\n          *piVar4 = entry.offset._0_4_;\n          piVar4[3] = entry._12_4_;\n          piVar4[4] = entry.line_num;\n          piVar4[5] = entry._20_4_;\n          piVar1[1] = (int)(piVar4 + 6);\n        }" if (parenthesized_expression "(piVar4 == piVar3)" ( (binary_expression "piVar4 == piVar3" identifier == identifier) )) (compound_statement "{\n          (*local_34)(piVar1,piVar4,&entry);\n        }" { (expression_statement "(*local_34)(piVar1,piVar4,&entry);" (call_expression "(*local_34)(piVar1,piVar4,&entry)" (parenthesized_expression "(*local_34)" ( (pointer_expression "*local_34" * identifier) )) (argument_list "(piVar1,piVar4,&entry)" ( identifier , identifier , (pointer_expression "&entry" & identifier) ))) ;) }) (else_clause "else {\n          piVar4[1] = entry.offset._4_4_;\n          piVar4[2] = entry.header_num;\n          *piVar4 = entry.offset._0_4_;\n          piVar4[3] = entry._12_4_;\n          piVar4[4] = entry.line_num;\n          piVar4[5] = entry._20_4_;\n          piVar1[1] = (int)(piVar4 + 6);\n        }" else (compound_statement "{\n          piVar4[1] = entry.offset._4_4_;\n          piVar4[2] = entry.header_num;\n          *piVar4 = entry.offset._0_4_;\n          piVar4[3] = entry._12_4_;\n          piVar4[4] = entry.line_num;\n          piVar4[5] = entry._20_4_;\n          piVar1[1] = (int)(piVar4 + 6);\n        }" { (expression_statement "piVar4[1] = entry.offset._4_4_;" (assignment_expression "piVar4[1] = entry.offset._4_4_" (subscript_expression "piVar4[1]" identifier [ number_literal ]) = (field_expression "entry.offset._4_4_" (field_expression "entry.offset" identifier . field_identifier) . field_identifier)) ;) (expression_statement "piVar4[2] = entry.header_num;" (assignment_expression "piVar4[2] = entry.header_num" (subscript_expression "piVar4[2]" identifier [ number_literal ]) = (field_expression "entry.header_num" identifier . field_identifier)) ;) (expression_statement "*piVar4 = entry.offset._0_4_;" (assignment_expression "*piVar4 = entry.offset._0_4_" (pointer_expression "*piVar4" * identifier) = (field_expression "entry.offset._0_4_" (field_expression "entry.offset" identifier . field_identifier) . field_identifier)) ;) (expression_statement "piVar4[3] = entry._12_4_;" (assignment_expression "piVar4[3] = entry._12_4_" (subscript_expression "piVar4[3]" identifier [ number_literal ]) = (field_expression "entry._12_4_" identifier . field_identifier)) ;) (expression_statement "piVar4[4] = entry.line_num;" (assignment_expression "piVar4[4] = entry.line_num" (subscript_expression "piVar4[4]" identifier [ number_literal ]) = (field_expression "entry.line_num" identifier . field_identifier)) ;) (expression_statement "piVar4[5] = entry._20_4_;" (assignment_expression "piVar4[5] = entry._20_4_" (subscript_expression "piVar4[5]" identifier [ number_literal ]) = (field_expression "entry._20_4_" identifier . field_identifier)) ;) (expression_statement "piVar1[1] = (int)(piVar4 + 6);" (assignment_expression "piVar1[1] = (int)(piVar4 + 6)" (subscript_expression "piVar1[1]" identifier [ number_literal ]) = (cast_expression "(int)(piVar4 + 6)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(piVar4 + 6)" ( (binary_expression "piVar4 + 6" 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_30 + (int)(this->header_).total_length;" return (binary_expression "local_30 + (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))) ;) }))
(translation_unit "void __thiscall\ngold::Sized_dwarf_line_info<32,true>::read_lines\n          (Sized_dwarf_line_info<32,true> *this,uchar *param_1,uint param_2)\n\n{\n  int iVar1;\n  int *piVar2;\n  int *piVar3;\n  int *piVar4;\n  int local_78 [2];\n  int local_70;\n  int local_6c;\n  int local_68;\n  undefined4 local_64;\n  uint local_60;\n  Sized_dwarf_line_info<32,true> local_5c;\n  undefined1 local_5b;\n  char local_5a;\n  int local_58;\n  int local_54;\n  int local_50;\n  uint local_4c;\n  int local_48;\n  int local_44;\n  uint local_40 [2];\n  code *local_38;\n  code *local_34;\n  int local_30;\n  \n  if (*(int *)(this + 0x40) == 8) {\n    local_30 = *(int *)(this + 0x48) + 0xc;\n  }\n  else {\n    local_30 = *(int *)(this + 0x48) + 4;\n  }\n  while (local_38 = (code *)PTR_operator___004c2a98,\n        param_1 < (uchar *)(local_30 + *(int *)(this + 0xc))) {\n    local_70 = 0;\n    local_6c = 0;\n    local_78[0] = 1;\n    local_68 = 1;\n    local_64 = 0;\n    local_60 = 0xffffffff;\n    local_5b = 0;\n    local_5a = '\0';\n    local_5c = this[0x28];\n    local_34 = (code *)PTR__M_realloc_insert<gold_Offset_to_lineno_entry_const&>_004c2aa0;\n    do {\n      iVar1 = process_one_opcode(this,param_1,(LineStateMachine *)local_78,local_40);\n      if ((iVar1 != 0) &&\n         (((param_2 == 0xffffffff || (local_60 == 0xffffffff)) || (local_60 == param_2)))) {\n        local_50 = *(int *)(this + 0x7c);\n        local_4c = local_78[0] << 1 | 1;\n        local_54 = local_6c;\n        local_58 = local_70;\n        local_44 = 0;\n        local_48 = local_68;\n        piVar2 = (int *)(*local_38)(this + 0x98,&local_60);\n        piVar4 = (int *)piVar2[1];\n        if ((((piVar4 == (int *)*piVar2) || (piVar4[-6] != local_70)) || (piVar4[-5] != local_6c))\n           || ((local_68 == -1 || (piVar4[-2] == -1)))) {\n          piVar3 = (int *)piVar2[2];\n        }\n        else {\n          piVar4[-3] = piVar4[-3] & 0xfffffffe;\n          piVar3 = (int *)piVar2[2];\n        }\n        if (piVar4 == piVar3) {\n          (*local_34)(piVar2,piVar4,&local_58);\n        }\n        else {\n          piVar4[1] = local_54;\n          piVar4[2] = local_50;\n          *piVar4 = local_58;\n          piVar4[3] = local_4c;\n          piVar4[4] = local_48;\n          piVar4[5] = local_44;\n          piVar2[1] = (int)(piVar4 + 6);\n        }\n      }\n      param_1 = param_1 + local_40[0];\n    } while (local_5a == '\0');\n  }\n  return;\n}\n\n" (declaration "void __thiscall\ngold::Sized_dwarf_line_info<32,true>::read_lines\n          (Sized_dwarf_line_info<32,true> *this,uchar *param_1,uint param_2)\n\n{\n  int iVar1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::" identifier : :) identifier (ERROR "<32" < number_literal) , (ERROR "true>::read_lines\n          (Sized_dwarf_line_info<32,true> *this,uchar *param_1,uint param_2)\n\n{\n  int" identifier > : : (function_declarator "read_lines\n          (Sized_dwarf_line_info<32,true> *this,uchar *param_1,uint param_2)" identifier (parameter_list "(Sized_dwarf_line_info<32,true> *this,uchar *param_1,uint param_2)" ( (parameter_declaration "Sized_dwarf_line_info" type_identifier) (ERROR "<32" < number_literal) , (parameter_declaration "true> *this" type_identifier (ERROR ">" >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "uchar *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint param_2" type_identifier identifier) ))) { primitive_type) identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "int local_78 [2];" primitive_type (array_declarator "local_78 [2]" identifier [ number_literal ]) ;) (declaration "int local_70;" primitive_type identifier ;) (declaration "int local_6c;" primitive_type identifier ;) (declaration "int local_68;" primitive_type identifier ;) (declaration "undefined4 local_64;" type_identifier identifier ;) (declaration "uint local_60;" type_identifier identifier ;) (expression_statement "Sized_dwarf_line_info<32,true> local_5c;" (update_expression "Sized_dwarf_line_info<32,true> local_5c" (binary_expression "Sized_dwarf_line_info<32,true> local_5c" (binary_expression "Sized_dwarf_line_info<32" identifier < number_literal) (ERROR ",true" , true) > identifier) --) ;) (declaration "undefined1 local_5b;" type_identifier identifier ;) (declaration "char local_5a;" primitive_type identifier ;) (declaration "int local_58;" primitive_type identifier ;) (declaration "int local_54;" primitive_type identifier ;) (declaration "int local_50;" primitive_type identifier ;) (declaration "uint local_4c;" type_identifier identifier ;) (declaration "int local_48;" primitive_type identifier ;) (declaration "int local_44;" primitive_type identifier ;) (declaration "uint local_40 [2];" type_identifier (array_declarator "local_40 [2]" identifier [ number_literal ]) ;) (declaration "code *local_38;" type_identifier (pointer_declarator "*local_38" * identifier) ;) (declaration "code *local_34;" type_identifier (pointer_declarator "*local_34" * identifier) ;) (declaration "int local_30;" primitive_type identifier ;) (if_statement "if (*(int *)(this + 0x40) == 8) {\n    local_30 = *(int *)(this + 0x48) + 0xc;\n  }\n  else {\n    local_30 = *(int *)(this + 0x48) + 4;\n  }" if (parenthesized_expression "(*(int *)(this + 0x40) == 8)" ( (binary_expression "*(int *)(this + 0x40) == 8" (pointer_expression "*(int *)(this + 0x40)" * (cast_expression "(int *)(this + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x40)" ( (binary_expression "this + 0x40" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    local_30 = *(int *)(this + 0x48) + 0xc;\n  }" { (expression_statement "local_30 = *(int *)(this + 0x48) + 0xc;" (assignment_expression "local_30 = *(int *)(this + 0x48) + 0xc" identifier = (binary_expression "*(int *)(this + 0x48) + 0xc" (pointer_expression "*(int *)(this + 0x48)" * (cast_expression "(int *)(this + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x48)" ( (binary_expression "this + 0x48" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n    local_30 = *(int *)(this + 0x48) + 4;\n  }" else (compound_statement "{\n    local_30 = *(int *)(this + 0x48) + 4;\n  }" { (expression_statement "local_30 = *(int *)(this + 0x48) + 4;" (assignment_expression "local_30 = *(int *)(this + 0x48) + 4" identifier = (binary_expression "*(int *)(this + 0x48) + 4" (pointer_expression "*(int *)(this + 0x48)" * (cast_expression "(int *)(this + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x48)" ( (binary_expression "this + 0x48" identifier + number_literal) )))) + number_literal)) ;) }))) (while_statement "while (local_38 = (code *)PTR_operator___004c2a98,\n        param_1 < (uchar *)(local_30 + *(int *)(this + 0xc))) {\n    local_70 = 0;\n    local_6c = 0;\n    local_78[0] = 1;\n    local_68 = 1;\n    local_64 = 0;\n    local_60 = 0xffffffff;\n    local_5b = 0;\n    local_5a = '\0';\n    local_5c = this[0x28];\n    local_34 = (code *)PTR__M_realloc_insert<gold_Offset_to_lineno_entry_const&>_004c2aa0;\n    do {\n      iVar1 = process_one_opcode(this,param_1,(LineStateMachine *)local_78,local_40);\n      if ((iVar1 != 0) &&\n         (((param_2 == 0xffffffff || (local_60 == 0xffffffff)) || (local_60 == param_2)))) {\n        local_50 = *(int *)(this + 0x7c);\n        local_4c = local_78[0] << 1 | 1;\n        local_54 = local_6c;\n        local_58 = local_70;\n        local_44 = 0;\n        local_48 = local_68;\n        piVar2 = (int *)(*local_38)(this + 0x98,&local_60);\n        piVar4 = (int *)piVar2[1];\n        if ((((piVar4 == (int *)*piVar2) || (piVar4[-6] != local_70)) || (piVar4[-5] != local_6c))\n           || ((local_68 == -1 || (piVar4[-2] == -1)))) {\n          piVar3 = (int *)piVar2[2];\n        }\n        else {\n          piVar4[-3] = piVar4[-3] & 0xfffffffe;\n          piVar3 = (int *)piVar2[2];\n        }\n        if (piVar4 == piVar3) {\n          (*local_34)(piVar2,piVar4,&local_58);\n        }\n        else {\n          piVar4[1] = local_54;\n          piVar4[2] = local_50;\n          *piVar4 = local_58;\n          piVar4[3] = local_4c;\n          piVar4[4] = local_48;\n          piVar4[5] = local_44;\n          piVar2[1] = (int)(piVar4 + 6);\n        }\n      }\n      param_1 = param_1 + local_40[0];\n    } while (local_5a == '\0');\n  }" while (parenthesized_expression "(local_38 = (code *)PTR_operator___004c2a98,\n        param_1 < (uchar *)(local_30 + *(int *)(this + 0xc)))" ( (comma_expression "local_38 = (code *)PTR_operator___004c2a98,\n        param_1 < (uchar *)(local_30 + *(int *)(this + 0xc))" (assignment_expression "local_38 = (code *)PTR_operator___004c2a98" identifier = (cast_expression "(code *)PTR_operator___004c2a98" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , (binary_expression "param_1 < (uchar *)(local_30 + *(int *)(this + 0xc))" identifier < (cast_expression "(uchar *)(local_30 + *(int *)(this + 0xc))" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_30 + *(int *)(this + 0xc))" ( (binary_expression "local_30 + *(int *)(this + 0xc)" identifier + (pointer_expression "*(int *)(this + 0xc)" * (cast_expression "(int *)(this + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0xc)" ( (binary_expression "this + 0xc" identifier + number_literal) ))))) ))))) )) (compound_statement "{\n    local_70 = 0;\n    local_6c = 0;\n    local_78[0] = 1;\n    local_68 = 1;\n    local_64 = 0;\n    local_60 = 0xffffffff;\n    local_5b = 0;\n    local_5a = '\0';\n    local_5c = this[0x28];\n    local_34 = (code *)PTR__M_realloc_insert<gold_Offset_to_lineno_entry_const&>_004c2aa0;\n    do {\n      iVar1 = process_one_opcode(this,param_1,(LineStateMachine *)local_78,local_40);\n      if ((iVar1 != 0) &&\n         (((param_2 == 0xffffffff || (local_60 == 0xffffffff)) || (local_60 == param_2)))) {\n        local_50 = *(int *)(this + 0x7c);\n        local_4c = local_78[0] << 1 | 1;\n        local_54 = local_6c;\n        local_58 = local_70;\n        local_44 = 0;\n        local_48 = local_68;\n        piVar2 = (int *)(*local_38)(this + 0x98,&local_60);\n        piVar4 = (int *)piVar2[1];\n        if ((((piVar4 == (int *)*piVar2) || (piVar4[-6] != local_70)) || (piVar4[-5] != local_6c))\n           || ((local_68 == -1 || (piVar4[-2] == -1)))) {\n          piVar3 = (int *)piVar2[2];\n        }\n        else {\n          piVar4[-3] = piVar4[-3] & 0xfffffffe;\n          piVar3 = (int *)piVar2[2];\n        }\n        if (piVar4 == piVar3) {\n          (*local_34)(piVar2,piVar4,&local_58);\n        }\n        else {\n          piVar4[1] = local_54;\n          piVar4[2] = local_50;\n          *piVar4 = local_58;\n          piVar4[3] = local_4c;\n          piVar4[4] = local_48;\n          piVar4[5] = local_44;\n          piVar2[1] = (int)(piVar4 + 6);\n        }\n      }\n      param_1 = param_1 + local_40[0];\n    } while (local_5a == '\0');\n  }" { (expression_statement "local_70 = 0;" (assignment_expression "local_70 = 0" identifier = number_literal) ;) (expression_statement "local_6c = 0;" (assignment_expression "local_6c = 0" identifier = number_literal) ;) (expression_statement "local_78[0] = 1;" (assignment_expression "local_78[0] = 1" (subscript_expression "local_78[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_68 = 1;" (assignment_expression "local_68 = 1" identifier = number_literal) ;) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" identifier = number_literal) ;) (expression_statement "local_60 = 0xffffffff;" (assignment_expression "local_60 = 0xffffffff" identifier = number_literal) ;) (expression_statement "local_5b = 0;" (assignment_expression "local_5b = 0" identifier = number_literal) ;) (expression_statement "local_5a = '\0';" (assignment_expression "local_5a = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "local_5c = this[0x28];" (assignment_expression "local_5c = this[0x28]" identifier = (subscript_expression "this[0x28]" identifier [ number_literal ])) ;) (expression_statement "local_34 = (code *)PTR__M_realloc_insert<gold_Offset_to_lineno_entry_const&>_004c2aa0;" (assignment_expression "local_34 = (code *)PTR__M_realloc_insert<gold_Offset_to_lineno_entry_const&>_004c2aa0" identifier = (binary_expression "(code *)PTR__M_realloc_insert<gold_Offset_to_lineno_entry_const&>_004c2aa0" (binary_expression "(code *)PTR__M_realloc_insert<gold_Offset_to_lineno_entry_const" (cast_expression "(code *)PTR__M_realloc_insert" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) < identifier) (ERROR "&" &) > identifier)) ;) (do_statement "do {\n      iVar1 = process_one_opcode(this,param_1,(LineStateMachine *)local_78,local_40);\n      if ((iVar1 != 0) &&\n         (((param_2 == 0xffffffff || (local_60 == 0xffffffff)) || (local_60 == param_2)))) {\n        local_50 = *(int *)(this + 0x7c);\n        local_4c = local_78[0] << 1 | 1;\n        local_54 = local_6c;\n        local_58 = local_70;\n        local_44 = 0;\n        local_48 = local_68;\n        piVar2 = (int *)(*local_38)(this + 0x98,&local_60);\n        piVar4 = (int *)piVar2[1];\n        if ((((piVar4 == (int *)*piVar2) || (piVar4[-6] != local_70)) || (piVar4[-5] != local_6c))\n           || ((local_68 == -1 || (piVar4[-2] == -1)))) {\n          piVar3 = (int *)piVar2[2];\n        }\n        else {\n          piVar4[-3] = piVar4[-3] & 0xfffffffe;\n          piVar3 = (int *)piVar2[2];\n        }\n        if (piVar4 == piVar3) {\n          (*local_34)(piVar2,piVar4,&local_58);\n        }\n        else {\n          piVar4[1] = local_54;\n          piVar4[2] = local_50;\n          *piVar4 = local_58;\n          piVar4[3] = local_4c;\n          piVar4[4] = local_48;\n          piVar4[5] = local_44;\n          piVar2[1] = (int)(piVar4 + 6);\n        }\n      }\n      param_1 = param_1 + local_40[0];\n    } while (local_5a == '\0');" do (compound_statement "{\n      iVar1 = process_one_opcode(this,param_1,(LineStateMachine *)local_78,local_40);\n      if ((iVar1 != 0) &&\n         (((param_2 == 0xffffffff || (local_60 == 0xffffffff)) || (local_60 == param_2)))) {\n        local_50 = *(int *)(this + 0x7c);\n        local_4c = local_78[0] << 1 | 1;\n        local_54 = local_6c;\n        local_58 = local_70;\n        local_44 = 0;\n        local_48 = local_68;\n        piVar2 = (int *)(*local_38)(this + 0x98,&local_60);\n        piVar4 = (int *)piVar2[1];\n        if ((((piVar4 == (int *)*piVar2) || (piVar4[-6] != local_70)) || (piVar4[-5] != local_6c))\n           || ((local_68 == -1 || (piVar4[-2] == -1)))) {\n          piVar3 = (int *)piVar2[2];\n        }\n        else {\n          piVar4[-3] = piVar4[-3] & 0xfffffffe;\n          piVar3 = (int *)piVar2[2];\n        }\n        if (piVar4 == piVar3) {\n          (*local_34)(piVar2,piVar4,&local_58);\n        }\n        else {\n          piVar4[1] = local_54;\n          piVar4[2] = local_50;\n          *piVar4 = local_58;\n          piVar4[3] = local_4c;\n          piVar4[4] = local_48;\n          piVar4[5] = local_44;\n          piVar2[1] = (int)(piVar4 + 6);\n        }\n      }\n      param_1 = param_1 + local_40[0];\n    }" { (expression_statement "iVar1 = process_one_opcode(this,param_1,(LineStateMachine *)local_78,local_40);" (assignment_expression "iVar1 = process_one_opcode(this,param_1,(LineStateMachine *)local_78,local_40)" identifier = (call_expression "process_one_opcode(this,param_1,(LineStateMachine *)local_78,local_40)" identifier (argument_list "(this,param_1,(LineStateMachine *)local_78,local_40)" ( identifier , identifier , (cast_expression "(LineStateMachine *)local_78" ( (type_descriptor "LineStateMachine *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier )))) ;) (if_statement "if ((iVar1 != 0) &&\n         (((param_2 == 0xffffffff || (local_60 == 0xffffffff)) || (local_60 == param_2)))) {\n        local_50 = *(int *)(this + 0x7c);\n        local_4c = local_78[0] << 1 | 1;\n        local_54 = local_6c;\n        local_58 = local_70;\n        local_44 = 0;\n        local_48 = local_68;\n        piVar2 = (int *)(*local_38)(this + 0x98,&local_60);\n        piVar4 = (int *)piVar2[1];\n        if ((((piVar4 == (int *)*piVar2) || (piVar4[-6] != local_70)) || (piVar4[-5] != local_6c))\n           || ((local_68 == -1 || (piVar4[-2] == -1)))) {\n          piVar3 = (int *)piVar2[2];\n        }\n        else {\n          piVar4[-3] = piVar4[-3] & 0xfffffffe;\n          piVar3 = (int *)piVar2[2];\n        }\n        if (piVar4 == piVar3) {\n          (*local_34)(piVar2,piVar4,&local_58);\n        }\n        else {\n          piVar4[1] = local_54;\n          piVar4[2] = local_50;\n          *piVar4 = local_58;\n          piVar4[3] = local_4c;\n          piVar4[4] = local_48;\n          piVar4[5] = local_44;\n          piVar2[1] = (int)(piVar4 + 6);\n        }\n      }" if (parenthesized_expression "((iVar1 != 0) &&\n         (((param_2 == 0xffffffff || (local_60 == 0xffffffff)) || (local_60 == param_2))))" ( (binary_expression "(iVar1 != 0) &&\n         (((param_2 == 0xffffffff || (local_60 == 0xffffffff)) || (local_60 == param_2)))" (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) && (parenthesized_expression "(((param_2 == 0xffffffff || (local_60 == 0xffffffff)) || (local_60 == param_2)))" ( (parenthesized_expression "((param_2 == 0xffffffff || (local_60 == 0xffffffff)) || (local_60 == param_2))" ( (binary_expression "(param_2 == 0xffffffff || (local_60 == 0xffffffff)) || (local_60 == param_2)" (parenthesized_expression "(param_2 == 0xffffffff || (local_60 == 0xffffffff))" ( (binary_expression "param_2 == 0xffffffff || (local_60 == 0xffffffff)" (binary_expression "param_2 == 0xffffffff" identifier == number_literal) || (parenthesized_expression "(local_60 == 0xffffffff)" ( (binary_expression "local_60 == 0xffffffff" identifier == number_literal) ))) )) || (parenthesized_expression "(local_60 == param_2)" ( (binary_expression "local_60 == param_2" identifier == identifier) ))) )) ))) )) (compound_statement "{\n        local_50 = *(int *)(this + 0x7c);\n        local_4c = local_78[0] << 1 | 1;\n        local_54 = local_6c;\n        local_58 = local_70;\n        local_44 = 0;\n        local_48 = local_68;\n        piVar2 = (int *)(*local_38)(this + 0x98,&local_60);\n        piVar4 = (int *)piVar2[1];\n        if ((((piVar4 == (int *)*piVar2) || (piVar4[-6] != local_70)) || (piVar4[-5] != local_6c))\n           || ((local_68 == -1 || (piVar4[-2] == -1)))) {\n          piVar3 = (int *)piVar2[2];\n        }\n        else {\n          piVar4[-3] = piVar4[-3] & 0xfffffffe;\n          piVar3 = (int *)piVar2[2];\n        }\n        if (piVar4 == piVar3) {\n          (*local_34)(piVar2,piVar4,&local_58);\n        }\n        else {\n          piVar4[1] = local_54;\n          piVar4[2] = local_50;\n          *piVar4 = local_58;\n          piVar4[3] = local_4c;\n          piVar4[4] = local_48;\n          piVar4[5] = local_44;\n          piVar2[1] = (int)(piVar4 + 6);\n        }\n      }" { (expression_statement "local_50 = *(int *)(this + 0x7c);" (assignment_expression "local_50 = *(int *)(this + 0x7c)" identifier = (pointer_expression "*(int *)(this + 0x7c)" * (cast_expression "(int *)(this + 0x7c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x7c)" ( (binary_expression "this + 0x7c" identifier + number_literal) ))))) ;) (expression_statement "local_4c = local_78[0] << 1 | 1;" (assignment_expression "local_4c = local_78[0] << 1 | 1" identifier = (binary_expression "local_78[0] << 1 | 1" (binary_expression "local_78[0] << 1" (subscript_expression "local_78[0]" identifier [ number_literal ]) << number_literal) | number_literal)) ;) (expression_statement "local_54 = local_6c;" (assignment_expression "local_54 = local_6c" identifier = identifier) ;) (expression_statement "local_58 = local_70;" (assignment_expression "local_58 = local_70" identifier = identifier) ;) (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" identifier = number_literal) ;) (expression_statement "local_48 = local_68;" (assignment_expression "local_48 = local_68" identifier = identifier) ;) (expression_statement "piVar2 = (int *)(*local_38)(this + 0x98,&local_60);" (assignment_expression "piVar2 = (int *)(*local_38)(this + 0x98,&local_60)" identifier = (cast_expression "(int *)(*local_38)(this + 0x98,&local_60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*local_38)(this + 0x98,&local_60)" (parenthesized_expression "(*local_38)" ( (pointer_expression "*local_38" * identifier) )) (argument_list "(this + 0x98,&local_60)" ( (binary_expression "this + 0x98" identifier + number_literal) , (pointer_expression "&local_60" & identifier) ))))) ;) (expression_statement "piVar4 = (int *)piVar2[1];" (assignment_expression "piVar4 = (int *)piVar2[1]" identifier = (cast_expression "(int *)piVar2[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[1]" identifier [ number_literal ]))) ;) (if_statement "if ((((piVar4 == (int *)*piVar2) || (piVar4[-6] != local_70)) || (piVar4[-5] != local_6c))\n           || ((local_68 == -1 || (piVar4[-2] == -1)))) {\n          piVar3 = (int *)piVar2[2];\n        }\n        else {\n          piVar4[-3] = piVar4[-3] & 0xfffffffe;\n          piVar3 = (int *)piVar2[2];\n        }" if (parenthesized_expression "((((piVar4 == (int *)*piVar2) || (piVar4[-6] != local_70)) || (piVar4[-5] != local_6c))\n           || ((local_68 == -1 || (piVar4[-2] == -1))))" ( (binary_expression "(((piVar4 == (int *)*piVar2) || (piVar4[-6] != local_70)) || (piVar4[-5] != local_6c))\n           || ((local_68 == -1 || (piVar4[-2] == -1)))" (parenthesized_expression "(((piVar4 == (int *)*piVar2) || (piVar4[-6] != local_70)) || (piVar4[-5] != local_6c))" ( (binary_expression "((piVar4 == (int *)*piVar2) || (piVar4[-6] != local_70)) || (piVar4[-5] != local_6c)" (parenthesized_expression "((piVar4 == (int *)*piVar2) || (piVar4[-6] != local_70))" ( (binary_expression "(piVar4 == (int *)*piVar2) || (piVar4[-6] != local_70)" (parenthesized_expression "(piVar4 == (int *)*piVar2)" ( (binary_expression "piVar4 == (int *)*piVar2" identifier == (cast_expression "(int *)*piVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar2" * identifier))) )) || (parenthesized_expression "(piVar4[-6] != local_70)" ( (binary_expression "piVar4[-6] != local_70" (subscript_expression "piVar4[-6]" identifier [ number_literal ]) != identifier) ))) )) || (parenthesized_expression "(piVar4[-5] != local_6c)" ( (binary_expression "piVar4[-5] != local_6c" (subscript_expression "piVar4[-5]" identifier [ number_literal ]) != identifier) ))) )) || (parenthesized_expression "((local_68 == -1 || (piVar4[-2] == -1)))" ( (parenthesized_expression "(local_68 == -1 || (piVar4[-2] == -1))" ( (binary_expression "local_68 == -1 || (piVar4[-2] == -1)" (binary_expression "local_68 == -1" identifier == number_literal) || (parenthesized_expression "(piVar4[-2] == -1)" ( (binary_expression "piVar4[-2] == -1" (subscript_expression "piVar4[-2]" identifier [ number_literal ]) == number_literal) ))) )) ))) )) (compound_statement "{\n          piVar3 = (int *)piVar2[2];\n        }" { (expression_statement "piVar3 = (int *)piVar2[2];" (assignment_expression "piVar3 = (int *)piVar2[2]" identifier = (cast_expression "(int *)piVar2[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[2]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n          piVar4[-3] = piVar4[-3] & 0xfffffffe;\n          piVar3 = (int *)piVar2[2];\n        }" else (compound_statement "{\n          piVar4[-3] = piVar4[-3] & 0xfffffffe;\n          piVar3 = (int *)piVar2[2];\n        }" { (expression_statement "piVar4[-3] = piVar4[-3] & 0xfffffffe;" (assignment_expression "piVar4[-3] = piVar4[-3] & 0xfffffffe" (subscript_expression "piVar4[-3]" identifier [ number_literal ]) = (binary_expression "piVar4[-3] & 0xfffffffe" (subscript_expression "piVar4[-3]" identifier [ number_literal ]) & number_literal)) ;) (expression_statement "piVar3 = (int *)piVar2[2];" (assignment_expression "piVar3 = (int *)piVar2[2]" identifier = (cast_expression "(int *)piVar2[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[2]" identifier [ number_literal ]))) ;) }))) (if_statement "if (piVar4 == piVar3) {\n          (*local_34)(piVar2,piVar4,&local_58);\n        }\n        else {\n          piVar4[1] = local_54;\n          piVar4[2] = local_50;\n          *piVar4 = local_58;\n          piVar4[3] = local_4c;\n          piVar4[4] = local_48;\n          piVar4[5] = local_44;\n          piVar2[1] = (int)(piVar4 + 6);\n        }" if (parenthesized_expression "(piVar4 == piVar3)" ( (binary_expression "piVar4 == piVar3" identifier == identifier) )) (compound_statement "{\n          (*local_34)(piVar2,piVar4,&local_58);\n        }" { (expression_statement "(*local_34)(piVar2,piVar4,&local_58);" (call_expression "(*local_34)(piVar2,piVar4,&local_58)" (parenthesized_expression "(*local_34)" ( (pointer_expression "*local_34" * identifier) )) (argument_list "(piVar2,piVar4,&local_58)" ( identifier , identifier , (pointer_expression "&local_58" & identifier) ))) ;) }) (else_clause "else {\n          piVar4[1] = local_54;\n          piVar4[2] = local_50;\n          *piVar4 = local_58;\n          piVar4[3] = local_4c;\n          piVar4[4] = local_48;\n          piVar4[5] = local_44;\n          piVar2[1] = (int)(piVar4 + 6);\n        }" else (compound_statement "{\n          piVar4[1] = local_54;\n          piVar4[2] = local_50;\n          *piVar4 = local_58;\n          piVar4[3] = local_4c;\n          piVar4[4] = local_48;\n          piVar4[5] = local_44;\n          piVar2[1] = (int)(piVar4 + 6);\n        }" { (expression_statement "piVar4[1] = local_54;" (assignment_expression "piVar4[1] = local_54" (subscript_expression "piVar4[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar4[2] = local_50;" (assignment_expression "piVar4[2] = local_50" (subscript_expression "piVar4[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*piVar4 = local_58;" (assignment_expression "*piVar4 = local_58" (pointer_expression "*piVar4" * identifier) = identifier) ;) (expression_statement "piVar4[3] = local_4c;" (assignment_expression "piVar4[3] = local_4c" (subscript_expression "piVar4[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar4[4] = local_48;" (assignment_expression "piVar4[4] = local_48" (subscript_expression "piVar4[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar4[5] = local_44;" (assignment_expression "piVar4[5] = local_44" (subscript_expression "piVar4[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar2[1] = (int)(piVar4 + 6);" (assignment_expression "piVar2[1] = (int)(piVar4 + 6)" (subscript_expression "piVar2[1]" identifier [ number_literal ]) = (cast_expression "(int)(piVar4 + 6)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(piVar4 + 6)" ( (binary_expression "piVar4 + 6" identifier + number_literal) )))) ;) }))) })) (expression_statement "param_1 = param_1 + local_40[0];" (assignment_expression "param_1 = param_1 + local_40[0]" identifier = (binary_expression "param_1 + local_40[0]" identifier + (subscript_expression "local_40[0]" identifier [ number_literal ]))) ;) }) while (parenthesized_expression "(local_5a == '\0')" ( (binary_expression "local_5a == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) ;) })) (return_statement "return;" return ;) (ERROR "}" }))
(translation_unit (declaration TYPE (ms_call_modifier __thiscall) (ERROR IDENT : :) IDENT (ERROR < LIT) , (ERROR IDENT > : : (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE) (ERROR < LIT) , (parameter_declaration TYPE (ERROR >) (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) { TYPE) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (update_expression (binary_expression (binary_expression IDENT < LIT) (ERROR , BOOL) > 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 (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (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)) ;) }) (else_clause else (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 ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) , (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (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 = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) < IDENT) (ERROR &) > IDENT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) || (parenthesized_expression ( (binary_expression IDENT == IDENT) ))) )) ))) )) (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 = (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) << LIT) | LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_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 (subscript_expression IDENT [ LIT ]) != IDENT) ))) )) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != IDENT) ))) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_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 (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression 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 (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , (pointer_expression & IDENT) ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (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 ]) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) }))) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (subscript_expression IDENT [ LIT ]))) ;) }) while (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) ;) })) (return_statement return ;) (ERROR }))
(declaration "void __thiscall\ngold::Sized_dwarf_line_info<32,true>::read_lines\n          (Sized_dwarf_line_info<32,true> *this,uchar *param_1,uint param_2)\n\n{\n  int iVar1;" (primitive_type "void") (ms_call_modifier "__thiscall" (__thiscall "__thiscall")) (ERROR "gold::" (identifier "gold") (: ":") (: ":")) (identifier "Sized_dwarf_line_info") (ERROR "<32" (< "<") (number_literal "32")) (, ",") (ERROR "true>::read_lines\n          (Sized_dwarf_line_info<32,true> *this,uchar *param_1,uint param_2)\n\n{\n  int" (identifier "true") (> ">") (: ":") (: ":") (function_declarator "read_lines\n          (Sized_dwarf_line_info<32,true> *this,uchar *param_1,uint param_2)" (identifier "read_lines") (parameter_list "(Sized_dwarf_line_info<32,true> *this,uchar *param_1,uint param_2)" (( "(") (parameter_declaration "Sized_dwarf_line_info" (type_identifier "Sized_dwarf_line_info")) (ERROR "<32" (< "<") (number_literal "32")) (, ",") (parameter_declaration "true> *this" (type_identifier "true") (ERROR ">" (> ">")) (pointer_declarator "*this" (* "*") (identifier "this"))) (, ",") (parameter_declaration "uchar *param_1" (type_identifier "uchar") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "uint param_2" (type_identifier "uint") (identifier "param_2")) () ")"))) ({ "{") (primitive_type "int")) (identifier "iVar1") (; ";")) (declaration "int *piVar2;" (primitive_type "int") (pointer_declarator "*piVar2" (* "*") (identifier "piVar2")) (; ";")) (declaration "int *piVar3;" (primitive_type "int") (pointer_declarator "*piVar3" (* "*") (identifier "piVar3")) (; ";")) (declaration "int *piVar4;" (primitive_type "int") (pointer_declarator "*piVar4" (* "*") (identifier "piVar4")) (; ";")) (declaration "int local_78 [2];" (primitive_type "int") (array_declarator "local_78 [2]" (identifier "local_78") ([ "[") (number_literal "2") (] "]")) (; ";")) (declaration "int local_70;" (primitive_type "int") (identifier "local_70") (; ";")) (declaration "int local_6c;" (primitive_type "int") (identifier "local_6c") (; ";")) (declaration "int local_68;" (primitive_type "int") (identifier "local_68") (; ";")) (declaration "undefined4 local_64;" (type_identifier "undefined4") (identifier "local_64") (; ";")) (declaration "uint local_60;" (type_identifier "uint") (identifier "local_60") (; ";")) (expression_statement "Sized_dwarf_line_info<32,true> local_5c;" (update_expression "Sized_dwarf_line_info<32,true> local_5c" (binary_expression "Sized_dwarf_line_info<32,true> local_5c" (binary_expression "Sized_dwarf_line_info<32" (identifier "Sized_dwarf_line_info") (< "<") (number_literal "32")) (ERROR ",true" (, ",") (true "true")) (> ">") (identifier "local_5c")) (-- "")) (; ";")) (declaration "undefined1 local_5b;" (type_identifier "undefined1") (identifier "local_5b") (; ";")) (declaration "char local_5a;" (primitive_type "char") (identifier "local_5a") (; ";")) (declaration "int local_58;" (primitive_type "int") (identifier "local_58") (; ";")) (declaration "int local_54;" (primitive_type "int") (identifier "local_54") (; ";")) (declaration "int local_50;" (primitive_type "int") (identifier "local_50") (; ";")) (declaration "uint local_4c;" (type_identifier "uint") (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 [2];" (type_identifier "uint") (array_declarator "local_40 [2]" (identifier "local_40") ([ "[") (number_literal "2") (] "]")) (; ";")) (declaration "code *local_38;" (type_identifier "code") (pointer_declarator "*local_38" (* "*") (identifier "local_38")) (; ";")) (declaration "code *local_34;" (type_identifier "code") (pointer_declarator "*local_34" (* "*") (identifier "local_34")) (; ";")) (declaration "int local_30;" (primitive_type "int") (identifier "local_30") (; ";")) (if_statement "if (*(int *)(this + 0x40) == 8) {\n    local_30 = *(int *)(this + 0x48) + 0xc;\n  }\n  else {\n    local_30 = *(int *)(this + 0x48) + 4;\n  }" (if "if") (parenthesized_expression "(*(int *)(this + 0x40) == 8)" (( "(") (binary_expression "*(int *)(this + 0x40) == 8" (pointer_expression "*(int *)(this + 0x40)" (* "*") (cast_expression "(int *)(this + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 0x40)" (( "(") (binary_expression "this + 0x40" (identifier "this") (+ "+") (number_literal "0x40")) () ")")))) (== "==") (number_literal "8")) () ")")) (compound_statement "{\n    local_30 = *(int *)(this + 0x48) + 0xc;\n  }" ({ "{") (expression_statement "local_30 = *(int *)(this + 0x48) + 0xc;" (assignment_expression "local_30 = *(int *)(this + 0x48) + 0xc" (identifier "local_30") (= "=") (binary_expression "*(int *)(this + 0x48) + 0xc" (pointer_expression "*(int *)(this + 0x48)" (* "*") (cast_expression "(int *)(this + 0x48)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 0x48)" (( "(") (binary_expression "this + 0x48" (identifier "this") (+ "+") (number_literal "0x48")) () ")")))) (+ "+") (number_literal "0xc"))) (; ";")) (} "}")) (else_clause "else {\n    local_30 = *(int *)(this + 0x48) + 4;\n  }" (else "else") (compound_statement "{\n    local_30 = *(int *)(this + 0x48) + 4;\n  }" ({ "{") (expression_statement "local_30 = *(int *)(this + 0x48) + 4;" (assignment_expression "local_30 = *(int *)(this + 0x48) + 4" (identifier "local_30") (= "=") (binary_expression "*(int *)(this + 0x48) + 4" (pointer_expression "*(int *)(this + 0x48)" (* "*") (cast_expression "(int *)(this + 0x48)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 0x48)" (( "(") (binary_expression "this + 0x48" (identifier "this") (+ "+") (number_literal "0x48")) () ")")))) (+ "+") (number_literal "4"))) (; ";")) (} "}")))) (while_statement "while (local_38 = (code *)PTR_operator___004c2a98,\n        param_1 < (uchar *)(local_30 + *(int *)(this + 0xc))) {\n    local_70 = 0;\n    local_6c = 0;\n    local_78[0] = 1;\n    local_68 = 1;\n    local_64 = 0;\n    local_60 = 0xffffffff;\n    local_5b = 0;\n    local_5a = '\0';\n    local_5c = this[0x28];\n    local_34 = (code *)PTR__M_realloc_insert<gold_Offset_to_lineno_entry_const&>_004c2aa0;\n    do {\n      iVar1 = process_one_opcode(this,param_1,(LineStateMachine *)local_78,local_40);\n      if ((iVar1 != 0) &&\n         (((param_2 == 0xffffffff || (local_60 == 0xffffffff)) || (local_60 == param_2)))) {\n        local_50 = *(int *)(this + 0x7c);\n        local_4c = local_78[0] << 1 | 1;\n        local_54 = local_6c;\n        local_58 = local_70;\n        local_44 = 0;\n        local_48 = local_68;\n        piVar2 = (int *)(*local_38)(this + 0x98,&local_60);\n        piVar4 = (int *)piVar2[1];\n        if ((((piVar4 == (int *)*piVar2) || (piVar4[-6] != local_70)) || (piVar4[-5] != local_6c))\n           || ((local_68 == -1 || (piVar4[-2] == -1)))) {\n          piVar3 = (int *)piVar2[2];\n        }\n        else {\n          piVar4[-3] = piVar4[-3] & 0xfffffffe;\n          piVar3 = (int *)piVar2[2];\n        }\n        if (piVar4 == piVar3) {\n          (*local_34)(piVar2,piVar4,&local_58);\n        }\n        else {\n          piVar4[1] = local_54;\n          piVar4[2] = local_50;\n          *piVar4 = local_58;\n          piVar4[3] = local_4c;\n          piVar4[4] = local_48;\n          piVar4[5] = local_44;\n          piVar2[1] = (int)(piVar4 + 6);\n        }\n      }\n      param_1 = param_1 + local_40[0];\n    } while (local_5a == '\0');\n  }" (while "while") (parenthesized_expression "(local_38 = (code *)PTR_operator___004c2a98,\n        param_1 < (uchar *)(local_30 + *(int *)(this + 0xc)))" (( "(") (comma_expression "local_38 = (code *)PTR_operator___004c2a98,\n        param_1 < (uchar *)(local_30 + *(int *)(this + 0xc))" (assignment_expression "local_38 = (code *)PTR_operator___004c2a98" (identifier "local_38") (= "=") (cast_expression "(code *)PTR_operator___004c2a98" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_operator___004c2a98"))) (, ",") (binary_expression "param_1 < (uchar *)(local_30 + *(int *)(this + 0xc))" (identifier "param_1") (< "<") (cast_expression "(uchar *)(local_30 + *(int *)(this + 0xc))" (( "(") (type_descriptor "uchar *" (type_identifier "uchar") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_30 + *(int *)(this + 0xc))" (( "(") (binary_expression "local_30 + *(int *)(this + 0xc)" (identifier "local_30") (+ "+") (pointer_expression "*(int *)(this + 0xc)" (* "*") (cast_expression "(int *)(this + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 0xc)" (( "(") (binary_expression "this + 0xc" (identifier "this") (+ "+") (number_literal "0xc")) () ")"))))) () ")"))))) () ")")) (compound_statement "{\n    local_70 = 0;\n    local_6c = 0;\n    local_78[0] = 1;\n    local_68 = 1;\n    local_64 = 0;\n    local_60 = 0xffffffff;\n    local_5b = 0;\n    local_5a = '\0';\n    local_5c = this[0x28];\n    local_34 = (code *)PTR__M_realloc_insert<gold_Offset_to_lineno_entry_const&>_004c2aa0;\n    do {\n      iVar1 = process_one_opcode(this,param_1,(LineStateMachine *)local_78,local_40);\n      if ((iVar1 != 0) &&\n         (((param_2 == 0xffffffff || (local_60 == 0xffffffff)) || (local_60 == param_2)))) {\n        local_50 = *(int *)(this + 0x7c);\n        local_4c = local_78[0] << 1 | 1;\n        local_54 = local_6c;\n        local_58 = local_70;\n        local_44 = 0;\n        local_48 = local_68;\n        piVar2 = (int *)(*local_38)(this + 0x98,&local_60);\n        piVar4 = (int *)piVar2[1];\n        if ((((piVar4 == (int *)*piVar2) || (piVar4[-6] != local_70)) || (piVar4[-5] != local_6c))\n           || ((local_68 == -1 || (piVar4[-2] == -1)))) {\n          piVar3 = (int *)piVar2[2];\n        }\n        else {\n          piVar4[-3] = piVar4[-3] & 0xfffffffe;\n          piVar3 = (int *)piVar2[2];\n        }\n        if (piVar4 == piVar3) {\n          (*local_34)(piVar2,piVar4,&local_58);\n        }\n        else {\n          piVar4[1] = local_54;\n          piVar4[2] = local_50;\n          *piVar4 = local_58;\n          piVar4[3] = local_4c;\n          piVar4[4] = local_48;\n          piVar4[5] = local_44;\n          piVar2[1] = (int)(piVar4 + 6);\n        }\n      }\n      param_1 = param_1 + local_40[0];\n    } while (local_5a == '\0');\n  }" ({ "{") (expression_statement "local_70 = 0;" (assignment_expression "local_70 = 0" (identifier "local_70") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_6c = 0;" (assignment_expression "local_6c = 0" (identifier "local_6c") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_78[0] = 1;" (assignment_expression "local_78[0] = 1" (subscript_expression "local_78[0]" (identifier "local_78") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "local_68 = 1;" (assignment_expression "local_68 = 1" (identifier "local_68") (= "=") (number_literal "1")) (; ";")) (expression_statement "local_64 = 0;" (assignment_expression "local_64 = 0" (identifier "local_64") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_60 = 0xffffffff;" (assignment_expression "local_60 = 0xffffffff" (identifier "local_60") (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "local_5b = 0;" (assignment_expression "local_5b = 0" (identifier "local_5b") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_5a = '\0';" (assignment_expression "local_5a = '\0'" (identifier "local_5a") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "local_5c = this[0x28];" (assignment_expression "local_5c = this[0x28]" (identifier "local_5c") (= "=") (subscript_expression "this[0x28]" (identifier "this") ([ "[") (number_literal "0x28") (] "]"))) (; ";")) (expression_statement "local_34 = (code *)PTR__M_realloc_insert<gold_Offset_to_lineno_entry_const&>_004c2aa0;" (assignment_expression "local_34 = (code *)PTR__M_realloc_insert<gold_Offset_to_lineno_entry_const&>_004c2aa0" (identifier "local_34") (= "=") (binary_expression "(code *)PTR__M_realloc_insert<gold_Offset_to_lineno_entry_const&>_004c2aa0" (binary_expression "(code *)PTR__M_realloc_insert<gold_Offset_to_lineno_entry_const" (cast_expression "(code *)PTR__M_realloc_insert" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR__M_realloc_insert")) (< "<") (identifier "gold_Offset_to_lineno_entry_const")) (ERROR "&" (& "&")) (> ">") (identifier "_004c2aa0"))) (; ";")) (do_statement "do {\n      iVar1 = process_one_opcode(this,param_1,(LineStateMachine *)local_78,local_40);\n      if ((iVar1 != 0) &&\n         (((param_2 == 0xffffffff || (local_60 == 0xffffffff)) || (local_60 == param_2)))) {\n        local_50 = *(int *)(this + 0x7c);\n        local_4c = local_78[0] << 1 | 1;\n        local_54 = local_6c;\n        local_58 = local_70;\n        local_44 = 0;\n        local_48 = local_68;\n        piVar2 = (int *)(*local_38)(this + 0x98,&local_60);\n        piVar4 = (int *)piVar2[1];\n        if ((((piVar4 == (int *)*piVar2) || (piVar4[-6] != local_70)) || (piVar4[-5] != local_6c))\n           || ((local_68 == -1 || (piVar4[-2] == -1)))) {\n          piVar3 = (int *)piVar2[2];\n        }\n        else {\n          piVar4[-3] = piVar4[-3] & 0xfffffffe;\n          piVar3 = (int *)piVar2[2];\n        }\n        if (piVar4 == piVar3) {\n          (*local_34)(piVar2,piVar4,&local_58);\n        }\n        else {\n          piVar4[1] = local_54;\n          piVar4[2] = local_50;\n          *piVar4 = local_58;\n          piVar4[3] = local_4c;\n          piVar4[4] = local_48;\n          piVar4[5] = local_44;\n          piVar2[1] = (int)(piVar4 + 6);\n        }\n      }\n      param_1 = param_1 + local_40[0];\n    } while (local_5a == '\0');" (do "do") (compound_statement "{\n      iVar1 = process_one_opcode(this,param_1,(LineStateMachine *)local_78,local_40);\n      if ((iVar1 != 0) &&\n         (((param_2 == 0xffffffff || (local_60 == 0xffffffff)) || (local_60 == param_2)))) {\n        local_50 = *(int *)(this + 0x7c);\n        local_4c = local_78[0] << 1 | 1;\n        local_54 = local_6c;\n        local_58 = local_70;\n        local_44 = 0;\n        local_48 = local_68;\n        piVar2 = (int *)(*local_38)(this + 0x98,&local_60);\n        piVar4 = (int *)piVar2[1];\n        if ((((piVar4 == (int *)*piVar2) || (piVar4[-6] != local_70)) || (piVar4[-5] != local_6c))\n           || ((local_68 == -1 || (piVar4[-2] == -1)))) {\n          piVar3 = (int *)piVar2[2];\n        }\n        else {\n          piVar4[-3] = piVar4[-3] & 0xfffffffe;\n          piVar3 = (int *)piVar2[2];\n        }\n        if (piVar4 == piVar3) {\n          (*local_34)(piVar2,piVar4,&local_58);\n        }\n        else {\n          piVar4[1] = local_54;\n          piVar4[2] = local_50;\n          *piVar4 = local_58;\n          piVar4[3] = local_4c;\n          piVar4[4] = local_48;\n          piVar4[5] = local_44;\n          piVar2[1] = (int)(piVar4 + 6);\n        }\n      }\n      param_1 = param_1 + local_40[0];\n    }" ({ "{") (expression_statement "iVar1 = process_one_opcode(this,param_1,(LineStateMachine *)local_78,local_40);" (assignment_expression "iVar1 = process_one_opcode(this,param_1,(LineStateMachine *)local_78,local_40)" (identifier "iVar1") (= "=") (call_expression "process_one_opcode(this,param_1,(LineStateMachine *)local_78,local_40)" (identifier "process_one_opcode") (argument_list "(this,param_1,(LineStateMachine *)local_78,local_40)" (( "(") (identifier "this") (, ",") (identifier "param_1") (, ",") (cast_expression "(LineStateMachine *)local_78" (( "(") (type_descriptor "LineStateMachine *" (type_identifier "LineStateMachine") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_78")) (, ",") (identifier "local_40") () ")")))) (; ";")) (if_statement "if ((iVar1 != 0) &&\n         (((param_2 == 0xffffffff || (local_60 == 0xffffffff)) || (local_60 == param_2)))) {\n        local_50 = *(int *)(this + 0x7c);\n        local_4c = local_78[0] << 1 | 1;\n        local_54 = local_6c;\n        local_58 = local_70;\n        local_44 = 0;\n        local_48 = local_68;\n        piVar2 = (int *)(*local_38)(this + 0x98,&local_60);\n        piVar4 = (int *)piVar2[1];\n        if ((((piVar4 == (int *)*piVar2) || (piVar4[-6] != local_70)) || (piVar4[-5] != local_6c))\n           || ((local_68 == -1 || (piVar4[-2] == -1)))) {\n          piVar3 = (int *)piVar2[2];\n        }\n        else {\n          piVar4[-3] = piVar4[-3] & 0xfffffffe;\n          piVar3 = (int *)piVar2[2];\n        }\n        if (piVar4 == piVar3) {\n          (*local_34)(piVar2,piVar4,&local_58);\n        }\n        else {\n          piVar4[1] = local_54;\n          piVar4[2] = local_50;\n          *piVar4 = local_58;\n          piVar4[3] = local_4c;\n          piVar4[4] = local_48;\n          piVar4[5] = local_44;\n          piVar2[1] = (int)(piVar4 + 6);\n        }\n      }" (if "if") (parenthesized_expression "((iVar1 != 0) &&\n         (((param_2 == 0xffffffff || (local_60 == 0xffffffff)) || (local_60 == param_2))))" (( "(") (binary_expression "(iVar1 != 0) &&\n         (((param_2 == 0xffffffff || (local_60 == 0xffffffff)) || (local_60 == param_2)))" (parenthesized_expression "(iVar1 != 0)" (( "(") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(((param_2 == 0xffffffff || (local_60 == 0xffffffff)) || (local_60 == param_2)))" (( "(") (parenthesized_expression "((param_2 == 0xffffffff || (local_60 == 0xffffffff)) || (local_60 == param_2))" (( "(") (binary_expression "(param_2 == 0xffffffff || (local_60 == 0xffffffff)) || (local_60 == param_2)" (parenthesized_expression "(param_2 == 0xffffffff || (local_60 == 0xffffffff))" (( "(") (binary_expression "param_2 == 0xffffffff || (local_60 == 0xffffffff)" (binary_expression "param_2 == 0xffffffff" (identifier "param_2") (== "==") (number_literal "0xffffffff")) (|| "||") (parenthesized_expression "(local_60 == 0xffffffff)" (( "(") (binary_expression "local_60 == 0xffffffff" (identifier "local_60") (== "==") (number_literal "0xffffffff")) () ")"))) () ")")) (|| "||") (parenthesized_expression "(local_60 == param_2)" (( "(") (binary_expression "local_60 == param_2" (identifier "local_60") (== "==") (identifier "param_2")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n        local_50 = *(int *)(this + 0x7c);\n        local_4c = local_78[0] << 1 | 1;\n        local_54 = local_6c;\n        local_58 = local_70;\n        local_44 = 0;\n        local_48 = local_68;\n        piVar2 = (int *)(*local_38)(this + 0x98,&local_60);\n        piVar4 = (int *)piVar2[1];\n        if ((((piVar4 == (int *)*piVar2) || (piVar4[-6] != local_70)) || (piVar4[-5] != local_6c))\n           || ((local_68 == -1 || (piVar4[-2] == -1)))) {\n          piVar3 = (int *)piVar2[2];\n        }\n        else {\n          piVar4[-3] = piVar4[-3] & 0xfffffffe;\n          piVar3 = (int *)piVar2[2];\n        }\n        if (piVar4 == piVar3) {\n          (*local_34)(piVar2,piVar4,&local_58);\n        }\n        else {\n          piVar4[1] = local_54;\n          piVar4[2] = local_50;\n          *piVar4 = local_58;\n          piVar4[3] = local_4c;\n          piVar4[4] = local_48;\n          piVar4[5] = local_44;\n          piVar2[1] = (int)(piVar4 + 6);\n        }\n      }" ({ "{") (expression_statement "local_50 = *(int *)(this + 0x7c);" (assignment_expression "local_50 = *(int *)(this + 0x7c)" (identifier "local_50") (= "=") (pointer_expression "*(int *)(this + 0x7c)" (* "*") (cast_expression "(int *)(this + 0x7c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 0x7c)" (( "(") (binary_expression "this + 0x7c" (identifier "this") (+ "+") (number_literal "0x7c")) () ")"))))) (; ";")) (expression_statement "local_4c = local_78[0] << 1 | 1;" (assignment_expression "local_4c = local_78[0] << 1 | 1" (identifier "local_4c") (= "=") (binary_expression "local_78[0] << 1 | 1" (binary_expression "local_78[0] << 1" (subscript_expression "local_78[0]" (identifier "local_78") ([ "[") (number_literal "0") (] "]")) (<< "<<") (number_literal "1")) (| "|") (number_literal "1"))) (; ";")) (expression_statement "local_54 = local_6c;" (assignment_expression "local_54 = local_6c" (identifier "local_54") (= "=") (identifier "local_6c")) (; ";")) (expression_statement "local_58 = local_70;" (assignment_expression "local_58 = local_70" (identifier "local_58") (= "=") (identifier "local_70")) (; ";")) (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" (identifier "local_44") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_48 = local_68;" (assignment_expression "local_48 = local_68" (identifier "local_48") (= "=") (identifier "local_68")) (; ";")) (expression_statement "piVar2 = (int *)(*local_38)(this + 0x98,&local_60);" (assignment_expression "piVar2 = (int *)(*local_38)(this + 0x98,&local_60)" (identifier "piVar2") (= "=") (cast_expression "(int *)(*local_38)(this + 0x98,&local_60)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*local_38)(this + 0x98,&local_60)" (parenthesized_expression "(*local_38)" (( "(") (pointer_expression "*local_38" (* "*") (identifier "local_38")) () ")")) (argument_list "(this + 0x98,&local_60)" (( "(") (binary_expression "this + 0x98" (identifier "this") (+ "+") (number_literal "0x98")) (, ",") (pointer_expression "&local_60" (& "&") (identifier "local_60")) () ")"))))) (; ";")) (expression_statement "piVar4 = (int *)piVar2[1];" (assignment_expression "piVar4 = (int *)piVar2[1]" (identifier "piVar4") (= "=") (cast_expression "(int *)piVar2[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar2[1]" (identifier "piVar2") ([ "[") (number_literal "1") (] "]")))) (; ";")) (if_statement "if ((((piVar4 == (int *)*piVar2) || (piVar4[-6] != local_70)) || (piVar4[-5] != local_6c))\n           || ((local_68 == -1 || (piVar4[-2] == -1)))) {\n          piVar3 = (int *)piVar2[2];\n        }\n        else {\n          piVar4[-3] = piVar4[-3] & 0xfffffffe;\n          piVar3 = (int *)piVar2[2];\n        }" (if "if") (parenthesized_expression "((((piVar4 == (int *)*piVar2) || (piVar4[-6] != local_70)) || (piVar4[-5] != local_6c))\n           || ((local_68 == -1 || (piVar4[-2] == -1))))" (( "(") (binary_expression "(((piVar4 == (int *)*piVar2) || (piVar4[-6] != local_70)) || (piVar4[-5] != local_6c))\n           || ((local_68 == -1 || (piVar4[-2] == -1)))" (parenthesized_expression "(((piVar4 == (int *)*piVar2) || (piVar4[-6] != local_70)) || (piVar4[-5] != local_6c))" (( "(") (binary_expression "((piVar4 == (int *)*piVar2) || (piVar4[-6] != local_70)) || (piVar4[-5] != local_6c)" (parenthesized_expression "((piVar4 == (int *)*piVar2) || (piVar4[-6] != local_70))" (( "(") (binary_expression "(piVar4 == (int *)*piVar2) || (piVar4[-6] != local_70)" (parenthesized_expression "(piVar4 == (int *)*piVar2)" (( "(") (binary_expression "piVar4 == (int *)*piVar2" (identifier "piVar4") (== "==") (cast_expression "(int *)*piVar2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar2" (* "*") (identifier "piVar2")))) () ")")) (|| "||") (parenthesized_expression "(piVar4[-6] != local_70)" (( "(") (binary_expression "piVar4[-6] != local_70" (subscript_expression "piVar4[-6]" (identifier "piVar4") ([ "[") (number_literal "-6") (] "]")) (!= "!=") (identifier "local_70")) () ")"))) () ")")) (|| "||") (parenthesized_expression "(piVar4[-5] != local_6c)" (( "(") (binary_expression "piVar4[-5] != local_6c" (subscript_expression "piVar4[-5]" (identifier "piVar4") ([ "[") (number_literal "-5") (] "]")) (!= "!=") (identifier "local_6c")) () ")"))) () ")")) (|| "||") (parenthesized_expression "((local_68 == -1 || (piVar4[-2] == -1)))" (( "(") (parenthesized_expression "(local_68 == -1 || (piVar4[-2] == -1))" (( "(") (binary_expression "local_68 == -1 || (piVar4[-2] == -1)" (binary_expression "local_68 == -1" (identifier "local_68") (== "==") (number_literal "-1")) (|| "||") (parenthesized_expression "(piVar4[-2] == -1)" (( "(") (binary_expression "piVar4[-2] == -1" (subscript_expression "piVar4[-2]" (identifier "piVar4") ([ "[") (number_literal "-2") (] "]")) (== "==") (number_literal "-1")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n          piVar3 = (int *)piVar2[2];\n        }" ({ "{") (expression_statement "piVar3 = (int *)piVar2[2];" (assignment_expression "piVar3 = (int *)piVar2[2]" (identifier "piVar3") (= "=") (cast_expression "(int *)piVar2[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar2[2]" (identifier "piVar2") ([ "[") (number_literal "2") (] "]")))) (; ";")) (} "}")) (else_clause "else {\n          piVar4[-3] = piVar4[-3] & 0xfffffffe;\n          piVar3 = (int *)piVar2[2];\n        }" (else "else") (compound_statement "{\n          piVar4[-3] = piVar4[-3] & 0xfffffffe;\n          piVar3 = (int *)piVar2[2];\n        }" ({ "{") (expression_statement "piVar4[-3] = piVar4[-3] & 0xfffffffe;" (assignment_expression "piVar4[-3] = piVar4[-3] & 0xfffffffe" (subscript_expression "piVar4[-3]" (identifier "piVar4") ([ "[") (number_literal "-3") (] "]")) (= "=") (binary_expression "piVar4[-3] & 0xfffffffe" (subscript_expression "piVar4[-3]" (identifier "piVar4") ([ "[") (number_literal "-3") (] "]")) (& "&") (number_literal "0xfffffffe"))) (; ";")) (expression_statement "piVar3 = (int *)piVar2[2];" (assignment_expression "piVar3 = (int *)piVar2[2]" (identifier "piVar3") (= "=") (cast_expression "(int *)piVar2[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar2[2]" (identifier "piVar2") ([ "[") (number_literal "2") (] "]")))) (; ";")) (} "}")))) (if_statement "if (piVar4 == piVar3) {\n          (*local_34)(piVar2,piVar4,&local_58);\n        }\n        else {\n          piVar4[1] = local_54;\n          piVar4[2] = local_50;\n          *piVar4 = local_58;\n          piVar4[3] = local_4c;\n          piVar4[4] = local_48;\n          piVar4[5] = local_44;\n          piVar2[1] = (int)(piVar4 + 6);\n        }" (if "if") (parenthesized_expression "(piVar4 == piVar3)" (( "(") (binary_expression "piVar4 == piVar3" (identifier "piVar4") (== "==") (identifier "piVar3")) () ")")) (compound_statement "{\n          (*local_34)(piVar2,piVar4,&local_58);\n        }" ({ "{") (expression_statement "(*local_34)(piVar2,piVar4,&local_58);" (call_expression "(*local_34)(piVar2,piVar4,&local_58)" (parenthesized_expression "(*local_34)" (( "(") (pointer_expression "*local_34" (* "*") (identifier "local_34")) () ")")) (argument_list "(piVar2,piVar4,&local_58)" (( "(") (identifier "piVar2") (, ",") (identifier "piVar4") (, ",") (pointer_expression "&local_58" (& "&") (identifier "local_58")) () ")"))) (; ";")) (} "}")) (else_clause "else {\n          piVar4[1] = local_54;\n          piVar4[2] = local_50;\n          *piVar4 = local_58;\n          piVar4[3] = local_4c;\n          piVar4[4] = local_48;\n          piVar4[5] = local_44;\n          piVar2[1] = (int)(piVar4 + 6);\n        }" (else "else") (compound_statement "{\n          piVar4[1] = local_54;\n          piVar4[2] = local_50;\n          *piVar4 = local_58;\n          piVar4[3] = local_4c;\n          piVar4[4] = local_48;\n          piVar4[5] = local_44;\n          piVar2[1] = (int)(piVar4 + 6);\n        }" ({ "{") (expression_statement "piVar4[1] = local_54;" (assignment_expression "piVar4[1] = local_54" (subscript_expression "piVar4[1]" (identifier "piVar4") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "local_54")) (; ";")) (expression_statement "piVar4[2] = local_50;" (assignment_expression "piVar4[2] = local_50" (subscript_expression "piVar4[2]" (identifier "piVar4") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "local_50")) (; ";")) (expression_statement "*piVar4 = local_58;" (assignment_expression "*piVar4 = local_58" (pointer_expression "*piVar4" (* "*") (identifier "piVar4")) (= "=") (identifier "local_58")) (; ";")) (expression_statement "piVar4[3] = local_4c;" (assignment_expression "piVar4[3] = local_4c" (subscript_expression "piVar4[3]" (identifier "piVar4") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "local_4c")) (; ";")) (expression_statement "piVar4[4] = local_48;" (assignment_expression "piVar4[4] = local_48" (subscript_expression "piVar4[4]" (identifier "piVar4") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "local_48")) (; ";")) (expression_statement "piVar4[5] = local_44;" (assignment_expression "piVar4[5] = local_44" (subscript_expression "piVar4[5]" (identifier "piVar4") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "local_44")) (; ";")) (expression_statement "piVar2[1] = (int)(piVar4 + 6);" (assignment_expression "piVar2[1] = (int)(piVar4 + 6)" (subscript_expression "piVar2[1]" (identifier "piVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(int)(piVar4 + 6)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(piVar4 + 6)" (( "(") (binary_expression "piVar4 + 6" (identifier "piVar4") (+ "+") (number_literal "6")) () ")")))) (; ";")) (} "}")))) (} "}"))) (expression_statement "param_1 = param_1 + local_40[0];" (assignment_expression "param_1 = param_1 + local_40[0]" (identifier "param_1") (= "=") (binary_expression "param_1 + local_40[0]" (identifier "param_1") (+ "+") (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_5a == '\0')" (( "(") (binary_expression "local_5a == '\0'" (identifier "local_5a") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (ERROR "}" (} "}"))

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

type_5 * __thiscall
gold::Sized_dwarf_line_info<32,_true>::read_lines
          (Sized_dwarf_line_info<32,_true> *this,type_5 *var_2,uint var_7)

{
  type_1 extraout_var;
  bool bVar2;
  int *piVar1;
  int *var_9;
  int *var_8;
  type_2 lsm;
  type_3 entry;
  size_t var_10;
  type_4 *local_38;
  type_4 *local_34;
  type_5 *var_1;
  
  if ((this->header_).offset_size == 8) {
    var_1 = this->buffer_ + 0xc;
  }
  else {
    var_1 = this->buffer_ + 4;
  }
  while( true ) {
    local_38 = (type_4 *)PTR_operator___004c2a98;
    if (var_1 + (int)(this->header_).total_length <= var_2) break;
    lsm.address._0_4_ = 0;
    lsm.address._4_4_ = 0;
    lsm.file_num = 1;
    lsm.line_num = 1;
    lsm.column_num = 0;
    lsm.var_7 = 0xffffffff;
    lsm.basic_block = false;
    lsm.end_sequence = false;
    lsm.is_stmt = (this->header_).default_is_stmt;
    local_34 = (type_4 *)PTR__M_realloc_insert<var_3&>var_4;
    do {
      bVar2 = var_5(this,var_2,&lsm,&var_10);
      if ((var_6(extraout_var,bVar2) != 0) &&
         (((var_7 == 0xffffffff || (lsm.var_7 == 0xffffffff)) || (lsm.var_7 == var_7)))) {
        entry.header_num = this->current_header_index_;
        entry._12_4_ = lsm.file_num << 1 | 1;
        entry.offset._4_4_ = lsm.address._4_4_;
        entry.offset._0_4_ = lsm.address._0_4_;
        entry._20_4_ = 0;
        entry.line_num = lsm.line_num;
        piVar1 = (int *)(*local_38)(&this->line_number_map_,&lsm.var_7);
        var_8 = (int *)piVar1[1];
        if ((((var_8 == (int *)*piVar1) || (var_8[-6] != lsm.address._0_4_)) ||
            (var_8[-5] != lsm.address._4_4_)) || ((lsm.line_num == -1 || (var_8[-2] == -1)))) {
          var_9 = (int *)piVar1[2];
        }
        else {
          var_8[-3] = var_8[-3] & 0xfffffffe;
          var_9 = (int *)piVar1[2];
        }
        if (var_8 == var_9) {
          (*local_34)(piVar1,var_8,&entry);
        }
        else {
          var_8[1] = entry.offset._4_4_;
          var_8[2] = entry.header_num;
          *var_8 = entry.offset._0_4_;
          var_8[3] = entry._12_4_;
          var_8[4] = entry.line_num;
          var_8[5] = entry._20_4_;
          piVar1[1] = (int)(var_8 + 6);
        }
      }
      var_2 = var_2 + var_10;
    } while (lsm.end_sequence == false);
  }
  return var_1 + (int)(this->header_).total_length;
}


(translation_unit (declaration type: (primitive_type) declarator: (ms_call_modifier) (ERROR (identifier)) declarator: (identifier) (ERROR (number_literal)) (ERROR (identifier) (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier)) (ERROR (number_literal)) (parameter_declaration type: (type_identifier) (ERROR) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)))) (primitive_type)) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (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: (type_identifier) declarator: (identifier)) (expression_statement (update_expression argument: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) (ERROR (true)) right: (identifier)) operator: (MISSING "--"))) (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: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (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))))) alternative: (else_clause (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 (comma_expression left: (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (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: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (char_literal (escape_sequence)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)) right: (identifier)) (ERROR) right: (identifier)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))))) consequence: (compound_statement (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: (binary_expression left: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) 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: (parenthesized_expression (pointer_expression argument: (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (subscript_expression argument: (identifier) index: (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: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier) (pointer_expression argument: (identifier)))))) alternative: (else_clause (compound_statement (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: (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: (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: (subscript_expression argument: (identifier) index: (number_literal)))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence))))))) (return_statement) (ERROR))

/* gold::Sized_dwarf_line_info<32, true>::MASKED(unsigned char const*, unsigned int) */

void __thiscall
gold::Sized_dwarf_line_info<32,true>::MASKED
          (Sized_dwarf_line_info<32,true> *this,uchar *param_1,uint param_2)

{
  int iVar1;
  int *piVar2;
  int *piVar3;
  int *piVar4;
  int local_78 [2];
  int local_70;
  int local_6c;
  int local_68;
  undefined4 local_64;
  uint local_60;
  Sized_dwarf_line_info<32,true> local_5c;
  undefined1 local_5b;
  char local_5a;
  int local_58;
  int local_54;
  int local_50;
  uint local_4c;
  int local_48;
  int local_44;
  uint local_40 [2];
  code *local_38;
  code *local_34;
  int local_30;
  
  if (*(int *)(this + 0x40) == 8) {
    local_30 = *(int *)(this + 0x48) + 0xc;
  }
  else {
    local_30 = *(int *)(this + 0x48) + 4;
  }
  while (local_38 = (code *)PTR_operator___004c2a98,
        param_1 < (uchar *)(local_30 + *(int *)(this + 0xc))) {
    local_70 = 0;
    local_6c = 0;
    local_78[0] = 1;
    local_68 = 1;
    local_64 = 0;
    local_60 = 0xffffffff;
    local_5b = 0;
    local_5a = '\0';
    local_5c = this[0x28];
    local_34 = (code *)PTR__M_realloc_insert<gold_Offset_to_lineno_entry_const&>_004c2aa0;
    do {
      iVar1 = process_one_opcode(this,param_1,(LineStateMachine *)local_78,local_40);
      if ((iVar1 != 0) &&
         (((param_2 == 0xffffffff || (local_60 == 0xffffffff)) || (local_60 == param_2)))) {
        local_50 = *(int *)(this + 0x7c);
        local_4c = local_78[0] << 1 | 1;
        local_54 = local_6c;
        local_58 = local_70;
        local_44 = 0;
        local_48 = local_68;
        piVar2 = (int *)(*local_38)(this + 0x98,&local_60);
        piVar4 = (int *)piVar2[1];
        if ((((piVar4 == (int *)*piVar2) || (piVar4[-6] != local_70)) || (piVar4[-5] != local_6c))
           || ((local_68 == -1 || (piVar4[-2] == -1)))) {
          piVar3 = (int *)piVar2[2];
        }
        else {
          piVar4[-3] = piVar4[-3] & 0xfffffffe;
          piVar3 = (int *)piVar2[2];
        }
        if (piVar4 == piVar3) {
          (*local_34)(piVar2,piVar4,&local_58);
        }
        else {
          piVar4[1] = local_54;
          piVar4[2] = local_50;
          *piVar4 = local_58;
          piVar4[3] = local_4c;
          piVar4[4] = local_48;
          piVar4[5] = local_44;
          piVar2[1] = (int)(piVar4 + 6);
        }
      }
      param_1 = param_1 + local_40[0];
    } while (local_5a == '\0');
  }
  return;
}

