
/* DWARF original prototype: uint find_section_by_type(Elf_file<64,_false,_gold::Incremental_binary>
   * this, uint type) */

uint __thiscall
elfcpp::Elf_file<64,_false,_gold::Incremental_binary>::find_section_by_type
          (Elf_file<64,_false,_gold::Incremental_binary> *this,uint type)

{
  section_size_type sVar1;
  uint uVar2;
  uint uVar3;
  Output_file *pOVar4;
  int iVar5;
  int iVar6;
  uchar *puVar7;
  uint uVar8;
  int iVar9;
  Incremental_binary *in_stack_ffffffd4;
  off_t in_stack_ffffffd8;
  
  initialize_shnum(this);
  uVar2 = this->shnum_;
  iVar9 = *(int *)((int)&this->shoff_ + 4);
  uVar3 = (uint)this->shoff_;
  pOVar4 = this->file_->output_;
  if ((iVar9 < 0) ||
     (iVar5 = *(int *)((int)&pOVar4->file_size_ + 4),
     iVar9 = iVar9 + (uint)CARRY4(uVar2 * 0x40,uVar3),
     uVar8 = (uint)((uint)pOVar4->file_size_ < uVar2 * 0x40 + uVar3), iVar6 = iVar5 - iVar9,
     (SBORROW4(iVar5,iVar9) != SBORROW4(iVar6,uVar8)) != (int)(iVar6 - uVar8) < 0)) {
                    /* WARNING: Subroutine does not return */
    gold::Incremental_binary::view(in_stack_ffffffd4,in_stack_ffffffd8,type);
  }
  if (uVar2 == 0) {
LAB_0008692f:
    uVar8 = 0;
  }
  else {
    uVar8 = 0;
    sVar1 = *(section_size_type *)(pOVar4->base_ + uVar3 + 4);
    puVar7 = pOVar4->base_ + uVar3;
    while (type != sVar1) {
      uVar8 = uVar8 + 1;
      if (uVar2 == uVar8) goto LAB_0008692f;
      sVar1 = *(section_size_type *)(puVar7 + 0x44);
      puVar7 = puVar7 + 0x40;
    }
  }
  return uVar8;
}



int FUN_000868c0(int *param_1,int param_2)

{
  int iVar1;
  uint uVar2;
  int iVar3;
  uint uVar4;
  int iVar5;
  int iVar6;
  
  FUN_000867d0(param_1);
  iVar1 = param_1[3];
  uVar2 = param_1[1];
  iVar3 = *(int *)(*param_1 + 0x28);
  if ((param_1[2] < 0) ||
     (iVar6 = param_1[2] + (uint)CARRY4(iVar1 * 0x40,uVar2),
     uVar4 = (uint)(*(uint *)(iVar3 + 8) < iVar1 * 0x40 + uVar2),
     iVar5 = *(int *)(iVar3 + 0xc) - iVar6,
     (SBORROW4(*(int *)(iVar3 + 0xc),iVar6) != SBORROW4(iVar5,uVar4)) != (int)(iVar5 - uVar4) < 0))
  {
                    /* WARNING: Subroutine does not return */
    FUN_00071170();
  }
  if (iVar1 == 0) {
LAB_0008692f:
    iVar6 = 0;
  }
  else {
    iVar5 = uVar2 + *(int *)(iVar3 + 0x10);
    iVar6 = 0;
    iVar3 = *(int *)(iVar5 + 4);
    while (param_2 != iVar3) {
      iVar6 = iVar6 + 1;
      if (iVar1 == iVar6) goto LAB_0008692f;
      iVar3 = *(int *)(iVar5 + 0x44);
      iVar5 = iVar5 + 0x40;
    }
  }
  return iVar6;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x28
MOV EDI,dword ptr [ESP + 0x3c]
MOV EAX,dword ptr [ESP + 0x40]
MOV dword ptr [ESP + 0x18],EAX
PUSH EDI
CALL 0x000867d0
MOV EDX,dword ptr [EDI + 0xc]
MOV EAX,dword ptr [EDI]
ADD ESP,0x10
MOV EBX,dword ptr [EDI + 0x8]
MOV ECX,dword ptr [EDI + 0x4]
MOV ESI,EDX
MOV EAX,dword ptr [EAX + 0x28]
SHL ESI,0x6
TEST EBX,EBX
JS 0x00086939
XOR EDI,EDI
MOV EBP,dword ptr [EAX + 0xc]
ADD ESI,ECX
ADC EDI,EBX
CMP dword ptr [EAX + 0x8],ESI
SBB EBP,EDI
JL 0x00086939
MOV EAX,dword ptr [EAX + 0x10]
TEST EDX,EDX
JZ 0x0008692f
ADD ECX,EAX
MOV EBP,dword ptr [ESP + 0xc]
XOR EAX,EAX
CMP EBP,dword ptr [ECX + 0x4]
JNZ 0x00086928
JMP 0x00086931
ADD ECX,0x40
CMP EBP,dword ptr [ECX + 0x4]
JZ 0x00086931
ADD EAX,0x1
CMP EDX,EAX
JNZ 0x00086920
XOR EAX,EAX
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
CALL 0x00071170
(translation_unit "int FUN_000868c0(int *param_1,int param_2)\n\n{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  \n  FUN_000867d0(param_1);\n  iVar1 = param_1[3];\n  uVar2 = param_1[1];\n  iVar3 = *(int *)(*param_1 + 0x28);\n  if ((param_1[2] < 0) ||\n     (iVar6 = param_1[2] + (uint)CARRY4(iVar1 * 0x40,uVar2),\n     uVar4 = (uint)(*(uint *)(iVar3 + 8) < iVar1 * 0x40 + uVar2),\n     iVar5 = *(int *)(iVar3 + 0xc) - iVar6,\n     (SBORROW4(*(int *)(iVar3 + 0xc),iVar6) != SBORROW4(iVar5,uVar4)) != (int)(iVar5 - uVar4) < 0))\n  {\n                    /* WARNING: Subroutine does not return */\n    FUN_00071170();\n  }\n  if (iVar1 == 0) {\nLAB_0008692f:\n    iVar6 = 0;\n  }\n  else {\n    iVar5 = uVar2 + *(int *)(iVar3 + 0x10);\n    iVar6 = 0;\n    iVar3 = *(int *)(iVar5 + 4);\n    while (param_2 != iVar3) {\n      iVar6 = iVar6 + 1;\n      if (iVar1 == iVar6) goto LAB_0008692f;\n      iVar3 = *(int *)(iVar5 + 0x44);\n      iVar5 = iVar5 + 0x40;\n    }\n  }\n  return iVar6;\n}\n\n" (function_definition "int FUN_000868c0(int *param_1,int param_2)\n\n{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  \n  FUN_000867d0(param_1);\n  iVar1 = param_1[3];\n  uVar2 = param_1[1];\n  iVar3 = *(int *)(*param_1 + 0x28);\n  if ((param_1[2] < 0) ||\n     (iVar6 = param_1[2] + (uint)CARRY4(iVar1 * 0x40,uVar2),\n     uVar4 = (uint)(*(uint *)(iVar3 + 8) < iVar1 * 0x40 + uVar2),\n     iVar5 = *(int *)(iVar3 + 0xc) - iVar6,\n     (SBORROW4(*(int *)(iVar3 + 0xc),iVar6) != SBORROW4(iVar5,uVar4)) != (int)(iVar5 - uVar4) < 0))\n  {\n                    /* WARNING: Subroutine does not return */\n    FUN_00071170();\n  }\n  if (iVar1 == 0) {\nLAB_0008692f:\n    iVar6 = 0;\n  }\n  else {\n    iVar5 = uVar2 + *(int *)(iVar3 + 0x10);\n    iVar6 = 0;\n    iVar3 = *(int *)(iVar5 + 4);\n    while (param_2 != iVar3) {\n      iVar6 = iVar6 + 1;\n      if (iVar1 == iVar6) goto LAB_0008692f;\n      iVar3 = *(int *)(iVar5 + 0x44);\n      iVar5 = iVar5 + 0x40;\n    }\n  }\n  return iVar6;\n}" primitive_type (function_declarator "FUN_000868c0(int *param_1,int param_2)" identifier (parameter_list "(int *param_1,int param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  \n  FUN_000867d0(param_1);\n  iVar1 = param_1[3];\n  uVar2 = param_1[1];\n  iVar3 = *(int *)(*param_1 + 0x28);\n  if ((param_1[2] < 0) ||\n     (iVar6 = param_1[2] + (uint)CARRY4(iVar1 * 0x40,uVar2),\n     uVar4 = (uint)(*(uint *)(iVar3 + 8) < iVar1 * 0x40 + uVar2),\n     iVar5 = *(int *)(iVar3 + 0xc) - iVar6,\n     (SBORROW4(*(int *)(iVar3 + 0xc),iVar6) != SBORROW4(iVar5,uVar4)) != (int)(iVar5 - uVar4) < 0))\n  {\n                    /* WARNING: Subroutine does not return */\n    FUN_00071170();\n  }\n  if (iVar1 == 0) {\nLAB_0008692f:\n    iVar6 = 0;\n  }\n  else {\n    iVar5 = uVar2 + *(int *)(iVar3 + 0x10);\n    iVar6 = 0;\n    iVar3 = *(int *)(iVar5 + 4);\n    while (param_2 != iVar3) {\n      iVar6 = iVar6 + 1;\n      if (iVar1 == iVar6) goto LAB_0008692f;\n      iVar3 = *(int *)(iVar5 + 0x44);\n      iVar5 = iVar5 + 0x40;\n    }\n  }\n  return iVar6;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (expression_statement "FUN_000867d0(param_1);" (call_expression "FUN_000867d0(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "iVar1 = param_1[3];" (assignment_expression "iVar1 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "uVar2 = param_1[1];" (assignment_expression "uVar2 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "iVar3 = *(int *)(*param_1 + 0x28);" (assignment_expression "iVar3 = *(int *)(*param_1 + 0x28)" identifier = (pointer_expression "*(int *)(*param_1 + 0x28)" * (cast_expression "(int *)(*param_1 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0x28)" ( (binary_expression "*param_1 + 0x28" (pointer_expression "*param_1" * identifier) + number_literal) ))))) ;) (if_statement "if ((param_1[2] < 0) ||\n     (iVar6 = param_1[2] + (uint)CARRY4(iVar1 * 0x40,uVar2),\n     uVar4 = (uint)(*(uint *)(iVar3 + 8) < iVar1 * 0x40 + uVar2),\n     iVar5 = *(int *)(iVar3 + 0xc) - iVar6,\n     (SBORROW4(*(int *)(iVar3 + 0xc),iVar6) != SBORROW4(iVar5,uVar4)) != (int)(iVar5 - uVar4) < 0))\n  {\n                    /* WARNING: Subroutine does not return */\n    FUN_00071170();\n  }" if (parenthesized_expression "((param_1[2] < 0) ||\n     (iVar6 = param_1[2] + (uint)CARRY4(iVar1 * 0x40,uVar2),\n     uVar4 = (uint)(*(uint *)(iVar3 + 8) < iVar1 * 0x40 + uVar2),\n     iVar5 = *(int *)(iVar3 + 0xc) - iVar6,\n     (SBORROW4(*(int *)(iVar3 + 0xc),iVar6) != SBORROW4(iVar5,uVar4)) != (int)(iVar5 - uVar4) < 0))" ( (binary_expression "(param_1[2] < 0) ||\n     (iVar6 = param_1[2] + (uint)CARRY4(iVar1 * 0x40,uVar2),\n     uVar4 = (uint)(*(uint *)(iVar3 + 8) < iVar1 * 0x40 + uVar2),\n     iVar5 = *(int *)(iVar3 + 0xc) - iVar6,\n     (SBORROW4(*(int *)(iVar3 + 0xc),iVar6) != SBORROW4(iVar5,uVar4)) != (int)(iVar5 - uVar4) < 0)" (parenthesized_expression "(param_1[2] < 0)" ( (binary_expression "param_1[2] < 0" (subscript_expression "param_1[2]" identifier [ number_literal ]) < number_literal) )) || (parenthesized_expression "(iVar6 = param_1[2] + (uint)CARRY4(iVar1 * 0x40,uVar2),\n     uVar4 = (uint)(*(uint *)(iVar3 + 8) < iVar1 * 0x40 + uVar2),\n     iVar5 = *(int *)(iVar3 + 0xc) - iVar6,\n     (SBORROW4(*(int *)(iVar3 + 0xc),iVar6) != SBORROW4(iVar5,uVar4)) != (int)(iVar5 - uVar4) < 0)" ( (comma_expression "iVar6 = param_1[2] + (uint)CARRY4(iVar1 * 0x40,uVar2),\n     uVar4 = (uint)(*(uint *)(iVar3 + 8) < iVar1 * 0x40 + uVar2),\n     iVar5 = *(int *)(iVar3 + 0xc) - iVar6,\n     (SBORROW4(*(int *)(iVar3 + 0xc),iVar6) != SBORROW4(iVar5,uVar4)) != (int)(iVar5 - uVar4) < 0" (assignment_expression "iVar6 = param_1[2] + (uint)CARRY4(iVar1 * 0x40,uVar2)" identifier = (binary_expression "param_1[2] + (uint)CARRY4(iVar1 * 0x40,uVar2)" (subscript_expression "param_1[2]" identifier [ number_literal ]) + (cast_expression "(uint)CARRY4(iVar1 * 0x40,uVar2)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(iVar1 * 0x40,uVar2)" identifier (argument_list "(iVar1 * 0x40,uVar2)" ( (binary_expression "iVar1 * 0x40" identifier * number_literal) , identifier )))))) , (comma_expression "uVar4 = (uint)(*(uint *)(iVar3 + 8) < iVar1 * 0x40 + uVar2),\n     iVar5 = *(int *)(iVar3 + 0xc) - iVar6,\n     (SBORROW4(*(int *)(iVar3 + 0xc),iVar6) != SBORROW4(iVar5,uVar4)) != (int)(iVar5 - uVar4) < 0" (assignment_expression "uVar4 = (uint)(*(uint *)(iVar3 + 8) < iVar1 * 0x40 + uVar2)" identifier = (call_expression "(uint)(*(uint *)(iVar3 + 8) < iVar1 * 0x40 + uVar2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(uint *)(iVar3 + 8) < iVar1 * 0x40 + uVar2)" ( (binary_expression "*(uint *)(iVar3 + 8) < iVar1 * 0x40 + uVar2" (pointer_expression "*(uint *)(iVar3 + 8)" * (cast_expression "(uint *)(iVar3 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 8)" ( (binary_expression "iVar3 + 8" identifier + number_literal) )))) < (binary_expression "iVar1 * 0x40 + uVar2" (binary_expression "iVar1 * 0x40" identifier * number_literal) + identifier)) )))) , (comma_expression "iVar5 = *(int *)(iVar3 + 0xc) - iVar6,\n     (SBORROW4(*(int *)(iVar3 + 0xc),iVar6) != SBORROW4(iVar5,uVar4)) != (int)(iVar5 - uVar4) < 0" (assignment_expression "iVar5 = *(int *)(iVar3 + 0xc) - iVar6" identifier = (binary_expression "*(int *)(iVar3 + 0xc) - iVar6" (pointer_expression "*(int *)(iVar3 + 0xc)" * (cast_expression "(int *)(iVar3 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))) - identifier)) , (binary_expression "(SBORROW4(*(int *)(iVar3 + 0xc),iVar6) != SBORROW4(iVar5,uVar4)) != (int)(iVar5 - uVar4) < 0" (parenthesized_expression "(SBORROW4(*(int *)(iVar3 + 0xc),iVar6) != SBORROW4(iVar5,uVar4))" ( (binary_expression "SBORROW4(*(int *)(iVar3 + 0xc),iVar6) != SBORROW4(iVar5,uVar4)" (call_expression "SBORROW4(*(int *)(iVar3 + 0xc),iVar6)" identifier (argument_list "(*(int *)(iVar3 + 0xc),iVar6)" ( (pointer_expression "*(int *)(iVar3 + 0xc)" * (cast_expression "(int *)(iVar3 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))) , identifier ))) != (call_expression "SBORROW4(iVar5,uVar4)" identifier (argument_list "(iVar5,uVar4)" ( identifier , identifier )))) )) != (binary_expression "(int)(iVar5 - uVar4) < 0" (cast_expression "(int)(iVar5 - uVar4)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar5 - uVar4)" ( (binary_expression "iVar5 - uVar4" identifier - identifier) ))) < number_literal))))) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_00071170();\n  }" { comment (expression_statement "FUN_00071170();" (call_expression "FUN_00071170()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (iVar1 == 0) {\nLAB_0008692f:\n    iVar6 = 0;\n  }\n  else {\n    iVar5 = uVar2 + *(int *)(iVar3 + 0x10);\n    iVar6 = 0;\n    iVar3 = *(int *)(iVar5 + 4);\n    while (param_2 != iVar3) {\n      iVar6 = iVar6 + 1;\n      if (iVar1 == iVar6) goto LAB_0008692f;\n      iVar3 = *(int *)(iVar5 + 0x44);\n      iVar5 = iVar5 + 0x40;\n    }\n  }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0008692f:\n    iVar6 = 0;\n  }" { (labeled_statement "LAB_0008692f:\n    iVar6 = 0;" statement_identifier : (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;)) }) (else_clause "else {\n    iVar5 = uVar2 + *(int *)(iVar3 + 0x10);\n    iVar6 = 0;\n    iVar3 = *(int *)(iVar5 + 4);\n    while (param_2 != iVar3) {\n      iVar6 = iVar6 + 1;\n      if (iVar1 == iVar6) goto LAB_0008692f;\n      iVar3 = *(int *)(iVar5 + 0x44);\n      iVar5 = iVar5 + 0x40;\n    }\n  }" else (compound_statement "{\n    iVar5 = uVar2 + *(int *)(iVar3 + 0x10);\n    iVar6 = 0;\n    iVar3 = *(int *)(iVar5 + 4);\n    while (param_2 != iVar3) {\n      iVar6 = iVar6 + 1;\n      if (iVar1 == iVar6) goto LAB_0008692f;\n      iVar3 = *(int *)(iVar5 + 0x44);\n      iVar5 = iVar5 + 0x40;\n    }\n  }" { (expression_statement "iVar5 = uVar2 + *(int *)(iVar3 + 0x10);" (assignment_expression "iVar5 = uVar2 + *(int *)(iVar3 + 0x10)" identifier = (binary_expression "uVar2 + *(int *)(iVar3 + 0x10)" identifier + (pointer_expression "*(int *)(iVar3 + 0x10)" * (cast_expression "(int *)(iVar3 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x10)" ( (binary_expression "iVar3 + 0x10" identifier + number_literal) )))))) ;) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (expression_statement "iVar3 = *(int *)(iVar5 + 4);" (assignment_expression "iVar3 = *(int *)(iVar5 + 4)" identifier = (pointer_expression "*(int *)(iVar5 + 4)" * (cast_expression "(int *)(iVar5 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 4)" ( (binary_expression "iVar5 + 4" identifier + number_literal) ))))) ;) (while_statement "while (param_2 != iVar3) {\n      iVar6 = iVar6 + 1;\n      if (iVar1 == iVar6) goto LAB_0008692f;\n      iVar3 = *(int *)(iVar5 + 0x44);\n      iVar5 = iVar5 + 0x40;\n    }" while (parenthesized_expression "(param_2 != iVar3)" ( (binary_expression "param_2 != iVar3" identifier != identifier) )) (compound_statement "{\n      iVar6 = iVar6 + 1;\n      if (iVar1 == iVar6) goto LAB_0008692f;\n      iVar3 = *(int *)(iVar5 + 0x44);\n      iVar5 = iVar5 + 0x40;\n    }" { (expression_statement "iVar6 = iVar6 + 1;" (assignment_expression "iVar6 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (if_statement "if (iVar1 == iVar6) goto LAB_0008692f;" if (parenthesized_expression "(iVar1 == iVar6)" ( (binary_expression "iVar1 == iVar6" identifier == identifier) )) (goto_statement "goto LAB_0008692f;" goto statement_identifier ;)) (expression_statement "iVar3 = *(int *)(iVar5 + 0x44);" (assignment_expression "iVar3 = *(int *)(iVar5 + 0x44)" identifier = (pointer_expression "*(int *)(iVar5 + 0x44)" * (cast_expression "(int *)(iVar5 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x44)" ( (binary_expression "iVar5 + 0x44" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = iVar5 + 0x40;" (assignment_expression "iVar5 = iVar5 + 0x40" identifier = (binary_expression "iVar5 + 0x40" identifier + number_literal)) ;) })) }))) (return_statement "return iVar6;" return identifier ;) })))
(translation_unit "/* DWARF original prototype: uint find_section_by_type(Elf_file<64,_false,_gold::Incremental_binary>\n   * this, uint type) */\n\nuint __thiscall\nelfcpp::Elf_file<64,_false,_gold::Incremental_binary>::find_section_by_type\n          (Elf_file<64,_false,_gold::Incremental_binary> *this,uint type)\n\n{\n  section_size_type sVar1;\n  uint uVar2;\n  uint uVar3;\n  Output_file *pOVar4;\n  int iVar5;\n  int iVar6;\n  uchar *puVar7;\n  uint uVar8;\n  int iVar9;\n  Incremental_binary *in_stack_ffffffd4;\n  off_t in_stack_ffffffd8;\n  \n  initialize_shnum(this);\n  uVar2 = this->shnum_;\n  iVar9 = *(int *)((int)&this->shoff_ + 4);\n  uVar3 = (uint)this->shoff_;\n  pOVar4 = this->file_->output_;\n  if ((iVar9 < 0) ||\n     (iVar5 = *(int *)((int)&pOVar4->file_size_ + 4),\n     iVar9 = iVar9 + (uint)CARRY4(uVar2 * 0x40,uVar3),\n     uVar8 = (uint)((uint)pOVar4->file_size_ < uVar2 * 0x40 + uVar3), iVar6 = iVar5 - iVar9,\n     (SBORROW4(iVar5,iVar9) != SBORROW4(iVar6,uVar8)) != (int)(iVar6 - uVar8) < 0)) {\n                    /* WARNING: Subroutine does not return */\n    gold::Incremental_binary::view(in_stack_ffffffd4,in_stack_ffffffd8,type);\n  }\n  if (uVar2 == 0) {\nLAB_0008692f:\n    uVar8 = 0;\n  }\n  else {\n    uVar8 = 0;\n    sVar1 = *(section_size_type *)(pOVar4->base_ + uVar3 + 4);\n    puVar7 = pOVar4->base_ + uVar3;\n    while (type != sVar1) {\n      uVar8 = uVar8 + 1;\n      if (uVar2 == uVar8) goto LAB_0008692f;\n      sVar1 = *(section_size_type *)(puVar7 + 0x44);\n      puVar7 = puVar7 + 0x40;\n    }\n  }\n  return uVar8;\n}\n\n" comment (declaration "uint __thiscall\nelfcpp::Elf_file<64,_false,_gold::Incremental_binary>::find_section_by_type\n          (Elf_file<64,_false,_gold::Incremental_binary> *this,uint type)\n\n{\n  section_size_type sVar1;" type_identifier (ms_call_modifier "__thiscall" __thiscall) (ERROR "elfcpp::" identifier : :) identifier (ERROR "<64" < number_literal) , identifier , (ERROR "_gold::Incremental_binary>::find_section_by_type\n          (Elf_file<64,_false,_gold::Incremental_binary> *this,uint type)\n\n{\n  section_size_type" identifier : : identifier > : : (function_declarator "find_section_by_type\n          (Elf_file<64,_false,_gold::Incremental_binary> *this,uint type)" identifier (parameter_list "(Elf_file<64,_false,_gold::Incremental_binary> *this,uint type)" ( (parameter_declaration "Elf_file" type_identifier) (ERROR "<64" < number_literal) , (parameter_declaration "_false" type_identifier) , (parameter_declaration "_gold::Incremental_binary> *this" type_identifier (ERROR "::Incremental_binary>" : : identifier >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "uint type" type_identifier identifier) ))) { identifier) identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "Output_file *pOVar4;" type_identifier (pointer_declarator "*pOVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uchar *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "Incremental_binary *in_stack_ffffffd4;" type_identifier (pointer_declarator "*in_stack_ffffffd4" * identifier) ;) (declaration "off_t in_stack_ffffffd8;" type_identifier identifier ;) (expression_statement "initialize_shnum(this);" (call_expression "initialize_shnum(this)" identifier (argument_list "(this)" ( identifier ))) ;) (expression_statement "uVar2 = this->shnum_;" (assignment_expression "uVar2 = this->shnum_" identifier = (field_expression "this->shnum_" identifier -> field_identifier)) ;) (expression_statement "iVar9 = *(int *)((int)&this->shoff_ + 4);" (assignment_expression "iVar9 = *(int *)((int)&this->shoff_ + 4)" identifier = (pointer_expression "*(int *)((int)&this->shoff_ + 4)" * (cast_expression "(int *)((int)&this->shoff_ + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&this->shoff_ + 4)" ( (binary_expression "(int)&this->shoff_ + 4" (cast_expression "(int)&this->shoff_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&this->shoff_" & (field_expression "this->shoff_" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "uVar3 = (uint)this->shoff_;" (assignment_expression "uVar3 = (uint)this->shoff_" identifier = (cast_expression "(uint)this->shoff_" ( (type_descriptor "uint" type_identifier) ) (field_expression "this->shoff_" identifier -> field_identifier))) ;) (expression_statement "pOVar4 = this->file_->output_;" (assignment_expression "pOVar4 = this->file_->output_" identifier = (field_expression "this->file_->output_" (field_expression "this->file_" identifier -> field_identifier) -> field_identifier)) ;) (if_statement "if ((iVar9 < 0) ||\n     (iVar5 = *(int *)((int)&pOVar4->file_size_ + 4),\n     iVar9 = iVar9 + (uint)CARRY4(uVar2 * 0x40,uVar3),\n     uVar8 = (uint)((uint)pOVar4->file_size_ < uVar2 * 0x40 + uVar3), iVar6 = iVar5 - iVar9,\n     (SBORROW4(iVar5,iVar9) != SBORROW4(iVar6,uVar8)) != (int)(iVar6 - uVar8) < 0)) {\n                    /* WARNING: Subroutine does not return */\n    gold::Incremental_binary::view(in_stack_ffffffd4,in_stack_ffffffd8,type);\n  }" if (parenthesized_expression "((iVar9 < 0) ||\n     (iVar5 = *(int *)((int)&pOVar4->file_size_ + 4),\n     iVar9 = iVar9 + (uint)CARRY4(uVar2 * 0x40,uVar3),\n     uVar8 = (uint)((uint)pOVar4->file_size_ < uVar2 * 0x40 + uVar3), iVar6 = iVar5 - iVar9,\n     (SBORROW4(iVar5,iVar9) != SBORROW4(iVar6,uVar8)) != (int)(iVar6 - uVar8) < 0))" ( (binary_expression "(iVar9 < 0) ||\n     (iVar5 = *(int *)((int)&pOVar4->file_size_ + 4),\n     iVar9 = iVar9 + (uint)CARRY4(uVar2 * 0x40,uVar3),\n     uVar8 = (uint)((uint)pOVar4->file_size_ < uVar2 * 0x40 + uVar3), iVar6 = iVar5 - iVar9,\n     (SBORROW4(iVar5,iVar9) != SBORROW4(iVar6,uVar8)) != (int)(iVar6 - uVar8) < 0)" (parenthesized_expression "(iVar9 < 0)" ( (binary_expression "iVar9 < 0" identifier < number_literal) )) || (parenthesized_expression "(iVar5 = *(int *)((int)&pOVar4->file_size_ + 4),\n     iVar9 = iVar9 + (uint)CARRY4(uVar2 * 0x40,uVar3),\n     uVar8 = (uint)((uint)pOVar4->file_size_ < uVar2 * 0x40 + uVar3), iVar6 = iVar5 - iVar9,\n     (SBORROW4(iVar5,iVar9) != SBORROW4(iVar6,uVar8)) != (int)(iVar6 - uVar8) < 0)" ( (comma_expression "iVar5 = *(int *)((int)&pOVar4->file_size_ + 4),\n     iVar9 = iVar9 + (uint)CARRY4(uVar2 * 0x40,uVar3),\n     uVar8 = (uint)((uint)pOVar4->file_size_ < uVar2 * 0x40 + uVar3), iVar6 = iVar5 - iVar9,\n     (SBORROW4(iVar5,iVar9) != SBORROW4(iVar6,uVar8)) != (int)(iVar6 - uVar8) < 0" (assignment_expression "iVar5 = *(int *)((int)&pOVar4->file_size_ + 4)" identifier = (pointer_expression "*(int *)((int)&pOVar4->file_size_ + 4)" * (cast_expression "(int *)((int)&pOVar4->file_size_ + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pOVar4->file_size_ + 4)" ( (binary_expression "(int)&pOVar4->file_size_ + 4" (cast_expression "(int)&pOVar4->file_size_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pOVar4->file_size_" & (field_expression "pOVar4->file_size_" identifier -> field_identifier))) + number_literal) ))))) , (comma_expression "iVar9 = iVar9 + (uint)CARRY4(uVar2 * 0x40,uVar3),\n     uVar8 = (uint)((uint)pOVar4->file_size_ < uVar2 * 0x40 + uVar3), iVar6 = iVar5 - iVar9,\n     (SBORROW4(iVar5,iVar9) != SBORROW4(iVar6,uVar8)) != (int)(iVar6 - uVar8) < 0" (assignment_expression "iVar9 = iVar9 + (uint)CARRY4(uVar2 * 0x40,uVar3)" identifier = (binary_expression "iVar9 + (uint)CARRY4(uVar2 * 0x40,uVar3)" identifier + (cast_expression "(uint)CARRY4(uVar2 * 0x40,uVar3)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar2 * 0x40,uVar3)" identifier (argument_list "(uVar2 * 0x40,uVar3)" ( (binary_expression "uVar2 * 0x40" identifier * number_literal) , identifier )))))) , (comma_expression "uVar8 = (uint)((uint)pOVar4->file_size_ < uVar2 * 0x40 + uVar3), iVar6 = iVar5 - iVar9,\n     (SBORROW4(iVar5,iVar9) != SBORROW4(iVar6,uVar8)) != (int)(iVar6 - uVar8) < 0" (assignment_expression "uVar8 = (uint)((uint)pOVar4->file_size_ < uVar2 * 0x40 + uVar3)" identifier = (call_expression "(uint)((uint)pOVar4->file_size_ < uVar2 * 0x40 + uVar3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uint)pOVar4->file_size_ < uVar2 * 0x40 + uVar3)" ( (binary_expression "(uint)pOVar4->file_size_ < uVar2 * 0x40 + uVar3" (cast_expression "(uint)pOVar4->file_size_" ( (type_descriptor "uint" type_identifier) ) (field_expression "pOVar4->file_size_" identifier -> field_identifier)) < (binary_expression "uVar2 * 0x40 + uVar3" (binary_expression "uVar2 * 0x40" identifier * number_literal) + identifier)) )))) , (comma_expression "iVar6 = iVar5 - iVar9,\n     (SBORROW4(iVar5,iVar9) != SBORROW4(iVar6,uVar8)) != (int)(iVar6 - uVar8) < 0" (assignment_expression "iVar6 = iVar5 - iVar9" identifier = (binary_expression "iVar5 - iVar9" identifier - identifier)) , (binary_expression "(SBORROW4(iVar5,iVar9) != SBORROW4(iVar6,uVar8)) != (int)(iVar6 - uVar8) < 0" (parenthesized_expression "(SBORROW4(iVar5,iVar9) != SBORROW4(iVar6,uVar8))" ( (binary_expression "SBORROW4(iVar5,iVar9) != SBORROW4(iVar6,uVar8)" (call_expression "SBORROW4(iVar5,iVar9)" identifier (argument_list "(iVar5,iVar9)" ( identifier , identifier ))) != (call_expression "SBORROW4(iVar6,uVar8)" identifier (argument_list "(iVar6,uVar8)" ( identifier , identifier )))) )) != (binary_expression "(int)(iVar6 - uVar8) < 0" (cast_expression "(int)(iVar6 - uVar8)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar6 - uVar8)" ( (binary_expression "iVar6 - uVar8" identifier - identifier) ))) < number_literal)))))) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    gold::Incremental_binary::view(in_stack_ffffffd4,in_stack_ffffffd8,type);\n  }" { comment (labeled_statement "gold::Incremental_binary::view(in_stack_ffffffd4,in_stack_ffffffd8,type);" statement_identifier : (ERROR ":" :) (labeled_statement "Incremental_binary::view(in_stack_ffffffd4,in_stack_ffffffd8,type);" statement_identifier : (ERROR ":" :) (expression_statement "view(in_stack_ffffffd4,in_stack_ffffffd8,type);" (call_expression "view(in_stack_ffffffd4,in_stack_ffffffd8,type)" identifier (argument_list "(in_stack_ffffffd4,in_stack_ffffffd8,type)" ( identifier , identifier , identifier ))) ;))) })) (if_statement "if (uVar2 == 0) {\nLAB_0008692f:\n    uVar8 = 0;\n  }\n  else {\n    uVar8 = 0;\n    sVar1 = *(section_size_type *)(pOVar4->base_ + uVar3 + 4);\n    puVar7 = pOVar4->base_ + uVar3;\n    while (type != sVar1) {\n      uVar8 = uVar8 + 1;\n      if (uVar2 == uVar8) goto LAB_0008692f;\n      sVar1 = *(section_size_type *)(puVar7 + 0x44);\n      puVar7 = puVar7 + 0x40;\n    }\n  }" if (parenthesized_expression "(uVar2 == 0)" ( (binary_expression "uVar2 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0008692f:\n    uVar8 = 0;\n  }" { (labeled_statement "LAB_0008692f:\n    uVar8 = 0;" statement_identifier : (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;)) }) (else_clause "else {\n    uVar8 = 0;\n    sVar1 = *(section_size_type *)(pOVar4->base_ + uVar3 + 4);\n    puVar7 = pOVar4->base_ + uVar3;\n    while (type != sVar1) {\n      uVar8 = uVar8 + 1;\n      if (uVar2 == uVar8) goto LAB_0008692f;\n      sVar1 = *(section_size_type *)(puVar7 + 0x44);\n      puVar7 = puVar7 + 0x40;\n    }\n  }" else (compound_statement "{\n    uVar8 = 0;\n    sVar1 = *(section_size_type *)(pOVar4->base_ + uVar3 + 4);\n    puVar7 = pOVar4->base_ + uVar3;\n    while (type != sVar1) {\n      uVar8 = uVar8 + 1;\n      if (uVar2 == uVar8) goto LAB_0008692f;\n      sVar1 = *(section_size_type *)(puVar7 + 0x44);\n      puVar7 = puVar7 + 0x40;\n    }\n  }" { (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (expression_statement "sVar1 = *(section_size_type *)(pOVar4->base_ + uVar3 + 4);" (assignment_expression "sVar1 = *(section_size_type *)(pOVar4->base_ + uVar3 + 4)" identifier = (pointer_expression "*(section_size_type *)(pOVar4->base_ + uVar3 + 4)" * (cast_expression "(section_size_type *)(pOVar4->base_ + uVar3 + 4)" ( (type_descriptor "section_size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pOVar4->base_ + uVar3 + 4)" ( (binary_expression "pOVar4->base_ + uVar3 + 4" (binary_expression "pOVar4->base_ + uVar3" (field_expression "pOVar4->base_" identifier -> field_identifier) + identifier) + number_literal) ))))) ;) (expression_statement "puVar7 = pOVar4->base_ + uVar3;" (assignment_expression "puVar7 = pOVar4->base_ + uVar3" identifier = (binary_expression "pOVar4->base_ + uVar3" (field_expression "pOVar4->base_" identifier -> field_identifier) + identifier)) ;) (while_statement "while (type != sVar1) {\n      uVar8 = uVar8 + 1;\n      if (uVar2 == uVar8) goto LAB_0008692f;\n      sVar1 = *(section_size_type *)(puVar7 + 0x44);\n      puVar7 = puVar7 + 0x40;\n    }" while (parenthesized_expression "(type != sVar1)" ( (binary_expression "type != sVar1" identifier != identifier) )) (compound_statement "{\n      uVar8 = uVar8 + 1;\n      if (uVar2 == uVar8) goto LAB_0008692f;\n      sVar1 = *(section_size_type *)(puVar7 + 0x44);\n      puVar7 = puVar7 + 0x40;\n    }" { (expression_statement "uVar8 = uVar8 + 1;" (assignment_expression "uVar8 = uVar8 + 1" identifier = (binary_expression "uVar8 + 1" identifier + number_literal)) ;) (if_statement "if (uVar2 == uVar8) goto LAB_0008692f;" if (parenthesized_expression "(uVar2 == uVar8)" ( (binary_expression "uVar2 == uVar8" identifier == identifier) )) (goto_statement "goto LAB_0008692f;" goto statement_identifier ;)) (expression_statement "sVar1 = *(section_size_type *)(puVar7 + 0x44);" (assignment_expression "sVar1 = *(section_size_type *)(puVar7 + 0x44)" identifier = (pointer_expression "*(section_size_type *)(puVar7 + 0x44)" * (cast_expression "(section_size_type *)(puVar7 + 0x44)" ( (type_descriptor "section_size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + 0x44)" ( (binary_expression "puVar7 + 0x44" identifier + number_literal) ))))) ;) (expression_statement "puVar7 = puVar7 + 0x40;" (assignment_expression "puVar7 = puVar7 + 0x40" identifier = (binary_expression "puVar7 + 0x40" identifier + number_literal)) ;) })) }))) (return_statement "return uVar8;" return identifier ;) (ERROR "}" }))
(translation_unit "int FUN_000868c0(int *param_1,int param_2)\n\n{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  \n  FUN_000867d0(param_1);\n  iVar1 = param_1[3];\n  uVar2 = param_1[1];\n  iVar3 = *(int *)(*param_1 + 0x28);\n  if ((param_1[2] < 0) ||\n     (iVar6 = param_1[2] + (uint)CARRY4(iVar1 * 0x40,uVar2),\n     uVar4 = (uint)(*(uint *)(iVar3 + 8) < iVar1 * 0x40 + uVar2),\n     iVar5 = *(int *)(iVar3 + 0xc) - iVar6,\n     (SBORROW4(*(int *)(iVar3 + 0xc),iVar6) != SBORROW4(iVar5,uVar4)) != (int)(iVar5 - uVar4) < 0))\n  {\n                    \n    FUN_00071170();\n  }\n  if (iVar1 == 0) {\nLAB_0008692f:\n    iVar6 = 0;\n  }\n  else {\n    iVar5 = uVar2 + *(int *)(iVar3 + 0x10);\n    iVar6 = 0;\n    iVar3 = *(int *)(iVar5 + 4);\n    while (param_2 != iVar3) {\n      iVar6 = iVar6 + 1;\n      if (iVar1 == iVar6) goto LAB_0008692f;\n      iVar3 = *(int *)(iVar5 + 0x44);\n      iVar5 = iVar5 + 0x40;\n    }\n  }\n  return iVar6;\n}\n\n" (function_definition "int FUN_000868c0(int *param_1,int param_2)\n\n{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  \n  FUN_000867d0(param_1);\n  iVar1 = param_1[3];\n  uVar2 = param_1[1];\n  iVar3 = *(int *)(*param_1 + 0x28);\n  if ((param_1[2] < 0) ||\n     (iVar6 = param_1[2] + (uint)CARRY4(iVar1 * 0x40,uVar2),\n     uVar4 = (uint)(*(uint *)(iVar3 + 8) < iVar1 * 0x40 + uVar2),\n     iVar5 = *(int *)(iVar3 + 0xc) - iVar6,\n     (SBORROW4(*(int *)(iVar3 + 0xc),iVar6) != SBORROW4(iVar5,uVar4)) != (int)(iVar5 - uVar4) < 0))\n  {\n                    \n    FUN_00071170();\n  }\n  if (iVar1 == 0) {\nLAB_0008692f:\n    iVar6 = 0;\n  }\n  else {\n    iVar5 = uVar2 + *(int *)(iVar3 + 0x10);\n    iVar6 = 0;\n    iVar3 = *(int *)(iVar5 + 4);\n    while (param_2 != iVar3) {\n      iVar6 = iVar6 + 1;\n      if (iVar1 == iVar6) goto LAB_0008692f;\n      iVar3 = *(int *)(iVar5 + 0x44);\n      iVar5 = iVar5 + 0x40;\n    }\n  }\n  return iVar6;\n}" primitive_type (function_declarator "FUN_000868c0(int *param_1,int param_2)" identifier (parameter_list "(int *param_1,int param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  \n  FUN_000867d0(param_1);\n  iVar1 = param_1[3];\n  uVar2 = param_1[1];\n  iVar3 = *(int *)(*param_1 + 0x28);\n  if ((param_1[2] < 0) ||\n     (iVar6 = param_1[2] + (uint)CARRY4(iVar1 * 0x40,uVar2),\n     uVar4 = (uint)(*(uint *)(iVar3 + 8) < iVar1 * 0x40 + uVar2),\n     iVar5 = *(int *)(iVar3 + 0xc) - iVar6,\n     (SBORROW4(*(int *)(iVar3 + 0xc),iVar6) != SBORROW4(iVar5,uVar4)) != (int)(iVar5 - uVar4) < 0))\n  {\n                    \n    FUN_00071170();\n  }\n  if (iVar1 == 0) {\nLAB_0008692f:\n    iVar6 = 0;\n  }\n  else {\n    iVar5 = uVar2 + *(int *)(iVar3 + 0x10);\n    iVar6 = 0;\n    iVar3 = *(int *)(iVar5 + 4);\n    while (param_2 != iVar3) {\n      iVar6 = iVar6 + 1;\n      if (iVar1 == iVar6) goto LAB_0008692f;\n      iVar3 = *(int *)(iVar5 + 0x44);\n      iVar5 = iVar5 + 0x40;\n    }\n  }\n  return iVar6;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (expression_statement "FUN_000867d0(param_1);" (call_expression "FUN_000867d0(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "iVar1 = param_1[3];" (assignment_expression "iVar1 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "uVar2 = param_1[1];" (assignment_expression "uVar2 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "iVar3 = *(int *)(*param_1 + 0x28);" (assignment_expression "iVar3 = *(int *)(*param_1 + 0x28)" identifier = (pointer_expression "*(int *)(*param_1 + 0x28)" * (cast_expression "(int *)(*param_1 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0x28)" ( (binary_expression "*param_1 + 0x28" (pointer_expression "*param_1" * identifier) + number_literal) ))))) ;) (if_statement "if ((param_1[2] < 0) ||\n     (iVar6 = param_1[2] + (uint)CARRY4(iVar1 * 0x40,uVar2),\n     uVar4 = (uint)(*(uint *)(iVar3 + 8) < iVar1 * 0x40 + uVar2),\n     iVar5 = *(int *)(iVar3 + 0xc) - iVar6,\n     (SBORROW4(*(int *)(iVar3 + 0xc),iVar6) != SBORROW4(iVar5,uVar4)) != (int)(iVar5 - uVar4) < 0))\n  {\n                    \n    FUN_00071170();\n  }" if (parenthesized_expression "((param_1[2] < 0) ||\n     (iVar6 = param_1[2] + (uint)CARRY4(iVar1 * 0x40,uVar2),\n     uVar4 = (uint)(*(uint *)(iVar3 + 8) < iVar1 * 0x40 + uVar2),\n     iVar5 = *(int *)(iVar3 + 0xc) - iVar6,\n     (SBORROW4(*(int *)(iVar3 + 0xc),iVar6) != SBORROW4(iVar5,uVar4)) != (int)(iVar5 - uVar4) < 0))" ( (binary_expression "(param_1[2] < 0) ||\n     (iVar6 = param_1[2] + (uint)CARRY4(iVar1 * 0x40,uVar2),\n     uVar4 = (uint)(*(uint *)(iVar3 + 8) < iVar1 * 0x40 + uVar2),\n     iVar5 = *(int *)(iVar3 + 0xc) - iVar6,\n     (SBORROW4(*(int *)(iVar3 + 0xc),iVar6) != SBORROW4(iVar5,uVar4)) != (int)(iVar5 - uVar4) < 0)" (parenthesized_expression "(param_1[2] < 0)" ( (binary_expression "param_1[2] < 0" (subscript_expression "param_1[2]" identifier [ number_literal ]) < number_literal) )) || (parenthesized_expression "(iVar6 = param_1[2] + (uint)CARRY4(iVar1 * 0x40,uVar2),\n     uVar4 = (uint)(*(uint *)(iVar3 + 8) < iVar1 * 0x40 + uVar2),\n     iVar5 = *(int *)(iVar3 + 0xc) - iVar6,\n     (SBORROW4(*(int *)(iVar3 + 0xc),iVar6) != SBORROW4(iVar5,uVar4)) != (int)(iVar5 - uVar4) < 0)" ( (comma_expression "iVar6 = param_1[2] + (uint)CARRY4(iVar1 * 0x40,uVar2),\n     uVar4 = (uint)(*(uint *)(iVar3 + 8) < iVar1 * 0x40 + uVar2),\n     iVar5 = *(int *)(iVar3 + 0xc) - iVar6,\n     (SBORROW4(*(int *)(iVar3 + 0xc),iVar6) != SBORROW4(iVar5,uVar4)) != (int)(iVar5 - uVar4) < 0" (assignment_expression "iVar6 = param_1[2] + (uint)CARRY4(iVar1 * 0x40,uVar2)" identifier = (binary_expression "param_1[2] + (uint)CARRY4(iVar1 * 0x40,uVar2)" (subscript_expression "param_1[2]" identifier [ number_literal ]) + (cast_expression "(uint)CARRY4(iVar1 * 0x40,uVar2)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(iVar1 * 0x40,uVar2)" identifier (argument_list "(iVar1 * 0x40,uVar2)" ( (binary_expression "iVar1 * 0x40" identifier * number_literal) , identifier )))))) , (comma_expression "uVar4 = (uint)(*(uint *)(iVar3 + 8) < iVar1 * 0x40 + uVar2),\n     iVar5 = *(int *)(iVar3 + 0xc) - iVar6,\n     (SBORROW4(*(int *)(iVar3 + 0xc),iVar6) != SBORROW4(iVar5,uVar4)) != (int)(iVar5 - uVar4) < 0" (assignment_expression "uVar4 = (uint)(*(uint *)(iVar3 + 8) < iVar1 * 0x40 + uVar2)" identifier = (call_expression "(uint)(*(uint *)(iVar3 + 8) < iVar1 * 0x40 + uVar2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(uint *)(iVar3 + 8) < iVar1 * 0x40 + uVar2)" ( (binary_expression "*(uint *)(iVar3 + 8) < iVar1 * 0x40 + uVar2" (pointer_expression "*(uint *)(iVar3 + 8)" * (cast_expression "(uint *)(iVar3 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 8)" ( (binary_expression "iVar3 + 8" identifier + number_literal) )))) < (binary_expression "iVar1 * 0x40 + uVar2" (binary_expression "iVar1 * 0x40" identifier * number_literal) + identifier)) )))) , (comma_expression "iVar5 = *(int *)(iVar3 + 0xc) - iVar6,\n     (SBORROW4(*(int *)(iVar3 + 0xc),iVar6) != SBORROW4(iVar5,uVar4)) != (int)(iVar5 - uVar4) < 0" (assignment_expression "iVar5 = *(int *)(iVar3 + 0xc) - iVar6" identifier = (binary_expression "*(int *)(iVar3 + 0xc) - iVar6" (pointer_expression "*(int *)(iVar3 + 0xc)" * (cast_expression "(int *)(iVar3 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))) - identifier)) , (binary_expression "(SBORROW4(*(int *)(iVar3 + 0xc),iVar6) != SBORROW4(iVar5,uVar4)) != (int)(iVar5 - uVar4) < 0" (parenthesized_expression "(SBORROW4(*(int *)(iVar3 + 0xc),iVar6) != SBORROW4(iVar5,uVar4))" ( (binary_expression "SBORROW4(*(int *)(iVar3 + 0xc),iVar6) != SBORROW4(iVar5,uVar4)" (call_expression "SBORROW4(*(int *)(iVar3 + 0xc),iVar6)" identifier (argument_list "(*(int *)(iVar3 + 0xc),iVar6)" ( (pointer_expression "*(int *)(iVar3 + 0xc)" * (cast_expression "(int *)(iVar3 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))) , identifier ))) != (call_expression "SBORROW4(iVar5,uVar4)" identifier (argument_list "(iVar5,uVar4)" ( identifier , identifier )))) )) != (binary_expression "(int)(iVar5 - uVar4) < 0" (cast_expression "(int)(iVar5 - uVar4)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar5 - uVar4)" ( (binary_expression "iVar5 - uVar4" identifier - identifier) ))) < number_literal))))) ))) )) (compound_statement "{\n                    \n    FUN_00071170();\n  }" { (expression_statement "FUN_00071170();" (call_expression "FUN_00071170()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (iVar1 == 0) {\nLAB_0008692f:\n    iVar6 = 0;\n  }\n  else {\n    iVar5 = uVar2 + *(int *)(iVar3 + 0x10);\n    iVar6 = 0;\n    iVar3 = *(int *)(iVar5 + 4);\n    while (param_2 != iVar3) {\n      iVar6 = iVar6 + 1;\n      if (iVar1 == iVar6) goto LAB_0008692f;\n      iVar3 = *(int *)(iVar5 + 0x44);\n      iVar5 = iVar5 + 0x40;\n    }\n  }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0008692f:\n    iVar6 = 0;\n  }" { (labeled_statement "LAB_0008692f:\n    iVar6 = 0;" statement_identifier : (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;)) }) (else_clause "else {\n    iVar5 = uVar2 + *(int *)(iVar3 + 0x10);\n    iVar6 = 0;\n    iVar3 = *(int *)(iVar5 + 4);\n    while (param_2 != iVar3) {\n      iVar6 = iVar6 + 1;\n      if (iVar1 == iVar6) goto LAB_0008692f;\n      iVar3 = *(int *)(iVar5 + 0x44);\n      iVar5 = iVar5 + 0x40;\n    }\n  }" else (compound_statement "{\n    iVar5 = uVar2 + *(int *)(iVar3 + 0x10);\n    iVar6 = 0;\n    iVar3 = *(int *)(iVar5 + 4);\n    while (param_2 != iVar3) {\n      iVar6 = iVar6 + 1;\n      if (iVar1 == iVar6) goto LAB_0008692f;\n      iVar3 = *(int *)(iVar5 + 0x44);\n      iVar5 = iVar5 + 0x40;\n    }\n  }" { (expression_statement "iVar5 = uVar2 + *(int *)(iVar3 + 0x10);" (assignment_expression "iVar5 = uVar2 + *(int *)(iVar3 + 0x10)" identifier = (binary_expression "uVar2 + *(int *)(iVar3 + 0x10)" identifier + (pointer_expression "*(int *)(iVar3 + 0x10)" * (cast_expression "(int *)(iVar3 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x10)" ( (binary_expression "iVar3 + 0x10" identifier + number_literal) )))))) ;) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (expression_statement "iVar3 = *(int *)(iVar5 + 4);" (assignment_expression "iVar3 = *(int *)(iVar5 + 4)" identifier = (pointer_expression "*(int *)(iVar5 + 4)" * (cast_expression "(int *)(iVar5 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 4)" ( (binary_expression "iVar5 + 4" identifier + number_literal) ))))) ;) (while_statement "while (param_2 != iVar3) {\n      iVar6 = iVar6 + 1;\n      if (iVar1 == iVar6) goto LAB_0008692f;\n      iVar3 = *(int *)(iVar5 + 0x44);\n      iVar5 = iVar5 + 0x40;\n    }" while (parenthesized_expression "(param_2 != iVar3)" ( (binary_expression "param_2 != iVar3" identifier != identifier) )) (compound_statement "{\n      iVar6 = iVar6 + 1;\n      if (iVar1 == iVar6) goto LAB_0008692f;\n      iVar3 = *(int *)(iVar5 + 0x44);\n      iVar5 = iVar5 + 0x40;\n    }" { (expression_statement "iVar6 = iVar6 + 1;" (assignment_expression "iVar6 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (if_statement "if (iVar1 == iVar6) goto LAB_0008692f;" if (parenthesized_expression "(iVar1 == iVar6)" ( (binary_expression "iVar1 == iVar6" identifier == identifier) )) (goto_statement "goto LAB_0008692f;" goto statement_identifier ;)) (expression_statement "iVar3 = *(int *)(iVar5 + 0x44);" (assignment_expression "iVar3 = *(int *)(iVar5 + 0x44)" identifier = (pointer_expression "*(int *)(iVar5 + 0x44)" * (cast_expression "(int *)(iVar5 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x44)" ( (binary_expression "iVar5 + 0x44" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = iVar5 + 0x40;" (assignment_expression "iVar5 = iVar5 + 0x40" identifier = (binary_expression "iVar5 + 0x40" identifier + number_literal)) ;) })) }))) (return_statement "return iVar6;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) < LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression IDENT * LIT) , IDENT )))))) , (comma_expression (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < (binary_expression (binary_expression IDENT * LIT) + IDENT)) )))) , (comma_expression (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - IDENT)) , (binary_expression (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT ))) != (call_expression IDENT (argument_list ( IDENT , IDENT )))) )) != (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT - IDENT) ))) < LIT))))) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) }))) (return_statement return IDENT ;) })))
(function_definition "int FUN_000868c0(int *param_1,int param_2)\n\n{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  \n  FUN_000867d0(param_1);\n  iVar1 = param_1[3];\n  uVar2 = param_1[1];\n  iVar3 = *(int *)(*param_1 + 0x28);\n  if ((param_1[2] < 0) ||\n     (iVar6 = param_1[2] + (uint)CARRY4(iVar1 * 0x40,uVar2),\n     uVar4 = (uint)(*(uint *)(iVar3 + 8) < iVar1 * 0x40 + uVar2),\n     iVar5 = *(int *)(iVar3 + 0xc) - iVar6,\n     (SBORROW4(*(int *)(iVar3 + 0xc),iVar6) != SBORROW4(iVar5,uVar4)) != (int)(iVar5 - uVar4) < 0))\n  {\n                    \n    FUN_00071170();\n  }\n  if (iVar1 == 0) {\nLAB_0008692f:\n    iVar6 = 0;\n  }\n  else {\n    iVar5 = uVar2 + *(int *)(iVar3 + 0x10);\n    iVar6 = 0;\n    iVar3 = *(int *)(iVar5 + 4);\n    while (param_2 != iVar3) {\n      iVar6 = iVar6 + 1;\n      if (iVar1 == iVar6) goto LAB_0008692f;\n      iVar3 = *(int *)(iVar5 + 0x44);\n      iVar5 = iVar5 + 0x40;\n    }\n  }\n  return iVar6;\n}" (primitive_type "int") (function_declarator "FUN_000868c0(int *param_1,int param_2)" (identifier "FUN_000868c0") (parameter_list "(int *param_1,int param_2)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) () ")"))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  uint uVar4;\n  int iVar5;\n  int iVar6;\n  \n  FUN_000867d0(param_1);\n  iVar1 = param_1[3];\n  uVar2 = param_1[1];\n  iVar3 = *(int *)(*param_1 + 0x28);\n  if ((param_1[2] < 0) ||\n     (iVar6 = param_1[2] + (uint)CARRY4(iVar1 * 0x40,uVar2),\n     uVar4 = (uint)(*(uint *)(iVar3 + 8) < iVar1 * 0x40 + uVar2),\n     iVar5 = *(int *)(iVar3 + 0xc) - iVar6,\n     (SBORROW4(*(int *)(iVar3 + 0xc),iVar6) != SBORROW4(iVar5,uVar4)) != (int)(iVar5 - uVar4) < 0))\n  {\n                    \n    FUN_00071170();\n  }\n  if (iVar1 == 0) {\nLAB_0008692f:\n    iVar6 = 0;\n  }\n  else {\n    iVar5 = uVar2 + *(int *)(iVar3 + 0x10);\n    iVar6 = 0;\n    iVar3 = *(int *)(iVar5 + 4);\n    while (param_2 != iVar3) {\n      iVar6 = iVar6 + 1;\n      if (iVar1 == iVar6) goto LAB_0008692f;\n      iVar3 = *(int *)(iVar5 + 0x44);\n      iVar5 = iVar5 + 0x40;\n    }\n  }\n  return iVar6;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (expression_statement "FUN_000867d0(param_1);" (call_expression "FUN_000867d0(param_1)" (identifier "FUN_000867d0") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (expression_statement "iVar1 = param_1[3];" (assignment_expression "iVar1 = param_1[3]" (identifier "iVar1") (= "=") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "uVar2 = param_1[1];" (assignment_expression "uVar2 = param_1[1]" (identifier "uVar2") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "iVar3 = *(int *)(*param_1 + 0x28);" (assignment_expression "iVar3 = *(int *)(*param_1 + 0x28)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(*param_1 + 0x28)" (* "*") (cast_expression "(int *)(*param_1 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_1 + 0x28)" (( "(") (binary_expression "*param_1 + 0x28" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (if_statement "if ((param_1[2] < 0) ||\n     (iVar6 = param_1[2] + (uint)CARRY4(iVar1 * 0x40,uVar2),\n     uVar4 = (uint)(*(uint *)(iVar3 + 8) < iVar1 * 0x40 + uVar2),\n     iVar5 = *(int *)(iVar3 + 0xc) - iVar6,\n     (SBORROW4(*(int *)(iVar3 + 0xc),iVar6) != SBORROW4(iVar5,uVar4)) != (int)(iVar5 - uVar4) < 0))\n  {\n                    \n    FUN_00071170();\n  }" (if "if") (parenthesized_expression "((param_1[2] < 0) ||\n     (iVar6 = param_1[2] + (uint)CARRY4(iVar1 * 0x40,uVar2),\n     uVar4 = (uint)(*(uint *)(iVar3 + 8) < iVar1 * 0x40 + uVar2),\n     iVar5 = *(int *)(iVar3 + 0xc) - iVar6,\n     (SBORROW4(*(int *)(iVar3 + 0xc),iVar6) != SBORROW4(iVar5,uVar4)) != (int)(iVar5 - uVar4) < 0))" (( "(") (binary_expression "(param_1[2] < 0) ||\n     (iVar6 = param_1[2] + (uint)CARRY4(iVar1 * 0x40,uVar2),\n     uVar4 = (uint)(*(uint *)(iVar3 + 8) < iVar1 * 0x40 + uVar2),\n     iVar5 = *(int *)(iVar3 + 0xc) - iVar6,\n     (SBORROW4(*(int *)(iVar3 + 0xc),iVar6) != SBORROW4(iVar5,uVar4)) != (int)(iVar5 - uVar4) < 0)" (parenthesized_expression "(param_1[2] < 0)" (( "(") (binary_expression "param_1[2] < 0" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (< "<") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(iVar6 = param_1[2] + (uint)CARRY4(iVar1 * 0x40,uVar2),\n     uVar4 = (uint)(*(uint *)(iVar3 + 8) < iVar1 * 0x40 + uVar2),\n     iVar5 = *(int *)(iVar3 + 0xc) - iVar6,\n     (SBORROW4(*(int *)(iVar3 + 0xc),iVar6) != SBORROW4(iVar5,uVar4)) != (int)(iVar5 - uVar4) < 0)" (( "(") (comma_expression "iVar6 = param_1[2] + (uint)CARRY4(iVar1 * 0x40,uVar2),\n     uVar4 = (uint)(*(uint *)(iVar3 + 8) < iVar1 * 0x40 + uVar2),\n     iVar5 = *(int *)(iVar3 + 0xc) - iVar6,\n     (SBORROW4(*(int *)(iVar3 + 0xc),iVar6) != SBORROW4(iVar5,uVar4)) != (int)(iVar5 - uVar4) < 0" (assignment_expression "iVar6 = param_1[2] + (uint)CARRY4(iVar1 * 0x40,uVar2)" (identifier "iVar6") (= "=") (binary_expression "param_1[2] + (uint)CARRY4(iVar1 * 0x40,uVar2)" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (+ "+") (cast_expression "(uint)CARRY4(iVar1 * 0x40,uVar2)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CARRY4(iVar1 * 0x40,uVar2)" (identifier "CARRY4") (argument_list "(iVar1 * 0x40,uVar2)" (( "(") (binary_expression "iVar1 * 0x40" (identifier "iVar1") (* "*") (number_literal "0x40")) (, ",") (identifier "uVar2") () ")")))))) (, ",") (comma_expression "uVar4 = (uint)(*(uint *)(iVar3 + 8) < iVar1 * 0x40 + uVar2),\n     iVar5 = *(int *)(iVar3 + 0xc) - iVar6,\n     (SBORROW4(*(int *)(iVar3 + 0xc),iVar6) != SBORROW4(iVar5,uVar4)) != (int)(iVar5 - uVar4) < 0" (assignment_expression "uVar4 = (uint)(*(uint *)(iVar3 + 8) < iVar1 * 0x40 + uVar2)" (identifier "uVar4") (= "=") (call_expression "(uint)(*(uint *)(iVar3 + 8) < iVar1 * 0x40 + uVar2)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(uint *)(iVar3 + 8) < iVar1 * 0x40 + uVar2)" (( "(") (binary_expression "*(uint *)(iVar3 + 8) < iVar1 * 0x40 + uVar2" (pointer_expression "*(uint *)(iVar3 + 8)" (* "*") (cast_expression "(uint *)(iVar3 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 8)" (( "(") (binary_expression "iVar3 + 8" (identifier "iVar3") (+ "+") (number_literal "8")) () ")")))) (< "<") (binary_expression "iVar1 * 0x40 + uVar2" (binary_expression "iVar1 * 0x40" (identifier "iVar1") (* "*") (number_literal "0x40")) (+ "+") (identifier "uVar2"))) () ")")))) (, ",") (comma_expression "iVar5 = *(int *)(iVar3 + 0xc) - iVar6,\n     (SBORROW4(*(int *)(iVar3 + 0xc),iVar6) != SBORROW4(iVar5,uVar4)) != (int)(iVar5 - uVar4) < 0" (assignment_expression "iVar5 = *(int *)(iVar3 + 0xc) - iVar6" (identifier "iVar5") (= "=") (binary_expression "*(int *)(iVar3 + 0xc) - iVar6" (pointer_expression "*(int *)(iVar3 + 0xc)" (* "*") (cast_expression "(int *)(iVar3 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0xc)" (( "(") (binary_expression "iVar3 + 0xc" (identifier "iVar3") (+ "+") (number_literal "0xc")) () ")")))) (- "-") (identifier "iVar6"))) (, ",") (binary_expression "(SBORROW4(*(int *)(iVar3 + 0xc),iVar6) != SBORROW4(iVar5,uVar4)) != (int)(iVar5 - uVar4) < 0" (parenthesized_expression "(SBORROW4(*(int *)(iVar3 + 0xc),iVar6) != SBORROW4(iVar5,uVar4))" (( "(") (binary_expression "SBORROW4(*(int *)(iVar3 + 0xc),iVar6) != SBORROW4(iVar5,uVar4)" (call_expression "SBORROW4(*(int *)(iVar3 + 0xc),iVar6)" (identifier "SBORROW4") (argument_list "(*(int *)(iVar3 + 0xc),iVar6)" (( "(") (pointer_expression "*(int *)(iVar3 + 0xc)" (* "*") (cast_expression "(int *)(iVar3 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0xc)" (( "(") (binary_expression "iVar3 + 0xc" (identifier "iVar3") (+ "+") (number_literal "0xc")) () ")")))) (, ",") (identifier "iVar6") () ")"))) (!= "!=") (call_expression "SBORROW4(iVar5,uVar4)" (identifier "SBORROW4") (argument_list "(iVar5,uVar4)" (( "(") (identifier "iVar5") (, ",") (identifier "uVar4") () ")")))) () ")")) (!= "!=") (binary_expression "(int)(iVar5 - uVar4) < 0" (cast_expression "(int)(iVar5 - uVar4)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(iVar5 - uVar4)" (( "(") (binary_expression "iVar5 - uVar4" (identifier "iVar5") (- "-") (identifier "uVar4")) () ")"))) (< "<") (number_literal "0")))))) () ")"))) () ")")) (compound_statement "{\n                    \n    FUN_00071170();\n  }" ({ "{") (expression_statement "FUN_00071170();" (call_expression "FUN_00071170()" (identifier "FUN_00071170") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if (iVar1 == 0) {\nLAB_0008692f:\n    iVar6 = 0;\n  }\n  else {\n    iVar5 = uVar2 + *(int *)(iVar3 + 0x10);\n    iVar6 = 0;\n    iVar3 = *(int *)(iVar5 + 4);\n    while (param_2 != iVar3) {\n      iVar6 = iVar6 + 1;\n      if (iVar1 == iVar6) goto LAB_0008692f;\n      iVar3 = *(int *)(iVar5 + 0x44);\n      iVar5 = iVar5 + 0x40;\n    }\n  }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0008692f:\n    iVar6 = 0;\n  }" ({ "{") (labeled_statement "LAB_0008692f:\n    iVar6 = 0;" (statement_identifier "LAB_0008692f") (: ":") (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" (identifier "iVar6") (= "=") (number_literal "0")) (; ";"))) (} "}")) (else_clause "else {\n    iVar5 = uVar2 + *(int *)(iVar3 + 0x10);\n    iVar6 = 0;\n    iVar3 = *(int *)(iVar5 + 4);\n    while (param_2 != iVar3) {\n      iVar6 = iVar6 + 1;\n      if (iVar1 == iVar6) goto LAB_0008692f;\n      iVar3 = *(int *)(iVar5 + 0x44);\n      iVar5 = iVar5 + 0x40;\n    }\n  }" (else "else") (compound_statement "{\n    iVar5 = uVar2 + *(int *)(iVar3 + 0x10);\n    iVar6 = 0;\n    iVar3 = *(int *)(iVar5 + 4);\n    while (param_2 != iVar3) {\n      iVar6 = iVar6 + 1;\n      if (iVar1 == iVar6) goto LAB_0008692f;\n      iVar3 = *(int *)(iVar5 + 0x44);\n      iVar5 = iVar5 + 0x40;\n    }\n  }" ({ "{") (expression_statement "iVar5 = uVar2 + *(int *)(iVar3 + 0x10);" (assignment_expression "iVar5 = uVar2 + *(int *)(iVar3 + 0x10)" (identifier "iVar5") (= "=") (binary_expression "uVar2 + *(int *)(iVar3 + 0x10)" (identifier "uVar2") (+ "+") (pointer_expression "*(int *)(iVar3 + 0x10)" (* "*") (cast_expression "(int *)(iVar3 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x10)" (( "(") (binary_expression "iVar3 + 0x10" (identifier "iVar3") (+ "+") (number_literal "0x10")) () ")")))))) (; ";")) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" (identifier "iVar6") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar3 = *(int *)(iVar5 + 4);" (assignment_expression "iVar3 = *(int *)(iVar5 + 4)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(iVar5 + 4)" (* "*") (cast_expression "(int *)(iVar5 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 4)" (( "(") (binary_expression "iVar5 + 4" (identifier "iVar5") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (while_statement "while (param_2 != iVar3) {\n      iVar6 = iVar6 + 1;\n      if (iVar1 == iVar6) goto LAB_0008692f;\n      iVar3 = *(int *)(iVar5 + 0x44);\n      iVar5 = iVar5 + 0x40;\n    }" (while "while") (parenthesized_expression "(param_2 != iVar3)" (( "(") (binary_expression "param_2 != iVar3" (identifier "param_2") (!= "!=") (identifier "iVar3")) () ")")) (compound_statement "{\n      iVar6 = iVar6 + 1;\n      if (iVar1 == iVar6) goto LAB_0008692f;\n      iVar3 = *(int *)(iVar5 + 0x44);\n      iVar5 = iVar5 + 0x40;\n    }" ({ "{") (expression_statement "iVar6 = iVar6 + 1;" (assignment_expression "iVar6 = iVar6 + 1" (identifier "iVar6") (= "=") (binary_expression "iVar6 + 1" (identifier "iVar6") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar1 == iVar6) goto LAB_0008692f;" (if "if") (parenthesized_expression "(iVar1 == iVar6)" (( "(") (binary_expression "iVar1 == iVar6" (identifier "iVar1") (== "==") (identifier "iVar6")) () ")")) (goto_statement "goto LAB_0008692f;" (goto "goto") (statement_identifier "LAB_0008692f") (; ";"))) (expression_statement "iVar3 = *(int *)(iVar5 + 0x44);" (assignment_expression "iVar3 = *(int *)(iVar5 + 0x44)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(iVar5 + 0x44)" (* "*") (cast_expression "(int *)(iVar5 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x44)" (( "(") (binary_expression "iVar5 + 0x44" (identifier "iVar5") (+ "+") (number_literal "0x44")) () ")"))))) (; ";")) (expression_statement "iVar5 = iVar5 + 0x40;" (assignment_expression "iVar5 = iVar5 + 0x40" (identifier "iVar5") (= "=") (binary_expression "iVar5 + 0x40" (identifier "iVar5") (+ "+") (number_literal "0x40"))) (; ";")) (} "}"))) (} "}")))) (return_statement "return iVar6;" (return "return") (identifier "iVar6") (; ";")) (} "}")))

/* DWARF original prototype: uint find_section_by_type(Elf_file<64,_false,_gold::Incremental_binary>
   * this, uint type) */

type_1 __thiscall
elfcpp::Elf_file<64,_false,_gold::type_4>::find_section_by_type
          (Elf_file<64,_false,_gold::type_4> *this,type_1 var_11)

{
  type_6 var_12;
  type_1 var_4;
  type_1 var_5;
  type_2 *pOVar4;
  int var_6;
  int var_8;
  type_3 *var_13;
  type_1 var_9;
  int var_2;
  type_4 *in_stack_ffffffd4;
  type_5 in_stack_ffffffd8;
  
  var_1(this);
  var_4 = this->shnum_;
  var_2 = *(int *)((int)&this->shoff_ + 4);
  var_5 = (type_1)this->shoff_;
  pOVar4 = this->file_->output_;
  if ((var_2 < 0) ||
     (var_6 = *(int *)((int)&pOVar4->file_size_ + 4),
     var_2 = var_2 + (type_1)var_3(var_4 * 0x40,var_5),
     var_9 = (type_1)((type_1)pOVar4->file_size_ < var_4 * 0x40 + var_5), var_8 = var_6 - var_2,
     (var_7(var_6,var_2) != var_7(var_8,var_9)) != (int)(var_8 - var_9) < 0)) {
                    /* WARNING: Subroutine does not return */
    gold::Incremental_binary::var_10(in_stack_ffffffd4,in_stack_ffffffd8,var_11);
  }
  if (var_4 == 0) {
LAB_0008692f:
    var_9 = 0;
  }
  else {
    var_9 = 0;
    var_12 = *(type_6 *)(pOVar4->base_ + var_5 + 4);
    var_13 = pOVar4->base_ + var_5;
    while (var_11 != var_12) {
      var_9 = var_9 + 1;
      if (var_4 == var_9) goto LAB_0008692f;
      var_12 = *(type_6 *)(var_13 + 0x44);
      var_13 = var_13 + 0x40;
    }
  }
  return var_9;
}


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

int MASKED(int *param_1,int param_2)

{
  int iVar1;
  uint uVar2;
  int iVar3;
  uint uVar4;
  int iVar5;
  int iVar6;
  
  FUN_000867d0(param_1);
  iVar1 = param_1[3];
  uVar2 = param_1[1];
  iVar3 = *(int *)(*param_1 + 0x28);
  if ((param_1[2] < 0) ||
     (iVar6 = param_1[2] + (uint)CARRY4(iVar1 * 0x40,uVar2),
     uVar4 = (uint)(*(uint *)(iVar3 + 8) < iVar1 * 0x40 + uVar2),
     iVar5 = *(int *)(iVar3 + 0xc) - iVar6,
     (SBORROW4(*(int *)(iVar3 + 0xc),iVar6) != SBORROW4(iVar5,uVar4)) != (int)(iVar5 - uVar4) < 0))
  {
                    /* WARNING: Subroutine does not return */
    FUN_00071170();
  }
  if (iVar1 == 0) {
LAB_0008692f:
    iVar6 = 0;
  }
  else {
    iVar5 = uVar2 + *(int *)(iVar3 + 0x10);
    iVar6 = 0;
    iVar3 = *(int *)(iVar5 + 4);
    while (param_2 != iVar3) {
      iVar6 = iVar6 + 1;
      if (iVar1 == iVar6) goto LAB_0008692f;
      iVar3 = *(int *)(iVar5 + 0x44);
      iVar5 = iVar5 + 0x40;
    }
  }
  return iVar6;
}

