
const_iterator
gold::offset_to_iterator
          (vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>
           *offsets,off_t offset)

{
  Offset_to_lineno_entry *pOVar1;
  Offset_to_lineno_entry *pOVar2;
  const_iterator cVar3;
  Offset_to_lineno_entry *pOVar4;
  long lVar5;
  Offset_to_lineno_entry *pOVar6;
  long lVar7;
  
  cVar3._M_current =
       (offsets->
       super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>
       )._M_impl._M_finish;
  pOVar1 = (offsets->
           super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>
           )._M_impl._M_start;
  pOVar4 = pOVar1;
  for (lVar5 = ((long)cVar3._M_current - (long)pOVar1 >> 3) * -0x5555555555555555; 0 < lVar5;
      lVar5 = (lVar5 - lVar7) + -1) {
    while( true ) {
      lVar7 = lVar5 >> 1;
      if (pOVar4[lVar7].offset < offset) break;
      lVar5 = lVar7;
      if (lVar7 == 0) goto LAB_00466b78;
    }
    pOVar4 = pOVar4 + lVar7 + 1;
  }
LAB_00466b78:
  if (((pOVar1 != pOVar4) || (pOVar1->offset <= offset)) && (cVar3._M_current != pOVar4)) {
    if (pOVar4->offset != offset) {
      if (pOVar1 == pOVar4) {
                    /* WARNING: Subroutine does not return */
        do_gold_unreachable("../../gold/dwarf_reader.cc",0x889,"offset_to_iterator");
      }
      pOVar6 = pOVar1;
      if (pOVar1 != pOVar4 + -1) {
        lVar5 = pOVar4[-2].offset;
        pOVar2 = pOVar4 + -1;
        pOVar6 = pOVar4 + -2;
        while (pOVar4[-1].offset == lVar5) {
          if (pOVar1 == pOVar6) goto LAB_00466c09;
          lVar5 = pOVar6[-1].offset;
          pOVar2 = pOVar6;
          pOVar6 = pOVar6 + -1;
        }
        pOVar6 = pOVar2;
        if (pOVar2 == pOVar4) {
          return (const_iterator)cVar3._M_current;
        }
      }
LAB_00466c09:
      do {
        if (pOVar6->line_num != -1) {
          return (const_iterator)pOVar6;
        }
        pOVar6 = pOVar6 + 1;
      } while (pOVar6 != pOVar4);
      return (const_iterator)cVar3._M_current;
    }
    do {
      if (pOVar4->line_num != -1) {
        if (cVar3._M_current == pOVar4) {
          return (const_iterator)cVar3._M_current;
        }
        return (const_iterator)pOVar4;
      }
      pOVar4 = pOVar4 + 1;
      if (cVar3._M_current == pOVar4) {
        return (const_iterator)cVar3._M_current;
      }
    } while (pOVar4->offset == offset);
  }
  return (const_iterator)cVar3._M_current;
}



long * FUN_00466b30(long *param_1,long param_2)

{
  long *plVar1;
  long *plVar2;
  long *plVar3;
  long lVar4;
  long *plVar5;
  long lVar6;
  
  plVar2 = (long *)param_1[1];
  param_1 = (long *)*param_1;
  plVar3 = param_1;
  for (lVar4 = ((long)plVar2 - (long)param_1 >> 3) * -0x5555555555555555; 0 < lVar4;
      lVar4 = (lVar4 - lVar6) + -1) {
    while( true ) {
      lVar6 = lVar4 >> 1;
      if (plVar3[lVar6 * 3] < param_2) break;
      lVar4 = lVar6;
      if (lVar6 == 0) goto LAB_00466b78;
    }
    plVar3 = plVar3 + lVar6 * 3 + 3;
  }
LAB_00466b78:
  if (((param_1 != plVar3) || (*param_1 <= param_2)) && (plVar2 != plVar3)) {
    if (*plVar3 != param_2) {
      if (param_1 == plVar3) {
                    /* WARNING: Subroutine does not return */
        FUN_00352af0("../../gold/dwarf_reader.cc",0x889,"offset_to_iterator");
      }
      plVar5 = param_1;
      if (param_1 != plVar3 + -3) {
        lVar4 = plVar3[-6];
        plVar1 = plVar3 + -3;
        plVar5 = plVar3 + -6;
        while (plVar3[-3] == lVar4) {
          if (param_1 == plVar5) goto LAB_00466c09;
          lVar4 = plVar5[-3];
          plVar1 = plVar5;
          plVar5 = plVar5 + -3;
        }
        plVar5 = plVar1;
        if (plVar1 == plVar3) {
          return plVar2;
        }
      }
LAB_00466c09:
      do {
        if ((int)plVar5[2] != -1) {
          return plVar5;
        }
        plVar5 = plVar5 + 3;
      } while (plVar5 != plVar3);
      return plVar2;
    }
    do {
      if ((int)plVar3[2] != -1) {
        if (plVar2 == plVar3) {
          return plVar2;
        }
        return plVar3;
      }
      plVar3 = plVar3 + 3;
      if (plVar2 == plVar3) {
        return plVar2;
      }
    } while (*plVar3 == param_2);
  }
  return plVar2;
}


MOV RAX,qword ptr [RDI + 0x8]
MOV R9,qword ptr [RDI]
MOV RCX,-0x5555555555555555
MOV RDX,RAX
SUB RDX,R9
SAR RDX,0x3
IMUL RDX,RCX
MOV RCX,R9
NOP word ptr [RAX + RAX*0x1]
TEST RDX,RDX
JLE 0x00466b78
MOV RDI,RDX
SAR RDI,0x1
LEA R8,[RDI + RDI*0x2]
LEA R8,[RCX + R8*0x8]
CMP RSI,qword ptr [R8]
JG 0x00466be0
MOV RDX,RDI
TEST RDI,RDI
JNZ 0x00466b5d
CMP R9,RCX
JZ 0x00466bf0
CMP RAX,RCX
JZ 0x00466bf5
CMP qword ptr [RCX],RSI
JZ 0x00466bcd
CMP R9,RCX
JZ 0x00466c46
LEA RSI,[RCX + -0x18]
MOV RDI,qword ptr [RCX + -0x18]
CMP R9,RSI
JZ 0x00466c41
LEA RDX,[RCX + -0x30]
CMP RDI,qword ptr [RCX + -0x30]
JZ 0x00466bbd
JMP 0x00466c13
LEA RSI,[RDX + -0x18]
CMP qword ptr [RDX + -0x18],RDI
JNZ 0x00466c20
MOV RDX,RSI
CMP R9,RDX
JNZ 0x00466bb0
JMP 0x00466c09
CMP qword ptr [RCX],RSI
JNZ 0x00466bf5
CMP dword ptr [RCX + 0x10],-0x1
JNZ 0x00466c38
ADD RCX,0x18
CMP RAX,RCX
JNZ 0x00466bc8
RET
SUB RDX,RDI
LEA RCX,[R8 + 0x18]
SUB RDX,0x1
JMP 0x00466b58
CMP qword ptr [R9],RSI
JLE 0x00466b7d
RET
ADD RDX,0x18
CMP RDX,RCX
JZ 0x00466c30
CMP dword ptr [RDX + 0x10],-0x1
JZ 0x00466c00
MOV RAX,RDX
RET
MOV RDX,RSI
NOP word ptr CS:[RAX + RAX*0x1]
CMP RDX,RCX
JNZ 0x00466c09
RET
RET
CMP RAX,RCX
JZ 0x00466bf5
MOV RAX,RCX
RET
MOV RDX,R9
JMP 0x00466c09
PUSH RAX
LEA RDX,[0x586890]
MOV ESI,0x889
LEA RDI,[0x5864c5]
CALL 0x00352af0
(translation_unit "long * FUN_00466b30(long *param_1,long param_2)\n\n{\n  long *plVar1;\n  long *plVar2;\n  long *plVar3;\n  long lVar4;\n  long *plVar5;\n  long lVar6;\n  \n  plVar2 = (long *)param_1[1];\n  param_1 = (long *)*param_1;\n  plVar3 = param_1;\n  for (lVar4 = ((long)plVar2 - (long)param_1 >> 3) * -0x5555555555555555; 0 < lVar4;\n      lVar4 = (lVar4 - lVar6) + -1) {\n    while( true ) {\n      lVar6 = lVar4 >> 1;\n      if (plVar3[lVar6 * 3] < param_2) break;\n      lVar4 = lVar6;\n      if (lVar6 == 0) goto LAB_00466b78;\n    }\n    plVar3 = plVar3 + lVar6 * 3 + 3;\n  }\nLAB_00466b78:\n  if (((param_1 != plVar3) || (*param_1 <= param_2)) && (plVar2 != plVar3)) {\n    if (*plVar3 != param_2) {\n      if (param_1 == plVar3) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00352af0("../../gold/dwarf_reader.cc",0x889,"offset_to_iterator");\n      }\n      plVar5 = param_1;\n      if (param_1 != plVar3 + -3) {\n        lVar4 = plVar3[-6];\n        plVar1 = plVar3 + -3;\n        plVar5 = plVar3 + -6;\n        while (plVar3[-3] == lVar4) {\n          if (param_1 == plVar5) goto LAB_00466c09;\n          lVar4 = plVar5[-3];\n          plVar1 = plVar5;\n          plVar5 = plVar5 + -3;\n        }\n        plVar5 = plVar1;\n        if (plVar1 == plVar3) {\n          return plVar2;\n        }\n      }\nLAB_00466c09:\n      do {\n        if ((int)plVar5[2] != -1) {\n          return plVar5;\n        }\n        plVar5 = plVar5 + 3;\n      } while (plVar5 != plVar3);\n      return plVar2;\n    }\n    do {\n      if ((int)plVar3[2] != -1) {\n        if (plVar2 == plVar3) {\n          return plVar2;\n        }\n        return plVar3;\n      }\n      plVar3 = plVar3 + 3;\n      if (plVar2 == plVar3) {\n        return plVar2;\n      }\n    } while (*plVar3 == param_2);\n  }\n  return plVar2;\n}\n\n" (function_definition "long * FUN_00466b30(long *param_1,long param_2)\n\n{\n  long *plVar1;\n  long *plVar2;\n  long *plVar3;\n  long lVar4;\n  long *plVar5;\n  long lVar6;\n  \n  plVar2 = (long *)param_1[1];\n  param_1 = (long *)*param_1;\n  plVar3 = param_1;\n  for (lVar4 = ((long)plVar2 - (long)param_1 >> 3) * -0x5555555555555555; 0 < lVar4;\n      lVar4 = (lVar4 - lVar6) + -1) {\n    while( true ) {\n      lVar6 = lVar4 >> 1;\n      if (plVar3[lVar6 * 3] < param_2) break;\n      lVar4 = lVar6;\n      if (lVar6 == 0) goto LAB_00466b78;\n    }\n    plVar3 = plVar3 + lVar6 * 3 + 3;\n  }\nLAB_00466b78:\n  if (((param_1 != plVar3) || (*param_1 <= param_2)) && (plVar2 != plVar3)) {\n    if (*plVar3 != param_2) {\n      if (param_1 == plVar3) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00352af0("../../gold/dwarf_reader.cc",0x889,"offset_to_iterator");\n      }\n      plVar5 = param_1;\n      if (param_1 != plVar3 + -3) {\n        lVar4 = plVar3[-6];\n        plVar1 = plVar3 + -3;\n        plVar5 = plVar3 + -6;\n        while (plVar3[-3] == lVar4) {\n          if (param_1 == plVar5) goto LAB_00466c09;\n          lVar4 = plVar5[-3];\n          plVar1 = plVar5;\n          plVar5 = plVar5 + -3;\n        }\n        plVar5 = plVar1;\n        if (plVar1 == plVar3) {\n          return plVar2;\n        }\n      }\nLAB_00466c09:\n      do {\n        if ((int)plVar5[2] != -1) {\n          return plVar5;\n        }\n        plVar5 = plVar5 + 3;\n      } while (plVar5 != plVar3);\n      return plVar2;\n    }\n    do {\n      if ((int)plVar3[2] != -1) {\n        if (plVar2 == plVar3) {\n          return plVar2;\n        }\n        return plVar3;\n      }\n      plVar3 = plVar3 + 3;\n      if (plVar2 == plVar3) {\n        return plVar2;\n      }\n    } while (*plVar3 == param_2);\n  }\n  return plVar2;\n}" (sized_type_specifier "long" long) (pointer_declarator "* FUN_00466b30(long *param_1,long param_2)" * (function_declarator "FUN_00466b30(long *param_1,long param_2)" identifier (parameter_list "(long *param_1,long param_2)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) )))) (compound_statement "{\n  long *plVar1;\n  long *plVar2;\n  long *plVar3;\n  long lVar4;\n  long *plVar5;\n  long lVar6;\n  \n  plVar2 = (long *)param_1[1];\n  param_1 = (long *)*param_1;\n  plVar3 = param_1;\n  for (lVar4 = ((long)plVar2 - (long)param_1 >> 3) * -0x5555555555555555; 0 < lVar4;\n      lVar4 = (lVar4 - lVar6) + -1) {\n    while( true ) {\n      lVar6 = lVar4 >> 1;\n      if (plVar3[lVar6 * 3] < param_2) break;\n      lVar4 = lVar6;\n      if (lVar6 == 0) goto LAB_00466b78;\n    }\n    plVar3 = plVar3 + lVar6 * 3 + 3;\n  }\nLAB_00466b78:\n  if (((param_1 != plVar3) || (*param_1 <= param_2)) && (plVar2 != plVar3)) {\n    if (*plVar3 != param_2) {\n      if (param_1 == plVar3) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00352af0("../../gold/dwarf_reader.cc",0x889,"offset_to_iterator");\n      }\n      plVar5 = param_1;\n      if (param_1 != plVar3 + -3) {\n        lVar4 = plVar3[-6];\n        plVar1 = plVar3 + -3;\n        plVar5 = plVar3 + -6;\n        while (plVar3[-3] == lVar4) {\n          if (param_1 == plVar5) goto LAB_00466c09;\n          lVar4 = plVar5[-3];\n          plVar1 = plVar5;\n          plVar5 = plVar5 + -3;\n        }\n        plVar5 = plVar1;\n        if (plVar1 == plVar3) {\n          return plVar2;\n        }\n      }\nLAB_00466c09:\n      do {\n        if ((int)plVar5[2] != -1) {\n          return plVar5;\n        }\n        plVar5 = plVar5 + 3;\n      } while (plVar5 != plVar3);\n      return plVar2;\n    }\n    do {\n      if ((int)plVar3[2] != -1) {\n        if (plVar2 == plVar3) {\n          return plVar2;\n        }\n        return plVar3;\n      }\n      plVar3 = plVar3 + 3;\n      if (plVar2 == plVar3) {\n        return plVar2;\n      }\n    } while (*plVar3 == param_2);\n  }\n  return plVar2;\n}" { (declaration "long *plVar1;" (sized_type_specifier "long" long) (pointer_declarator "*plVar1" * identifier) ;) (declaration "long *plVar2;" (sized_type_specifier "long" long) (pointer_declarator "*plVar2" * identifier) ;) (declaration "long *plVar3;" (sized_type_specifier "long" long) (pointer_declarator "*plVar3" * identifier) ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "long *plVar5;" (sized_type_specifier "long" long) (pointer_declarator "*plVar5" * identifier) ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (expression_statement "plVar2 = (long *)param_1[1];" (assignment_expression "plVar2 = (long *)param_1[1]" identifier = (cast_expression "(long *)param_1[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (expression_statement "param_1 = (long *)*param_1;" (assignment_expression "param_1 = (long *)*param_1" identifier = (cast_expression "(long *)*param_1" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "plVar3 = param_1;" (assignment_expression "plVar3 = param_1" identifier = identifier) ;) (for_statement "for (lVar4 = ((long)plVar2 - (long)param_1 >> 3) * -0x5555555555555555; 0 < lVar4;\n      lVar4 = (lVar4 - lVar6) + -1) {\n    while( true ) {\n      lVar6 = lVar4 >> 1;\n      if (plVar3[lVar6 * 3] < param_2) break;\n      lVar4 = lVar6;\n      if (lVar6 == 0) goto LAB_00466b78;\n    }\n    plVar3 = plVar3 + lVar6 * 3 + 3;\n  }" for ( (assignment_expression "lVar4 = ((long)plVar2 - (long)param_1 >> 3) * -0x5555555555555555" identifier = (binary_expression "((long)plVar2 - (long)param_1 >> 3) * -0x5555555555555555" (parenthesized_expression "((long)plVar2 - (long)param_1 >> 3)" ( (binary_expression "(long)plVar2 - (long)param_1 >> 3" (binary_expression "(long)plVar2 - (long)param_1" (cast_expression "(long)plVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal) )) * number_literal)) ; (binary_expression "0 < lVar4" number_literal < identifier) ; (assignment_expression "lVar4 = (lVar4 - lVar6) + -1" identifier = (binary_expression "(lVar4 - lVar6) + -1" (parenthesized_expression "(lVar4 - lVar6)" ( (binary_expression "lVar4 - lVar6" identifier - identifier) )) + number_literal)) ) (compound_statement "{\n    while( true ) {\n      lVar6 = lVar4 >> 1;\n      if (plVar3[lVar6 * 3] < param_2) break;\n      lVar4 = lVar6;\n      if (lVar6 == 0) goto LAB_00466b78;\n    }\n    plVar3 = plVar3 + lVar6 * 3 + 3;\n  }" { (while_statement "while( true ) {\n      lVar6 = lVar4 >> 1;\n      if (plVar3[lVar6 * 3] < param_2) break;\n      lVar4 = lVar6;\n      if (lVar6 == 0) goto LAB_00466b78;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      lVar6 = lVar4 >> 1;\n      if (plVar3[lVar6 * 3] < param_2) break;\n      lVar4 = lVar6;\n      if (lVar6 == 0) goto LAB_00466b78;\n    }" { (expression_statement "lVar6 = lVar4 >> 1;" (assignment_expression "lVar6 = lVar4 >> 1" identifier = (binary_expression "lVar4 >> 1" identifier >> number_literal)) ;) (if_statement "if (plVar3[lVar6 * 3] < param_2) break;" if (parenthesized_expression "(plVar3[lVar6 * 3] < param_2)" ( (binary_expression "plVar3[lVar6 * 3] < param_2" (subscript_expression "plVar3[lVar6 * 3]" identifier [ (binary_expression "lVar6 * 3" identifier * number_literal) ]) < identifier) )) (break_statement "break;" break ;)) (expression_statement "lVar4 = lVar6;" (assignment_expression "lVar4 = lVar6" identifier = identifier) ;) (if_statement "if (lVar6 == 0) goto LAB_00466b78;" if (parenthesized_expression "(lVar6 == 0)" ( (binary_expression "lVar6 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00466b78;" goto statement_identifier ;)) })) (expression_statement "plVar3 = plVar3 + lVar6 * 3 + 3;" (assignment_expression "plVar3 = plVar3 + lVar6 * 3 + 3" identifier = (binary_expression "plVar3 + lVar6 * 3 + 3" (binary_expression "plVar3 + lVar6 * 3" identifier + (binary_expression "lVar6 * 3" identifier * number_literal)) + number_literal)) ;) })) (labeled_statement "LAB_00466b78:\n  if (((param_1 != plVar3) || (*param_1 <= param_2)) && (plVar2 != plVar3)) {\n    if (*plVar3 != param_2) {\n      if (param_1 == plVar3) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00352af0("../../gold/dwarf_reader.cc",0x889,"offset_to_iterator");\n      }\n      plVar5 = param_1;\n      if (param_1 != plVar3 + -3) {\n        lVar4 = plVar3[-6];\n        plVar1 = plVar3 + -3;\n        plVar5 = plVar3 + -6;\n        while (plVar3[-3] == lVar4) {\n          if (param_1 == plVar5) goto LAB_00466c09;\n          lVar4 = plVar5[-3];\n          plVar1 = plVar5;\n          plVar5 = plVar5 + -3;\n        }\n        plVar5 = plVar1;\n        if (plVar1 == plVar3) {\n          return plVar2;\n        }\n      }\nLAB_00466c09:\n      do {\n        if ((int)plVar5[2] != -1) {\n          return plVar5;\n        }\n        plVar5 = plVar5 + 3;\n      } while (plVar5 != plVar3);\n      return plVar2;\n    }\n    do {\n      if ((int)plVar3[2] != -1) {\n        if (plVar2 == plVar3) {\n          return plVar2;\n        }\n        return plVar3;\n      }\n      plVar3 = plVar3 + 3;\n      if (plVar2 == plVar3) {\n        return plVar2;\n      }\n    } while (*plVar3 == param_2);\n  }" statement_identifier : (if_statement "if (((param_1 != plVar3) || (*param_1 <= param_2)) && (plVar2 != plVar3)) {\n    if (*plVar3 != param_2) {\n      if (param_1 == plVar3) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00352af0("../../gold/dwarf_reader.cc",0x889,"offset_to_iterator");\n      }\n      plVar5 = param_1;\n      if (param_1 != plVar3 + -3) {\n        lVar4 = plVar3[-6];\n        plVar1 = plVar3 + -3;\n        plVar5 = plVar3 + -6;\n        while (plVar3[-3] == lVar4) {\n          if (param_1 == plVar5) goto LAB_00466c09;\n          lVar4 = plVar5[-3];\n          plVar1 = plVar5;\n          plVar5 = plVar5 + -3;\n        }\n        plVar5 = plVar1;\n        if (plVar1 == plVar3) {\n          return plVar2;\n        }\n      }\nLAB_00466c09:\n      do {\n        if ((int)plVar5[2] != -1) {\n          return plVar5;\n        }\n        plVar5 = plVar5 + 3;\n      } while (plVar5 != plVar3);\n      return plVar2;\n    }\n    do {\n      if ((int)plVar3[2] != -1) {\n        if (plVar2 == plVar3) {\n          return plVar2;\n        }\n        return plVar3;\n      }\n      plVar3 = plVar3 + 3;\n      if (plVar2 == plVar3) {\n        return plVar2;\n      }\n    } while (*plVar3 == param_2);\n  }" if (parenthesized_expression "(((param_1 != plVar3) || (*param_1 <= param_2)) && (plVar2 != plVar3))" ( (binary_expression "((param_1 != plVar3) || (*param_1 <= param_2)) && (plVar2 != plVar3)" (parenthesized_expression "((param_1 != plVar3) || (*param_1 <= param_2))" ( (binary_expression "(param_1 != plVar3) || (*param_1 <= param_2)" (parenthesized_expression "(param_1 != plVar3)" ( (binary_expression "param_1 != plVar3" identifier != identifier) )) || (parenthesized_expression "(*param_1 <= param_2)" ( (binary_expression "*param_1 <= param_2" (pointer_expression "*param_1" * identifier) <= identifier) ))) )) && (parenthesized_expression "(plVar2 != plVar3)" ( (binary_expression "plVar2 != plVar3" identifier != identifier) ))) )) (compound_statement "{\n    if (*plVar3 != param_2) {\n      if (param_1 == plVar3) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00352af0("../../gold/dwarf_reader.cc",0x889,"offset_to_iterator");\n      }\n      plVar5 = param_1;\n      if (param_1 != plVar3 + -3) {\n        lVar4 = plVar3[-6];\n        plVar1 = plVar3 + -3;\n        plVar5 = plVar3 + -6;\n        while (plVar3[-3] == lVar4) {\n          if (param_1 == plVar5) goto LAB_00466c09;\n          lVar4 = plVar5[-3];\n          plVar1 = plVar5;\n          plVar5 = plVar5 + -3;\n        }\n        plVar5 = plVar1;\n        if (plVar1 == plVar3) {\n          return plVar2;\n        }\n      }\nLAB_00466c09:\n      do {\n        if ((int)plVar5[2] != -1) {\n          return plVar5;\n        }\n        plVar5 = plVar5 + 3;\n      } while (plVar5 != plVar3);\n      return plVar2;\n    }\n    do {\n      if ((int)plVar3[2] != -1) {\n        if (plVar2 == plVar3) {\n          return plVar2;\n        }\n        return plVar3;\n      }\n      plVar3 = plVar3 + 3;\n      if (plVar2 == plVar3) {\n        return plVar2;\n      }\n    } while (*plVar3 == param_2);\n  }" { (if_statement "if (*plVar3 != param_2) {\n      if (param_1 == plVar3) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00352af0("../../gold/dwarf_reader.cc",0x889,"offset_to_iterator");\n      }\n      plVar5 = param_1;\n      if (param_1 != plVar3 + -3) {\n        lVar4 = plVar3[-6];\n        plVar1 = plVar3 + -3;\n        plVar5 = plVar3 + -6;\n        while (plVar3[-3] == lVar4) {\n          if (param_1 == plVar5) goto LAB_00466c09;\n          lVar4 = plVar5[-3];\n          plVar1 = plVar5;\n          plVar5 = plVar5 + -3;\n        }\n        plVar5 = plVar1;\n        if (plVar1 == plVar3) {\n          return plVar2;\n        }\n      }\nLAB_00466c09:\n      do {\n        if ((int)plVar5[2] != -1) {\n          return plVar5;\n        }\n        plVar5 = plVar5 + 3;\n      } while (plVar5 != plVar3);\n      return plVar2;\n    }" if (parenthesized_expression "(*plVar3 != param_2)" ( (binary_expression "*plVar3 != param_2" (pointer_expression "*plVar3" * identifier) != identifier) )) (compound_statement "{\n      if (param_1 == plVar3) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00352af0("../../gold/dwarf_reader.cc",0x889,"offset_to_iterator");\n      }\n      plVar5 = param_1;\n      if (param_1 != plVar3 + -3) {\n        lVar4 = plVar3[-6];\n        plVar1 = plVar3 + -3;\n        plVar5 = plVar3 + -6;\n        while (plVar3[-3] == lVar4) {\n          if (param_1 == plVar5) goto LAB_00466c09;\n          lVar4 = plVar5[-3];\n          plVar1 = plVar5;\n          plVar5 = plVar5 + -3;\n        }\n        plVar5 = plVar1;\n        if (plVar1 == plVar3) {\n          return plVar2;\n        }\n      }\nLAB_00466c09:\n      do {\n        if ((int)plVar5[2] != -1) {\n          return plVar5;\n        }\n        plVar5 = plVar5 + 3;\n      } while (plVar5 != plVar3);\n      return plVar2;\n    }" { (if_statement "if (param_1 == plVar3) {\n                    /* WARNING: Subroutine does not return */\n        FUN_00352af0("../../gold/dwarf_reader.cc",0x889,"offset_to_iterator");\n      }" if (parenthesized_expression "(param_1 == plVar3)" ( (binary_expression "param_1 == plVar3" identifier == identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        FUN_00352af0("../../gold/dwarf_reader.cc",0x889,"offset_to_iterator");\n      }" { comment (expression_statement "FUN_00352af0("../../gold/dwarf_reader.cc",0x889,"offset_to_iterator");" (call_expression "FUN_00352af0("../../gold/dwarf_reader.cc",0x889,"offset_to_iterator")" identifier (argument_list "("../../gold/dwarf_reader.cc",0x889,"offset_to_iterator")" ( (string_literal ""../../gold/dwarf_reader.cc"" " string_content ") , number_literal , (string_literal ""offset_to_iterator"" " string_content ") ))) ;) })) (expression_statement "plVar5 = param_1;" (assignment_expression "plVar5 = param_1" identifier = identifier) ;) (if_statement "if (param_1 != plVar3 + -3) {\n        lVar4 = plVar3[-6];\n        plVar1 = plVar3 + -3;\n        plVar5 = plVar3 + -6;\n        while (plVar3[-3] == lVar4) {\n          if (param_1 == plVar5) goto LAB_00466c09;\n          lVar4 = plVar5[-3];\n          plVar1 = plVar5;\n          plVar5 = plVar5 + -3;\n        }\n        plVar5 = plVar1;\n        if (plVar1 == plVar3) {\n          return plVar2;\n        }\n      }" if (parenthesized_expression "(param_1 != plVar3 + -3)" ( (binary_expression "param_1 != plVar3 + -3" identifier != (binary_expression "plVar3 + -3" identifier + number_literal)) )) (compound_statement "{\n        lVar4 = plVar3[-6];\n        plVar1 = plVar3 + -3;\n        plVar5 = plVar3 + -6;\n        while (plVar3[-3] == lVar4) {\n          if (param_1 == plVar5) goto LAB_00466c09;\n          lVar4 = plVar5[-3];\n          plVar1 = plVar5;\n          plVar5 = plVar5 + -3;\n        }\n        plVar5 = plVar1;\n        if (plVar1 == plVar3) {\n          return plVar2;\n        }\n      }" { (expression_statement "lVar4 = plVar3[-6];" (assignment_expression "lVar4 = plVar3[-6]" identifier = (subscript_expression "plVar3[-6]" identifier [ number_literal ])) ;) (expression_statement "plVar1 = plVar3 + -3;" (assignment_expression "plVar1 = plVar3 + -3" identifier = (binary_expression "plVar3 + -3" identifier + number_literal)) ;) (expression_statement "plVar5 = plVar3 + -6;" (assignment_expression "plVar5 = plVar3 + -6" identifier = (binary_expression "plVar3 + -6" identifier + number_literal)) ;) (while_statement "while (plVar3[-3] == lVar4) {\n          if (param_1 == plVar5) goto LAB_00466c09;\n          lVar4 = plVar5[-3];\n          plVar1 = plVar5;\n          plVar5 = plVar5 + -3;\n        }" while (parenthesized_expression "(plVar3[-3] == lVar4)" ( (binary_expression "plVar3[-3] == lVar4" (subscript_expression "plVar3[-3]" identifier [ number_literal ]) == identifier) )) (compound_statement "{\n          if (param_1 == plVar5) goto LAB_00466c09;\n          lVar4 = plVar5[-3];\n          plVar1 = plVar5;\n          plVar5 = plVar5 + -3;\n        }" { (if_statement "if (param_1 == plVar5) goto LAB_00466c09;" if (parenthesized_expression "(param_1 == plVar5)" ( (binary_expression "param_1 == plVar5" identifier == identifier) )) (goto_statement "goto LAB_00466c09;" goto statement_identifier ;)) (expression_statement "lVar4 = plVar5[-3];" (assignment_expression "lVar4 = plVar5[-3]" identifier = (subscript_expression "plVar5[-3]" identifier [ number_literal ])) ;) (expression_statement "plVar1 = plVar5;" (assignment_expression "plVar1 = plVar5" identifier = identifier) ;) (expression_statement "plVar5 = plVar5 + -3;" (assignment_expression "plVar5 = plVar5 + -3" identifier = (binary_expression "plVar5 + -3" identifier + number_literal)) ;) })) (expression_statement "plVar5 = plVar1;" (assignment_expression "plVar5 = plVar1" identifier = identifier) ;) (if_statement "if (plVar1 == plVar3) {\n          return plVar2;\n        }" if (parenthesized_expression "(plVar1 == plVar3)" ( (binary_expression "plVar1 == plVar3" identifier == identifier) )) (compound_statement "{\n          return plVar2;\n        }" { (return_statement "return plVar2;" return identifier ;) })) })) (labeled_statement "LAB_00466c09:\n      do {\n        if ((int)plVar5[2] != -1) {\n          return plVar5;\n        }\n        plVar5 = plVar5 + 3;\n      } while (plVar5 != plVar3);" statement_identifier : (do_statement "do {\n        if ((int)plVar5[2] != -1) {\n          return plVar5;\n        }\n        plVar5 = plVar5 + 3;\n      } while (plVar5 != plVar3);" do (compound_statement "{\n        if ((int)plVar5[2] != -1) {\n          return plVar5;\n        }\n        plVar5 = plVar5 + 3;\n      }" { (if_statement "if ((int)plVar5[2] != -1) {\n          return plVar5;\n        }" if (parenthesized_expression "((int)plVar5[2] != -1)" ( (binary_expression "(int)plVar5[2] != -1" (cast_expression "(int)plVar5[2]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "plVar5[2]" identifier [ number_literal ])) != number_literal) )) (compound_statement "{\n          return plVar5;\n        }" { (return_statement "return plVar5;" return identifier ;) })) (expression_statement "plVar5 = plVar5 + 3;" (assignment_expression "plVar5 = plVar5 + 3" identifier = (binary_expression "plVar5 + 3" identifier + number_literal)) ;) }) while (parenthesized_expression "(plVar5 != plVar3)" ( (binary_expression "plVar5 != plVar3" identifier != identifier) )) ;)) (return_statement "return plVar2;" return identifier ;) })) (do_statement "do {\n      if ((int)plVar3[2] != -1) {\n        if (plVar2 == plVar3) {\n          return plVar2;\n        }\n        return plVar3;\n      }\n      plVar3 = plVar3 + 3;\n      if (plVar2 == plVar3) {\n        return plVar2;\n      }\n    } while (*plVar3 == param_2);" do (compound_statement "{\n      if ((int)plVar3[2] != -1) {\n        if (plVar2 == plVar3) {\n          return plVar2;\n        }\n        return plVar3;\n      }\n      plVar3 = plVar3 + 3;\n      if (plVar2 == plVar3) {\n        return plVar2;\n      }\n    }" { (if_statement "if ((int)plVar3[2] != -1) {\n        if (plVar2 == plVar3) {\n          return plVar2;\n        }\n        return plVar3;\n      }" if (parenthesized_expression "((int)plVar3[2] != -1)" ( (binary_expression "(int)plVar3[2] != -1" (cast_expression "(int)plVar3[2]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "plVar3[2]" identifier [ number_literal ])) != number_literal) )) (compound_statement "{\n        if (plVar2 == plVar3) {\n          return plVar2;\n        }\n        return plVar3;\n      }" { (if_statement "if (plVar2 == plVar3) {\n          return plVar2;\n        }" if (parenthesized_expression "(plVar2 == plVar3)" ( (binary_expression "plVar2 == plVar3" identifier == identifier) )) (compound_statement "{\n          return plVar2;\n        }" { (return_statement "return plVar2;" return identifier ;) })) (return_statement "return plVar3;" return identifier ;) })) (expression_statement "plVar3 = plVar3 + 3;" (assignment_expression "plVar3 = plVar3 + 3" identifier = (binary_expression "plVar3 + 3" identifier + number_literal)) ;) (if_statement "if (plVar2 == plVar3) {\n        return plVar2;\n      }" if (parenthesized_expression "(plVar2 == plVar3)" ( (binary_expression "plVar2 == plVar3" identifier == identifier) )) (compound_statement "{\n        return plVar2;\n      }" { (return_statement "return plVar2;" return identifier ;) })) }) while (parenthesized_expression "(*plVar3 == param_2)" ( (binary_expression "*plVar3 == param_2" (pointer_expression "*plVar3" * identifier) == identifier) )) ;) }))) (return_statement "return plVar2;" return identifier ;) })))
(translation_unit "const_iterator\ngold::offset_to_iterator\n          (vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n           *offsets,off_t offset)\n\n{\n  Offset_to_lineno_entry *pOVar1;\n  Offset_to_lineno_entry *pOVar2;\n  const_iterator cVar3;\n  Offset_to_lineno_entry *pOVar4;\n  long lVar5;\n  Offset_to_lineno_entry *pOVar6;\n  long lVar7;\n  \n  cVar3._M_current =\n       (offsets->\n       super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n       )._M_impl._M_finish;\n  pOVar1 = (offsets->\n           super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n           )._M_impl._M_start;\n  pOVar4 = pOVar1;\n  for (lVar5 = ((long)cVar3._M_current - (long)pOVar1 >> 3) * -0x5555555555555555; 0 < lVar5;\n      lVar5 = (lVar5 - lVar7) + -1) {\n    while( true ) {\n      lVar7 = lVar5 >> 1;\n      if (pOVar4[lVar7].offset < offset) break;\n      lVar5 = lVar7;\n      if (lVar7 == 0) goto LAB_00466b78;\n    }\n    pOVar4 = pOVar4 + lVar7 + 1;\n  }\nLAB_00466b78:\n  if (((pOVar1 != pOVar4) || (pOVar1->offset <= offset)) && (cVar3._M_current != pOVar4)) {\n    if (pOVar4->offset != offset) {\n      if (pOVar1 == pOVar4) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/dwarf_reader.cc",0x889,"offset_to_iterator");\n      }\n      pOVar6 = pOVar1;\n      if (pOVar1 != pOVar4 + -1) {\n        lVar5 = pOVar4[-2].offset;\n        pOVar2 = pOVar4 + -1;\n        pOVar6 = pOVar4 + -2;\n        while (pOVar4[-1].offset == lVar5) {\n          if (pOVar1 == pOVar6) goto LAB_00466c09;\n          lVar5 = pOVar6[-1].offset;\n          pOVar2 = pOVar6;\n          pOVar6 = pOVar6 + -1;\n        }\n        pOVar6 = pOVar2;\n        if (pOVar2 == pOVar4) {\n          return (const_iterator)cVar3._M_current;\n        }\n      }\nLAB_00466c09:\n      do {\n        if (pOVar6->line_num != -1) {\n          return (const_iterator)pOVar6;\n        }\n        pOVar6 = pOVar6 + 1;\n      } while (pOVar6 != pOVar4);\n      return (const_iterator)cVar3._M_current;\n    }\n    do {\n      if (pOVar4->line_num != -1) {\n        if (cVar3._M_current == pOVar4) {\n          return (const_iterator)cVar3._M_current;\n        }\n        return (const_iterator)pOVar4;\n      }\n      pOVar4 = pOVar4 + 1;\n      if (cVar3._M_current == pOVar4) {\n        return (const_iterator)cVar3._M_current;\n      }\n    } while (pOVar4->offset == offset);\n  }\n  return (const_iterator)cVar3._M_current;\n}\n\n" (function_definition "const_iterator\ngold::offset_to_iterator\n          (vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n           *offsets,off_t offset)\n\n{\n  Offset_to_lineno_entry *pOVar1;\n  Offset_to_lineno_entry *pOVar2;\n  const_iterator cVar3;\n  Offset_to_lineno_entry *pOVar4;\n  long lVar5;\n  Offset_to_lineno_entry *pOVar6;\n  long lVar7;\n  \n  cVar3._M_current =\n       (offsets->\n       super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n       )._M_impl._M_finish;\n  pOVar1 = (offsets->\n           super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n           )._M_impl._M_start;\n  pOVar4 = pOVar1;\n  for (lVar5 = ((long)cVar3._M_current - (long)pOVar1 >> 3) * -0x5555555555555555; 0 < lVar5;\n      lVar5 = (lVar5 - lVar7) + -1) {\n    while( true ) {\n      lVar7 = lVar5 >> 1;\n      if (pOVar4[lVar7].offset < offset) break;\n      lVar5 = lVar7;\n      if (lVar7 == 0) goto LAB_00466b78;\n    }\n    pOVar4 = pOVar4 + lVar7 + 1;\n  }\nLAB_00466b78:\n  if (((pOVar1 != pOVar4) || (pOVar1->offset <= offset)) && (cVar3._M_current != pOVar4)) {\n    if (pOVar4->offset != offset) {\n      if (pOVar1 == pOVar4) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/dwarf_reader.cc",0x889,"offset_to_iterator");\n      }\n      pOVar6 = pOVar1;\n      if (pOVar1 != pOVar4 + -1) {\n        lVar5 = pOVar4[-2].offset;\n        pOVar2 = pOVar4 + -1;\n        pOVar6 = pOVar4 + -2;\n        while (pOVar4[-1].offset == lVar5) {\n          if (pOVar1 == pOVar6) goto LAB_00466c09;\n          lVar5 = pOVar6[-1].offset;\n          pOVar2 = pOVar6;\n          pOVar6 = pOVar6 + -1;\n        }\n        pOVar6 = pOVar2;\n        if (pOVar2 == pOVar4) {\n          return (const_iterator)cVar3._M_current;\n        }\n      }\nLAB_00466c09:\n      do {\n        if (pOVar6->line_num != -1) {\n          return (const_iterator)pOVar6;\n        }\n        pOVar6 = pOVar6 + 1;\n      } while (pOVar6 != pOVar4);\n      return (const_iterator)cVar3._M_current;\n    }\n    do {\n      if (pOVar4->line_num != -1) {\n        if (cVar3._M_current == pOVar4) {\n          return (const_iterator)cVar3._M_current;\n        }\n        return (const_iterator)pOVar4;\n      }\n      pOVar4 = pOVar4 + 1;\n      if (cVar3._M_current == pOVar4) {\n        return (const_iterator)cVar3._M_current;\n      }\n    } while (pOVar4->offset == offset);\n  }\n  return (const_iterator)cVar3._M_current;\n}" type_identifier (ERROR "gold::" identifier : :) (function_declarator "offset_to_iterator\n          (vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n           *offsets,off_t offset)" identifier (parameter_list "(vector<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n           *offsets,off_t offset)" ( (parameter_declaration "vector<gold::Offset_to_lineno_entry" type_identifier (ERROR "<gold::" < identifier : :) identifier) , (parameter_declaration "_std::allocator<gold::Offset_to_lineno_entry>_>\n           *offsets" type_identifier (ERROR "::allocator<gold::Offset_to_lineno_entry>_>" : : identifier < identifier : : identifier > identifier >) (pointer_declarator "*offsets" * identifier)) , (parameter_declaration "off_t offset" type_identifier identifier) ))) (compound_statement "{\n  Offset_to_lineno_entry *pOVar1;\n  Offset_to_lineno_entry *pOVar2;\n  const_iterator cVar3;\n  Offset_to_lineno_entry *pOVar4;\n  long lVar5;\n  Offset_to_lineno_entry *pOVar6;\n  long lVar7;\n  \n  cVar3._M_current =\n       (offsets->\n       super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n       )._M_impl._M_finish;\n  pOVar1 = (offsets->\n           super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n           )._M_impl._M_start;\n  pOVar4 = pOVar1;\n  for (lVar5 = ((long)cVar3._M_current - (long)pOVar1 >> 3) * -0x5555555555555555; 0 < lVar5;\n      lVar5 = (lVar5 - lVar7) + -1) {\n    while( true ) {\n      lVar7 = lVar5 >> 1;\n      if (pOVar4[lVar7].offset < offset) break;\n      lVar5 = lVar7;\n      if (lVar7 == 0) goto LAB_00466b78;\n    }\n    pOVar4 = pOVar4 + lVar7 + 1;\n  }\nLAB_00466b78:\n  if (((pOVar1 != pOVar4) || (pOVar1->offset <= offset)) && (cVar3._M_current != pOVar4)) {\n    if (pOVar4->offset != offset) {\n      if (pOVar1 == pOVar4) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/dwarf_reader.cc",0x889,"offset_to_iterator");\n      }\n      pOVar6 = pOVar1;\n      if (pOVar1 != pOVar4 + -1) {\n        lVar5 = pOVar4[-2].offset;\n        pOVar2 = pOVar4 + -1;\n        pOVar6 = pOVar4 + -2;\n        while (pOVar4[-1].offset == lVar5) {\n          if (pOVar1 == pOVar6) goto LAB_00466c09;\n          lVar5 = pOVar6[-1].offset;\n          pOVar2 = pOVar6;\n          pOVar6 = pOVar6 + -1;\n        }\n        pOVar6 = pOVar2;\n        if (pOVar2 == pOVar4) {\n          return (const_iterator)cVar3._M_current;\n        }\n      }\nLAB_00466c09:\n      do {\n        if (pOVar6->line_num != -1) {\n          return (const_iterator)pOVar6;\n        }\n        pOVar6 = pOVar6 + 1;\n      } while (pOVar6 != pOVar4);\n      return (const_iterator)cVar3._M_current;\n    }\n    do {\n      if (pOVar4->line_num != -1) {\n        if (cVar3._M_current == pOVar4) {\n          return (const_iterator)cVar3._M_current;\n        }\n        return (const_iterator)pOVar4;\n      }\n      pOVar4 = pOVar4 + 1;\n      if (cVar3._M_current == pOVar4) {\n        return (const_iterator)cVar3._M_current;\n      }\n    } while (pOVar4->offset == offset);\n  }\n  return (const_iterator)cVar3._M_current;\n}" { (declaration "Offset_to_lineno_entry *pOVar1;" type_identifier (pointer_declarator "*pOVar1" * identifier) ;) (declaration "Offset_to_lineno_entry *pOVar2;" type_identifier (pointer_declarator "*pOVar2" * identifier) ;) (declaration "const_iterator cVar3;" type_identifier identifier ;) (declaration "Offset_to_lineno_entry *pOVar4;" type_identifier (pointer_declarator "*pOVar4" * identifier) ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "Offset_to_lineno_entry *pOVar6;" type_identifier (pointer_declarator "*pOVar6" * identifier) ;) (declaration "long lVar7;" (sized_type_specifier "long" long) identifier ;) (expression_statement "cVar3._M_current =\n       (offsets->\n       super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n       )._M_impl._M_finish;" (assignment_expression "cVar3._M_current =\n       (offsets->\n       super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n       )._M_impl._M_finish" (field_expression "cVar3._M_current" identifier . field_identifier) = (field_expression "(offsets->\n       super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n       )._M_impl._M_finish" (field_expression "(offsets->\n       super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n       )._M_impl" (parenthesized_expression "(offsets->\n       super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n       )" ( (ERROR "offsets->\n       super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::" (comma_expression "offsets->\n       super__Vector_base<gold::Offset_to_lineno_entry,_std" (binary_expression "offsets->\n       super__Vector_base<gold" (field_expression "offsets->\n       super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Offset_to_lineno_entry" : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (binary_expression "Offset_to_lineno_entry>_>" (binary_expression "Offset_to_lineno_entry>_" identifier > identifier) > identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "pOVar1 = (offsets->\n           super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n           )._M_impl._M_start;" (assignment_expression "pOVar1 = (offsets->\n           super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n           )._M_impl._M_start" identifier = (field_expression "(offsets->\n           super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n           )._M_impl._M_start" (field_expression "(offsets->\n           super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n           )._M_impl" (parenthesized_expression "(offsets->\n           super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::Offset_to_lineno_entry>_>\n           )" ( (ERROR "offsets->\n           super__Vector_base<gold::Offset_to_lineno_entry,_std::allocator<gold::" (comma_expression "offsets->\n           super__Vector_base<gold::Offset_to_lineno_entry,_std" (binary_expression "offsets->\n           super__Vector_base<gold" (field_expression "offsets->\n           super__Vector_base" identifier -> field_identifier) < identifier) (ERROR "::Offset_to_lineno_entry" : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (binary_expression "Offset_to_lineno_entry>_>" (binary_expression "Offset_to_lineno_entry>_" identifier > identifier) > identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "pOVar4 = pOVar1;" (assignment_expression "pOVar4 = pOVar1" identifier = identifier) ;) (for_statement "for (lVar5 = ((long)cVar3._M_current - (long)pOVar1 >> 3) * -0x5555555555555555; 0 < lVar5;\n      lVar5 = (lVar5 - lVar7) + -1) {\n    while( true ) {\n      lVar7 = lVar5 >> 1;\n      if (pOVar4[lVar7].offset < offset) break;\n      lVar5 = lVar7;\n      if (lVar7 == 0) goto LAB_00466b78;\n    }\n    pOVar4 = pOVar4 + lVar7 + 1;\n  }" for ( (assignment_expression "lVar5 = ((long)cVar3._M_current - (long)pOVar1 >> 3) * -0x5555555555555555" identifier = (binary_expression "((long)cVar3._M_current - (long)pOVar1 >> 3) * -0x5555555555555555" (parenthesized_expression "((long)cVar3._M_current - (long)pOVar1 >> 3)" ( (binary_expression "(long)cVar3._M_current - (long)pOVar1 >> 3" (binary_expression "(long)cVar3._M_current - (long)pOVar1" (cast_expression "(long)cVar3._M_current" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "cVar3._M_current" identifier . field_identifier)) - (cast_expression "(long)pOVar1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal) )) * number_literal)) ; (binary_expression "0 < lVar5" number_literal < identifier) ; (assignment_expression "lVar5 = (lVar5 - lVar7) + -1" identifier = (binary_expression "(lVar5 - lVar7) + -1" (parenthesized_expression "(lVar5 - lVar7)" ( (binary_expression "lVar5 - lVar7" identifier - identifier) )) + number_literal)) ) (compound_statement "{\n    while( true ) {\n      lVar7 = lVar5 >> 1;\n      if (pOVar4[lVar7].offset < offset) break;\n      lVar5 = lVar7;\n      if (lVar7 == 0) goto LAB_00466b78;\n    }\n    pOVar4 = pOVar4 + lVar7 + 1;\n  }" { (while_statement "while( true ) {\n      lVar7 = lVar5 >> 1;\n      if (pOVar4[lVar7].offset < offset) break;\n      lVar5 = lVar7;\n      if (lVar7 == 0) goto LAB_00466b78;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      lVar7 = lVar5 >> 1;\n      if (pOVar4[lVar7].offset < offset) break;\n      lVar5 = lVar7;\n      if (lVar7 == 0) goto LAB_00466b78;\n    }" { (expression_statement "lVar7 = lVar5 >> 1;" (assignment_expression "lVar7 = lVar5 >> 1" identifier = (binary_expression "lVar5 >> 1" identifier >> number_literal)) ;) (if_statement "if (pOVar4[lVar7].offset < offset) break;" if (parenthesized_expression "(pOVar4[lVar7].offset < offset)" ( (binary_expression "pOVar4[lVar7].offset < offset" (field_expression "pOVar4[lVar7].offset" (subscript_expression "pOVar4[lVar7]" identifier [ identifier ]) . field_identifier) < identifier) )) (break_statement "break;" break ;)) (expression_statement "lVar5 = lVar7;" (assignment_expression "lVar5 = lVar7" identifier = identifier) ;) (if_statement "if (lVar7 == 0) goto LAB_00466b78;" if (parenthesized_expression "(lVar7 == 0)" ( (binary_expression "lVar7 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00466b78;" goto statement_identifier ;)) })) (expression_statement "pOVar4 = pOVar4 + lVar7 + 1;" (assignment_expression "pOVar4 = pOVar4 + lVar7 + 1" identifier = (binary_expression "pOVar4 + lVar7 + 1" (binary_expression "pOVar4 + lVar7" identifier + identifier) + number_literal)) ;) })) (labeled_statement "LAB_00466b78:\n  if (((pOVar1 != pOVar4) || (pOVar1->offset <= offset)) && (cVar3._M_current != pOVar4)) {\n    if (pOVar4->offset != offset) {\n      if (pOVar1 == pOVar4) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/dwarf_reader.cc",0x889,"offset_to_iterator");\n      }\n      pOVar6 = pOVar1;\n      if (pOVar1 != pOVar4 + -1) {\n        lVar5 = pOVar4[-2].offset;\n        pOVar2 = pOVar4 + -1;\n        pOVar6 = pOVar4 + -2;\n        while (pOVar4[-1].offset == lVar5) {\n          if (pOVar1 == pOVar6) goto LAB_00466c09;\n          lVar5 = pOVar6[-1].offset;\n          pOVar2 = pOVar6;\n          pOVar6 = pOVar6 + -1;\n        }\n        pOVar6 = pOVar2;\n        if (pOVar2 == pOVar4) {\n          return (const_iterator)cVar3._M_current;\n        }\n      }\nLAB_00466c09:\n      do {\n        if (pOVar6->line_num != -1) {\n          return (const_iterator)pOVar6;\n        }\n        pOVar6 = pOVar6 + 1;\n      } while (pOVar6 != pOVar4);\n      return (const_iterator)cVar3._M_current;\n    }\n    do {\n      if (pOVar4->line_num != -1) {\n        if (cVar3._M_current == pOVar4) {\n          return (const_iterator)cVar3._M_current;\n        }\n        return (const_iterator)pOVar4;\n      }\n      pOVar4 = pOVar4 + 1;\n      if (cVar3._M_current == pOVar4) {\n        return (const_iterator)cVar3._M_current;\n      }\n    } while (pOVar4->offset == offset);\n  }" statement_identifier : (if_statement "if (((pOVar1 != pOVar4) || (pOVar1->offset <= offset)) && (cVar3._M_current != pOVar4)) {\n    if (pOVar4->offset != offset) {\n      if (pOVar1 == pOVar4) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/dwarf_reader.cc",0x889,"offset_to_iterator");\n      }\n      pOVar6 = pOVar1;\n      if (pOVar1 != pOVar4 + -1) {\n        lVar5 = pOVar4[-2].offset;\n        pOVar2 = pOVar4 + -1;\n        pOVar6 = pOVar4 + -2;\n        while (pOVar4[-1].offset == lVar5) {\n          if (pOVar1 == pOVar6) goto LAB_00466c09;\n          lVar5 = pOVar6[-1].offset;\n          pOVar2 = pOVar6;\n          pOVar6 = pOVar6 + -1;\n        }\n        pOVar6 = pOVar2;\n        if (pOVar2 == pOVar4) {\n          return (const_iterator)cVar3._M_current;\n        }\n      }\nLAB_00466c09:\n      do {\n        if (pOVar6->line_num != -1) {\n          return (const_iterator)pOVar6;\n        }\n        pOVar6 = pOVar6 + 1;\n      } while (pOVar6 != pOVar4);\n      return (const_iterator)cVar3._M_current;\n    }\n    do {\n      if (pOVar4->line_num != -1) {\n        if (cVar3._M_current == pOVar4) {\n          return (const_iterator)cVar3._M_current;\n        }\n        return (const_iterator)pOVar4;\n      }\n      pOVar4 = pOVar4 + 1;\n      if (cVar3._M_current == pOVar4) {\n        return (const_iterator)cVar3._M_current;\n      }\n    } while (pOVar4->offset == offset);\n  }" if (parenthesized_expression "(((pOVar1 != pOVar4) || (pOVar1->offset <= offset)) && (cVar3._M_current != pOVar4))" ( (binary_expression "((pOVar1 != pOVar4) || (pOVar1->offset <= offset)) && (cVar3._M_current != pOVar4)" (parenthesized_expression "((pOVar1 != pOVar4) || (pOVar1->offset <= offset))" ( (binary_expression "(pOVar1 != pOVar4) || (pOVar1->offset <= offset)" (parenthesized_expression "(pOVar1 != pOVar4)" ( (binary_expression "pOVar1 != pOVar4" identifier != identifier) )) || (parenthesized_expression "(pOVar1->offset <= offset)" ( (binary_expression "pOVar1->offset <= offset" (field_expression "pOVar1->offset" identifier -> field_identifier) <= identifier) ))) )) && (parenthesized_expression "(cVar3._M_current != pOVar4)" ( (binary_expression "cVar3._M_current != pOVar4" (field_expression "cVar3._M_current" identifier . field_identifier) != identifier) ))) )) (compound_statement "{\n    if (pOVar4->offset != offset) {\n      if (pOVar1 == pOVar4) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/dwarf_reader.cc",0x889,"offset_to_iterator");\n      }\n      pOVar6 = pOVar1;\n      if (pOVar1 != pOVar4 + -1) {\n        lVar5 = pOVar4[-2].offset;\n        pOVar2 = pOVar4 + -1;\n        pOVar6 = pOVar4 + -2;\n        while (pOVar4[-1].offset == lVar5) {\n          if (pOVar1 == pOVar6) goto LAB_00466c09;\n          lVar5 = pOVar6[-1].offset;\n          pOVar2 = pOVar6;\n          pOVar6 = pOVar6 + -1;\n        }\n        pOVar6 = pOVar2;\n        if (pOVar2 == pOVar4) {\n          return (const_iterator)cVar3._M_current;\n        }\n      }\nLAB_00466c09:\n      do {\n        if (pOVar6->line_num != -1) {\n          return (const_iterator)pOVar6;\n        }\n        pOVar6 = pOVar6 + 1;\n      } while (pOVar6 != pOVar4);\n      return (const_iterator)cVar3._M_current;\n    }\n    do {\n      if (pOVar4->line_num != -1) {\n        if (cVar3._M_current == pOVar4) {\n          return (const_iterator)cVar3._M_current;\n        }\n        return (const_iterator)pOVar4;\n      }\n      pOVar4 = pOVar4 + 1;\n      if (cVar3._M_current == pOVar4) {\n        return (const_iterator)cVar3._M_current;\n      }\n    } while (pOVar4->offset == offset);\n  }" { (if_statement "if (pOVar4->offset != offset) {\n      if (pOVar1 == pOVar4) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/dwarf_reader.cc",0x889,"offset_to_iterator");\n      }\n      pOVar6 = pOVar1;\n      if (pOVar1 != pOVar4 + -1) {\n        lVar5 = pOVar4[-2].offset;\n        pOVar2 = pOVar4 + -1;\n        pOVar6 = pOVar4 + -2;\n        while (pOVar4[-1].offset == lVar5) {\n          if (pOVar1 == pOVar6) goto LAB_00466c09;\n          lVar5 = pOVar6[-1].offset;\n          pOVar2 = pOVar6;\n          pOVar6 = pOVar6 + -1;\n        }\n        pOVar6 = pOVar2;\n        if (pOVar2 == pOVar4) {\n          return (const_iterator)cVar3._M_current;\n        }\n      }\nLAB_00466c09:\n      do {\n        if (pOVar6->line_num != -1) {\n          return (const_iterator)pOVar6;\n        }\n        pOVar6 = pOVar6 + 1;\n      } while (pOVar6 != pOVar4);\n      return (const_iterator)cVar3._M_current;\n    }" if (parenthesized_expression "(pOVar4->offset != offset)" ( (binary_expression "pOVar4->offset != offset" (field_expression "pOVar4->offset" identifier -> field_identifier) != identifier) )) (compound_statement "{\n      if (pOVar1 == pOVar4) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/dwarf_reader.cc",0x889,"offset_to_iterator");\n      }\n      pOVar6 = pOVar1;\n      if (pOVar1 != pOVar4 + -1) {\n        lVar5 = pOVar4[-2].offset;\n        pOVar2 = pOVar4 + -1;\n        pOVar6 = pOVar4 + -2;\n        while (pOVar4[-1].offset == lVar5) {\n          if (pOVar1 == pOVar6) goto LAB_00466c09;\n          lVar5 = pOVar6[-1].offset;\n          pOVar2 = pOVar6;\n          pOVar6 = pOVar6 + -1;\n        }\n        pOVar6 = pOVar2;\n        if (pOVar2 == pOVar4) {\n          return (const_iterator)cVar3._M_current;\n        }\n      }\nLAB_00466c09:\n      do {\n        if (pOVar6->line_num != -1) {\n          return (const_iterator)pOVar6;\n        }\n        pOVar6 = pOVar6 + 1;\n      } while (pOVar6 != pOVar4);\n      return (const_iterator)cVar3._M_current;\n    }" { (if_statement "if (pOVar1 == pOVar4) {\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/dwarf_reader.cc",0x889,"offset_to_iterator");\n      }" if (parenthesized_expression "(pOVar1 == pOVar4)" ( (binary_expression "pOVar1 == pOVar4" identifier == identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        do_gold_unreachable("../../gold/dwarf_reader.cc",0x889,"offset_to_iterator");\n      }" { comment (expression_statement "do_gold_unreachable("../../gold/dwarf_reader.cc",0x889,"offset_to_iterator");" (call_expression "do_gold_unreachable("../../gold/dwarf_reader.cc",0x889,"offset_to_iterator")" identifier (argument_list "("../../gold/dwarf_reader.cc",0x889,"offset_to_iterator")" ( (string_literal ""../../gold/dwarf_reader.cc"" " string_content ") , number_literal , (string_literal ""offset_to_iterator"" " string_content ") ))) ;) })) (expression_statement "pOVar6 = pOVar1;" (assignment_expression "pOVar6 = pOVar1" identifier = identifier) ;) (if_statement "if (pOVar1 != pOVar4 + -1) {\n        lVar5 = pOVar4[-2].offset;\n        pOVar2 = pOVar4 + -1;\n        pOVar6 = pOVar4 + -2;\n        while (pOVar4[-1].offset == lVar5) {\n          if (pOVar1 == pOVar6) goto LAB_00466c09;\n          lVar5 = pOVar6[-1].offset;\n          pOVar2 = pOVar6;\n          pOVar6 = pOVar6 + -1;\n        }\n        pOVar6 = pOVar2;\n        if (pOVar2 == pOVar4) {\n          return (const_iterator)cVar3._M_current;\n        }\n      }" if (parenthesized_expression "(pOVar1 != pOVar4 + -1)" ( (binary_expression "pOVar1 != pOVar4 + -1" identifier != (binary_expression "pOVar4 + -1" identifier + number_literal)) )) (compound_statement "{\n        lVar5 = pOVar4[-2].offset;\n        pOVar2 = pOVar4 + -1;\n        pOVar6 = pOVar4 + -2;\n        while (pOVar4[-1].offset == lVar5) {\n          if (pOVar1 == pOVar6) goto LAB_00466c09;\n          lVar5 = pOVar6[-1].offset;\n          pOVar2 = pOVar6;\n          pOVar6 = pOVar6 + -1;\n        }\n        pOVar6 = pOVar2;\n        if (pOVar2 == pOVar4) {\n          return (const_iterator)cVar3._M_current;\n        }\n      }" { (expression_statement "lVar5 = pOVar4[-2].offset;" (assignment_expression "lVar5 = pOVar4[-2].offset" identifier = (field_expression "pOVar4[-2].offset" (subscript_expression "pOVar4[-2]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "pOVar2 = pOVar4 + -1;" (assignment_expression "pOVar2 = pOVar4 + -1" identifier = (binary_expression "pOVar4 + -1" identifier + number_literal)) ;) (expression_statement "pOVar6 = pOVar4 + -2;" (assignment_expression "pOVar6 = pOVar4 + -2" identifier = (binary_expression "pOVar4 + -2" identifier + number_literal)) ;) (while_statement "while (pOVar4[-1].offset == lVar5) {\n          if (pOVar1 == pOVar6) goto LAB_00466c09;\n          lVar5 = pOVar6[-1].offset;\n          pOVar2 = pOVar6;\n          pOVar6 = pOVar6 + -1;\n        }" while (parenthesized_expression "(pOVar4[-1].offset == lVar5)" ( (binary_expression "pOVar4[-1].offset == lVar5" (field_expression "pOVar4[-1].offset" (subscript_expression "pOVar4[-1]" identifier [ number_literal ]) . field_identifier) == identifier) )) (compound_statement "{\n          if (pOVar1 == pOVar6) goto LAB_00466c09;\n          lVar5 = pOVar6[-1].offset;\n          pOVar2 = pOVar6;\n          pOVar6 = pOVar6 + -1;\n        }" { (if_statement "if (pOVar1 == pOVar6) goto LAB_00466c09;" if (parenthesized_expression "(pOVar1 == pOVar6)" ( (binary_expression "pOVar1 == pOVar6" identifier == identifier) )) (goto_statement "goto LAB_00466c09;" goto statement_identifier ;)) (expression_statement "lVar5 = pOVar6[-1].offset;" (assignment_expression "lVar5 = pOVar6[-1].offset" identifier = (field_expression "pOVar6[-1].offset" (subscript_expression "pOVar6[-1]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "pOVar2 = pOVar6;" (assignment_expression "pOVar2 = pOVar6" identifier = identifier) ;) (expression_statement "pOVar6 = pOVar6 + -1;" (assignment_expression "pOVar6 = pOVar6 + -1" identifier = (binary_expression "pOVar6 + -1" identifier + number_literal)) ;) })) (expression_statement "pOVar6 = pOVar2;" (assignment_expression "pOVar6 = pOVar2" identifier = identifier) ;) (if_statement "if (pOVar2 == pOVar4) {\n          return (const_iterator)cVar3._M_current;\n        }" if (parenthesized_expression "(pOVar2 == pOVar4)" ( (binary_expression "pOVar2 == pOVar4" identifier == identifier) )) (compound_statement "{\n          return (const_iterator)cVar3._M_current;\n        }" { (return_statement "return (const_iterator)cVar3._M_current;" return (cast_expression "(const_iterator)cVar3._M_current" ( (type_descriptor "const_iterator" type_identifier) ) (field_expression "cVar3._M_current" identifier . field_identifier)) ;) })) })) (labeled_statement "LAB_00466c09:\n      do {\n        if (pOVar6->line_num != -1) {\n          return (const_iterator)pOVar6;\n        }\n        pOVar6 = pOVar6 + 1;\n      } while (pOVar6 != pOVar4);" statement_identifier : (do_statement "do {\n        if (pOVar6->line_num != -1) {\n          return (const_iterator)pOVar6;\n        }\n        pOVar6 = pOVar6 + 1;\n      } while (pOVar6 != pOVar4);" do (compound_statement "{\n        if (pOVar6->line_num != -1) {\n          return (const_iterator)pOVar6;\n        }\n        pOVar6 = pOVar6 + 1;\n      }" { (if_statement "if (pOVar6->line_num != -1) {\n          return (const_iterator)pOVar6;\n        }" if (parenthesized_expression "(pOVar6->line_num != -1)" ( (binary_expression "pOVar6->line_num != -1" (field_expression "pOVar6->line_num" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n          return (const_iterator)pOVar6;\n        }" { (return_statement "return (const_iterator)pOVar6;" return (cast_expression "(const_iterator)pOVar6" ( (type_descriptor "const_iterator" type_identifier) ) identifier) ;) })) (expression_statement "pOVar6 = pOVar6 + 1;" (assignment_expression "pOVar6 = pOVar6 + 1" identifier = (binary_expression "pOVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pOVar6 != pOVar4)" ( (binary_expression "pOVar6 != pOVar4" identifier != identifier) )) ;)) (return_statement "return (const_iterator)cVar3._M_current;" return (cast_expression "(const_iterator)cVar3._M_current" ( (type_descriptor "const_iterator" type_identifier) ) (field_expression "cVar3._M_current" identifier . field_identifier)) ;) })) (do_statement "do {\n      if (pOVar4->line_num != -1) {\n        if (cVar3._M_current == pOVar4) {\n          return (const_iterator)cVar3._M_current;\n        }\n        return (const_iterator)pOVar4;\n      }\n      pOVar4 = pOVar4 + 1;\n      if (cVar3._M_current == pOVar4) {\n        return (const_iterator)cVar3._M_current;\n      }\n    } while (pOVar4->offset == offset);" do (compound_statement "{\n      if (pOVar4->line_num != -1) {\n        if (cVar3._M_current == pOVar4) {\n          return (const_iterator)cVar3._M_current;\n        }\n        return (const_iterator)pOVar4;\n      }\n      pOVar4 = pOVar4 + 1;\n      if (cVar3._M_current == pOVar4) {\n        return (const_iterator)cVar3._M_current;\n      }\n    }" { (if_statement "if (pOVar4->line_num != -1) {\n        if (cVar3._M_current == pOVar4) {\n          return (const_iterator)cVar3._M_current;\n        }\n        return (const_iterator)pOVar4;\n      }" if (parenthesized_expression "(pOVar4->line_num != -1)" ( (binary_expression "pOVar4->line_num != -1" (field_expression "pOVar4->line_num" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n        if (cVar3._M_current == pOVar4) {\n          return (const_iterator)cVar3._M_current;\n        }\n        return (const_iterator)pOVar4;\n      }" { (if_statement "if (cVar3._M_current == pOVar4) {\n          return (const_iterator)cVar3._M_current;\n        }" if (parenthesized_expression "(cVar3._M_current == pOVar4)" ( (binary_expression "cVar3._M_current == pOVar4" (field_expression "cVar3._M_current" identifier . field_identifier) == identifier) )) (compound_statement "{\n          return (const_iterator)cVar3._M_current;\n        }" { (return_statement "return (const_iterator)cVar3._M_current;" return (cast_expression "(const_iterator)cVar3._M_current" ( (type_descriptor "const_iterator" type_identifier) ) (field_expression "cVar3._M_current" identifier . field_identifier)) ;) })) (return_statement "return (const_iterator)pOVar4;" return (cast_expression "(const_iterator)pOVar4" ( (type_descriptor "const_iterator" type_identifier) ) identifier) ;) })) (expression_statement "pOVar4 = pOVar4 + 1;" (assignment_expression "pOVar4 = pOVar4 + 1" identifier = (binary_expression "pOVar4 + 1" identifier + number_literal)) ;) (if_statement "if (cVar3._M_current == pOVar4) {\n        return (const_iterator)cVar3._M_current;\n      }" if (parenthesized_expression "(cVar3._M_current == pOVar4)" ( (binary_expression "cVar3._M_current == pOVar4" (field_expression "cVar3._M_current" identifier . field_identifier) == identifier) )) (compound_statement "{\n        return (const_iterator)cVar3._M_current;\n      }" { (return_statement "return (const_iterator)cVar3._M_current;" return (cast_expression "(const_iterator)cVar3._M_current" ( (type_descriptor "const_iterator" type_identifier) ) (field_expression "cVar3._M_current" identifier . field_identifier)) ;) })) }) while (parenthesized_expression "(pOVar4->offset == offset)" ( (binary_expression "pOVar4->offset == offset" (field_expression "pOVar4->offset" identifier -> field_identifier) == identifier) )) ;) }))) (return_statement "return (const_iterator)cVar3._M_current;" return (cast_expression "(const_iterator)cVar3._M_current" ( (type_descriptor "const_iterator" type_identifier) ) (field_expression "cVar3._M_current" identifier . field_identifier)) ;) })))
(translation_unit "long * FUN_00466b30(long *param_1,long param_2)\n\n{\n  long *plVar1;\n  long *plVar2;\n  long *plVar3;\n  long lVar4;\n  long *plVar5;\n  long lVar6;\n  \n  plVar2 = (long *)param_1[1];\n  param_1 = (long *)*param_1;\n  plVar3 = param_1;\n  for (lVar4 = ((long)plVar2 - (long)param_1 >> 3) * -0x5555555555555555; 0 < lVar4;\n      lVar4 = (lVar4 - lVar6) + -1) {\n    while( true ) {\n      lVar6 = lVar4 >> 1;\n      if (plVar3[lVar6 * 3] < param_2) break;\n      lVar4 = lVar6;\n      if (lVar6 == 0) goto LAB_00466b78;\n    }\n    plVar3 = plVar3 + lVar6 * 3 + 3;\n  }\nLAB_00466b78:\n  if (((param_1 != plVar3) || (*param_1 <= param_2)) && (plVar2 != plVar3)) {\n    if (*plVar3 != param_2) {\n      if (param_1 == plVar3) {\n                    \n        FUN_00352af0("../../gold/dwarf_reader.cc",0x889,"offset_to_iterator");\n      }\n      plVar5 = param_1;\n      if (param_1 != plVar3 + -3) {\n        lVar4 = plVar3[-6];\n        plVar1 = plVar3 + -3;\n        plVar5 = plVar3 + -6;\n        while (plVar3[-3] == lVar4) {\n          if (param_1 == plVar5) goto LAB_00466c09;\n          lVar4 = plVar5[-3];\n          plVar1 = plVar5;\n          plVar5 = plVar5 + -3;\n        }\n        plVar5 = plVar1;\n        if (plVar1 == plVar3) {\n          return plVar2;\n        }\n      }\nLAB_00466c09:\n      do {\n        if ((int)plVar5[2] != -1) {\n          return plVar5;\n        }\n        plVar5 = plVar5 + 3;\n      } while (plVar5 != plVar3);\n      return plVar2;\n    }\n    do {\n      if ((int)plVar3[2] != -1) {\n        if (plVar2 == plVar3) {\n          return plVar2;\n        }\n        return plVar3;\n      }\n      plVar3 = plVar3 + 3;\n      if (plVar2 == plVar3) {\n        return plVar2;\n      }\n    } while (*plVar3 == param_2);\n  }\n  return plVar2;\n}\n\n" (function_definition "long * FUN_00466b30(long *param_1,long param_2)\n\n{\n  long *plVar1;\n  long *plVar2;\n  long *plVar3;\n  long lVar4;\n  long *plVar5;\n  long lVar6;\n  \n  plVar2 = (long *)param_1[1];\n  param_1 = (long *)*param_1;\n  plVar3 = param_1;\n  for (lVar4 = ((long)plVar2 - (long)param_1 >> 3) * -0x5555555555555555; 0 < lVar4;\n      lVar4 = (lVar4 - lVar6) + -1) {\n    while( true ) {\n      lVar6 = lVar4 >> 1;\n      if (plVar3[lVar6 * 3] < param_2) break;\n      lVar4 = lVar6;\n      if (lVar6 == 0) goto LAB_00466b78;\n    }\n    plVar3 = plVar3 + lVar6 * 3 + 3;\n  }\nLAB_00466b78:\n  if (((param_1 != plVar3) || (*param_1 <= param_2)) && (plVar2 != plVar3)) {\n    if (*plVar3 != param_2) {\n      if (param_1 == plVar3) {\n                    \n        FUN_00352af0("../../gold/dwarf_reader.cc",0x889,"offset_to_iterator");\n      }\n      plVar5 = param_1;\n      if (param_1 != plVar3 + -3) {\n        lVar4 = plVar3[-6];\n        plVar1 = plVar3 + -3;\n        plVar5 = plVar3 + -6;\n        while (plVar3[-3] == lVar4) {\n          if (param_1 == plVar5) goto LAB_00466c09;\n          lVar4 = plVar5[-3];\n          plVar1 = plVar5;\n          plVar5 = plVar5 + -3;\n        }\n        plVar5 = plVar1;\n        if (plVar1 == plVar3) {\n          return plVar2;\n        }\n      }\nLAB_00466c09:\n      do {\n        if ((int)plVar5[2] != -1) {\n          return plVar5;\n        }\n        plVar5 = plVar5 + 3;\n      } while (plVar5 != plVar3);\n      return plVar2;\n    }\n    do {\n      if ((int)plVar3[2] != -1) {\n        if (plVar2 == plVar3) {\n          return plVar2;\n        }\n        return plVar3;\n      }\n      plVar3 = plVar3 + 3;\n      if (plVar2 == plVar3) {\n        return plVar2;\n      }\n    } while (*plVar3 == param_2);\n  }\n  return plVar2;\n}" (sized_type_specifier "long" long) (pointer_declarator "* FUN_00466b30(long *param_1,long param_2)" * (function_declarator "FUN_00466b30(long *param_1,long param_2)" identifier (parameter_list "(long *param_1,long param_2)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) )))) (compound_statement "{\n  long *plVar1;\n  long *plVar2;\n  long *plVar3;\n  long lVar4;\n  long *plVar5;\n  long lVar6;\n  \n  plVar2 = (long *)param_1[1];\n  param_1 = (long *)*param_1;\n  plVar3 = param_1;\n  for (lVar4 = ((long)plVar2 - (long)param_1 >> 3) * -0x5555555555555555; 0 < lVar4;\n      lVar4 = (lVar4 - lVar6) + -1) {\n    while( true ) {\n      lVar6 = lVar4 >> 1;\n      if (plVar3[lVar6 * 3] < param_2) break;\n      lVar4 = lVar6;\n      if (lVar6 == 0) goto LAB_00466b78;\n    }\n    plVar3 = plVar3 + lVar6 * 3 + 3;\n  }\nLAB_00466b78:\n  if (((param_1 != plVar3) || (*param_1 <= param_2)) && (plVar2 != plVar3)) {\n    if (*plVar3 != param_2) {\n      if (param_1 == plVar3) {\n                    \n        FUN_00352af0("../../gold/dwarf_reader.cc",0x889,"offset_to_iterator");\n      }\n      plVar5 = param_1;\n      if (param_1 != plVar3 + -3) {\n        lVar4 = plVar3[-6];\n        plVar1 = plVar3 + -3;\n        plVar5 = plVar3 + -6;\n        while (plVar3[-3] == lVar4) {\n          if (param_1 == plVar5) goto LAB_00466c09;\n          lVar4 = plVar5[-3];\n          plVar1 = plVar5;\n          plVar5 = plVar5 + -3;\n        }\n        plVar5 = plVar1;\n        if (plVar1 == plVar3) {\n          return plVar2;\n        }\n      }\nLAB_00466c09:\n      do {\n        if ((int)plVar5[2] != -1) {\n          return plVar5;\n        }\n        plVar5 = plVar5 + 3;\n      } while (plVar5 != plVar3);\n      return plVar2;\n    }\n    do {\n      if ((int)plVar3[2] != -1) {\n        if (plVar2 == plVar3) {\n          return plVar2;\n        }\n        return plVar3;\n      }\n      plVar3 = plVar3 + 3;\n      if (plVar2 == plVar3) {\n        return plVar2;\n      }\n    } while (*plVar3 == param_2);\n  }\n  return plVar2;\n}" { (declaration "long *plVar1;" (sized_type_specifier "long" long) (pointer_declarator "*plVar1" * identifier) ;) (declaration "long *plVar2;" (sized_type_specifier "long" long) (pointer_declarator "*plVar2" * identifier) ;) (declaration "long *plVar3;" (sized_type_specifier "long" long) (pointer_declarator "*plVar3" * identifier) ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "long *plVar5;" (sized_type_specifier "long" long) (pointer_declarator "*plVar5" * identifier) ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (expression_statement "plVar2 = (long *)param_1[1];" (assignment_expression "plVar2 = (long *)param_1[1]" identifier = (cast_expression "(long *)param_1[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (expression_statement "param_1 = (long *)*param_1;" (assignment_expression "param_1 = (long *)*param_1" identifier = (cast_expression "(long *)*param_1" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "plVar3 = param_1;" (assignment_expression "plVar3 = param_1" identifier = identifier) ;) (for_statement "for (lVar4 = ((long)plVar2 - (long)param_1 >> 3) * -0x5555555555555555; 0 < lVar4;\n      lVar4 = (lVar4 - lVar6) + -1) {\n    while( true ) {\n      lVar6 = lVar4 >> 1;\n      if (plVar3[lVar6 * 3] < param_2) break;\n      lVar4 = lVar6;\n      if (lVar6 == 0) goto LAB_00466b78;\n    }\n    plVar3 = plVar3 + lVar6 * 3 + 3;\n  }" for ( (assignment_expression "lVar4 = ((long)plVar2 - (long)param_1 >> 3) * -0x5555555555555555" identifier = (binary_expression "((long)plVar2 - (long)param_1 >> 3) * -0x5555555555555555" (parenthesized_expression "((long)plVar2 - (long)param_1 >> 3)" ( (binary_expression "(long)plVar2 - (long)param_1 >> 3" (binary_expression "(long)plVar2 - (long)param_1" (cast_expression "(long)plVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal) )) * number_literal)) ; (binary_expression "0 < lVar4" number_literal < identifier) ; (assignment_expression "lVar4 = (lVar4 - lVar6) + -1" identifier = (binary_expression "(lVar4 - lVar6) + -1" (parenthesized_expression "(lVar4 - lVar6)" ( (binary_expression "lVar4 - lVar6" identifier - identifier) )) + number_literal)) ) (compound_statement "{\n    while( true ) {\n      lVar6 = lVar4 >> 1;\n      if (plVar3[lVar6 * 3] < param_2) break;\n      lVar4 = lVar6;\n      if (lVar6 == 0) goto LAB_00466b78;\n    }\n    plVar3 = plVar3 + lVar6 * 3 + 3;\n  }" { (while_statement "while( true ) {\n      lVar6 = lVar4 >> 1;\n      if (plVar3[lVar6 * 3] < param_2) break;\n      lVar4 = lVar6;\n      if (lVar6 == 0) goto LAB_00466b78;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      lVar6 = lVar4 >> 1;\n      if (plVar3[lVar6 * 3] < param_2) break;\n      lVar4 = lVar6;\n      if (lVar6 == 0) goto LAB_00466b78;\n    }" { (expression_statement "lVar6 = lVar4 >> 1;" (assignment_expression "lVar6 = lVar4 >> 1" identifier = (binary_expression "lVar4 >> 1" identifier >> number_literal)) ;) (if_statement "if (plVar3[lVar6 * 3] < param_2) break;" if (parenthesized_expression "(plVar3[lVar6 * 3] < param_2)" ( (binary_expression "plVar3[lVar6 * 3] < param_2" (subscript_expression "plVar3[lVar6 * 3]" identifier [ (binary_expression "lVar6 * 3" identifier * number_literal) ]) < identifier) )) (break_statement "break;" break ;)) (expression_statement "lVar4 = lVar6;" (assignment_expression "lVar4 = lVar6" identifier = identifier) ;) (if_statement "if (lVar6 == 0) goto LAB_00466b78;" if (parenthesized_expression "(lVar6 == 0)" ( (binary_expression "lVar6 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00466b78;" goto statement_identifier ;)) })) (expression_statement "plVar3 = plVar3 + lVar6 * 3 + 3;" (assignment_expression "plVar3 = plVar3 + lVar6 * 3 + 3" identifier = (binary_expression "plVar3 + lVar6 * 3 + 3" (binary_expression "plVar3 + lVar6 * 3" identifier + (binary_expression "lVar6 * 3" identifier * number_literal)) + number_literal)) ;) })) (labeled_statement "LAB_00466b78:\n  if (((param_1 != plVar3) || (*param_1 <= param_2)) && (plVar2 != plVar3)) {\n    if (*plVar3 != param_2) {\n      if (param_1 == plVar3) {\n                    \n        FUN_00352af0("../../gold/dwarf_reader.cc",0x889,"offset_to_iterator");\n      }\n      plVar5 = param_1;\n      if (param_1 != plVar3 + -3) {\n        lVar4 = plVar3[-6];\n        plVar1 = plVar3 + -3;\n        plVar5 = plVar3 + -6;\n        while (plVar3[-3] == lVar4) {\n          if (param_1 == plVar5) goto LAB_00466c09;\n          lVar4 = plVar5[-3];\n          plVar1 = plVar5;\n          plVar5 = plVar5 + -3;\n        }\n        plVar5 = plVar1;\n        if (plVar1 == plVar3) {\n          return plVar2;\n        }\n      }\nLAB_00466c09:\n      do {\n        if ((int)plVar5[2] != -1) {\n          return plVar5;\n        }\n        plVar5 = plVar5 + 3;\n      } while (plVar5 != plVar3);\n      return plVar2;\n    }\n    do {\n      if ((int)plVar3[2] != -1) {\n        if (plVar2 == plVar3) {\n          return plVar2;\n        }\n        return plVar3;\n      }\n      plVar3 = plVar3 + 3;\n      if (plVar2 == plVar3) {\n        return plVar2;\n      }\n    } while (*plVar3 == param_2);\n  }" statement_identifier : (if_statement "if (((param_1 != plVar3) || (*param_1 <= param_2)) && (plVar2 != plVar3)) {\n    if (*plVar3 != param_2) {\n      if (param_1 == plVar3) {\n                    \n        FUN_00352af0("../../gold/dwarf_reader.cc",0x889,"offset_to_iterator");\n      }\n      plVar5 = param_1;\n      if (param_1 != plVar3 + -3) {\n        lVar4 = plVar3[-6];\n        plVar1 = plVar3 + -3;\n        plVar5 = plVar3 + -6;\n        while (plVar3[-3] == lVar4) {\n          if (param_1 == plVar5) goto LAB_00466c09;\n          lVar4 = plVar5[-3];\n          plVar1 = plVar5;\n          plVar5 = plVar5 + -3;\n        }\n        plVar5 = plVar1;\n        if (plVar1 == plVar3) {\n          return plVar2;\n        }\n      }\nLAB_00466c09:\n      do {\n        if ((int)plVar5[2] != -1) {\n          return plVar5;\n        }\n        plVar5 = plVar5 + 3;\n      } while (plVar5 != plVar3);\n      return plVar2;\n    }\n    do {\n      if ((int)plVar3[2] != -1) {\n        if (plVar2 == plVar3) {\n          return plVar2;\n        }\n        return plVar3;\n      }\n      plVar3 = plVar3 + 3;\n      if (plVar2 == plVar3) {\n        return plVar2;\n      }\n    } while (*plVar3 == param_2);\n  }" if (parenthesized_expression "(((param_1 != plVar3) || (*param_1 <= param_2)) && (plVar2 != plVar3))" ( (binary_expression "((param_1 != plVar3) || (*param_1 <= param_2)) && (plVar2 != plVar3)" (parenthesized_expression "((param_1 != plVar3) || (*param_1 <= param_2))" ( (binary_expression "(param_1 != plVar3) || (*param_1 <= param_2)" (parenthesized_expression "(param_1 != plVar3)" ( (binary_expression "param_1 != plVar3" identifier != identifier) )) || (parenthesized_expression "(*param_1 <= param_2)" ( (binary_expression "*param_1 <= param_2" (pointer_expression "*param_1" * identifier) <= identifier) ))) )) && (parenthesized_expression "(plVar2 != plVar3)" ( (binary_expression "plVar2 != plVar3" identifier != identifier) ))) )) (compound_statement "{\n    if (*plVar3 != param_2) {\n      if (param_1 == plVar3) {\n                    \n        FUN_00352af0("../../gold/dwarf_reader.cc",0x889,"offset_to_iterator");\n      }\n      plVar5 = param_1;\n      if (param_1 != plVar3 + -3) {\n        lVar4 = plVar3[-6];\n        plVar1 = plVar3 + -3;\n        plVar5 = plVar3 + -6;\n        while (plVar3[-3] == lVar4) {\n          if (param_1 == plVar5) goto LAB_00466c09;\n          lVar4 = plVar5[-3];\n          plVar1 = plVar5;\n          plVar5 = plVar5 + -3;\n        }\n        plVar5 = plVar1;\n        if (plVar1 == plVar3) {\n          return plVar2;\n        }\n      }\nLAB_00466c09:\n      do {\n        if ((int)plVar5[2] != -1) {\n          return plVar5;\n        }\n        plVar5 = plVar5 + 3;\n      } while (plVar5 != plVar3);\n      return plVar2;\n    }\n    do {\n      if ((int)plVar3[2] != -1) {\n        if (plVar2 == plVar3) {\n          return plVar2;\n        }\n        return plVar3;\n      }\n      plVar3 = plVar3 + 3;\n      if (plVar2 == plVar3) {\n        return plVar2;\n      }\n    } while (*plVar3 == param_2);\n  }" { (if_statement "if (*plVar3 != param_2) {\n      if (param_1 == plVar3) {\n                    \n        FUN_00352af0("../../gold/dwarf_reader.cc",0x889,"offset_to_iterator");\n      }\n      plVar5 = param_1;\n      if (param_1 != plVar3 + -3) {\n        lVar4 = plVar3[-6];\n        plVar1 = plVar3 + -3;\n        plVar5 = plVar3 + -6;\n        while (plVar3[-3] == lVar4) {\n          if (param_1 == plVar5) goto LAB_00466c09;\n          lVar4 = plVar5[-3];\n          plVar1 = plVar5;\n          plVar5 = plVar5 + -3;\n        }\n        plVar5 = plVar1;\n        if (plVar1 == plVar3) {\n          return plVar2;\n        }\n      }\nLAB_00466c09:\n      do {\n        if ((int)plVar5[2] != -1) {\n          return plVar5;\n        }\n        plVar5 = plVar5 + 3;\n      } while (plVar5 != plVar3);\n      return plVar2;\n    }" if (parenthesized_expression "(*plVar3 != param_2)" ( (binary_expression "*plVar3 != param_2" (pointer_expression "*plVar3" * identifier) != identifier) )) (compound_statement "{\n      if (param_1 == plVar3) {\n                    \n        FUN_00352af0("../../gold/dwarf_reader.cc",0x889,"offset_to_iterator");\n      }\n      plVar5 = param_1;\n      if (param_1 != plVar3 + -3) {\n        lVar4 = plVar3[-6];\n        plVar1 = plVar3 + -3;\n        plVar5 = plVar3 + -6;\n        while (plVar3[-3] == lVar4) {\n          if (param_1 == plVar5) goto LAB_00466c09;\n          lVar4 = plVar5[-3];\n          plVar1 = plVar5;\n          plVar5 = plVar5 + -3;\n        }\n        plVar5 = plVar1;\n        if (plVar1 == plVar3) {\n          return plVar2;\n        }\n      }\nLAB_00466c09:\n      do {\n        if ((int)plVar5[2] != -1) {\n          return plVar5;\n        }\n        plVar5 = plVar5 + 3;\n      } while (plVar5 != plVar3);\n      return plVar2;\n    }" { (if_statement "if (param_1 == plVar3) {\n                    \n        FUN_00352af0("../../gold/dwarf_reader.cc",0x889,"offset_to_iterator");\n      }" if (parenthesized_expression "(param_1 == plVar3)" ( (binary_expression "param_1 == plVar3" identifier == identifier) )) (compound_statement "{\n                    \n        FUN_00352af0("../../gold/dwarf_reader.cc",0x889,"offset_to_iterator");\n      }" { (expression_statement "FUN_00352af0("../../gold/dwarf_reader.cc",0x889,"offset_to_iterator");" (call_expression "FUN_00352af0("../../gold/dwarf_reader.cc",0x889,"offset_to_iterator")" identifier (argument_list "("../../gold/dwarf_reader.cc",0x889,"offset_to_iterator")" ( (string_literal ""../../gold/dwarf_reader.cc"" " string_content ") , number_literal , (string_literal ""offset_to_iterator"" " string_content ") ))) ;) })) (expression_statement "plVar5 = param_1;" (assignment_expression "plVar5 = param_1" identifier = identifier) ;) (if_statement "if (param_1 != plVar3 + -3) {\n        lVar4 = plVar3[-6];\n        plVar1 = plVar3 + -3;\n        plVar5 = plVar3 + -6;\n        while (plVar3[-3] == lVar4) {\n          if (param_1 == plVar5) goto LAB_00466c09;\n          lVar4 = plVar5[-3];\n          plVar1 = plVar5;\n          plVar5 = plVar5 + -3;\n        }\n        plVar5 = plVar1;\n        if (plVar1 == plVar3) {\n          return plVar2;\n        }\n      }" if (parenthesized_expression "(param_1 != plVar3 + -3)" ( (binary_expression "param_1 != plVar3 + -3" identifier != (binary_expression "plVar3 + -3" identifier + number_literal)) )) (compound_statement "{\n        lVar4 = plVar3[-6];\n        plVar1 = plVar3 + -3;\n        plVar5 = plVar3 + -6;\n        while (plVar3[-3] == lVar4) {\n          if (param_1 == plVar5) goto LAB_00466c09;\n          lVar4 = plVar5[-3];\n          plVar1 = plVar5;\n          plVar5 = plVar5 + -3;\n        }\n        plVar5 = plVar1;\n        if (plVar1 == plVar3) {\n          return plVar2;\n        }\n      }" { (expression_statement "lVar4 = plVar3[-6];" (assignment_expression "lVar4 = plVar3[-6]" identifier = (subscript_expression "plVar3[-6]" identifier [ number_literal ])) ;) (expression_statement "plVar1 = plVar3 + -3;" (assignment_expression "plVar1 = plVar3 + -3" identifier = (binary_expression "plVar3 + -3" identifier + number_literal)) ;) (expression_statement "plVar5 = plVar3 + -6;" (assignment_expression "plVar5 = plVar3 + -6" identifier = (binary_expression "plVar3 + -6" identifier + number_literal)) ;) (while_statement "while (plVar3[-3] == lVar4) {\n          if (param_1 == plVar5) goto LAB_00466c09;\n          lVar4 = plVar5[-3];\n          plVar1 = plVar5;\n          plVar5 = plVar5 + -3;\n        }" while (parenthesized_expression "(plVar3[-3] == lVar4)" ( (binary_expression "plVar3[-3] == lVar4" (subscript_expression "plVar3[-3]" identifier [ number_literal ]) == identifier) )) (compound_statement "{\n          if (param_1 == plVar5) goto LAB_00466c09;\n          lVar4 = plVar5[-3];\n          plVar1 = plVar5;\n          plVar5 = plVar5 + -3;\n        }" { (if_statement "if (param_1 == plVar5) goto LAB_00466c09;" if (parenthesized_expression "(param_1 == plVar5)" ( (binary_expression "param_1 == plVar5" identifier == identifier) )) (goto_statement "goto LAB_00466c09;" goto statement_identifier ;)) (expression_statement "lVar4 = plVar5[-3];" (assignment_expression "lVar4 = plVar5[-3]" identifier = (subscript_expression "plVar5[-3]" identifier [ number_literal ])) ;) (expression_statement "plVar1 = plVar5;" (assignment_expression "plVar1 = plVar5" identifier = identifier) ;) (expression_statement "plVar5 = plVar5 + -3;" (assignment_expression "plVar5 = plVar5 + -3" identifier = (binary_expression "plVar5 + -3" identifier + number_literal)) ;) })) (expression_statement "plVar5 = plVar1;" (assignment_expression "plVar5 = plVar1" identifier = identifier) ;) (if_statement "if (plVar1 == plVar3) {\n          return plVar2;\n        }" if (parenthesized_expression "(plVar1 == plVar3)" ( (binary_expression "plVar1 == plVar3" identifier == identifier) )) (compound_statement "{\n          return plVar2;\n        }" { (return_statement "return plVar2;" return identifier ;) })) })) (labeled_statement "LAB_00466c09:\n      do {\n        if ((int)plVar5[2] != -1) {\n          return plVar5;\n        }\n        plVar5 = plVar5 + 3;\n      } while (plVar5 != plVar3);" statement_identifier : (do_statement "do {\n        if ((int)plVar5[2] != -1) {\n          return plVar5;\n        }\n        plVar5 = plVar5 + 3;\n      } while (plVar5 != plVar3);" do (compound_statement "{\n        if ((int)plVar5[2] != -1) {\n          return plVar5;\n        }\n        plVar5 = plVar5 + 3;\n      }" { (if_statement "if ((int)plVar5[2] != -1) {\n          return plVar5;\n        }" if (parenthesized_expression "((int)plVar5[2] != -1)" ( (binary_expression "(int)plVar5[2] != -1" (cast_expression "(int)plVar5[2]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "plVar5[2]" identifier [ number_literal ])) != number_literal) )) (compound_statement "{\n          return plVar5;\n        }" { (return_statement "return plVar5;" return identifier ;) })) (expression_statement "plVar5 = plVar5 + 3;" (assignment_expression "plVar5 = plVar5 + 3" identifier = (binary_expression "plVar5 + 3" identifier + number_literal)) ;) }) while (parenthesized_expression "(plVar5 != plVar3)" ( (binary_expression "plVar5 != plVar3" identifier != identifier) )) ;)) (return_statement "return plVar2;" return identifier ;) })) (do_statement "do {\n      if ((int)plVar3[2] != -1) {\n        if (plVar2 == plVar3) {\n          return plVar2;\n        }\n        return plVar3;\n      }\n      plVar3 = plVar3 + 3;\n      if (plVar2 == plVar3) {\n        return plVar2;\n      }\n    } while (*plVar3 == param_2);" do (compound_statement "{\n      if ((int)plVar3[2] != -1) {\n        if (plVar2 == plVar3) {\n          return plVar2;\n        }\n        return plVar3;\n      }\n      plVar3 = plVar3 + 3;\n      if (plVar2 == plVar3) {\n        return plVar2;\n      }\n    }" { (if_statement "if ((int)plVar3[2] != -1) {\n        if (plVar2 == plVar3) {\n          return plVar2;\n        }\n        return plVar3;\n      }" if (parenthesized_expression "((int)plVar3[2] != -1)" ( (binary_expression "(int)plVar3[2] != -1" (cast_expression "(int)plVar3[2]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "plVar3[2]" identifier [ number_literal ])) != number_literal) )) (compound_statement "{\n        if (plVar2 == plVar3) {\n          return plVar2;\n        }\n        return plVar3;\n      }" { (if_statement "if (plVar2 == plVar3) {\n          return plVar2;\n        }" if (parenthesized_expression "(plVar2 == plVar3)" ( (binary_expression "plVar2 == plVar3" identifier == identifier) )) (compound_statement "{\n          return plVar2;\n        }" { (return_statement "return plVar2;" return identifier ;) })) (return_statement "return plVar3;" return identifier ;) })) (expression_statement "plVar3 = plVar3 + 3;" (assignment_expression "plVar3 = plVar3 + 3" identifier = (binary_expression "plVar3 + 3" identifier + number_literal)) ;) (if_statement "if (plVar2 == plVar3) {\n        return plVar2;\n      }" if (parenthesized_expression "(plVar2 == plVar3)" ( (binary_expression "plVar2 == plVar3" identifier == identifier) )) (compound_statement "{\n        return plVar2;\n      }" { (return_statement "return plVar2;" return identifier ;) })) }) while (parenthesized_expression "(*plVar3 == param_2)" ( (binary_expression "*plVar3 == param_2" (pointer_expression "*plVar3" * identifier) == identifier) )) ;) }))) (return_statement "return plVar2;" return identifier ;) })))
(translation_unit (function_definition (sized_type_specifier long) (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) , (parameter_declaration (sized_type_specifier long) IDENT) )))) (compound_statement { (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (for_statement for ( (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) >> LIT) )) * 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 (parenthesized_expression ( (binary_expression IDENT != IDENT) )) || (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) <= IDENT) ))) )) && (parenthesized_expression ( (binary_expression IDENT != IDENT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != IDENT) )) (compound_statement { (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 ") ))) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (binary_expression IDENT + LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (while_statement while (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (return_statement return IDENT ;) })) })) (labeled_statement statement_identifier : (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) != LIT) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;)) (return_statement return IDENT ;) })) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (return_statement return IDENT ;) })) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (return_statement return IDENT ;) })) }) while (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == IDENT) )) ;) }))) (return_statement return IDENT ;) })))
(function_definition "long * FUN_00466b30(long *param_1,long param_2)\n\n{\n  long *plVar1;\n  long *plVar2;\n  long *plVar3;\n  long lVar4;\n  long *plVar5;\n  long lVar6;\n  \n  plVar2 = (long *)param_1[1];\n  param_1 = (long *)*param_1;\n  plVar3 = param_1;\n  for (lVar4 = ((long)plVar2 - (long)param_1 >> 3) * -0x5555555555555555; 0 < lVar4;\n      lVar4 = (lVar4 - lVar6) + -1) {\n    while( true ) {\n      lVar6 = lVar4 >> 1;\n      if (plVar3[lVar6 * 3] < param_2) break;\n      lVar4 = lVar6;\n      if (lVar6 == 0) goto LAB_00466b78;\n    }\n    plVar3 = plVar3 + lVar6 * 3 + 3;\n  }\nLAB_00466b78:\n  if (((param_1 != plVar3) || (*param_1 <= param_2)) && (plVar2 != plVar3)) {\n    if (*plVar3 != param_2) {\n      if (param_1 == plVar3) {\n                    \n        FUN_00352af0("../../gold/dwarf_reader.cc",0x889,"offset_to_iterator");\n      }\n      plVar5 = param_1;\n      if (param_1 != plVar3 + -3) {\n        lVar4 = plVar3[-6];\n        plVar1 = plVar3 + -3;\n        plVar5 = plVar3 + -6;\n        while (plVar3[-3] == lVar4) {\n          if (param_1 == plVar5) goto LAB_00466c09;\n          lVar4 = plVar5[-3];\n          plVar1 = plVar5;\n          plVar5 = plVar5 + -3;\n        }\n        plVar5 = plVar1;\n        if (plVar1 == plVar3) {\n          return plVar2;\n        }\n      }\nLAB_00466c09:\n      do {\n        if ((int)plVar5[2] != -1) {\n          return plVar5;\n        }\n        plVar5 = plVar5 + 3;\n      } while (plVar5 != plVar3);\n      return plVar2;\n    }\n    do {\n      if ((int)plVar3[2] != -1) {\n        if (plVar2 == plVar3) {\n          return plVar2;\n        }\n        return plVar3;\n      }\n      plVar3 = plVar3 + 3;\n      if (plVar2 == plVar3) {\n        return plVar2;\n      }\n    } while (*plVar3 == param_2);\n  }\n  return plVar2;\n}" (sized_type_specifier "long" (long "long")) (pointer_declarator "* FUN_00466b30(long *param_1,long param_2)" (* "*") (function_declarator "FUN_00466b30(long *param_1,long param_2)" (identifier "FUN_00466b30") (parameter_list "(long *param_1,long param_2)" (( "(") (parameter_declaration "long *param_1" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "long param_2" (sized_type_specifier "long" (long "long")) (identifier "param_2")) () ")")))) (compound_statement "{\n  long *plVar1;\n  long *plVar2;\n  long *plVar3;\n  long lVar4;\n  long *plVar5;\n  long lVar6;\n  \n  plVar2 = (long *)param_1[1];\n  param_1 = (long *)*param_1;\n  plVar3 = param_1;\n  for (lVar4 = ((long)plVar2 - (long)param_1 >> 3) * -0x5555555555555555; 0 < lVar4;\n      lVar4 = (lVar4 - lVar6) + -1) {\n    while( true ) {\n      lVar6 = lVar4 >> 1;\n      if (plVar3[lVar6 * 3] < param_2) break;\n      lVar4 = lVar6;\n      if (lVar6 == 0) goto LAB_00466b78;\n    }\n    plVar3 = plVar3 + lVar6 * 3 + 3;\n  }\nLAB_00466b78:\n  if (((param_1 != plVar3) || (*param_1 <= param_2)) && (plVar2 != plVar3)) {\n    if (*plVar3 != param_2) {\n      if (param_1 == plVar3) {\n                    \n        FUN_00352af0("../../gold/dwarf_reader.cc",0x889,"offset_to_iterator");\n      }\n      plVar5 = param_1;\n      if (param_1 != plVar3 + -3) {\n        lVar4 = plVar3[-6];\n        plVar1 = plVar3 + -3;\n        plVar5 = plVar3 + -6;\n        while (plVar3[-3] == lVar4) {\n          if (param_1 == plVar5) goto LAB_00466c09;\n          lVar4 = plVar5[-3];\n          plVar1 = plVar5;\n          plVar5 = plVar5 + -3;\n        }\n        plVar5 = plVar1;\n        if (plVar1 == plVar3) {\n          return plVar2;\n        }\n      }\nLAB_00466c09:\n      do {\n        if ((int)plVar5[2] != -1) {\n          return plVar5;\n        }\n        plVar5 = plVar5 + 3;\n      } while (plVar5 != plVar3);\n      return plVar2;\n    }\n    do {\n      if ((int)plVar3[2] != -1) {\n        if (plVar2 == plVar3) {\n          return plVar2;\n        }\n        return plVar3;\n      }\n      plVar3 = plVar3 + 3;\n      if (plVar2 == plVar3) {\n        return plVar2;\n      }\n    } while (*plVar3 == param_2);\n  }\n  return plVar2;\n}" ({ "{") (declaration "long *plVar1;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar1" (* "*") (identifier "plVar1")) (; ";")) (declaration "long *plVar2;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar2" (* "*") (identifier "plVar2")) (; ";")) (declaration "long *plVar3;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar3" (* "*") (identifier "plVar3")) (; ";")) (declaration "long lVar4;" (sized_type_specifier "long" (long "long")) (identifier "lVar4") (; ";")) (declaration "long *plVar5;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar5" (* "*") (identifier "plVar5")) (; ";")) (declaration "long lVar6;" (sized_type_specifier "long" (long "long")) (identifier "lVar6") (; ";")) (expression_statement "plVar2 = (long *)param_1[1];" (assignment_expression "plVar2 = (long *)param_1[1]" (identifier "plVar2") (= "=") (cast_expression "(long *)param_1[1]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "param_1 = (long *)*param_1;" (assignment_expression "param_1 = (long *)*param_1" (identifier "param_1") (= "=") (cast_expression "(long *)*param_1" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (expression_statement "plVar3 = param_1;" (assignment_expression "plVar3 = param_1" (identifier "plVar3") (= "=") (identifier "param_1")) (; ";")) (for_statement "for (lVar4 = ((long)plVar2 - (long)param_1 >> 3) * -0x5555555555555555; 0 < lVar4;\n      lVar4 = (lVar4 - lVar6) + -1) {\n    while( true ) {\n      lVar6 = lVar4 >> 1;\n      if (plVar3[lVar6 * 3] < param_2) break;\n      lVar4 = lVar6;\n      if (lVar6 == 0) goto LAB_00466b78;\n    }\n    plVar3 = plVar3 + lVar6 * 3 + 3;\n  }" (for "for") (( "(") (assignment_expression "lVar4 = ((long)plVar2 - (long)param_1 >> 3) * -0x5555555555555555" (identifier "lVar4") (= "=") (binary_expression "((long)plVar2 - (long)param_1 >> 3) * -0x5555555555555555" (parenthesized_expression "((long)plVar2 - (long)param_1 >> 3)" (( "(") (binary_expression "(long)plVar2 - (long)param_1 >> 3" (binary_expression "(long)plVar2 - (long)param_1" (cast_expression "(long)plVar2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar2")) (- "-") (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1"))) (>> ">>") (number_literal "3")) () ")")) (* "*") (number_literal "-0x5555555555555555"))) (; ";") (binary_expression "0 < lVar4" (number_literal "0") (< "<") (identifier "lVar4")) (; ";") (assignment_expression "lVar4 = (lVar4 - lVar6) + -1" (identifier "lVar4") (= "=") (binary_expression "(lVar4 - lVar6) + -1" (parenthesized_expression "(lVar4 - lVar6)" (( "(") (binary_expression "lVar4 - lVar6" (identifier "lVar4") (- "-") (identifier "lVar6")) () ")")) (+ "+") (number_literal "-1"))) () ")") (compound_statement "{\n    while( true ) {\n      lVar6 = lVar4 >> 1;\n      if (plVar3[lVar6 * 3] < param_2) break;\n      lVar4 = lVar6;\n      if (lVar6 == 0) goto LAB_00466b78;\n    }\n    plVar3 = plVar3 + lVar6 * 3 + 3;\n  }" ({ "{") (while_statement "while( true ) {\n      lVar6 = lVar4 >> 1;\n      if (plVar3[lVar6 * 3] < param_2) break;\n      lVar4 = lVar6;\n      if (lVar6 == 0) goto LAB_00466b78;\n    }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n      lVar6 = lVar4 >> 1;\n      if (plVar3[lVar6 * 3] < param_2) break;\n      lVar4 = lVar6;\n      if (lVar6 == 0) goto LAB_00466b78;\n    }" ({ "{") (expression_statement "lVar6 = lVar4 >> 1;" (assignment_expression "lVar6 = lVar4 >> 1" (identifier "lVar6") (= "=") (binary_expression "lVar4 >> 1" (identifier "lVar4") (>> ">>") (number_literal "1"))) (; ";")) (if_statement "if (plVar3[lVar6 * 3] < param_2) break;" (if "if") (parenthesized_expression "(plVar3[lVar6 * 3] < param_2)" (( "(") (binary_expression "plVar3[lVar6 * 3] < param_2" (subscript_expression "plVar3[lVar6 * 3]" (identifier "plVar3") ([ "[") (binary_expression "lVar6 * 3" (identifier "lVar6") (* "*") (number_literal "3")) (] "]")) (< "<") (identifier "param_2")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar4 = lVar6;" (assignment_expression "lVar4 = lVar6" (identifier "lVar4") (= "=") (identifier "lVar6")) (; ";")) (if_statement "if (lVar6 == 0) goto LAB_00466b78;" (if "if") (parenthesized_expression "(lVar6 == 0)" (( "(") (binary_expression "lVar6 == 0" (identifier "lVar6") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00466b78;" (goto "goto") (statement_identifier "LAB_00466b78") (; ";"))) (} "}"))) (expression_statement "plVar3 = plVar3 + lVar6 * 3 + 3;" (assignment_expression "plVar3 = plVar3 + lVar6 * 3 + 3" (identifier "plVar3") (= "=") (binary_expression "plVar3 + lVar6 * 3 + 3" (binary_expression "plVar3 + lVar6 * 3" (identifier "plVar3") (+ "+") (binary_expression "lVar6 * 3" (identifier "lVar6") (* "*") (number_literal "3"))) (+ "+") (number_literal "3"))) (; ";")) (} "}"))) (labeled_statement "LAB_00466b78:\n  if (((param_1 != plVar3) || (*param_1 <= param_2)) && (plVar2 != plVar3)) {\n    if (*plVar3 != param_2) {\n      if (param_1 == plVar3) {\n                    \n        FUN_00352af0("../../gold/dwarf_reader.cc",0x889,"offset_to_iterator");\n      }\n      plVar5 = param_1;\n      if (param_1 != plVar3 + -3) {\n        lVar4 = plVar3[-6];\n        plVar1 = plVar3 + -3;\n        plVar5 = plVar3 + -6;\n        while (plVar3[-3] == lVar4) {\n          if (param_1 == plVar5) goto LAB_00466c09;\n          lVar4 = plVar5[-3];\n          plVar1 = plVar5;\n          plVar5 = plVar5 + -3;\n        }\n        plVar5 = plVar1;\n        if (plVar1 == plVar3) {\n          return plVar2;\n        }\n      }\nLAB_00466c09:\n      do {\n        if ((int)plVar5[2] != -1) {\n          return plVar5;\n        }\n        plVar5 = plVar5 + 3;\n      } while (plVar5 != plVar3);\n      return plVar2;\n    }\n    do {\n      if ((int)plVar3[2] != -1) {\n        if (plVar2 == plVar3) {\n          return plVar2;\n        }\n        return plVar3;\n      }\n      plVar3 = plVar3 + 3;\n      if (plVar2 == plVar3) {\n        return plVar2;\n      }\n    } while (*plVar3 == param_2);\n  }" (statement_identifier "LAB_00466b78") (: ":") (if_statement "if (((param_1 != plVar3) || (*param_1 <= param_2)) && (plVar2 != plVar3)) {\n    if (*plVar3 != param_2) {\n      if (param_1 == plVar3) {\n                    \n        FUN_00352af0("../../gold/dwarf_reader.cc",0x889,"offset_to_iterator");\n      }\n      plVar5 = param_1;\n      if (param_1 != plVar3 + -3) {\n        lVar4 = plVar3[-6];\n        plVar1 = plVar3 + -3;\n        plVar5 = plVar3 + -6;\n        while (plVar3[-3] == lVar4) {\n          if (param_1 == plVar5) goto LAB_00466c09;\n          lVar4 = plVar5[-3];\n          plVar1 = plVar5;\n          plVar5 = plVar5 + -3;\n        }\n        plVar5 = plVar1;\n        if (plVar1 == plVar3) {\n          return plVar2;\n        }\n      }\nLAB_00466c09:\n      do {\n        if ((int)plVar5[2] != -1) {\n          return plVar5;\n        }\n        plVar5 = plVar5 + 3;\n      } while (plVar5 != plVar3);\n      return plVar2;\n    }\n    do {\n      if ((int)plVar3[2] != -1) {\n        if (plVar2 == plVar3) {\n          return plVar2;\n        }\n        return plVar3;\n      }\n      plVar3 = plVar3 + 3;\n      if (plVar2 == plVar3) {\n        return plVar2;\n      }\n    } while (*plVar3 == param_2);\n  }" (if "if") (parenthesized_expression "(((param_1 != plVar3) || (*param_1 <= param_2)) && (plVar2 != plVar3))" (( "(") (binary_expression "((param_1 != plVar3) || (*param_1 <= param_2)) && (plVar2 != plVar3)" (parenthesized_expression "((param_1 != plVar3) || (*param_1 <= param_2))" (( "(") (binary_expression "(param_1 != plVar3) || (*param_1 <= param_2)" (parenthesized_expression "(param_1 != plVar3)" (( "(") (binary_expression "param_1 != plVar3" (identifier "param_1") (!= "!=") (identifier "plVar3")) () ")")) (|| "||") (parenthesized_expression "(*param_1 <= param_2)" (( "(") (binary_expression "*param_1 <= param_2" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (<= "<=") (identifier "param_2")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(plVar2 != plVar3)" (( "(") (binary_expression "plVar2 != plVar3" (identifier "plVar2") (!= "!=") (identifier "plVar3")) () ")"))) () ")")) (compound_statement "{\n    if (*plVar3 != param_2) {\n      if (param_1 == plVar3) {\n                    \n        FUN_00352af0("../../gold/dwarf_reader.cc",0x889,"offset_to_iterator");\n      }\n      plVar5 = param_1;\n      if (param_1 != plVar3 + -3) {\n        lVar4 = plVar3[-6];\n        plVar1 = plVar3 + -3;\n        plVar5 = plVar3 + -6;\n        while (plVar3[-3] == lVar4) {\n          if (param_1 == plVar5) goto LAB_00466c09;\n          lVar4 = plVar5[-3];\n          plVar1 = plVar5;\n          plVar5 = plVar5 + -3;\n        }\n        plVar5 = plVar1;\n        if (plVar1 == plVar3) {\n          return plVar2;\n        }\n      }\nLAB_00466c09:\n      do {\n        if ((int)plVar5[2] != -1) {\n          return plVar5;\n        }\n        plVar5 = plVar5 + 3;\n      } while (plVar5 != plVar3);\n      return plVar2;\n    }\n    do {\n      if ((int)plVar3[2] != -1) {\n        if (plVar2 == plVar3) {\n          return plVar2;\n        }\n        return plVar3;\n      }\n      plVar3 = plVar3 + 3;\n      if (plVar2 == plVar3) {\n        return plVar2;\n      }\n    } while (*plVar3 == param_2);\n  }" ({ "{") (if_statement "if (*plVar3 != param_2) {\n      if (param_1 == plVar3) {\n                    \n        FUN_00352af0("../../gold/dwarf_reader.cc",0x889,"offset_to_iterator");\n      }\n      plVar5 = param_1;\n      if (param_1 != plVar3 + -3) {\n        lVar4 = plVar3[-6];\n        plVar1 = plVar3 + -3;\n        plVar5 = plVar3 + -6;\n        while (plVar3[-3] == lVar4) {\n          if (param_1 == plVar5) goto LAB_00466c09;\n          lVar4 = plVar5[-3];\n          plVar1 = plVar5;\n          plVar5 = plVar5 + -3;\n        }\n        plVar5 = plVar1;\n        if (plVar1 == plVar3) {\n          return plVar2;\n        }\n      }\nLAB_00466c09:\n      do {\n        if ((int)plVar5[2] != -1) {\n          return plVar5;\n        }\n        plVar5 = plVar5 + 3;\n      } while (plVar5 != plVar3);\n      return plVar2;\n    }" (if "if") (parenthesized_expression "(*plVar3 != param_2)" (( "(") (binary_expression "*plVar3 != param_2" (pointer_expression "*plVar3" (* "*") (identifier "plVar3")) (!= "!=") (identifier "param_2")) () ")")) (compound_statement "{\n      if (param_1 == plVar3) {\n                    \n        FUN_00352af0("../../gold/dwarf_reader.cc",0x889,"offset_to_iterator");\n      }\n      plVar5 = param_1;\n      if (param_1 != plVar3 + -3) {\n        lVar4 = plVar3[-6];\n        plVar1 = plVar3 + -3;\n        plVar5 = plVar3 + -6;\n        while (plVar3[-3] == lVar4) {\n          if (param_1 == plVar5) goto LAB_00466c09;\n          lVar4 = plVar5[-3];\n          plVar1 = plVar5;\n          plVar5 = plVar5 + -3;\n        }\n        plVar5 = plVar1;\n        if (plVar1 == plVar3) {\n          return plVar2;\n        }\n      }\nLAB_00466c09:\n      do {\n        if ((int)plVar5[2] != -1) {\n          return plVar5;\n        }\n        plVar5 = plVar5 + 3;\n      } while (plVar5 != plVar3);\n      return plVar2;\n    }" ({ "{") (if_statement "if (param_1 == plVar3) {\n                    \n        FUN_00352af0("../../gold/dwarf_reader.cc",0x889,"offset_to_iterator");\n      }" (if "if") (parenthesized_expression "(param_1 == plVar3)" (( "(") (binary_expression "param_1 == plVar3" (identifier "param_1") (== "==") (identifier "plVar3")) () ")")) (compound_statement "{\n                    \n        FUN_00352af0("../../gold/dwarf_reader.cc",0x889,"offset_to_iterator");\n      }" ({ "{") (expression_statement "FUN_00352af0("../../gold/dwarf_reader.cc",0x889,"offset_to_iterator");" (call_expression "FUN_00352af0("../../gold/dwarf_reader.cc",0x889,"offset_to_iterator")" (identifier "FUN_00352af0") (argument_list "("../../gold/dwarf_reader.cc",0x889,"offset_to_iterator")" (( "(") (string_literal ""../../gold/dwarf_reader.cc"" (" """) (string_content "../../gold/dwarf_reader.cc") (" """)) (, ",") (number_literal "0x889") (, ",") (string_literal ""offset_to_iterator"" (" """) (string_content "offset_to_iterator") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "plVar5 = param_1;" (assignment_expression "plVar5 = param_1" (identifier "plVar5") (= "=") (identifier "param_1")) (; ";")) (if_statement "if (param_1 != plVar3 + -3) {\n        lVar4 = plVar3[-6];\n        plVar1 = plVar3 + -3;\n        plVar5 = plVar3 + -6;\n        while (plVar3[-3] == lVar4) {\n          if (param_1 == plVar5) goto LAB_00466c09;\n          lVar4 = plVar5[-3];\n          plVar1 = plVar5;\n          plVar5 = plVar5 + -3;\n        }\n        plVar5 = plVar1;\n        if (plVar1 == plVar3) {\n          return plVar2;\n        }\n      }" (if "if") (parenthesized_expression "(param_1 != plVar3 + -3)" (( "(") (binary_expression "param_1 != plVar3 + -3" (identifier "param_1") (!= "!=") (binary_expression "plVar3 + -3" (identifier "plVar3") (+ "+") (number_literal "-3"))) () ")")) (compound_statement "{\n        lVar4 = plVar3[-6];\n        plVar1 = plVar3 + -3;\n        plVar5 = plVar3 + -6;\n        while (plVar3[-3] == lVar4) {\n          if (param_1 == plVar5) goto LAB_00466c09;\n          lVar4 = plVar5[-3];\n          plVar1 = plVar5;\n          plVar5 = plVar5 + -3;\n        }\n        plVar5 = plVar1;\n        if (plVar1 == plVar3) {\n          return plVar2;\n        }\n      }" ({ "{") (expression_statement "lVar4 = plVar3[-6];" (assignment_expression "lVar4 = plVar3[-6]" (identifier "lVar4") (= "=") (subscript_expression "plVar3[-6]" (identifier "plVar3") ([ "[") (number_literal "-6") (] "]"))) (; ";")) (expression_statement "plVar1 = plVar3 + -3;" (assignment_expression "plVar1 = plVar3 + -3" (identifier "plVar1") (= "=") (binary_expression "plVar3 + -3" (identifier "plVar3") (+ "+") (number_literal "-3"))) (; ";")) (expression_statement "plVar5 = plVar3 + -6;" (assignment_expression "plVar5 = plVar3 + -6" (identifier "plVar5") (= "=") (binary_expression "plVar3 + -6" (identifier "plVar3") (+ "+") (number_literal "-6"))) (; ";")) (while_statement "while (plVar3[-3] == lVar4) {\n          if (param_1 == plVar5) goto LAB_00466c09;\n          lVar4 = plVar5[-3];\n          plVar1 = plVar5;\n          plVar5 = plVar5 + -3;\n        }" (while "while") (parenthesized_expression "(plVar3[-3] == lVar4)" (( "(") (binary_expression "plVar3[-3] == lVar4" (subscript_expression "plVar3[-3]" (identifier "plVar3") ([ "[") (number_literal "-3") (] "]")) (== "==") (identifier "lVar4")) () ")")) (compound_statement "{\n          if (param_1 == plVar5) goto LAB_00466c09;\n          lVar4 = plVar5[-3];\n          plVar1 = plVar5;\n          plVar5 = plVar5 + -3;\n        }" ({ "{") (if_statement "if (param_1 == plVar5) goto LAB_00466c09;" (if "if") (parenthesized_expression "(param_1 == plVar5)" (( "(") (binary_expression "param_1 == plVar5" (identifier "param_1") (== "==") (identifier "plVar5")) () ")")) (goto_statement "goto LAB_00466c09;" (goto "goto") (statement_identifier "LAB_00466c09") (; ";"))) (expression_statement "lVar4 = plVar5[-3];" (assignment_expression "lVar4 = plVar5[-3]" (identifier "lVar4") (= "=") (subscript_expression "plVar5[-3]" (identifier "plVar5") ([ "[") (number_literal "-3") (] "]"))) (; ";")) (expression_statement "plVar1 = plVar5;" (assignment_expression "plVar1 = plVar5" (identifier "plVar1") (= "=") (identifier "plVar5")) (; ";")) (expression_statement "plVar5 = plVar5 + -3;" (assignment_expression "plVar5 = plVar5 + -3" (identifier "plVar5") (= "=") (binary_expression "plVar5 + -3" (identifier "plVar5") (+ "+") (number_literal "-3"))) (; ";")) (} "}"))) (expression_statement "plVar5 = plVar1;" (assignment_expression "plVar5 = plVar1" (identifier "plVar5") (= "=") (identifier "plVar1")) (; ";")) (if_statement "if (plVar1 == plVar3) {\n          return plVar2;\n        }" (if "if") (parenthesized_expression "(plVar1 == plVar3)" (( "(") (binary_expression "plVar1 == plVar3" (identifier "plVar1") (== "==") (identifier "plVar3")) () ")")) (compound_statement "{\n          return plVar2;\n        }" ({ "{") (return_statement "return plVar2;" (return "return") (identifier "plVar2") (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_00466c09:\n      do {\n        if ((int)plVar5[2] != -1) {\n          return plVar5;\n        }\n        plVar5 = plVar5 + 3;\n      } while (plVar5 != plVar3);" (statement_identifier "LAB_00466c09") (: ":") (do_statement "do {\n        if ((int)plVar5[2] != -1) {\n          return plVar5;\n        }\n        plVar5 = plVar5 + 3;\n      } while (plVar5 != plVar3);" (do "do") (compound_statement "{\n        if ((int)plVar5[2] != -1) {\n          return plVar5;\n        }\n        plVar5 = plVar5 + 3;\n      }" ({ "{") (if_statement "if ((int)plVar5[2] != -1) {\n          return plVar5;\n        }" (if "if") (parenthesized_expression "((int)plVar5[2] != -1)" (( "(") (binary_expression "(int)plVar5[2] != -1" (cast_expression "(int)plVar5[2]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "plVar5[2]" (identifier "plVar5") ([ "[") (number_literal "2") (] "]"))) (!= "!=") (number_literal "-1")) () ")")) (compound_statement "{\n          return plVar5;\n        }" ({ "{") (return_statement "return plVar5;" (return "return") (identifier "plVar5") (; ";")) (} "}"))) (expression_statement "plVar5 = plVar5 + 3;" (assignment_expression "plVar5 = plVar5 + 3" (identifier "plVar5") (= "=") (binary_expression "plVar5 + 3" (identifier "plVar5") (+ "+") (number_literal "3"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(plVar5 != plVar3)" (( "(") (binary_expression "plVar5 != plVar3" (identifier "plVar5") (!= "!=") (identifier "plVar3")) () ")")) (; ";"))) (return_statement "return plVar2;" (return "return") (identifier "plVar2") (; ";")) (} "}"))) (do_statement "do {\n      if ((int)plVar3[2] != -1) {\n        if (plVar2 == plVar3) {\n          return plVar2;\n        }\n        return plVar3;\n      }\n      plVar3 = plVar3 + 3;\n      if (plVar2 == plVar3) {\n        return plVar2;\n      }\n    } while (*plVar3 == param_2);" (do "do") (compound_statement "{\n      if ((int)plVar3[2] != -1) {\n        if (plVar2 == plVar3) {\n          return plVar2;\n        }\n        return plVar3;\n      }\n      plVar3 = plVar3 + 3;\n      if (plVar2 == plVar3) {\n        return plVar2;\n      }\n    }" ({ "{") (if_statement "if ((int)plVar3[2] != -1) {\n        if (plVar2 == plVar3) {\n          return plVar2;\n        }\n        return plVar3;\n      }" (if "if") (parenthesized_expression "((int)plVar3[2] != -1)" (( "(") (binary_expression "(int)plVar3[2] != -1" (cast_expression "(int)plVar3[2]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "plVar3[2]" (identifier "plVar3") ([ "[") (number_literal "2") (] "]"))) (!= "!=") (number_literal "-1")) () ")")) (compound_statement "{\n        if (plVar2 == plVar3) {\n          return plVar2;\n        }\n        return plVar3;\n      }" ({ "{") (if_statement "if (plVar2 == plVar3) {\n          return plVar2;\n        }" (if "if") (parenthesized_expression "(plVar2 == plVar3)" (( "(") (binary_expression "plVar2 == plVar3" (identifier "plVar2") (== "==") (identifier "plVar3")) () ")")) (compound_statement "{\n          return plVar2;\n        }" ({ "{") (return_statement "return plVar2;" (return "return") (identifier "plVar2") (; ";")) (} "}"))) (return_statement "return plVar3;" (return "return") (identifier "plVar3") (; ";")) (} "}"))) (expression_statement "plVar3 = plVar3 + 3;" (assignment_expression "plVar3 = plVar3 + 3" (identifier "plVar3") (= "=") (binary_expression "plVar3 + 3" (identifier "plVar3") (+ "+") (number_literal "3"))) (; ";")) (if_statement "if (plVar2 == plVar3) {\n        return plVar2;\n      }" (if "if") (parenthesized_expression "(plVar2 == plVar3)" (( "(") (binary_expression "plVar2 == plVar3" (identifier "plVar2") (== "==") (identifier "plVar3")) () ")")) (compound_statement "{\n        return plVar2;\n      }" ({ "{") (return_statement "return plVar2;" (return "return") (identifier "plVar2") (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "(*plVar3 == param_2)" (( "(") (binary_expression "*plVar3 == param_2" (pointer_expression "*plVar3" (* "*") (identifier "plVar3")) (== "==") (identifier "param_2")) () ")")) (; ";")) (} "}")))) (return_statement "return plVar2;" (return "return") (identifier "plVar2") (; ";")) (} "}")))

type_1
gold::function_1
          (type_2<gold::type_5,type_3::allocator<gold::type_5>var_1>
           *offsets,type_4 var_5)

{
  type_5 *var_7;
  type_5 *var_10;
  type_1 cVar3;
  type_5 *var_6;
  long var_3;
  type_5 *var_9;
  long var_4;
  
  cVar3._M_current =
       (offsets->
       super__Vector_base<gold::type_5,type_3::allocator<gold::type_5>var_1>var_2
       )._M_impl._M_finish;
  var_7 = (offsets->
           super__Vector_base<gold::type_5,type_3::allocator<gold::type_5>var_1>var_2
           )._M_impl._M_start;
  var_6 = var_7;
  for (var_3 = ((long)cVar3._M_current - (long)var_7 >> 3) * -0x5555555555555555; 0 < var_3;
      var_3 = (var_3 - var_4) + -1) {
    while( true ) {
      var_4 = var_3 >> 1;
      if (var_6[var_4].var_5 < var_5) break;
      var_3 = var_4;
      if (var_4 == 0) goto LAB_00466b78;
    }
    var_6 = var_6 + var_4 + 1;
  }
LAB_00466b78:
  if (((var_7 != var_6) || (var_7->var_5 <= var_5)) && (cVar3._M_current != var_6)) {
    if (var_6->var_5 != var_5) {
      if (var_7 == var_6) {
                    /* WARNING: Subroutine does not return */
        var_8("../../gold/dwarf_reader.cc",0x889,"offset_to_iterator");
      }
      var_9 = var_7;
      if (var_7 != var_6 + -1) {
        var_3 = var_6[-2].var_5;
        var_10 = var_6 + -1;
        var_9 = var_6 + -2;
        while (var_6[-1].var_5 == var_3) {
          if (var_7 == var_9) goto LAB_00466c09;
          var_3 = var_9[-1].var_5;
          var_10 = var_9;
          var_9 = var_9 + -1;
        }
        var_9 = var_10;
        if (var_10 == var_6) {
          return (type_1)cVar3._M_current;
        }
      }
LAB_00466c09:
      do {
        if (var_9->line_num != -1) {
          return (type_1)var_9;
        }
        var_9 = var_9 + 1;
      } while (var_9 != var_6);
      return (type_1)cVar3._M_current;
    }
    do {
      if (var_6->line_num != -1) {
        if (cVar3._M_current == var_6) {
          return (type_1)cVar3._M_current;
        }
        return (type_1)var_6;
      }
      var_6 = var_6 + 1;
      if (cVar3._M_current == var_6) {
        return (type_1)cVar3._M_current;
      }
    } while (var_6->var_5 == var_5);
  }
  return (type_1)cVar3._M_current;
}


(translation_unit (function_definition type: (sized_type_specifier) declarator: (pointer_declarator declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (sized_type_specifier) declarator: (identifier))))) body: (compound_statement (declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (for_statement initializer: (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier))) right: (number_literal))) 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: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier))))) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier))) consequence: (compound_statement (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))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (compound_statement (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)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (while_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (return_statement (identifier)))))) (labeled_statement label: (statement_identifier) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (number_literal))) consequence: (compound_statement (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))) (return_statement (identifier)))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (return_statement (identifier)))) (return_statement (identifier)))) (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 (return_statement (identifier))))) condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier))))))) (return_statement (identifier)))))

long * MASKED(long *param_1,long param_2)

{
  long *plVar1;
  long *plVar2;
  long *plVar3;
  long lVar4;
  long *plVar5;
  long lVar6;
  
  plVar2 = (long *)param_1[1];
  param_1 = (long *)*param_1;
  plVar3 = param_1;
  for (lVar4 = ((long)plVar2 - (long)param_1 >> 3) * -0x5555555555555555; 0 < lVar4;
      lVar4 = (lVar4 - lVar6) + -1) {
    while( true ) {
      lVar6 = lVar4 >> 1;
      if (plVar3[lVar6 * 3] < param_2) break;
      lVar4 = lVar6;
      if (lVar6 == 0) goto LAB_00466b78;
    }
    plVar3 = plVar3 + lVar6 * 3 + 3;
  }
LAB_00466b78:
  if (((param_1 != plVar3) || (*param_1 <= param_2)) && (plVar2 != plVar3)) {
    if (*plVar3 != param_2) {
      if (param_1 == plVar3) {
                    /* WARNING: Subroutine does not return */
        FUN_00352af0("../../gold/dwarf_reader.cc",0x889,"offset_to_iterator");
      }
      plVar5 = param_1;
      if (param_1 != plVar3 + -3) {
        lVar4 = plVar3[-6];
        plVar1 = plVar3 + -3;
        plVar5 = plVar3 + -6;
        while (plVar3[-3] == lVar4) {
          if (param_1 == plVar5) goto LAB_00466c09;
          lVar4 = plVar5[-3];
          plVar1 = plVar5;
          plVar5 = plVar5 + -3;
        }
        plVar5 = plVar1;
        if (plVar1 == plVar3) {
          return plVar2;
        }
      }
LAB_00466c09:
      do {
        if ((int)plVar5[2] != -1) {
          return plVar5;
        }
        plVar5 = plVar5 + 3;
      } while (plVar5 != plVar3);
      return plVar2;
    }
    do {
      if ((int)plVar3[2] != -1) {
        if (plVar2 == plVar3) {
          return plVar2;
        }
        return plVar3;
      }
      plVar3 = plVar3 + 3;
      if (plVar2 == plVar3) {
        return plVar2;
      }
    } while (*plVar3 == param_2);
  }
  return plVar2;
}

