
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* DWARF original prototype: void read_line_mappings(Sized_dwarf_line_info<32,_false> * this, uint
   shndx) */

void __thiscall
gold::Sized_dwarf_line_info<32,_false>::read_line_mappings
          (Sized_dwarf_line_info<32,_false> *this,uint shndx)

{
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

void FUN_002192a0(int param_1,undefined4 param_2)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 uVar3;
  uint uVar4;
  
  if (*(char *)(param_1 + 4) != '\0') {
    FUN_00218230(param_1);
    uVar4 = *(uint *)(param_1 + 0x40);
    if (uVar4 < *(uint *)(param_1 + 0x44)) {
      do {
        uVar3 = FUN_00212060(param_1,uVar4);
        uVar3 = FUN_00213e50(param_1,uVar3);
        uVar4 = FUN_00216ad0(param_1,uVar3,param_2);
        *(uint *)(param_1 + 0x40) = uVar4;
      } while (uVar4 < *(uint *)(param_1 + 0x44));
    }
    for (puVar1 = *(undefined4 **)(param_1 + 0x98); puVar1 != (undefined4 *)0x0;
        puVar1 = (undefined4 *)*puVar1) {
      if (puVar1[3] != puVar1[2]) {
        uVar4 = ((int)(puVar1[3] - puVar1[2]) >> 2) * -0x33333333;
        iVar2 = 0x1f;
        if (uVar4 != 0) {
          for (; uVar4 >> iVar2 == 0; iVar2 = iVar2 + -1) {
          }
        }
        FUN_0020f630();
        FUN_0020f5c0();
      }
    }
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_000da200("../../gold/dwarf_reader.cc",0x801,"read_line_mappings",param_1);
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x0003a210
ADD EBX,0x1fad57
SUB ESP,0xc
MOV ESI,dword ptr [ESP + 0x20]
MOV EDI,dword ptr [ESP + 0x24]
CMP byte ptr [ESI + 0x4],0x0
JZ 0x00219363
SUB ESP,0xc
PUSH ESI
CALL 0x00218230
MOV EAX,dword ptr [ESI + 0x40]
ADD ESP,0x10
CMP dword ptr [ESI + 0x44],EAX
JBE 0x00219309
LEA ESI,[ESI]
NOP
SUB ESP,0x8
PUSH EAX
PUSH ESI
CALL 0x00212060
POP EDX
POP ECX
PUSH EAX
PUSH ESI
CALL 0x00213e50
ADD ESP,0xc
PUSH EDI
PUSH EAX
PUSH ESI
CALL 0x00216ad0
ADD ESP,0x10
MOV dword ptr [ESI + 0x40],EAX
CMP dword ptr [ESI + 0x44],EAX
JA 0x002192e0
MOV ESI,dword ptr [ESI + 0x98]
TEST ESI,ESI
JZ 0x0021935b
MOV EBP,0x1f
LEA ESI,[ESI]
NOP
MOV EDI,dword ptr [ESI + 0xc]
MOV EBX,dword ptr [ESI + 0x8]
CMP EDI,EBX
JZ 0x00219355
MOV EAX,EDI
MOV ECX,EBP
MOV EDX,EDI
SUB EAX,EBX
SAR EAX,0x2
IMUL EAX,EAX,-0x33333333
BSR EAX,EAX
XOR EAX,0x1f
SUB ECX,EAX
MOV EAX,EBX
ADD ECX,ECX
CALL 0x0020f630
MOV EDX,EDI
MOV EAX,EBX
CALL 0x0020f5c0
MOV ESI,dword ptr [ESI]
TEST ESI,ESI
JNZ 0x00219320
ADD ESP,0xc
POP EBX
POP ESI
POP EDI
POP EBP
RET
LEA EAX,[EBX + 0xffefd714]
PUSH ESI
PUSH EAX
LEA EAX,[EBX + 0xffefd431]
PUSH 0x801
PUSH EAX
CALL 0x000da200
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid FUN_002192a0(int param_1,undefined4 param_2)\n\n{\n  undefined4 *puVar1;\n  int iVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  \n  if (*(char *)(param_1 + 4) != '\0') {\n    FUN_00218230(param_1);\n    uVar4 = *(uint *)(param_1 + 0x40);\n    if (uVar4 < *(uint *)(param_1 + 0x44)) {\n      do {\n        uVar3 = FUN_00212060(param_1,uVar4);\n        uVar3 = FUN_00213e50(param_1,uVar3);\n        uVar4 = FUN_00216ad0(param_1,uVar3,param_2);\n        *(uint *)(param_1 + 0x40) = uVar4;\n      } while (uVar4 < *(uint *)(param_1 + 0x44));\n    }\n    for (puVar1 = *(undefined4 **)(param_1 + 0x98); puVar1 != (undefined4 *)0x0;\n        puVar1 = (undefined4 *)*puVar1) {\n      if (puVar1[3] != puVar1[2]) {\n        uVar4 = ((int)(puVar1[3] - puVar1[2]) >> 2) * -0x33333333;\n        iVar2 = 0x1f;\n        if (uVar4 != 0) {\n          for (; uVar4 >> iVar2 == 0; iVar2 = iVar2 + -1) {\n          }\n        }\n        FUN_0020f630();\n        FUN_0020f5c0();\n      }\n    }\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_000da200("../../gold/dwarf_reader.cc",0x801,"read_line_mappings",param_1);\n}\n\n" comment (function_definition "void FUN_002192a0(int param_1,undefined4 param_2)\n\n{\n  undefined4 *puVar1;\n  int iVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  \n  if (*(char *)(param_1 + 4) != '\0') {\n    FUN_00218230(param_1);\n    uVar4 = *(uint *)(param_1 + 0x40);\n    if (uVar4 < *(uint *)(param_1 + 0x44)) {\n      do {\n        uVar3 = FUN_00212060(param_1,uVar4);\n        uVar3 = FUN_00213e50(param_1,uVar3);\n        uVar4 = FUN_00216ad0(param_1,uVar3,param_2);\n        *(uint *)(param_1 + 0x40) = uVar4;\n      } while (uVar4 < *(uint *)(param_1 + 0x44));\n    }\n    for (puVar1 = *(undefined4 **)(param_1 + 0x98); puVar1 != (undefined4 *)0x0;\n        puVar1 = (undefined4 *)*puVar1) {\n      if (puVar1[3] != puVar1[2]) {\n        uVar4 = ((int)(puVar1[3] - puVar1[2]) >> 2) * -0x33333333;\n        iVar2 = 0x1f;\n        if (uVar4 != 0) {\n          for (; uVar4 >> iVar2 == 0; iVar2 = iVar2 + -1) {\n          }\n        }\n        FUN_0020f630();\n        FUN_0020f5c0();\n      }\n    }\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_000da200("../../gold/dwarf_reader.cc",0x801,"read_line_mappings",param_1);\n}" primitive_type (function_declarator "FUN_002192a0(int param_1,undefined4 param_2)" identifier (parameter_list "(int param_1,undefined4 param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) ))) (compound_statement "{\n  undefined4 *puVar1;\n  int iVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  \n  if (*(char *)(param_1 + 4) != '\0') {\n    FUN_00218230(param_1);\n    uVar4 = *(uint *)(param_1 + 0x40);\n    if (uVar4 < *(uint *)(param_1 + 0x44)) {\n      do {\n        uVar3 = FUN_00212060(param_1,uVar4);\n        uVar3 = FUN_00213e50(param_1,uVar3);\n        uVar4 = FUN_00216ad0(param_1,uVar3,param_2);\n        *(uint *)(param_1 + 0x40) = uVar4;\n      } while (uVar4 < *(uint *)(param_1 + 0x44));\n    }\n    for (puVar1 = *(undefined4 **)(param_1 + 0x98); puVar1 != (undefined4 *)0x0;\n        puVar1 = (undefined4 *)*puVar1) {\n      if (puVar1[3] != puVar1[2]) {\n        uVar4 = ((int)(puVar1[3] - puVar1[2]) >> 2) * -0x33333333;\n        iVar2 = 0x1f;\n        if (uVar4 != 0) {\n          for (; uVar4 >> iVar2 == 0; iVar2 = iVar2 + -1) {\n          }\n        }\n        FUN_0020f630();\n        FUN_0020f5c0();\n      }\n    }\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_000da200("../../gold/dwarf_reader.cc",0x801,"read_line_mappings",param_1);\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (if_statement "if (*(char *)(param_1 + 4) != '\0') {\n    FUN_00218230(param_1);\n    uVar4 = *(uint *)(param_1 + 0x40);\n    if (uVar4 < *(uint *)(param_1 + 0x44)) {\n      do {\n        uVar3 = FUN_00212060(param_1,uVar4);\n        uVar3 = FUN_00213e50(param_1,uVar3);\n        uVar4 = FUN_00216ad0(param_1,uVar3,param_2);\n        *(uint *)(param_1 + 0x40) = uVar4;\n      } while (uVar4 < *(uint *)(param_1 + 0x44));\n    }\n    for (puVar1 = *(undefined4 **)(param_1 + 0x98); puVar1 != (undefined4 *)0x0;\n        puVar1 = (undefined4 *)*puVar1) {\n      if (puVar1[3] != puVar1[2]) {\n        uVar4 = ((int)(puVar1[3] - puVar1[2]) >> 2) * -0x33333333;\n        iVar2 = 0x1f;\n        if (uVar4 != 0) {\n          for (; uVar4 >> iVar2 == 0; iVar2 = iVar2 + -1) {\n          }\n        }\n        FUN_0020f630();\n        FUN_0020f5c0();\n      }\n    }\n    return;\n  }" if (parenthesized_expression "(*(char *)(param_1 + 4) != '\0')" ( (binary_expression "*(char *)(param_1 + 4) != '\0'" (pointer_expression "*(char *)(param_1 + 4)" * (cast_expression "(char *)(param_1 + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    FUN_00218230(param_1);\n    uVar4 = *(uint *)(param_1 + 0x40);\n    if (uVar4 < *(uint *)(param_1 + 0x44)) {\n      do {\n        uVar3 = FUN_00212060(param_1,uVar4);\n        uVar3 = FUN_00213e50(param_1,uVar3);\n        uVar4 = FUN_00216ad0(param_1,uVar3,param_2);\n        *(uint *)(param_1 + 0x40) = uVar4;\n      } while (uVar4 < *(uint *)(param_1 + 0x44));\n    }\n    for (puVar1 = *(undefined4 **)(param_1 + 0x98); puVar1 != (undefined4 *)0x0;\n        puVar1 = (undefined4 *)*puVar1) {\n      if (puVar1[3] != puVar1[2]) {\n        uVar4 = ((int)(puVar1[3] - puVar1[2]) >> 2) * -0x33333333;\n        iVar2 = 0x1f;\n        if (uVar4 != 0) {\n          for (; uVar4 >> iVar2 == 0; iVar2 = iVar2 + -1) {\n          }\n        }\n        FUN_0020f630();\n        FUN_0020f5c0();\n      }\n    }\n    return;\n  }" { (expression_statement "FUN_00218230(param_1);" (call_expression "FUN_00218230(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "uVar4 = *(uint *)(param_1 + 0x40);" (assignment_expression "uVar4 = *(uint *)(param_1 + 0x40)" identifier = (pointer_expression "*(uint *)(param_1 + 0x40)" * (cast_expression "(uint *)(param_1 + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) ))))) ;) (if_statement "if (uVar4 < *(uint *)(param_1 + 0x44)) {\n      do {\n        uVar3 = FUN_00212060(param_1,uVar4);\n        uVar3 = FUN_00213e50(param_1,uVar3);\n        uVar4 = FUN_00216ad0(param_1,uVar3,param_2);\n        *(uint *)(param_1 + 0x40) = uVar4;\n      } while (uVar4 < *(uint *)(param_1 + 0x44));\n    }" if (parenthesized_expression "(uVar4 < *(uint *)(param_1 + 0x44))" ( (binary_expression "uVar4 < *(uint *)(param_1 + 0x44)" identifier < (pointer_expression "*(uint *)(param_1 + 0x44)" * (cast_expression "(uint *)(param_1 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) ))))) )) (compound_statement "{\n      do {\n        uVar3 = FUN_00212060(param_1,uVar4);\n        uVar3 = FUN_00213e50(param_1,uVar3);\n        uVar4 = FUN_00216ad0(param_1,uVar3,param_2);\n        *(uint *)(param_1 + 0x40) = uVar4;\n      } while (uVar4 < *(uint *)(param_1 + 0x44));\n    }" { (do_statement "do {\n        uVar3 = FUN_00212060(param_1,uVar4);\n        uVar3 = FUN_00213e50(param_1,uVar3);\n        uVar4 = FUN_00216ad0(param_1,uVar3,param_2);\n        *(uint *)(param_1 + 0x40) = uVar4;\n      } while (uVar4 < *(uint *)(param_1 + 0x44));" do (compound_statement "{\n        uVar3 = FUN_00212060(param_1,uVar4);\n        uVar3 = FUN_00213e50(param_1,uVar3);\n        uVar4 = FUN_00216ad0(param_1,uVar3,param_2);\n        *(uint *)(param_1 + 0x40) = uVar4;\n      }" { (expression_statement "uVar3 = FUN_00212060(param_1,uVar4);" (assignment_expression "uVar3 = FUN_00212060(param_1,uVar4)" identifier = (call_expression "FUN_00212060(param_1,uVar4)" identifier (argument_list "(param_1,uVar4)" ( identifier , identifier )))) ;) (expression_statement "uVar3 = FUN_00213e50(param_1,uVar3);" (assignment_expression "uVar3 = FUN_00213e50(param_1,uVar3)" identifier = (call_expression "FUN_00213e50(param_1,uVar3)" identifier (argument_list "(param_1,uVar3)" ( identifier , identifier )))) ;) (expression_statement "uVar4 = FUN_00216ad0(param_1,uVar3,param_2);" (assignment_expression "uVar4 = FUN_00216ad0(param_1,uVar3,param_2)" identifier = (call_expression "FUN_00216ad0(param_1,uVar3,param_2)" identifier (argument_list "(param_1,uVar3,param_2)" ( identifier , identifier , identifier )))) ;) (expression_statement "*(uint *)(param_1 + 0x40) = uVar4;" (assignment_expression "*(uint *)(param_1 + 0x40) = uVar4" (pointer_expression "*(uint *)(param_1 + 0x40)" * (cast_expression "(uint *)(param_1 + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) = identifier) ;) }) while (parenthesized_expression "(uVar4 < *(uint *)(param_1 + 0x44))" ( (binary_expression "uVar4 < *(uint *)(param_1 + 0x44)" identifier < (pointer_expression "*(uint *)(param_1 + 0x44)" * (cast_expression "(uint *)(param_1 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) ))))) )) ;) })) (for_statement "for (puVar1 = *(undefined4 **)(param_1 + 0x98); puVar1 != (undefined4 *)0x0;\n        puVar1 = (undefined4 *)*puVar1) {\n      if (puVar1[3] != puVar1[2]) {\n        uVar4 = ((int)(puVar1[3] - puVar1[2]) >> 2) * -0x33333333;\n        iVar2 = 0x1f;\n        if (uVar4 != 0) {\n          for (; uVar4 >> iVar2 == 0; iVar2 = iVar2 + -1) {\n          }\n        }\n        FUN_0020f630();\n        FUN_0020f5c0();\n      }\n    }" for ( (assignment_expression "puVar1 = *(undefined4 **)(param_1 + 0x98)" identifier = (pointer_expression "*(undefined4 **)(param_1 + 0x98)" * (cast_expression "(undefined4 **)(param_1 + 0x98)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x98)" ( (binary_expression "param_1 + 0x98" identifier + number_literal) ))))) ; (binary_expression "puVar1 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "puVar1 = (undefined4 *)*puVar1" identifier = (cast_expression "(undefined4 *)*puVar1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar1" * identifier))) ) (compound_statement "{\n      if (puVar1[3] != puVar1[2]) {\n        uVar4 = ((int)(puVar1[3] - puVar1[2]) >> 2) * -0x33333333;\n        iVar2 = 0x1f;\n        if (uVar4 != 0) {\n          for (; uVar4 >> iVar2 == 0; iVar2 = iVar2 + -1) {\n          }\n        }\n        FUN_0020f630();\n        FUN_0020f5c0();\n      }\n    }" { (if_statement "if (puVar1[3] != puVar1[2]) {\n        uVar4 = ((int)(puVar1[3] - puVar1[2]) >> 2) * -0x33333333;\n        iVar2 = 0x1f;\n        if (uVar4 != 0) {\n          for (; uVar4 >> iVar2 == 0; iVar2 = iVar2 + -1) {\n          }\n        }\n        FUN_0020f630();\n        FUN_0020f5c0();\n      }" if (parenthesized_expression "(puVar1[3] != puVar1[2])" ( (binary_expression "puVar1[3] != puVar1[2]" (subscript_expression "puVar1[3]" identifier [ number_literal ]) != (subscript_expression "puVar1[2]" identifier [ number_literal ])) )) (compound_statement "{\n        uVar4 = ((int)(puVar1[3] - puVar1[2]) >> 2) * -0x33333333;\n        iVar2 = 0x1f;\n        if (uVar4 != 0) {\n          for (; uVar4 >> iVar2 == 0; iVar2 = iVar2 + -1) {\n          }\n        }\n        FUN_0020f630();\n        FUN_0020f5c0();\n      }" { (expression_statement "uVar4 = ((int)(puVar1[3] - puVar1[2]) >> 2) * -0x33333333;" (assignment_expression "uVar4 = ((int)(puVar1[3] - puVar1[2]) >> 2) * -0x33333333" identifier = (binary_expression "((int)(puVar1[3] - puVar1[2]) >> 2) * -0x33333333" (parenthesized_expression "((int)(puVar1[3] - puVar1[2]) >> 2)" ( (binary_expression "(int)(puVar1[3] - puVar1[2]) >> 2" (cast_expression "(int)(puVar1[3] - puVar1[2])" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(puVar1[3] - puVar1[2])" ( (binary_expression "puVar1[3] - puVar1[2]" (subscript_expression "puVar1[3]" identifier [ number_literal ]) - (subscript_expression "puVar1[2]" identifier [ number_literal ])) ))) >> number_literal) )) * number_literal)) ;) (expression_statement "iVar2 = 0x1f;" (assignment_expression "iVar2 = 0x1f" identifier = number_literal) ;) (if_statement "if (uVar4 != 0) {\n          for (; uVar4 >> iVar2 == 0; iVar2 = iVar2 + -1) {\n          }\n        }" if (parenthesized_expression "(uVar4 != 0)" ( (binary_expression "uVar4 != 0" identifier != number_literal) )) (compound_statement "{\n          for (; uVar4 >> iVar2 == 0; iVar2 = iVar2 + -1) {\n          }\n        }" { (for_statement "for (; uVar4 >> iVar2 == 0; iVar2 = iVar2 + -1) {\n          }" for ( ; (binary_expression "uVar4 >> iVar2 == 0" (binary_expression "uVar4 >> iVar2" identifier >> identifier) == number_literal) ; (assignment_expression "iVar2 = iVar2 + -1" identifier = (binary_expression "iVar2 + -1" identifier + number_literal)) ) (compound_statement "{\n          }" { })) })) (expression_statement "FUN_0020f630();" (call_expression "FUN_0020f630()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_0020f5c0();" (call_expression "FUN_0020f5c0()" identifier (argument_list "()" ( ))) ;) })) })) (return_statement "return;" return ;) })) comment (expression_statement "FUN_000da200("../../gold/dwarf_reader.cc",0x801,"read_line_mappings",param_1);" (call_expression "FUN_000da200("../../gold/dwarf_reader.cc",0x801,"read_line_mappings",param_1)" identifier (argument_list "("../../gold/dwarf_reader.cc",0x801,"read_line_mappings",param_1)" ( (string_literal ""../../gold/dwarf_reader.cc"" " string_content ") , number_literal , (string_literal ""read_line_mappings"" " string_content ") , identifier ))) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* DWARF original prototype: void read_line_mappings(Sized_dwarf_line_info<32,_false> * this, uint\n   shndx) */\n\nvoid __thiscall\ngold::Sized_dwarf_line_info<32,_false>::read_line_mappings\n          (Sized_dwarf_line_info<32,_false> *this,uint shndx)\n\n{\n}\n\n" comment comment (ERROR "void __thiscall\ngold::Sized_dwarf_line_info<32,_false>::read_line_mappings\n          (Sized_dwarf_line_info<32,_false> *this,uint shndx)" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::" identifier : :) identifier (ERROR "<32" < number_literal) , (ERROR "_false>::" identifier > : :) (function_declarator "read_line_mappings\n          (Sized_dwarf_line_info<32,_false> *this,uint shndx)" identifier (parameter_list "(Sized_dwarf_line_info<32,_false> *this,uint shndx)" ( (parameter_declaration "Sized_dwarf_line_info" type_identifier) (ERROR "<32" < number_literal) , (parameter_declaration "_false> *this" type_identifier (ERROR ">" >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "uint shndx" type_identifier identifier) )))) (compound_statement "{\n}" { }))
(translation_unit "void FUN_002192a0(int param_1,undefined4 param_2)\n\n{\n  undefined4 *puVar1;\n  int iVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  \n  if (*(char *)(param_1 + 4) != '\0') {\n    FUN_00218230(param_1);\n    uVar4 = *(uint *)(param_1 + 0x40);\n    if (uVar4 < *(uint *)(param_1 + 0x44)) {\n      do {\n        uVar3 = FUN_00212060(param_1,uVar4);\n        uVar3 = FUN_00213e50(param_1,uVar3);\n        uVar4 = FUN_00216ad0(param_1,uVar3,param_2);\n        *(uint *)(param_1 + 0x40) = uVar4;\n      } while (uVar4 < *(uint *)(param_1 + 0x44));\n    }\n    for (puVar1 = *(undefined4 **)(param_1 + 0x98); puVar1 != (undefined4 *)0x0;\n        puVar1 = (undefined4 *)*puVar1) {\n      if (puVar1[3] != puVar1[2]) {\n        uVar4 = ((int)(puVar1[3] - puVar1[2]) >> 2) * -0x33333333;\n        iVar2 = 0x1f;\n        if (uVar4 != 0) {\n          for (; uVar4 >> iVar2 == 0; iVar2 = iVar2 + -1) {\n          }\n        }\n        FUN_0020f630();\n        FUN_0020f5c0();\n      }\n    }\n    return;\n  }\n                    \n  FUN_000da200("../../gold/dwarf_reader.cc",0x801,"read_line_mappings",param_1);\n}\n\n" (function_definition "void FUN_002192a0(int param_1,undefined4 param_2)\n\n{\n  undefined4 *puVar1;\n  int iVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  \n  if (*(char *)(param_1 + 4) != '\0') {\n    FUN_00218230(param_1);\n    uVar4 = *(uint *)(param_1 + 0x40);\n    if (uVar4 < *(uint *)(param_1 + 0x44)) {\n      do {\n        uVar3 = FUN_00212060(param_1,uVar4);\n        uVar3 = FUN_00213e50(param_1,uVar3);\n        uVar4 = FUN_00216ad0(param_1,uVar3,param_2);\n        *(uint *)(param_1 + 0x40) = uVar4;\n      } while (uVar4 < *(uint *)(param_1 + 0x44));\n    }\n    for (puVar1 = *(undefined4 **)(param_1 + 0x98); puVar1 != (undefined4 *)0x0;\n        puVar1 = (undefined4 *)*puVar1) {\n      if (puVar1[3] != puVar1[2]) {\n        uVar4 = ((int)(puVar1[3] - puVar1[2]) >> 2) * -0x33333333;\n        iVar2 = 0x1f;\n        if (uVar4 != 0) {\n          for (; uVar4 >> iVar2 == 0; iVar2 = iVar2 + -1) {\n          }\n        }\n        FUN_0020f630();\n        FUN_0020f5c0();\n      }\n    }\n    return;\n  }\n                    \n  FUN_000da200("../../gold/dwarf_reader.cc",0x801,"read_line_mappings",param_1);\n}" primitive_type (function_declarator "FUN_002192a0(int param_1,undefined4 param_2)" identifier (parameter_list "(int param_1,undefined4 param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) ))) (compound_statement "{\n  undefined4 *puVar1;\n  int iVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  \n  if (*(char *)(param_1 + 4) != '\0') {\n    FUN_00218230(param_1);\n    uVar4 = *(uint *)(param_1 + 0x40);\n    if (uVar4 < *(uint *)(param_1 + 0x44)) {\n      do {\n        uVar3 = FUN_00212060(param_1,uVar4);\n        uVar3 = FUN_00213e50(param_1,uVar3);\n        uVar4 = FUN_00216ad0(param_1,uVar3,param_2);\n        *(uint *)(param_1 + 0x40) = uVar4;\n      } while (uVar4 < *(uint *)(param_1 + 0x44));\n    }\n    for (puVar1 = *(undefined4 **)(param_1 + 0x98); puVar1 != (undefined4 *)0x0;\n        puVar1 = (undefined4 *)*puVar1) {\n      if (puVar1[3] != puVar1[2]) {\n        uVar4 = ((int)(puVar1[3] - puVar1[2]) >> 2) * -0x33333333;\n        iVar2 = 0x1f;\n        if (uVar4 != 0) {\n          for (; uVar4 >> iVar2 == 0; iVar2 = iVar2 + -1) {\n          }\n        }\n        FUN_0020f630();\n        FUN_0020f5c0();\n      }\n    }\n    return;\n  }\n                    \n  FUN_000da200("../../gold/dwarf_reader.cc",0x801,"read_line_mappings",param_1);\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (if_statement "if (*(char *)(param_1 + 4) != '\0') {\n    FUN_00218230(param_1);\n    uVar4 = *(uint *)(param_1 + 0x40);\n    if (uVar4 < *(uint *)(param_1 + 0x44)) {\n      do {\n        uVar3 = FUN_00212060(param_1,uVar4);\n        uVar3 = FUN_00213e50(param_1,uVar3);\n        uVar4 = FUN_00216ad0(param_1,uVar3,param_2);\n        *(uint *)(param_1 + 0x40) = uVar4;\n      } while (uVar4 < *(uint *)(param_1 + 0x44));\n    }\n    for (puVar1 = *(undefined4 **)(param_1 + 0x98); puVar1 != (undefined4 *)0x0;\n        puVar1 = (undefined4 *)*puVar1) {\n      if (puVar1[3] != puVar1[2]) {\n        uVar4 = ((int)(puVar1[3] - puVar1[2]) >> 2) * -0x33333333;\n        iVar2 = 0x1f;\n        if (uVar4 != 0) {\n          for (; uVar4 >> iVar2 == 0; iVar2 = iVar2 + -1) {\n          }\n        }\n        FUN_0020f630();\n        FUN_0020f5c0();\n      }\n    }\n    return;\n  }" if (parenthesized_expression "(*(char *)(param_1 + 4) != '\0')" ( (binary_expression "*(char *)(param_1 + 4) != '\0'" (pointer_expression "*(char *)(param_1 + 4)" * (cast_expression "(char *)(param_1 + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    FUN_00218230(param_1);\n    uVar4 = *(uint *)(param_1 + 0x40);\n    if (uVar4 < *(uint *)(param_1 + 0x44)) {\n      do {\n        uVar3 = FUN_00212060(param_1,uVar4);\n        uVar3 = FUN_00213e50(param_1,uVar3);\n        uVar4 = FUN_00216ad0(param_1,uVar3,param_2);\n        *(uint *)(param_1 + 0x40) = uVar4;\n      } while (uVar4 < *(uint *)(param_1 + 0x44));\n    }\n    for (puVar1 = *(undefined4 **)(param_1 + 0x98); puVar1 != (undefined4 *)0x0;\n        puVar1 = (undefined4 *)*puVar1) {\n      if (puVar1[3] != puVar1[2]) {\n        uVar4 = ((int)(puVar1[3] - puVar1[2]) >> 2) * -0x33333333;\n        iVar2 = 0x1f;\n        if (uVar4 != 0) {\n          for (; uVar4 >> iVar2 == 0; iVar2 = iVar2 + -1) {\n          }\n        }\n        FUN_0020f630();\n        FUN_0020f5c0();\n      }\n    }\n    return;\n  }" { (expression_statement "FUN_00218230(param_1);" (call_expression "FUN_00218230(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "uVar4 = *(uint *)(param_1 + 0x40);" (assignment_expression "uVar4 = *(uint *)(param_1 + 0x40)" identifier = (pointer_expression "*(uint *)(param_1 + 0x40)" * (cast_expression "(uint *)(param_1 + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) ))))) ;) (if_statement "if (uVar4 < *(uint *)(param_1 + 0x44)) {\n      do {\n        uVar3 = FUN_00212060(param_1,uVar4);\n        uVar3 = FUN_00213e50(param_1,uVar3);\n        uVar4 = FUN_00216ad0(param_1,uVar3,param_2);\n        *(uint *)(param_1 + 0x40) = uVar4;\n      } while (uVar4 < *(uint *)(param_1 + 0x44));\n    }" if (parenthesized_expression "(uVar4 < *(uint *)(param_1 + 0x44))" ( (binary_expression "uVar4 < *(uint *)(param_1 + 0x44)" identifier < (pointer_expression "*(uint *)(param_1 + 0x44)" * (cast_expression "(uint *)(param_1 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) ))))) )) (compound_statement "{\n      do {\n        uVar3 = FUN_00212060(param_1,uVar4);\n        uVar3 = FUN_00213e50(param_1,uVar3);\n        uVar4 = FUN_00216ad0(param_1,uVar3,param_2);\n        *(uint *)(param_1 + 0x40) = uVar4;\n      } while (uVar4 < *(uint *)(param_1 + 0x44));\n    }" { (do_statement "do {\n        uVar3 = FUN_00212060(param_1,uVar4);\n        uVar3 = FUN_00213e50(param_1,uVar3);\n        uVar4 = FUN_00216ad0(param_1,uVar3,param_2);\n        *(uint *)(param_1 + 0x40) = uVar4;\n      } while (uVar4 < *(uint *)(param_1 + 0x44));" do (compound_statement "{\n        uVar3 = FUN_00212060(param_1,uVar4);\n        uVar3 = FUN_00213e50(param_1,uVar3);\n        uVar4 = FUN_00216ad0(param_1,uVar3,param_2);\n        *(uint *)(param_1 + 0x40) = uVar4;\n      }" { (expression_statement "uVar3 = FUN_00212060(param_1,uVar4);" (assignment_expression "uVar3 = FUN_00212060(param_1,uVar4)" identifier = (call_expression "FUN_00212060(param_1,uVar4)" identifier (argument_list "(param_1,uVar4)" ( identifier , identifier )))) ;) (expression_statement "uVar3 = FUN_00213e50(param_1,uVar3);" (assignment_expression "uVar3 = FUN_00213e50(param_1,uVar3)" identifier = (call_expression "FUN_00213e50(param_1,uVar3)" identifier (argument_list "(param_1,uVar3)" ( identifier , identifier )))) ;) (expression_statement "uVar4 = FUN_00216ad0(param_1,uVar3,param_2);" (assignment_expression "uVar4 = FUN_00216ad0(param_1,uVar3,param_2)" identifier = (call_expression "FUN_00216ad0(param_1,uVar3,param_2)" identifier (argument_list "(param_1,uVar3,param_2)" ( identifier , identifier , identifier )))) ;) (expression_statement "*(uint *)(param_1 + 0x40) = uVar4;" (assignment_expression "*(uint *)(param_1 + 0x40) = uVar4" (pointer_expression "*(uint *)(param_1 + 0x40)" * (cast_expression "(uint *)(param_1 + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) = identifier) ;) }) while (parenthesized_expression "(uVar4 < *(uint *)(param_1 + 0x44))" ( (binary_expression "uVar4 < *(uint *)(param_1 + 0x44)" identifier < (pointer_expression "*(uint *)(param_1 + 0x44)" * (cast_expression "(uint *)(param_1 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) ))))) )) ;) })) (for_statement "for (puVar1 = *(undefined4 **)(param_1 + 0x98); puVar1 != (undefined4 *)0x0;\n        puVar1 = (undefined4 *)*puVar1) {\n      if (puVar1[3] != puVar1[2]) {\n        uVar4 = ((int)(puVar1[3] - puVar1[2]) >> 2) * -0x33333333;\n        iVar2 = 0x1f;\n        if (uVar4 != 0) {\n          for (; uVar4 >> iVar2 == 0; iVar2 = iVar2 + -1) {\n          }\n        }\n        FUN_0020f630();\n        FUN_0020f5c0();\n      }\n    }" for ( (assignment_expression "puVar1 = *(undefined4 **)(param_1 + 0x98)" identifier = (pointer_expression "*(undefined4 **)(param_1 + 0x98)" * (cast_expression "(undefined4 **)(param_1 + 0x98)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x98)" ( (binary_expression "param_1 + 0x98" identifier + number_literal) ))))) ; (binary_expression "puVar1 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "puVar1 = (undefined4 *)*puVar1" identifier = (cast_expression "(undefined4 *)*puVar1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar1" * identifier))) ) (compound_statement "{\n      if (puVar1[3] != puVar1[2]) {\n        uVar4 = ((int)(puVar1[3] - puVar1[2]) >> 2) * -0x33333333;\n        iVar2 = 0x1f;\n        if (uVar4 != 0) {\n          for (; uVar4 >> iVar2 == 0; iVar2 = iVar2 + -1) {\n          }\n        }\n        FUN_0020f630();\n        FUN_0020f5c0();\n      }\n    }" { (if_statement "if (puVar1[3] != puVar1[2]) {\n        uVar4 = ((int)(puVar1[3] - puVar1[2]) >> 2) * -0x33333333;\n        iVar2 = 0x1f;\n        if (uVar4 != 0) {\n          for (; uVar4 >> iVar2 == 0; iVar2 = iVar2 + -1) {\n          }\n        }\n        FUN_0020f630();\n        FUN_0020f5c0();\n      }" if (parenthesized_expression "(puVar1[3] != puVar1[2])" ( (binary_expression "puVar1[3] != puVar1[2]" (subscript_expression "puVar1[3]" identifier [ number_literal ]) != (subscript_expression "puVar1[2]" identifier [ number_literal ])) )) (compound_statement "{\n        uVar4 = ((int)(puVar1[3] - puVar1[2]) >> 2) * -0x33333333;\n        iVar2 = 0x1f;\n        if (uVar4 != 0) {\n          for (; uVar4 >> iVar2 == 0; iVar2 = iVar2 + -1) {\n          }\n        }\n        FUN_0020f630();\n        FUN_0020f5c0();\n      }" { (expression_statement "uVar4 = ((int)(puVar1[3] - puVar1[2]) >> 2) * -0x33333333;" (assignment_expression "uVar4 = ((int)(puVar1[3] - puVar1[2]) >> 2) * -0x33333333" identifier = (binary_expression "((int)(puVar1[3] - puVar1[2]) >> 2) * -0x33333333" (parenthesized_expression "((int)(puVar1[3] - puVar1[2]) >> 2)" ( (binary_expression "(int)(puVar1[3] - puVar1[2]) >> 2" (cast_expression "(int)(puVar1[3] - puVar1[2])" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(puVar1[3] - puVar1[2])" ( (binary_expression "puVar1[3] - puVar1[2]" (subscript_expression "puVar1[3]" identifier [ number_literal ]) - (subscript_expression "puVar1[2]" identifier [ number_literal ])) ))) >> number_literal) )) * number_literal)) ;) (expression_statement "iVar2 = 0x1f;" (assignment_expression "iVar2 = 0x1f" identifier = number_literal) ;) (if_statement "if (uVar4 != 0) {\n          for (; uVar4 >> iVar2 == 0; iVar2 = iVar2 + -1) {\n          }\n        }" if (parenthesized_expression "(uVar4 != 0)" ( (binary_expression "uVar4 != 0" identifier != number_literal) )) (compound_statement "{\n          for (; uVar4 >> iVar2 == 0; iVar2 = iVar2 + -1) {\n          }\n        }" { (for_statement "for (; uVar4 >> iVar2 == 0; iVar2 = iVar2 + -1) {\n          }" for ( ; (binary_expression "uVar4 >> iVar2 == 0" (binary_expression "uVar4 >> iVar2" identifier >> identifier) == number_literal) ; (assignment_expression "iVar2 = iVar2 + -1" identifier = (binary_expression "iVar2 + -1" identifier + number_literal)) ) (compound_statement "{\n          }" { })) })) (expression_statement "FUN_0020f630();" (call_expression "FUN_0020f630()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_0020f5c0();" (call_expression "FUN_0020f5c0()" identifier (argument_list "()" ( ))) ;) })) })) (return_statement "return;" return ;) })) (expression_statement "FUN_000da200("../../gold/dwarf_reader.cc",0x801,"read_line_mappings",param_1);" (call_expression "FUN_000da200("../../gold/dwarf_reader.cc",0x801,"read_line_mappings",param_1)" identifier (argument_list "("../../gold/dwarf_reader.cc",0x801,"read_line_mappings",param_1)" ( (string_literal ""../../gold/dwarf_reader.cc"" " string_content ") , number_literal , (string_literal ""read_line_mappings"" " string_content ") , identifier ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE 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) )))) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) ;) })) (for_statement for ( (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ; (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ; (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (subscript_expression IDENT [ LIT ])) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) - (subscript_expression IDENT [ LIT ])) ))) >> LIT) )) * LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (for_statement for ( ; (binary_expression (binary_expression IDENT >> IDENT) == LIT) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { })) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) })) (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") , IDENT ))) ;) })))
(function_definition "void FUN_002192a0(int param_1,undefined4 param_2)\n\n{\n  undefined4 *puVar1;\n  int iVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  \n  if (*(char *)(param_1 + 4) != '\0') {\n    FUN_00218230(param_1);\n    uVar4 = *(uint *)(param_1 + 0x40);\n    if (uVar4 < *(uint *)(param_1 + 0x44)) {\n      do {\n        uVar3 = FUN_00212060(param_1,uVar4);\n        uVar3 = FUN_00213e50(param_1,uVar3);\n        uVar4 = FUN_00216ad0(param_1,uVar3,param_2);\n        *(uint *)(param_1 + 0x40) = uVar4;\n      } while (uVar4 < *(uint *)(param_1 + 0x44));\n    }\n    for (puVar1 = *(undefined4 **)(param_1 + 0x98); puVar1 != (undefined4 *)0x0;\n        puVar1 = (undefined4 *)*puVar1) {\n      if (puVar1[3] != puVar1[2]) {\n        uVar4 = ((int)(puVar1[3] - puVar1[2]) >> 2) * -0x33333333;\n        iVar2 = 0x1f;\n        if (uVar4 != 0) {\n          for (; uVar4 >> iVar2 == 0; iVar2 = iVar2 + -1) {\n          }\n        }\n        FUN_0020f630();\n        FUN_0020f5c0();\n      }\n    }\n    return;\n  }\n                    \n  FUN_000da200("../../gold/dwarf_reader.cc",0x801,"read_line_mappings",param_1);\n}" (primitive_type "void") (function_declarator "FUN_002192a0(int param_1,undefined4 param_2)" (identifier "FUN_002192a0") (parameter_list "(int param_1,undefined4 param_2)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) () ")"))) (compound_statement "{\n  undefined4 *puVar1;\n  int iVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  \n  if (*(char *)(param_1 + 4) != '\0') {\n    FUN_00218230(param_1);\n    uVar4 = *(uint *)(param_1 + 0x40);\n    if (uVar4 < *(uint *)(param_1 + 0x44)) {\n      do {\n        uVar3 = FUN_00212060(param_1,uVar4);\n        uVar3 = FUN_00213e50(param_1,uVar3);\n        uVar4 = FUN_00216ad0(param_1,uVar3,param_2);\n        *(uint *)(param_1 + 0x40) = uVar4;\n      } while (uVar4 < *(uint *)(param_1 + 0x44));\n    }\n    for (puVar1 = *(undefined4 **)(param_1 + 0x98); puVar1 != (undefined4 *)0x0;\n        puVar1 = (undefined4 *)*puVar1) {\n      if (puVar1[3] != puVar1[2]) {\n        uVar4 = ((int)(puVar1[3] - puVar1[2]) >> 2) * -0x33333333;\n        iVar2 = 0x1f;\n        if (uVar4 != 0) {\n          for (; uVar4 >> iVar2 == 0; iVar2 = iVar2 + -1) {\n          }\n        }\n        FUN_0020f630();\n        FUN_0020f5c0();\n      }\n    }\n    return;\n  }\n                    \n  FUN_000da200("../../gold/dwarf_reader.cc",0x801,"read_line_mappings",param_1);\n}" ({ "{") (declaration "undefined4 *puVar1;" (type_identifier "undefined4") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (if_statement "if (*(char *)(param_1 + 4) != '\0') {\n    FUN_00218230(param_1);\n    uVar4 = *(uint *)(param_1 + 0x40);\n    if (uVar4 < *(uint *)(param_1 + 0x44)) {\n      do {\n        uVar3 = FUN_00212060(param_1,uVar4);\n        uVar3 = FUN_00213e50(param_1,uVar3);\n        uVar4 = FUN_00216ad0(param_1,uVar3,param_2);\n        *(uint *)(param_1 + 0x40) = uVar4;\n      } while (uVar4 < *(uint *)(param_1 + 0x44));\n    }\n    for (puVar1 = *(undefined4 **)(param_1 + 0x98); puVar1 != (undefined4 *)0x0;\n        puVar1 = (undefined4 *)*puVar1) {\n      if (puVar1[3] != puVar1[2]) {\n        uVar4 = ((int)(puVar1[3] - puVar1[2]) >> 2) * -0x33333333;\n        iVar2 = 0x1f;\n        if (uVar4 != 0) {\n          for (; uVar4 >> iVar2 == 0; iVar2 = iVar2 + -1) {\n          }\n        }\n        FUN_0020f630();\n        FUN_0020f5c0();\n      }\n    }\n    return;\n  }" (if "if") (parenthesized_expression "(*(char *)(param_1 + 4) != '\0')" (( "(") (binary_expression "*(char *)(param_1 + 4) != '\0'" (pointer_expression "*(char *)(param_1 + 4)" (* "*") (cast_expression "(char *)(param_1 + 4)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    FUN_00218230(param_1);\n    uVar4 = *(uint *)(param_1 + 0x40);\n    if (uVar4 < *(uint *)(param_1 + 0x44)) {\n      do {\n        uVar3 = FUN_00212060(param_1,uVar4);\n        uVar3 = FUN_00213e50(param_1,uVar3);\n        uVar4 = FUN_00216ad0(param_1,uVar3,param_2);\n        *(uint *)(param_1 + 0x40) = uVar4;\n      } while (uVar4 < *(uint *)(param_1 + 0x44));\n    }\n    for (puVar1 = *(undefined4 **)(param_1 + 0x98); puVar1 != (undefined4 *)0x0;\n        puVar1 = (undefined4 *)*puVar1) {\n      if (puVar1[3] != puVar1[2]) {\n        uVar4 = ((int)(puVar1[3] - puVar1[2]) >> 2) * -0x33333333;\n        iVar2 = 0x1f;\n        if (uVar4 != 0) {\n          for (; uVar4 >> iVar2 == 0; iVar2 = iVar2 + -1) {\n          }\n        }\n        FUN_0020f630();\n        FUN_0020f5c0();\n      }\n    }\n    return;\n  }" ({ "{") (expression_statement "FUN_00218230(param_1);" (call_expression "FUN_00218230(param_1)" (identifier "FUN_00218230") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (expression_statement "uVar4 = *(uint *)(param_1 + 0x40);" (assignment_expression "uVar4 = *(uint *)(param_1 + 0x40)" (identifier "uVar4") (= "=") (pointer_expression "*(uint *)(param_1 + 0x40)" (* "*") (cast_expression "(uint *)(param_1 + 0x40)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x40)" (( "(") (binary_expression "param_1 + 0x40" (identifier "param_1") (+ "+") (number_literal "0x40")) () ")"))))) (; ";")) (if_statement "if (uVar4 < *(uint *)(param_1 + 0x44)) {\n      do {\n        uVar3 = FUN_00212060(param_1,uVar4);\n        uVar3 = FUN_00213e50(param_1,uVar3);\n        uVar4 = FUN_00216ad0(param_1,uVar3,param_2);\n        *(uint *)(param_1 + 0x40) = uVar4;\n      } while (uVar4 < *(uint *)(param_1 + 0x44));\n    }" (if "if") (parenthesized_expression "(uVar4 < *(uint *)(param_1 + 0x44))" (( "(") (binary_expression "uVar4 < *(uint *)(param_1 + 0x44)" (identifier "uVar4") (< "<") (pointer_expression "*(uint *)(param_1 + 0x44)" (* "*") (cast_expression "(uint *)(param_1 + 0x44)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x44)" (( "(") (binary_expression "param_1 + 0x44" (identifier "param_1") (+ "+") (number_literal "0x44")) () ")"))))) () ")")) (compound_statement "{\n      do {\n        uVar3 = FUN_00212060(param_1,uVar4);\n        uVar3 = FUN_00213e50(param_1,uVar3);\n        uVar4 = FUN_00216ad0(param_1,uVar3,param_2);\n        *(uint *)(param_1 + 0x40) = uVar4;\n      } while (uVar4 < *(uint *)(param_1 + 0x44));\n    }" ({ "{") (do_statement "do {\n        uVar3 = FUN_00212060(param_1,uVar4);\n        uVar3 = FUN_00213e50(param_1,uVar3);\n        uVar4 = FUN_00216ad0(param_1,uVar3,param_2);\n        *(uint *)(param_1 + 0x40) = uVar4;\n      } while (uVar4 < *(uint *)(param_1 + 0x44));" (do "do") (compound_statement "{\n        uVar3 = FUN_00212060(param_1,uVar4);\n        uVar3 = FUN_00213e50(param_1,uVar3);\n        uVar4 = FUN_00216ad0(param_1,uVar3,param_2);\n        *(uint *)(param_1 + 0x40) = uVar4;\n      }" ({ "{") (expression_statement "uVar3 = FUN_00212060(param_1,uVar4);" (assignment_expression "uVar3 = FUN_00212060(param_1,uVar4)" (identifier "uVar3") (= "=") (call_expression "FUN_00212060(param_1,uVar4)" (identifier "FUN_00212060") (argument_list "(param_1,uVar4)" (( "(") (identifier "param_1") (, ",") (identifier "uVar4") () ")")))) (; ";")) (expression_statement "uVar3 = FUN_00213e50(param_1,uVar3);" (assignment_expression "uVar3 = FUN_00213e50(param_1,uVar3)" (identifier "uVar3") (= "=") (call_expression "FUN_00213e50(param_1,uVar3)" (identifier "FUN_00213e50") (argument_list "(param_1,uVar3)" (( "(") (identifier "param_1") (, ",") (identifier "uVar3") () ")")))) (; ";")) (expression_statement "uVar4 = FUN_00216ad0(param_1,uVar3,param_2);" (assignment_expression "uVar4 = FUN_00216ad0(param_1,uVar3,param_2)" (identifier "uVar4") (= "=") (call_expression "FUN_00216ad0(param_1,uVar3,param_2)" (identifier "FUN_00216ad0") (argument_list "(param_1,uVar3,param_2)" (( "(") (identifier "param_1") (, ",") (identifier "uVar3") (, ",") (identifier "param_2") () ")")))) (; ";")) (expression_statement "*(uint *)(param_1 + 0x40) = uVar4;" (assignment_expression "*(uint *)(param_1 + 0x40) = uVar4" (pointer_expression "*(uint *)(param_1 + 0x40)" (* "*") (cast_expression "(uint *)(param_1 + 0x40)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x40)" (( "(") (binary_expression "param_1 + 0x40" (identifier "param_1") (+ "+") (number_literal "0x40")) () ")")))) (= "=") (identifier "uVar4")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar4 < *(uint *)(param_1 + 0x44))" (( "(") (binary_expression "uVar4 < *(uint *)(param_1 + 0x44)" (identifier "uVar4") (< "<") (pointer_expression "*(uint *)(param_1 + 0x44)" (* "*") (cast_expression "(uint *)(param_1 + 0x44)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x44)" (( "(") (binary_expression "param_1 + 0x44" (identifier "param_1") (+ "+") (number_literal "0x44")) () ")"))))) () ")")) (; ";")) (} "}"))) (for_statement "for (puVar1 = *(undefined4 **)(param_1 + 0x98); puVar1 != (undefined4 *)0x0;\n        puVar1 = (undefined4 *)*puVar1) {\n      if (puVar1[3] != puVar1[2]) {\n        uVar4 = ((int)(puVar1[3] - puVar1[2]) >> 2) * -0x33333333;\n        iVar2 = 0x1f;\n        if (uVar4 != 0) {\n          for (; uVar4 >> iVar2 == 0; iVar2 = iVar2 + -1) {\n          }\n        }\n        FUN_0020f630();\n        FUN_0020f5c0();\n      }\n    }" (for "for") (( "(") (assignment_expression "puVar1 = *(undefined4 **)(param_1 + 0x98)" (identifier "puVar1") (= "=") (pointer_expression "*(undefined4 **)(param_1 + 0x98)" (* "*") (cast_expression "(undefined4 **)(param_1 + 0x98)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x98)" (( "(") (binary_expression "param_1 + 0x98" (identifier "param_1") (+ "+") (number_literal "0x98")) () ")"))))) (; ";") (binary_expression "puVar1 != (undefined4 *)0x0" (identifier "puVar1") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";") (assignment_expression "puVar1 = (undefined4 *)*puVar1" (identifier "puVar1") (= "=") (cast_expression "(undefined4 *)*puVar1" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar1" (* "*") (identifier "puVar1")))) () ")") (compound_statement "{\n      if (puVar1[3] != puVar1[2]) {\n        uVar4 = ((int)(puVar1[3] - puVar1[2]) >> 2) * -0x33333333;\n        iVar2 = 0x1f;\n        if (uVar4 != 0) {\n          for (; uVar4 >> iVar2 == 0; iVar2 = iVar2 + -1) {\n          }\n        }\n        FUN_0020f630();\n        FUN_0020f5c0();\n      }\n    }" ({ "{") (if_statement "if (puVar1[3] != puVar1[2]) {\n        uVar4 = ((int)(puVar1[3] - puVar1[2]) >> 2) * -0x33333333;\n        iVar2 = 0x1f;\n        if (uVar4 != 0) {\n          for (; uVar4 >> iVar2 == 0; iVar2 = iVar2 + -1) {\n          }\n        }\n        FUN_0020f630();\n        FUN_0020f5c0();\n      }" (if "if") (parenthesized_expression "(puVar1[3] != puVar1[2])" (( "(") (binary_expression "puVar1[3] != puVar1[2]" (subscript_expression "puVar1[3]" (identifier "puVar1") ([ "[") (number_literal "3") (] "]")) (!= "!=") (subscript_expression "puVar1[2]" (identifier "puVar1") ([ "[") (number_literal "2") (] "]"))) () ")")) (compound_statement "{\n        uVar4 = ((int)(puVar1[3] - puVar1[2]) >> 2) * -0x33333333;\n        iVar2 = 0x1f;\n        if (uVar4 != 0) {\n          for (; uVar4 >> iVar2 == 0; iVar2 = iVar2 + -1) {\n          }\n        }\n        FUN_0020f630();\n        FUN_0020f5c0();\n      }" ({ "{") (expression_statement "uVar4 = ((int)(puVar1[3] - puVar1[2]) >> 2) * -0x33333333;" (assignment_expression "uVar4 = ((int)(puVar1[3] - puVar1[2]) >> 2) * -0x33333333" (identifier "uVar4") (= "=") (binary_expression "((int)(puVar1[3] - puVar1[2]) >> 2) * -0x33333333" (parenthesized_expression "((int)(puVar1[3] - puVar1[2]) >> 2)" (( "(") (binary_expression "(int)(puVar1[3] - puVar1[2]) >> 2" (cast_expression "(int)(puVar1[3] - puVar1[2])" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(puVar1[3] - puVar1[2])" (( "(") (binary_expression "puVar1[3] - puVar1[2]" (subscript_expression "puVar1[3]" (identifier "puVar1") ([ "[") (number_literal "3") (] "]")) (- "-") (subscript_expression "puVar1[2]" (identifier "puVar1") ([ "[") (number_literal "2") (] "]"))) () ")"))) (>> ">>") (number_literal "2")) () ")")) (* "*") (number_literal "-0x33333333"))) (; ";")) (expression_statement "iVar2 = 0x1f;" (assignment_expression "iVar2 = 0x1f" (identifier "iVar2") (= "=") (number_literal "0x1f")) (; ";")) (if_statement "if (uVar4 != 0) {\n          for (; uVar4 >> iVar2 == 0; iVar2 = iVar2 + -1) {\n          }\n        }" (if "if") (parenthesized_expression "(uVar4 != 0)" (( "(") (binary_expression "uVar4 != 0" (identifier "uVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          for (; uVar4 >> iVar2 == 0; iVar2 = iVar2 + -1) {\n          }\n        }" ({ "{") (for_statement "for (; uVar4 >> iVar2 == 0; iVar2 = iVar2 + -1) {\n          }" (for "for") (( "(") (; ";") (binary_expression "uVar4 >> iVar2 == 0" (binary_expression "uVar4 >> iVar2" (identifier "uVar4") (>> ">>") (identifier "iVar2")) (== "==") (number_literal "0")) (; ";") (assignment_expression "iVar2 = iVar2 + -1" (identifier "iVar2") (= "=") (binary_expression "iVar2 + -1" (identifier "iVar2") (+ "+") (number_literal "-1"))) () ")") (compound_statement "{\n          }" ({ "{") (} "}"))) (} "}"))) (expression_statement "FUN_0020f630();" (call_expression "FUN_0020f630()" (identifier "FUN_0020f630") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_0020f5c0();" (call_expression "FUN_0020f5c0()" (identifier "FUN_0020f5c0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "FUN_000da200("../../gold/dwarf_reader.cc",0x801,"read_line_mappings",param_1);" (call_expression "FUN_000da200("../../gold/dwarf_reader.cc",0x801,"read_line_mappings",param_1)" (identifier "FUN_000da200") (argument_list "("../../gold/dwarf_reader.cc",0x801,"read_line_mappings",param_1)" (( "(") (string_literal ""../../gold/dwarf_reader.cc"" (" """) (string_content "../../gold/dwarf_reader.cc") (" """)) (, ",") (number_literal "0x801") (, ",") (string_literal ""read_line_mappings"" (" """) (string_content "read_line_mappings") (" """)) (, ",") (identifier "param_1") () ")"))) (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* DWARF original prototype: void read_line_mappings(Sized_dwarf_line_info<32,_false> * this, uint
   shndx) */

void __thiscall
gold::Sized_dwarf_line_info<32,_false>::read_line_mappings
          (Sized_dwarf_line_info<32,_false> *this,uint shndx)

{
}


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

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

void MASKED(int param_1,undefined4 param_2)

{
  undefined4 *puVar1;
  int iVar2;
  undefined4 uVar3;
  uint uVar4;
  
  if (*(char *)(param_1 + 4) != '\0') {
    FUN_00218230(param_1);
    uVar4 = *(uint *)(param_1 + 0x40);
    if (uVar4 < *(uint *)(param_1 + 0x44)) {
      do {
        uVar3 = FUN_00212060(param_1,uVar4);
        uVar3 = FUN_00213e50(param_1,uVar3);
        uVar4 = FUN_00216ad0(param_1,uVar3,param_2);
        *(uint *)(param_1 + 0x40) = uVar4;
      } while (uVar4 < *(uint *)(param_1 + 0x44));
    }
    for (puVar1 = *(undefined4 **)(param_1 + 0x98); puVar1 != (undefined4 *)0x0;
        puVar1 = (undefined4 *)*puVar1) {
      if (puVar1[3] != puVar1[2]) {
        uVar4 = ((int)(puVar1[3] - puVar1[2]) >> 2) * -0x33333333;
        iVar2 = 0x1f;
        if (uVar4 != 0) {
          for (; uVar4 >> iVar2 == 0; iVar2 = iVar2 + -1) {
          }
        }
        FUN_0020f630();
        FUN_0020f5c0();
      }
    }
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_000da200("../../gold/dwarf_reader.cc",0x801,"read_line_mappings",param_1);
}

