
/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* DWARF original prototype: uint remap_str_offset(Dwo_file * this, section_offset_type val) */

uint __thiscall gold::Dwo_file::remap_str_offset(Dwo_file *this,section_offset_type val)

{
  pointer ppVar1;
  pointer ppVar2;
  int iVar3;
  int iVar4;
  pointer ppVar5;
  
  ppVar1 = (this->str_offset_map_).
           super__Vector_base<std::pair<int,_int>,_std::allocator<std::pair<int,_int>_>_>._M_impl.
           _M_finish;
  ppVar2 = (this->str_offset_map_).
           super__Vector_base<std::pair<int,_int>,_std::allocator<std::pair<int,_int>_>_>._M_impl.
           _M_start;
  ppVar5 = ppVar2;
  for (iVar4 = (int)ppVar1 - (int)ppVar2 >> 3; 0 < iVar4; iVar4 = (iVar4 - iVar3) + -1) {
    while( true ) {
      iVar3 = iVar4 >> 1;
      if (ppVar5[iVar3].first < val) break;
      iVar4 = iVar3;
      if (iVar3 == 0) goto LAB_00035bdd;
    }
    ppVar5 = ppVar5 + iVar3 + 1;
  }
LAB_00035bdd:
  if ((ppVar5 == ppVar1) || (iVar4 = ppVar5->first, val < iVar4)) {
    if (ppVar5 == ppVar2) {
      return 0;
    }
    iVar4 = ppVar5[-1].first;
    ppVar5 = ppVar5 + -1;
    if (val < iVar4) {
                    /* WARNING: Subroutine does not return */
      do_gold_unreachable("../../gold/dwp.cc",0x5e0,"remap_str_offset");
    }
  }
  return ppVar5->second + (val - iVar4);
}



/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

int FUN_00035b90(int param_1,int param_2)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  int *piVar4;
  
  piVar1 = *(int **)(param_1 + 0x2c);
  piVar4 = piVar1;
  for (iVar3 = (int)*(int **)(param_1 + 0x30) - (int)piVar1 >> 3; 0 < iVar3;
      iVar3 = (iVar3 - iVar2) + -1) {
    while( true ) {
      iVar2 = iVar3 >> 1;
      if (piVar4[iVar2 * 2] < param_2) break;
      iVar3 = iVar2;
      if (iVar2 == 0) goto LAB_00035bdd;
    }
    piVar4 = piVar4 + iVar2 * 2 + 2;
  }
LAB_00035bdd:
  if ((piVar4 == *(int **)(param_1 + 0x30)) || (iVar3 = *piVar4, param_2 < iVar3)) {
    if (piVar4 == piVar1) {
      return 0;
    }
    iVar3 = piVar4[-2];
    piVar4 = piVar4 + -2;
    if (param_2 < iVar3) {
                    /* WARNING: Subroutine does not return */
      FUN_00069d00("../../gold/dwp.cc",0x5e0,"remap_str_offset",iVar3);
    }
  }
  return piVar4[1] + (param_2 - iVar3);
}


CALL 0x000559e6
ADD EAX,0x35946b
PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x1c
MOV dword ptr [ESP + 0xc],EAX
MOV EAX,dword ptr [ESP + 0x30]
MOV ESI,dword ptr [ESP + 0x34]
MOV EBP,dword ptr [EAX + 0x30]
MOV EDI,dword ptr [EAX + 0x2c]
MOV EDX,EBP
MOV EBX,EDI
SUB EDX,EDI
SAR EDX,0x3
JMP 0x00035bc8
SUB EDX,EAX
LEA EBX,[ECX + 0x8]
SUB EDX,0x1
TEST EDX,EDX
JLE 0x00035bdd
MOV EAX,EDX
SAR EAX,0x1
LEA ECX,[EBX + EAX*0x8]
CMP ESI,dword ptr [ECX]
JG 0x00035bc0
MOV EDX,EAX
TEST EAX,EAX
JNZ 0x00035bcc
CMP EBX,EBP
JZ 0x00035be7
MOV EAX,dword ptr [EBX]
CMP EAX,ESI
JLE 0x00035c08
CMP EBX,EDI
JZ 0x00035c10
MOV EAX,dword ptr [EBX + -0x8]
LEA EDX,[EBX + -0x8]
CMP EAX,ESI
JG 0x00035c1a
SUB ESI,EAX
MOV EAX,dword ptr [EDX + 0x4]
ADD ESP,0x1c
POP EBX
ADD EAX,ESI
POP ESI
POP EDI
POP EBP
RET
MOV EDX,EBX
JMP 0x00035bf5
ADD ESP,0x1c
XOR EAX,EAX
POP EBX
POP ESI
POP EDI
POP EBP
RET
PUSH EAX
MOV EBX,dword ptr [ESP + 0x10]
LEA EAX,[EBX + 0xffef1b8c]
PUSH EAX
LEA EAX,[EBX + 0xffef1008]
PUSH 0x5e0
PUSH EAX
CALL 0x00069d00
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n\nint FUN_00035b90(int param_1,int param_2)\n\n{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  int *piVar4;\n  \n  piVar1 = *(int **)(param_1 + 0x2c);\n  piVar4 = piVar1;\n  for (iVar3 = (int)*(int **)(param_1 + 0x30) - (int)piVar1 >> 3; 0 < iVar3;\n      iVar3 = (iVar3 - iVar2) + -1) {\n    while( true ) {\n      iVar2 = iVar3 >> 1;\n      if (piVar4[iVar2 * 2] < param_2) break;\n      iVar3 = iVar2;\n      if (iVar2 == 0) goto LAB_00035bdd;\n    }\n    piVar4 = piVar4 + iVar2 * 2 + 2;\n  }\nLAB_00035bdd:\n  if ((piVar4 == *(int **)(param_1 + 0x30)) || (iVar3 = *piVar4, param_2 < iVar3)) {\n    if (piVar4 == piVar1) {\n      return 0;\n    }\n    iVar3 = piVar4[-2];\n    piVar4 = piVar4 + -2;\n    if (param_2 < iVar3) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00069d00("../../gold/dwp.cc",0x5e0,"remap_str_offset",iVar3);\n    }\n  }\n  return piVar4[1] + (param_2 - iVar3);\n}\n\n" comment (function_definition "int FUN_00035b90(int param_1,int param_2)\n\n{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  int *piVar4;\n  \n  piVar1 = *(int **)(param_1 + 0x2c);\n  piVar4 = piVar1;\n  for (iVar3 = (int)*(int **)(param_1 + 0x30) - (int)piVar1 >> 3; 0 < iVar3;\n      iVar3 = (iVar3 - iVar2) + -1) {\n    while( true ) {\n      iVar2 = iVar3 >> 1;\n      if (piVar4[iVar2 * 2] < param_2) break;\n      iVar3 = iVar2;\n      if (iVar2 == 0) goto LAB_00035bdd;\n    }\n    piVar4 = piVar4 + iVar2 * 2 + 2;\n  }\nLAB_00035bdd:\n  if ((piVar4 == *(int **)(param_1 + 0x30)) || (iVar3 = *piVar4, param_2 < iVar3)) {\n    if (piVar4 == piVar1) {\n      return 0;\n    }\n    iVar3 = piVar4[-2];\n    piVar4 = piVar4 + -2;\n    if (param_2 < iVar3) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00069d00("../../gold/dwp.cc",0x5e0,"remap_str_offset",iVar3);\n    }\n  }\n  return piVar4[1] + (param_2 - iVar3);\n}" primitive_type (function_declarator "FUN_00035b90(int param_1,int param_2)" identifier (parameter_list "(int param_1,int param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  int *piVar4;\n  \n  piVar1 = *(int **)(param_1 + 0x2c);\n  piVar4 = piVar1;\n  for (iVar3 = (int)*(int **)(param_1 + 0x30) - (int)piVar1 >> 3; 0 < iVar3;\n      iVar3 = (iVar3 - iVar2) + -1) {\n    while( true ) {\n      iVar2 = iVar3 >> 1;\n      if (piVar4[iVar2 * 2] < param_2) break;\n      iVar3 = iVar2;\n      if (iVar2 == 0) goto LAB_00035bdd;\n    }\n    piVar4 = piVar4 + iVar2 * 2 + 2;\n  }\nLAB_00035bdd:\n  if ((piVar4 == *(int **)(param_1 + 0x30)) || (iVar3 = *piVar4, param_2 < iVar3)) {\n    if (piVar4 == piVar1) {\n      return 0;\n    }\n    iVar3 = piVar4[-2];\n    piVar4 = piVar4 + -2;\n    if (param_2 < iVar3) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00069d00("../../gold/dwp.cc",0x5e0,"remap_str_offset",iVar3);\n    }\n  }\n  return piVar4[1] + (param_2 - iVar3);\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (expression_statement "piVar1 = *(int **)(param_1 + 0x2c);" (assignment_expression "piVar1 = *(int **)(param_1 + 0x2c)" identifier = (pointer_expression "*(int **)(param_1 + 0x2c)" * (cast_expression "(int **)(param_1 + 0x2c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) ))))) ;) (expression_statement "piVar4 = piVar1;" (assignment_expression "piVar4 = piVar1" identifier = identifier) ;) (for_statement "for (iVar3 = (int)*(int **)(param_1 + 0x30) - (int)piVar1 >> 3; 0 < iVar3;\n      iVar3 = (iVar3 - iVar2) + -1) {\n    while( true ) {\n      iVar2 = iVar3 >> 1;\n      if (piVar4[iVar2 * 2] < param_2) break;\n      iVar3 = iVar2;\n      if (iVar2 == 0) goto LAB_00035bdd;\n    }\n    piVar4 = piVar4 + iVar2 * 2 + 2;\n  }" for ( (assignment_expression "iVar3 = (int)*(int **)(param_1 + 0x30) - (int)piVar1 >> 3" identifier = (binary_expression "(int)*(int **)(param_1 + 0x30) - (int)piVar1 >> 3" (binary_expression "(int)*(int **)(param_1 + 0x30) - (int)piVar1" (cast_expression "(int)*(int **)(param_1 + 0x30)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(int **)(param_1 + 0x30)" * (cast_expression "(int **)(param_1 + 0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) ))))) - (cast_expression "(int)piVar1" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal)) ; (binary_expression "0 < iVar3" number_literal < identifier) ; (assignment_expression "iVar3 = (iVar3 - iVar2) + -1" identifier = (binary_expression "(iVar3 - iVar2) + -1" (parenthesized_expression "(iVar3 - iVar2)" ( (binary_expression "iVar3 - iVar2" identifier - identifier) )) + number_literal)) ) (compound_statement "{\n    while( true ) {\n      iVar2 = iVar3 >> 1;\n      if (piVar4[iVar2 * 2] < param_2) break;\n      iVar3 = iVar2;\n      if (iVar2 == 0) goto LAB_00035bdd;\n    }\n    piVar4 = piVar4 + iVar2 * 2 + 2;\n  }" { (while_statement "while( true ) {\n      iVar2 = iVar3 >> 1;\n      if (piVar4[iVar2 * 2] < param_2) break;\n      iVar3 = iVar2;\n      if (iVar2 == 0) goto LAB_00035bdd;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      iVar2 = iVar3 >> 1;\n      if (piVar4[iVar2 * 2] < param_2) break;\n      iVar3 = iVar2;\n      if (iVar2 == 0) goto LAB_00035bdd;\n    }" { (expression_statement "iVar2 = iVar3 >> 1;" (assignment_expression "iVar2 = iVar3 >> 1" identifier = (binary_expression "iVar3 >> 1" identifier >> number_literal)) ;) (if_statement "if (piVar4[iVar2 * 2] < param_2) break;" if (parenthesized_expression "(piVar4[iVar2 * 2] < param_2)" ( (binary_expression "piVar4[iVar2 * 2] < param_2" (subscript_expression "piVar4[iVar2 * 2]" identifier [ (binary_expression "iVar2 * 2" identifier * number_literal) ]) < identifier) )) (break_statement "break;" break ;)) (expression_statement "iVar3 = iVar2;" (assignment_expression "iVar3 = iVar2" identifier = identifier) ;) (if_statement "if (iVar2 == 0) goto LAB_00035bdd;" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00035bdd;" goto statement_identifier ;)) })) (expression_statement "piVar4 = piVar4 + iVar2 * 2 + 2;" (assignment_expression "piVar4 = piVar4 + iVar2 * 2 + 2" identifier = (binary_expression "piVar4 + iVar2 * 2 + 2" (binary_expression "piVar4 + iVar2 * 2" identifier + (binary_expression "iVar2 * 2" identifier * number_literal)) + number_literal)) ;) })) (labeled_statement "LAB_00035bdd:\n  if ((piVar4 == *(int **)(param_1 + 0x30)) || (iVar3 = *piVar4, param_2 < iVar3)) {\n    if (piVar4 == piVar1) {\n      return 0;\n    }\n    iVar3 = piVar4[-2];\n    piVar4 = piVar4 + -2;\n    if (param_2 < iVar3) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00069d00("../../gold/dwp.cc",0x5e0,"remap_str_offset",iVar3);\n    }\n  }" statement_identifier : (if_statement "if ((piVar4 == *(int **)(param_1 + 0x30)) || (iVar3 = *piVar4, param_2 < iVar3)) {\n    if (piVar4 == piVar1) {\n      return 0;\n    }\n    iVar3 = piVar4[-2];\n    piVar4 = piVar4 + -2;\n    if (param_2 < iVar3) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00069d00("../../gold/dwp.cc",0x5e0,"remap_str_offset",iVar3);\n    }\n  }" if (parenthesized_expression "((piVar4 == *(int **)(param_1 + 0x30)) || (iVar3 = *piVar4, param_2 < iVar3))" ( (binary_expression "(piVar4 == *(int **)(param_1 + 0x30)) || (iVar3 = *piVar4, param_2 < iVar3)" (parenthesized_expression "(piVar4 == *(int **)(param_1 + 0x30))" ( (binary_expression "piVar4 == *(int **)(param_1 + 0x30)" identifier == (pointer_expression "*(int **)(param_1 + 0x30)" * (cast_expression "(int **)(param_1 + 0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) ))))) )) || (parenthesized_expression "(iVar3 = *piVar4, param_2 < iVar3)" ( (comma_expression "iVar3 = *piVar4, param_2 < iVar3" (assignment_expression "iVar3 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) , (binary_expression "param_2 < iVar3" identifier < identifier)) ))) )) (compound_statement "{\n    if (piVar4 == piVar1) {\n      return 0;\n    }\n    iVar3 = piVar4[-2];\n    piVar4 = piVar4 + -2;\n    if (param_2 < iVar3) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00069d00("../../gold/dwp.cc",0x5e0,"remap_str_offset",iVar3);\n    }\n  }" { (if_statement "if (piVar4 == piVar1) {\n      return 0;\n    }" if (parenthesized_expression "(piVar4 == piVar1)" ( (binary_expression "piVar4 == piVar1" identifier == identifier) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar3 = piVar4[-2];" (assignment_expression "iVar3 = piVar4[-2]" identifier = (subscript_expression "piVar4[-2]" identifier [ number_literal ])) ;) (expression_statement "piVar4 = piVar4 + -2;" (assignment_expression "piVar4 = piVar4 + -2" identifier = (binary_expression "piVar4 + -2" identifier + number_literal)) ;) (if_statement "if (param_2 < iVar3) {\n                    /* WARNING: Subroutine does not return */\n      FUN_00069d00("../../gold/dwp.cc",0x5e0,"remap_str_offset",iVar3);\n    }" if (parenthesized_expression "(param_2 < iVar3)" ( (binary_expression "param_2 < iVar3" identifier < identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      FUN_00069d00("../../gold/dwp.cc",0x5e0,"remap_str_offset",iVar3);\n    }" { comment (expression_statement "FUN_00069d00("../../gold/dwp.cc",0x5e0,"remap_str_offset",iVar3);" (call_expression "FUN_00069d00("../../gold/dwp.cc",0x5e0,"remap_str_offset",iVar3)" identifier (argument_list "("../../gold/dwp.cc",0x5e0,"remap_str_offset",iVar3)" ( (string_literal ""../../gold/dwp.cc"" " string_content ") , number_literal , (string_literal ""remap_str_offset"" " string_content ") , identifier ))) ;) })) }))) (return_statement "return piVar4[1] + (param_2 - iVar3);" return (binary_expression "piVar4[1] + (param_2 - iVar3)" (subscript_expression "piVar4[1]" identifier [ number_literal ]) + (parenthesized_expression "(param_2 - iVar3)" ( (binary_expression "param_2 - iVar3" identifier - identifier) ))) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n/* DWARF original prototype: uint remap_str_offset(Dwo_file * this, section_offset_type val) */\n\nuint __thiscall gold::Dwo_file::remap_str_offset(Dwo_file *this,section_offset_type val)\n\n{\n  pointer ppVar1;\n  pointer ppVar2;\n  int iVar3;\n  int iVar4;\n  pointer ppVar5;\n  \n  ppVar1 = (this->str_offset_map_).\n           super__Vector_base<std::pair<int,_int>,_std::allocator<std::pair<int,_int>_>_>._M_impl.\n           _M_finish;\n  ppVar2 = (this->str_offset_map_).\n           super__Vector_base<std::pair<int,_int>,_std::allocator<std::pair<int,_int>_>_>._M_impl.\n           _M_start;\n  ppVar5 = ppVar2;\n  for (iVar4 = (int)ppVar1 - (int)ppVar2 >> 3; 0 < iVar4; iVar4 = (iVar4 - iVar3) + -1) {\n    while( true ) {\n      iVar3 = iVar4 >> 1;\n      if (ppVar5[iVar3].first < val) break;\n      iVar4 = iVar3;\n      if (iVar3 == 0) goto LAB_00035bdd;\n    }\n    ppVar5 = ppVar5 + iVar3 + 1;\n  }\nLAB_00035bdd:\n  if ((ppVar5 == ppVar1) || (iVar4 = ppVar5->first, val < iVar4)) {\n    if (ppVar5 == ppVar2) {\n      return 0;\n    }\n    iVar4 = ppVar5[-1].first;\n    ppVar5 = ppVar5 + -1;\n    if (val < iVar4) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/dwp.cc",0x5e0,"remap_str_offset");\n    }\n  }\n  return ppVar5->second + (val - iVar4);\n}\n\n" comment comment (function_definition "uint __thiscall gold::Dwo_file::remap_str_offset(Dwo_file *this,section_offset_type val)\n\n{\n  pointer ppVar1;\n  pointer ppVar2;\n  int iVar3;\n  int iVar4;\n  pointer ppVar5;\n  \n  ppVar1 = (this->str_offset_map_).\n           super__Vector_base<std::pair<int,_int>,_std::allocator<std::pair<int,_int>_>_>._M_impl.\n           _M_finish;\n  ppVar2 = (this->str_offset_map_).\n           super__Vector_base<std::pair<int,_int>,_std::allocator<std::pair<int,_int>_>_>._M_impl.\n           _M_start;\n  ppVar5 = ppVar2;\n  for (iVar4 = (int)ppVar1 - (int)ppVar2 >> 3; 0 < iVar4; iVar4 = (iVar4 - iVar3) + -1) {\n    while( true ) {\n      iVar3 = iVar4 >> 1;\n      if (ppVar5[iVar3].first < val) break;\n      iVar4 = iVar3;\n      if (iVar3 == 0) goto LAB_00035bdd;\n    }\n    ppVar5 = ppVar5 + iVar3 + 1;\n  }\nLAB_00035bdd:\n  if ((ppVar5 == ppVar1) || (iVar4 = ppVar5->first, val < iVar4)) {\n    if (ppVar5 == ppVar2) {\n      return 0;\n    }\n    iVar4 = ppVar5[-1].first;\n    ppVar5 = ppVar5 + -1;\n    if (val < iVar4) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/dwp.cc",0x5e0,"remap_str_offset");\n    }\n  }\n  return ppVar5->second + (val - iVar4);\n}" type_identifier (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Dwo_file::" identifier : : identifier : :) (function_declarator "remap_str_offset(Dwo_file *this,section_offset_type val)" identifier (parameter_list "(Dwo_file *this,section_offset_type val)" ( (parameter_declaration "Dwo_file *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "section_offset_type val" type_identifier identifier) ))) (compound_statement "{\n  pointer ppVar1;\n  pointer ppVar2;\n  int iVar3;\n  int iVar4;\n  pointer ppVar5;\n  \n  ppVar1 = (this->str_offset_map_).\n           super__Vector_base<std::pair<int,_int>,_std::allocator<std::pair<int,_int>_>_>._M_impl.\n           _M_finish;\n  ppVar2 = (this->str_offset_map_).\n           super__Vector_base<std::pair<int,_int>,_std::allocator<std::pair<int,_int>_>_>._M_impl.\n           _M_start;\n  ppVar5 = ppVar2;\n  for (iVar4 = (int)ppVar1 - (int)ppVar2 >> 3; 0 < iVar4; iVar4 = (iVar4 - iVar3) + -1) {\n    while( true ) {\n      iVar3 = iVar4 >> 1;\n      if (ppVar5[iVar3].first < val) break;\n      iVar4 = iVar3;\n      if (iVar3 == 0) goto LAB_00035bdd;\n    }\n    ppVar5 = ppVar5 + iVar3 + 1;\n  }\nLAB_00035bdd:\n  if ((ppVar5 == ppVar1) || (iVar4 = ppVar5->first, val < iVar4)) {\n    if (ppVar5 == ppVar2) {\n      return 0;\n    }\n    iVar4 = ppVar5[-1].first;\n    ppVar5 = ppVar5 + -1;\n    if (val < iVar4) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/dwp.cc",0x5e0,"remap_str_offset");\n    }\n  }\n  return ppVar5->second + (val - iVar4);\n}" { (declaration "pointer ppVar1;" type_identifier identifier ;) (declaration "pointer ppVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "pointer ppVar5;" type_identifier identifier ;) (ERROR "ppVar1 = (this->str_offset_map_).\n           super__Vector_base<std::pair<int,_int>,_std::allocator<std::" (comma_expression "ppVar1 = (this->str_offset_map_).\n           super__Vector_base<std::pair<int,_int>,_std" (binary_expression "ppVar1 = (this->str_offset_map_).\n           super__Vector_base<std::pair<int" (assignment_expression "ppVar1 = (this->str_offset_map_).\n           super__Vector_base<std" identifier = (binary_expression "(this->str_offset_map_).\n           super__Vector_base<std" (field_expression "(this->str_offset_map_).\n           super__Vector_base" (parenthesized_expression "(this->str_offset_map_)" ( (field_expression "this->str_offset_map_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::pair" : : identifier) < identifier) , (binary_expression "_int>,_std" identifier > (ERROR "," ,) identifier)) : : (binary_expression "allocator<std" identifier < identifier) : :) (expression_statement "pair<int,_int>_>_>._M_impl.\n           _M_finish;" (comma_expression "pair<int,_int>_>_>._M_impl.\n           _M_finish" (binary_expression "pair<int" identifier < identifier) , (field_expression "_int>_>_>._M_impl.\n           _M_finish" (field_expression "_int>_>_>._M_impl" (binary_expression "_int>_>_" (binary_expression "_int>_" identifier > identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier)) ;) (ERROR "ppVar2 = (this->str_offset_map_).\n           super__Vector_base<std::pair<int,_int>,_std::allocator<std::" (comma_expression "ppVar2 = (this->str_offset_map_).\n           super__Vector_base<std::pair<int,_int>,_std" (binary_expression "ppVar2 = (this->str_offset_map_).\n           super__Vector_base<std::pair<int" (assignment_expression "ppVar2 = (this->str_offset_map_).\n           super__Vector_base<std" identifier = (binary_expression "(this->str_offset_map_).\n           super__Vector_base<std" (field_expression "(this->str_offset_map_).\n           super__Vector_base" (parenthesized_expression "(this->str_offset_map_)" ( (field_expression "this->str_offset_map_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::pair" : : identifier) < identifier) , (binary_expression "_int>,_std" identifier > (ERROR "," ,) identifier)) : : (binary_expression "allocator<std" identifier < identifier) : :) (expression_statement "pair<int,_int>_>_>._M_impl.\n           _M_start;" (comma_expression "pair<int,_int>_>_>._M_impl.\n           _M_start" (binary_expression "pair<int" identifier < identifier) , (field_expression "_int>_>_>._M_impl.\n           _M_start" (field_expression "_int>_>_>._M_impl" (binary_expression "_int>_>_" (binary_expression "_int>_" identifier > identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier)) ;) (expression_statement "ppVar5 = ppVar2;" (assignment_expression "ppVar5 = ppVar2" identifier = identifier) ;) (for_statement "for (iVar4 = (int)ppVar1 - (int)ppVar2 >> 3; 0 < iVar4; iVar4 = (iVar4 - iVar3) + -1) {\n    while( true ) {\n      iVar3 = iVar4 >> 1;\n      if (ppVar5[iVar3].first < val) break;\n      iVar4 = iVar3;\n      if (iVar3 == 0) goto LAB_00035bdd;\n    }\n    ppVar5 = ppVar5 + iVar3 + 1;\n  }" for ( (assignment_expression "iVar4 = (int)ppVar1 - (int)ppVar2 >> 3" identifier = (binary_expression "(int)ppVar1 - (int)ppVar2 >> 3" (binary_expression "(int)ppVar1 - (int)ppVar2" (cast_expression "(int)ppVar1" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)ppVar2" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal)) ; (binary_expression "0 < iVar4" number_literal < identifier) ; (assignment_expression "iVar4 = (iVar4 - iVar3) + -1" identifier = (binary_expression "(iVar4 - iVar3) + -1" (parenthesized_expression "(iVar4 - iVar3)" ( (binary_expression "iVar4 - iVar3" identifier - identifier) )) + number_literal)) ) (compound_statement "{\n    while( true ) {\n      iVar3 = iVar4 >> 1;\n      if (ppVar5[iVar3].first < val) break;\n      iVar4 = iVar3;\n      if (iVar3 == 0) goto LAB_00035bdd;\n    }\n    ppVar5 = ppVar5 + iVar3 + 1;\n  }" { (while_statement "while( true ) {\n      iVar3 = iVar4 >> 1;\n      if (ppVar5[iVar3].first < val) break;\n      iVar4 = iVar3;\n      if (iVar3 == 0) goto LAB_00035bdd;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      iVar3 = iVar4 >> 1;\n      if (ppVar5[iVar3].first < val) break;\n      iVar4 = iVar3;\n      if (iVar3 == 0) goto LAB_00035bdd;\n    }" { (expression_statement "iVar3 = iVar4 >> 1;" (assignment_expression "iVar3 = iVar4 >> 1" identifier = (binary_expression "iVar4 >> 1" identifier >> number_literal)) ;) (if_statement "if (ppVar5[iVar3].first < val) break;" if (parenthesized_expression "(ppVar5[iVar3].first < val)" ( (binary_expression "ppVar5[iVar3].first < val" (field_expression "ppVar5[iVar3].first" (subscript_expression "ppVar5[iVar3]" identifier [ identifier ]) . field_identifier) < identifier) )) (break_statement "break;" break ;)) (expression_statement "iVar4 = iVar3;" (assignment_expression "iVar4 = iVar3" identifier = identifier) ;) (if_statement "if (iVar3 == 0) goto LAB_00035bdd;" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00035bdd;" goto statement_identifier ;)) })) (expression_statement "ppVar5 = ppVar5 + iVar3 + 1;" (assignment_expression "ppVar5 = ppVar5 + iVar3 + 1" identifier = (binary_expression "ppVar5 + iVar3 + 1" (binary_expression "ppVar5 + iVar3" identifier + identifier) + number_literal)) ;) })) (labeled_statement "LAB_00035bdd:\n  if ((ppVar5 == ppVar1) || (iVar4 = ppVar5->first, val < iVar4)) {\n    if (ppVar5 == ppVar2) {\n      return 0;\n    }\n    iVar4 = ppVar5[-1].first;\n    ppVar5 = ppVar5 + -1;\n    if (val < iVar4) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/dwp.cc",0x5e0,"remap_str_offset");\n    }\n  }" statement_identifier : (if_statement "if ((ppVar5 == ppVar1) || (iVar4 = ppVar5->first, val < iVar4)) {\n    if (ppVar5 == ppVar2) {\n      return 0;\n    }\n    iVar4 = ppVar5[-1].first;\n    ppVar5 = ppVar5 + -1;\n    if (val < iVar4) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/dwp.cc",0x5e0,"remap_str_offset");\n    }\n  }" if (parenthesized_expression "((ppVar5 == ppVar1) || (iVar4 = ppVar5->first, val < iVar4))" ( (binary_expression "(ppVar5 == ppVar1) || (iVar4 = ppVar5->first, val < iVar4)" (parenthesized_expression "(ppVar5 == ppVar1)" ( (binary_expression "ppVar5 == ppVar1" identifier == identifier) )) || (parenthesized_expression "(iVar4 = ppVar5->first, val < iVar4)" ( (comma_expression "iVar4 = ppVar5->first, val < iVar4" (assignment_expression "iVar4 = ppVar5->first" identifier = (field_expression "ppVar5->first" identifier -> field_identifier)) , (binary_expression "val < iVar4" identifier < identifier)) ))) )) (compound_statement "{\n    if (ppVar5 == ppVar2) {\n      return 0;\n    }\n    iVar4 = ppVar5[-1].first;\n    ppVar5 = ppVar5 + -1;\n    if (val < iVar4) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/dwp.cc",0x5e0,"remap_str_offset");\n    }\n  }" { (if_statement "if (ppVar5 == ppVar2) {\n      return 0;\n    }" if (parenthesized_expression "(ppVar5 == ppVar2)" ( (binary_expression "ppVar5 == ppVar2" identifier == identifier) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar4 = ppVar5[-1].first;" (assignment_expression "iVar4 = ppVar5[-1].first" identifier = (field_expression "ppVar5[-1].first" (subscript_expression "ppVar5[-1]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "ppVar5 = ppVar5 + -1;" (assignment_expression "ppVar5 = ppVar5 + -1" identifier = (binary_expression "ppVar5 + -1" identifier + number_literal)) ;) (if_statement "if (val < iVar4) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/dwp.cc",0x5e0,"remap_str_offset");\n    }" if (parenthesized_expression "(val < iVar4)" ( (binary_expression "val < iVar4" identifier < identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/dwp.cc",0x5e0,"remap_str_offset");\n    }" { comment (expression_statement "do_gold_unreachable("../../gold/dwp.cc",0x5e0,"remap_str_offset");" (call_expression "do_gold_unreachable("../../gold/dwp.cc",0x5e0,"remap_str_offset")" identifier (argument_list "("../../gold/dwp.cc",0x5e0,"remap_str_offset")" ( (string_literal ""../../gold/dwp.cc"" " string_content ") , number_literal , (string_literal ""remap_str_offset"" " string_content ") ))) ;) })) }))) (return_statement "return ppVar5->second + (val - iVar4);" return (binary_expression "ppVar5->second + (val - iVar4)" (field_expression "ppVar5->second" identifier -> field_identifier) + (parenthesized_expression "(val - iVar4)" ( (binary_expression "val - iVar4" identifier - identifier) ))) ;) })))
(translation_unit "int FUN_00035b90(int param_1,int param_2)\n\n{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  int *piVar4;\n  \n  piVar1 = *(int **)(param_1 + 0x2c);\n  piVar4 = piVar1;\n  for (iVar3 = (int)*(int **)(param_1 + 0x30) - (int)piVar1 >> 3; 0 < iVar3;\n      iVar3 = (iVar3 - iVar2) + -1) {\n    while( true ) {\n      iVar2 = iVar3 >> 1;\n      if (piVar4[iVar2 * 2] < param_2) break;\n      iVar3 = iVar2;\n      if (iVar2 == 0) goto LAB_00035bdd;\n    }\n    piVar4 = piVar4 + iVar2 * 2 + 2;\n  }\nLAB_00035bdd:\n  if ((piVar4 == *(int **)(param_1 + 0x30)) || (iVar3 = *piVar4, param_2 < iVar3)) {\n    if (piVar4 == piVar1) {\n      return 0;\n    }\n    iVar3 = piVar4[-2];\n    piVar4 = piVar4 + -2;\n    if (param_2 < iVar3) {\n                    \n      FUN_00069d00("../../gold/dwp.cc",0x5e0,"remap_str_offset",iVar3);\n    }\n  }\n  return piVar4[1] + (param_2 - iVar3);\n}\n\n" (function_definition "int FUN_00035b90(int param_1,int param_2)\n\n{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  int *piVar4;\n  \n  piVar1 = *(int **)(param_1 + 0x2c);\n  piVar4 = piVar1;\n  for (iVar3 = (int)*(int **)(param_1 + 0x30) - (int)piVar1 >> 3; 0 < iVar3;\n      iVar3 = (iVar3 - iVar2) + -1) {\n    while( true ) {\n      iVar2 = iVar3 >> 1;\n      if (piVar4[iVar2 * 2] < param_2) break;\n      iVar3 = iVar2;\n      if (iVar2 == 0) goto LAB_00035bdd;\n    }\n    piVar4 = piVar4 + iVar2 * 2 + 2;\n  }\nLAB_00035bdd:\n  if ((piVar4 == *(int **)(param_1 + 0x30)) || (iVar3 = *piVar4, param_2 < iVar3)) {\n    if (piVar4 == piVar1) {\n      return 0;\n    }\n    iVar3 = piVar4[-2];\n    piVar4 = piVar4 + -2;\n    if (param_2 < iVar3) {\n                    \n      FUN_00069d00("../../gold/dwp.cc",0x5e0,"remap_str_offset",iVar3);\n    }\n  }\n  return piVar4[1] + (param_2 - iVar3);\n}" primitive_type (function_declarator "FUN_00035b90(int param_1,int param_2)" identifier (parameter_list "(int param_1,int param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  int *piVar4;\n  \n  piVar1 = *(int **)(param_1 + 0x2c);\n  piVar4 = piVar1;\n  for (iVar3 = (int)*(int **)(param_1 + 0x30) - (int)piVar1 >> 3; 0 < iVar3;\n      iVar3 = (iVar3 - iVar2) + -1) {\n    while( true ) {\n      iVar2 = iVar3 >> 1;\n      if (piVar4[iVar2 * 2] < param_2) break;\n      iVar3 = iVar2;\n      if (iVar2 == 0) goto LAB_00035bdd;\n    }\n    piVar4 = piVar4 + iVar2 * 2 + 2;\n  }\nLAB_00035bdd:\n  if ((piVar4 == *(int **)(param_1 + 0x30)) || (iVar3 = *piVar4, param_2 < iVar3)) {\n    if (piVar4 == piVar1) {\n      return 0;\n    }\n    iVar3 = piVar4[-2];\n    piVar4 = piVar4 + -2;\n    if (param_2 < iVar3) {\n                    \n      FUN_00069d00("../../gold/dwp.cc",0x5e0,"remap_str_offset",iVar3);\n    }\n  }\n  return piVar4[1] + (param_2 - iVar3);\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (expression_statement "piVar1 = *(int **)(param_1 + 0x2c);" (assignment_expression "piVar1 = *(int **)(param_1 + 0x2c)" identifier = (pointer_expression "*(int **)(param_1 + 0x2c)" * (cast_expression "(int **)(param_1 + 0x2c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) ))))) ;) (expression_statement "piVar4 = piVar1;" (assignment_expression "piVar4 = piVar1" identifier = identifier) ;) (for_statement "for (iVar3 = (int)*(int **)(param_1 + 0x30) - (int)piVar1 >> 3; 0 < iVar3;\n      iVar3 = (iVar3 - iVar2) + -1) {\n    while( true ) {\n      iVar2 = iVar3 >> 1;\n      if (piVar4[iVar2 * 2] < param_2) break;\n      iVar3 = iVar2;\n      if (iVar2 == 0) goto LAB_00035bdd;\n    }\n    piVar4 = piVar4 + iVar2 * 2 + 2;\n  }" for ( (assignment_expression "iVar3 = (int)*(int **)(param_1 + 0x30) - (int)piVar1 >> 3" identifier = (binary_expression "(int)*(int **)(param_1 + 0x30) - (int)piVar1 >> 3" (binary_expression "(int)*(int **)(param_1 + 0x30) - (int)piVar1" (cast_expression "(int)*(int **)(param_1 + 0x30)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(int **)(param_1 + 0x30)" * (cast_expression "(int **)(param_1 + 0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) ))))) - (cast_expression "(int)piVar1" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal)) ; (binary_expression "0 < iVar3" number_literal < identifier) ; (assignment_expression "iVar3 = (iVar3 - iVar2) + -1" identifier = (binary_expression "(iVar3 - iVar2) + -1" (parenthesized_expression "(iVar3 - iVar2)" ( (binary_expression "iVar3 - iVar2" identifier - identifier) )) + number_literal)) ) (compound_statement "{\n    while( true ) {\n      iVar2 = iVar3 >> 1;\n      if (piVar4[iVar2 * 2] < param_2) break;\n      iVar3 = iVar2;\n      if (iVar2 == 0) goto LAB_00035bdd;\n    }\n    piVar4 = piVar4 + iVar2 * 2 + 2;\n  }" { (while_statement "while( true ) {\n      iVar2 = iVar3 >> 1;\n      if (piVar4[iVar2 * 2] < param_2) break;\n      iVar3 = iVar2;\n      if (iVar2 == 0) goto LAB_00035bdd;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      iVar2 = iVar3 >> 1;\n      if (piVar4[iVar2 * 2] < param_2) break;\n      iVar3 = iVar2;\n      if (iVar2 == 0) goto LAB_00035bdd;\n    }" { (expression_statement "iVar2 = iVar3 >> 1;" (assignment_expression "iVar2 = iVar3 >> 1" identifier = (binary_expression "iVar3 >> 1" identifier >> number_literal)) ;) (if_statement "if (piVar4[iVar2 * 2] < param_2) break;" if (parenthesized_expression "(piVar4[iVar2 * 2] < param_2)" ( (binary_expression "piVar4[iVar2 * 2] < param_2" (subscript_expression "piVar4[iVar2 * 2]" identifier [ (binary_expression "iVar2 * 2" identifier * number_literal) ]) < identifier) )) (break_statement "break;" break ;)) (expression_statement "iVar3 = iVar2;" (assignment_expression "iVar3 = iVar2" identifier = identifier) ;) (if_statement "if (iVar2 == 0) goto LAB_00035bdd;" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00035bdd;" goto statement_identifier ;)) })) (expression_statement "piVar4 = piVar4 + iVar2 * 2 + 2;" (assignment_expression "piVar4 = piVar4 + iVar2 * 2 + 2" identifier = (binary_expression "piVar4 + iVar2 * 2 + 2" (binary_expression "piVar4 + iVar2 * 2" identifier + (binary_expression "iVar2 * 2" identifier * number_literal)) + number_literal)) ;) })) (labeled_statement "LAB_00035bdd:\n  if ((piVar4 == *(int **)(param_1 + 0x30)) || (iVar3 = *piVar4, param_2 < iVar3)) {\n    if (piVar4 == piVar1) {\n      return 0;\n    }\n    iVar3 = piVar4[-2];\n    piVar4 = piVar4 + -2;\n    if (param_2 < iVar3) {\n                    \n      FUN_00069d00("../../gold/dwp.cc",0x5e0,"remap_str_offset",iVar3);\n    }\n  }" statement_identifier : (if_statement "if ((piVar4 == *(int **)(param_1 + 0x30)) || (iVar3 = *piVar4, param_2 < iVar3)) {\n    if (piVar4 == piVar1) {\n      return 0;\n    }\n    iVar3 = piVar4[-2];\n    piVar4 = piVar4 + -2;\n    if (param_2 < iVar3) {\n                    \n      FUN_00069d00("../../gold/dwp.cc",0x5e0,"remap_str_offset",iVar3);\n    }\n  }" if (parenthesized_expression "((piVar4 == *(int **)(param_1 + 0x30)) || (iVar3 = *piVar4, param_2 < iVar3))" ( (binary_expression "(piVar4 == *(int **)(param_1 + 0x30)) || (iVar3 = *piVar4, param_2 < iVar3)" (parenthesized_expression "(piVar4 == *(int **)(param_1 + 0x30))" ( (binary_expression "piVar4 == *(int **)(param_1 + 0x30)" identifier == (pointer_expression "*(int **)(param_1 + 0x30)" * (cast_expression "(int **)(param_1 + 0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) ))))) )) || (parenthesized_expression "(iVar3 = *piVar4, param_2 < iVar3)" ( (comma_expression "iVar3 = *piVar4, param_2 < iVar3" (assignment_expression "iVar3 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) , (binary_expression "param_2 < iVar3" identifier < identifier)) ))) )) (compound_statement "{\n    if (piVar4 == piVar1) {\n      return 0;\n    }\n    iVar3 = piVar4[-2];\n    piVar4 = piVar4 + -2;\n    if (param_2 < iVar3) {\n                    \n      FUN_00069d00("../../gold/dwp.cc",0x5e0,"remap_str_offset",iVar3);\n    }\n  }" { (if_statement "if (piVar4 == piVar1) {\n      return 0;\n    }" if (parenthesized_expression "(piVar4 == piVar1)" ( (binary_expression "piVar4 == piVar1" identifier == identifier) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar3 = piVar4[-2];" (assignment_expression "iVar3 = piVar4[-2]" identifier = (subscript_expression "piVar4[-2]" identifier [ number_literal ])) ;) (expression_statement "piVar4 = piVar4 + -2;" (assignment_expression "piVar4 = piVar4 + -2" identifier = (binary_expression "piVar4 + -2" identifier + number_literal)) ;) (if_statement "if (param_2 < iVar3) {\n                    \n      FUN_00069d00("../../gold/dwp.cc",0x5e0,"remap_str_offset",iVar3);\n    }" if (parenthesized_expression "(param_2 < iVar3)" ( (binary_expression "param_2 < iVar3" identifier < identifier) )) (compound_statement "{\n                    \n      FUN_00069d00("../../gold/dwp.cc",0x5e0,"remap_str_offset",iVar3);\n    }" { (expression_statement "FUN_00069d00("../../gold/dwp.cc",0x5e0,"remap_str_offset",iVar3);" (call_expression "FUN_00069d00("../../gold/dwp.cc",0x5e0,"remap_str_offset",iVar3)" identifier (argument_list "("../../gold/dwp.cc",0x5e0,"remap_str_offset",iVar3)" ( (string_literal ""../../gold/dwp.cc"" " string_content ") , number_literal , (string_literal ""remap_str_offset"" " string_content ") , identifier ))) ;) })) }))) (return_statement "return piVar4[1] + (param_2 - iVar3);" return (binary_expression "piVar4[1] + (param_2 - iVar3)" (subscript_expression "piVar4[1]" identifier [ number_literal ]) + (parenthesized_expression "(param_2 - iVar3)" ( (binary_expression "param_2 - iVar3" identifier - 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 (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (for_statement for ( (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) >> LIT)) ; (binary_expression LIT < IDENT) ; (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) + LIT)) ) (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ (binary_expression IDENT * LIT) ]) < IDENT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression IDENT * LIT)) + LIT)) ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * IDENT)) , (binary_expression IDENT < IDENT)) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") , IDENT ))) ;) })) }))) (return_statement return (binary_expression (subscript_expression IDENT [ LIT ]) + (parenthesized_expression ( (binary_expression IDENT - IDENT) ))) ;) })))
(function_definition "int FUN_00035b90(int param_1,int param_2)\n\n{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  int *piVar4;\n  \n  piVar1 = *(int **)(param_1 + 0x2c);\n  piVar4 = piVar1;\n  for (iVar3 = (int)*(int **)(param_1 + 0x30) - (int)piVar1 >> 3; 0 < iVar3;\n      iVar3 = (iVar3 - iVar2) + -1) {\n    while( true ) {\n      iVar2 = iVar3 >> 1;\n      if (piVar4[iVar2 * 2] < param_2) break;\n      iVar3 = iVar2;\n      if (iVar2 == 0) goto LAB_00035bdd;\n    }\n    piVar4 = piVar4 + iVar2 * 2 + 2;\n  }\nLAB_00035bdd:\n  if ((piVar4 == *(int **)(param_1 + 0x30)) || (iVar3 = *piVar4, param_2 < iVar3)) {\n    if (piVar4 == piVar1) {\n      return 0;\n    }\n    iVar3 = piVar4[-2];\n    piVar4 = piVar4 + -2;\n    if (param_2 < iVar3) {\n                    \n      FUN_00069d00("../../gold/dwp.cc",0x5e0,"remap_str_offset",iVar3);\n    }\n  }\n  return piVar4[1] + (param_2 - iVar3);\n}" (primitive_type "int") (function_declarator "FUN_00035b90(int param_1,int param_2)" (identifier "FUN_00035b90") (parameter_list "(int param_1,int param_2)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) () ")"))) (compound_statement "{\n  int *piVar1;\n  int iVar2;\n  int iVar3;\n  int *piVar4;\n  \n  piVar1 = *(int **)(param_1 + 0x2c);\n  piVar4 = piVar1;\n  for (iVar3 = (int)*(int **)(param_1 + 0x30) - (int)piVar1 >> 3; 0 < iVar3;\n      iVar3 = (iVar3 - iVar2) + -1) {\n    while( true ) {\n      iVar2 = iVar3 >> 1;\n      if (piVar4[iVar2 * 2] < param_2) break;\n      iVar3 = iVar2;\n      if (iVar2 == 0) goto LAB_00035bdd;\n    }\n    piVar4 = piVar4 + iVar2 * 2 + 2;\n  }\nLAB_00035bdd:\n  if ((piVar4 == *(int **)(param_1 + 0x30)) || (iVar3 = *piVar4, param_2 < iVar3)) {\n    if (piVar4 == piVar1) {\n      return 0;\n    }\n    iVar3 = piVar4[-2];\n    piVar4 = piVar4 + -2;\n    if (param_2 < iVar3) {\n                    \n      FUN_00069d00("../../gold/dwp.cc",0x5e0,"remap_str_offset",iVar3);\n    }\n  }\n  return piVar4[1] + (param_2 - iVar3);\n}" ({ "{") (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int *piVar4;" (primitive_type "int") (pointer_declarator "*piVar4" (* "*") (identifier "piVar4")) (; ";")) (expression_statement "piVar1 = *(int **)(param_1 + 0x2c);" (assignment_expression "piVar1 = *(int **)(param_1 + 0x2c)" (identifier "piVar1") (= "=") (pointer_expression "*(int **)(param_1 + 0x2c)" (* "*") (cast_expression "(int **)(param_1 + 0x2c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x2c)" (( "(") (binary_expression "param_1 + 0x2c" (identifier "param_1") (+ "+") (number_literal "0x2c")) () ")"))))) (; ";")) (expression_statement "piVar4 = piVar1;" (assignment_expression "piVar4 = piVar1" (identifier "piVar4") (= "=") (identifier "piVar1")) (; ";")) (for_statement "for (iVar3 = (int)*(int **)(param_1 + 0x30) - (int)piVar1 >> 3; 0 < iVar3;\n      iVar3 = (iVar3 - iVar2) + -1) {\n    while( true ) {\n      iVar2 = iVar3 >> 1;\n      if (piVar4[iVar2 * 2] < param_2) break;\n      iVar3 = iVar2;\n      if (iVar2 == 0) goto LAB_00035bdd;\n    }\n    piVar4 = piVar4 + iVar2 * 2 + 2;\n  }" (for "for") (( "(") (assignment_expression "iVar3 = (int)*(int **)(param_1 + 0x30) - (int)piVar1 >> 3" (identifier "iVar3") (= "=") (binary_expression "(int)*(int **)(param_1 + 0x30) - (int)piVar1 >> 3" (binary_expression "(int)*(int **)(param_1 + 0x30) - (int)piVar1" (cast_expression "(int)*(int **)(param_1 + 0x30)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*(int **)(param_1 + 0x30)" (* "*") (cast_expression "(int **)(param_1 + 0x30)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x30)" (( "(") (binary_expression "param_1 + 0x30" (identifier "param_1") (+ "+") (number_literal "0x30")) () ")"))))) (- "-") (cast_expression "(int)piVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar1"))) (>> ">>") (number_literal "3"))) (; ";") (binary_expression "0 < iVar3" (number_literal "0") (< "<") (identifier "iVar3")) (; ";") (assignment_expression "iVar3 = (iVar3 - iVar2) + -1" (identifier "iVar3") (= "=") (binary_expression "(iVar3 - iVar2) + -1" (parenthesized_expression "(iVar3 - iVar2)" (( "(") (binary_expression "iVar3 - iVar2" (identifier "iVar3") (- "-") (identifier "iVar2")) () ")")) (+ "+") (number_literal "-1"))) () ")") (compound_statement "{\n    while( true ) {\n      iVar2 = iVar3 >> 1;\n      if (piVar4[iVar2 * 2] < param_2) break;\n      iVar3 = iVar2;\n      if (iVar2 == 0) goto LAB_00035bdd;\n    }\n    piVar4 = piVar4 + iVar2 * 2 + 2;\n  }" ({ "{") (while_statement "while( true ) {\n      iVar2 = iVar3 >> 1;\n      if (piVar4[iVar2 * 2] < param_2) break;\n      iVar3 = iVar2;\n      if (iVar2 == 0) goto LAB_00035bdd;\n    }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n      iVar2 = iVar3 >> 1;\n      if (piVar4[iVar2 * 2] < param_2) break;\n      iVar3 = iVar2;\n      if (iVar2 == 0) goto LAB_00035bdd;\n    }" ({ "{") (expression_statement "iVar2 = iVar3 >> 1;" (assignment_expression "iVar2 = iVar3 >> 1" (identifier "iVar2") (= "=") (binary_expression "iVar3 >> 1" (identifier "iVar3") (>> ">>") (number_literal "1"))) (; ";")) (if_statement "if (piVar4[iVar2 * 2] < param_2) break;" (if "if") (parenthesized_expression "(piVar4[iVar2 * 2] < param_2)" (( "(") (binary_expression "piVar4[iVar2 * 2] < param_2" (subscript_expression "piVar4[iVar2 * 2]" (identifier "piVar4") ([ "[") (binary_expression "iVar2 * 2" (identifier "iVar2") (* "*") (number_literal "2")) (] "]")) (< "<") (identifier "param_2")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar3 = iVar2;" (assignment_expression "iVar3 = iVar2" (identifier "iVar3") (= "=") (identifier "iVar2")) (; ";")) (if_statement "if (iVar2 == 0) goto LAB_00035bdd;" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00035bdd;" (goto "goto") (statement_identifier "LAB_00035bdd") (; ";"))) (} "}"))) (expression_statement "piVar4 = piVar4 + iVar2 * 2 + 2;" (assignment_expression "piVar4 = piVar4 + iVar2 * 2 + 2" (identifier "piVar4") (= "=") (binary_expression "piVar4 + iVar2 * 2 + 2" (binary_expression "piVar4 + iVar2 * 2" (identifier "piVar4") (+ "+") (binary_expression "iVar2 * 2" (identifier "iVar2") (* "*") (number_literal "2"))) (+ "+") (number_literal "2"))) (; ";")) (} "}"))) (labeled_statement "LAB_00035bdd:\n  if ((piVar4 == *(int **)(param_1 + 0x30)) || (iVar3 = *piVar4, param_2 < iVar3)) {\n    if (piVar4 == piVar1) {\n      return 0;\n    }\n    iVar3 = piVar4[-2];\n    piVar4 = piVar4 + -2;\n    if (param_2 < iVar3) {\n                    \n      FUN_00069d00("../../gold/dwp.cc",0x5e0,"remap_str_offset",iVar3);\n    }\n  }" (statement_identifier "LAB_00035bdd") (: ":") (if_statement "if ((piVar4 == *(int **)(param_1 + 0x30)) || (iVar3 = *piVar4, param_2 < iVar3)) {\n    if (piVar4 == piVar1) {\n      return 0;\n    }\n    iVar3 = piVar4[-2];\n    piVar4 = piVar4 + -2;\n    if (param_2 < iVar3) {\n                    \n      FUN_00069d00("../../gold/dwp.cc",0x5e0,"remap_str_offset",iVar3);\n    }\n  }" (if "if") (parenthesized_expression "((piVar4 == *(int **)(param_1 + 0x30)) || (iVar3 = *piVar4, param_2 < iVar3))" (( "(") (binary_expression "(piVar4 == *(int **)(param_1 + 0x30)) || (iVar3 = *piVar4, param_2 < iVar3)" (parenthesized_expression "(piVar4 == *(int **)(param_1 + 0x30))" (( "(") (binary_expression "piVar4 == *(int **)(param_1 + 0x30)" (identifier "piVar4") (== "==") (pointer_expression "*(int **)(param_1 + 0x30)" (* "*") (cast_expression "(int **)(param_1 + 0x30)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x30)" (( "(") (binary_expression "param_1 + 0x30" (identifier "param_1") (+ "+") (number_literal "0x30")) () ")"))))) () ")")) (|| "||") (parenthesized_expression "(iVar3 = *piVar4, param_2 < iVar3)" (( "(") (comma_expression "iVar3 = *piVar4, param_2 < iVar3" (assignment_expression "iVar3 = *piVar4" (identifier "iVar3") (= "=") (pointer_expression "*piVar4" (* "*") (identifier "piVar4"))) (, ",") (binary_expression "param_2 < iVar3" (identifier "param_2") (< "<") (identifier "iVar3"))) () ")"))) () ")")) (compound_statement "{\n    if (piVar4 == piVar1) {\n      return 0;\n    }\n    iVar3 = piVar4[-2];\n    piVar4 = piVar4 + -2;\n    if (param_2 < iVar3) {\n                    \n      FUN_00069d00("../../gold/dwp.cc",0x5e0,"remap_str_offset",iVar3);\n    }\n  }" ({ "{") (if_statement "if (piVar4 == piVar1) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(piVar4 == piVar1)" (( "(") (binary_expression "piVar4 == piVar1" (identifier "piVar4") (== "==") (identifier "piVar1")) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "iVar3 = piVar4[-2];" (assignment_expression "iVar3 = piVar4[-2]" (identifier "iVar3") (= "=") (subscript_expression "piVar4[-2]" (identifier "piVar4") ([ "[") (number_literal "-2") (] "]"))) (; ";")) (expression_statement "piVar4 = piVar4 + -2;" (assignment_expression "piVar4 = piVar4 + -2" (identifier "piVar4") (= "=") (binary_expression "piVar4 + -2" (identifier "piVar4") (+ "+") (number_literal "-2"))) (; ";")) (if_statement "if (param_2 < iVar3) {\n                    \n      FUN_00069d00("../../gold/dwp.cc",0x5e0,"remap_str_offset",iVar3);\n    }" (if "if") (parenthesized_expression "(param_2 < iVar3)" (( "(") (binary_expression "param_2 < iVar3" (identifier "param_2") (< "<") (identifier "iVar3")) () ")")) (compound_statement "{\n                    \n      FUN_00069d00("../../gold/dwp.cc",0x5e0,"remap_str_offset",iVar3);\n    }" ({ "{") (expression_statement "FUN_00069d00("../../gold/dwp.cc",0x5e0,"remap_str_offset",iVar3);" (call_expression "FUN_00069d00("../../gold/dwp.cc",0x5e0,"remap_str_offset",iVar3)" (identifier "FUN_00069d00") (argument_list "("../../gold/dwp.cc",0x5e0,"remap_str_offset",iVar3)" (( "(") (string_literal ""../../gold/dwp.cc"" (" """) (string_content "../../gold/dwp.cc") (" """)) (, ",") (number_literal "0x5e0") (, ",") (string_literal ""remap_str_offset"" (" """) (string_content "remap_str_offset") (" """)) (, ",") (identifier "iVar3") () ")"))) (; ";")) (} "}"))) (} "}")))) (return_statement "return piVar4[1] + (param_2 - iVar3);" (return "return") (binary_expression "piVar4[1] + (param_2 - iVar3)" (subscript_expression "piVar4[1]" (identifier "piVar4") ([ "[") (number_literal "1") (] "]")) (+ "+") (parenthesized_expression "(param_2 - iVar3)" (( "(") (binary_expression "param_2 - iVar3" (identifier "param_2") (- "-") (identifier "iVar3")) () ")"))) (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* DWARF original prototype: uint remap_str_offset(Dwo_file * this, section_offset_type val) */

type_1 __thiscall gold::type_2::function_1(type_2 *this,type_3 var_7)

{
  type_4 var_9;
  type_4 var_10;
  int var_6;
  int var_5;
  type_4 var_8;
  
  var_9 = (this->str_offset_map_).
           super__Vector_base<std::var_1<var_2,var_3>,_std::allocator<std::var_1<var_2,var_3>var_4>var_4>._M_impl.
           _M_finish;
  var_10 = (this->str_offset_map_).
           super__Vector_base<std::var_1<var_2,var_3>,_std::allocator<std::var_1<var_2,var_3>var_4>var_4>._M_impl.
           _M_start;
  var_8 = var_10;
  for (var_5 = (int)var_9 - (int)var_10 >> 3; 0 < var_5; var_5 = (var_5 - var_6) + -1) {
    while( true ) {
      var_6 = var_5 >> 1;
      if (var_8[var_6].first < var_7) break;
      var_5 = var_6;
      if (var_6 == 0) goto LAB_00035bdd;
    }
    var_8 = var_8 + var_6 + 1;
  }
LAB_00035bdd:
  if ((var_8 == var_9) || (var_5 = var_8->first, var_7 < var_5)) {
    if (var_8 == var_10) {
      return 0;
    }
    var_5 = var_8[-1].first;
    var_8 = var_8 + -1;
    if (var_7 < var_5) {
                    /* WARNING: Subroutine does not return */
      var_11("../../gold/dwp.cc",0x5e0,"remap_str_offset");
    }
  }
  return var_8->second + (var_7 - var_5);
}


(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: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (for_statement initializer: (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (number_literal))) condition: (binary_expression left: (number_literal) right: (identifier)) update: (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (number_literal))) body: (compound_statement (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))) right: (identifier))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))) right: (binary_expression left: (identifier) right: (identifier)))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (number_literal) (string_literal (string_content)) (identifier))))))))) (return_statement (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))))))

/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

int MASKED(int param_1,int param_2)

{
  int *piVar1;
  int iVar2;
  int iVar3;
  int *piVar4;
  
  piVar1 = *(int **)(param_1 + 0x2c);
  piVar4 = piVar1;
  for (iVar3 = (int)*(int **)(param_1 + 0x30) - (int)piVar1 >> 3; 0 < iVar3;
      iVar3 = (iVar3 - iVar2) + -1) {
    while( true ) {
      iVar2 = iVar3 >> 1;
      if (piVar4[iVar2 * 2] < param_2) break;
      iVar3 = iVar2;
      if (iVar2 == 0) goto LAB_00035bdd;
    }
    piVar4 = piVar4 + iVar2 * 2 + 2;
  }
LAB_00035bdd:
  if ((piVar4 == *(int **)(param_1 + 0x30)) || (iVar3 = *piVar4, param_2 < iVar3)) {
    if (piVar4 == piVar1) {
      return 0;
    }
    iVar3 = piVar4[-2];
    piVar4 = piVar4 + -2;
    if (param_2 < iVar3) {
                    /* WARNING: Subroutine does not return */
      FUN_00069d00("../../gold/dwp.cc",0x5e0,"remap_str_offset",iVar3);
    }
  }
  return piVar4[1] + (param_2 - iVar3);
}

