
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* DWARF original prototype: Mips_address output_address(Mips16_stub_section<64,_false> * this,
   Mips16_stub_section<64,_false> * this) */

Mips_address __thiscall
anon_unknown.dwarf_d7d43e::Mips16_stub_section<64,_false>::output_address
          (Mips16_stub_section<64,_false> *this,Mips16_stub_section<64,_false> *this_1)

{
}



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

longlong __regparm3 FUN_0017cbe0(int *param_1,uint *param_2)

{
  int *piVar1;
  uint uVar2;
  uint uVar3;
  int iVar4;
  longlong lVar5;
  uint uVar6;
  int iVar7;
  longlong lVar8;
  
  piVar1 = (int *)*param_1;
  uVar2 = *param_2;
  if (*(code **)(*piVar1 + 0x60) == FUN_00071550) {
    if ((uint)(piVar1[0xf] - piVar1[0xe] >> 2) <= uVar2) {
                    /* WARNING: Subroutine does not return */
      FUN_002446e0("../../gold/object.h",0x5c8,"do_output_section",param_2);
    }
    iVar7 = *(int *)(piVar1[0xe] + uVar2 * 4);
  }
  else {
    iVar7 = (**(code **)(*piVar1 + 0x60))(piVar1,uVar2);
  }
  if ((*(byte *)(iVar7 + 0x1c) & 1) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_00175d30();
  }
  uVar2 = *(uint *)(iVar7 + 4);
  lVar5 = *(longlong *)(iVar7 + 4);
  param_1 = (int *)*param_1;
  uVar3 = *param_2;
  if (*(code **)(*param_1 + 0x68) != FUN_001021c0) {
    lVar8 = (**(code **)(*param_1 + 0x68))(param_1,uVar3);
    return lVar8 + lVar5;
  }
  iVar4 = param_1[0x21];
  uVar6 = param_1[0x22] - iVar4 >> 3;
  if (uVar3 < uVar6) {
    uVar6 = *(uint *)(iVar4 + uVar3 * 8);
    return CONCAT44(*(int *)(iVar4 + 4 + uVar3 * 8) + *(int *)(iVar7 + 8) +
                    (uint)CARRY4(uVar6,uVar2),uVar6 + uVar2);
  }
                    /* WARNING: Subroutine does not return */
  FUN_002446e0("../../gold/object.h",0x7f7,"get_output_section_offset",uVar6);
}


PUSH EBP
MOV EBP,EAX
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00050b50
ADD EBX,0x46d415
SUB ESP,0x1c
MOV EAX,dword ptr [EAX]
MOV ECX,dword ptr [EDX]
MOV ESI,dword ptr [EAX]
MOV ESI,dword ptr [ESI + 0x60]
LEA EDI,[EBX + 0xffa87550]
CMP ESI,EDI
JNZ 0x0017cc68
MOV ESI,dword ptr [EAX + 0x38]
MOV EAX,dword ptr [EAX + 0x3c]
SUB EAX,ESI
SAR EAX,0x2
CMP ECX,EAX
JNC 0x0017ccb4
MOV EAX,dword ptr [ESI + ECX*0x4]
TEST byte ptr [EAX + 0x1c],0x1
JZ 0x0017cc96
MOV ESI,dword ptr [EAX + 0x4]
MOV EDI,dword ptr [EAX + 0x8]
MOV EAX,dword ptr [EBP]
LEA EBP,[EBX + 0xffb181c0]
MOV EDX,dword ptr [EDX]
MOV ECX,dword ptr [EAX]
MOV ECX,dword ptr [ECX + 0x68]
CMP ECX,EBP
JNZ 0x0017cc80
MOV ECX,dword ptr [EAX + 0x84]
MOV EAX,dword ptr [EAX + 0x88]
SUB EAX,ECX
SAR EAX,0x3
CMP EDX,EAX
JNC 0x0017cc9b
MOV EAX,dword ptr [ECX + EDX*0x8]
MOV EDX,dword ptr [ECX + EDX*0x8 + 0x4]
ADD EAX,ESI
ADC EDX,EDI
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV dword ptr [ESP + 0xc],EDX
SUB ESP,0x8
PUSH ECX
PUSH EAX
CALL ESI
MOV EDX,dword ptr [ESP + 0x1c]
ADD ESP,0x10
JMP 0x0017cc1d
SUB ESP,0x8
PUSH EDX
PUSH EAX
CALL ECX
ADD ESP,0x10
ADD EAX,ESI
ADC EDX,EDI
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
CALL 0x00175d30
PUSH EAX
LEA EAX,[EBX + 0xffe908b4]
PUSH EAX
LEA EAX,[EBX + 0xffe63385]
PUSH 0x7f7
PUSH EAX
CALL 0x002446e0
LEA EAX,[EBX + 0xffe90c80]
PUSH EDX
PUSH EAX
LEA EAX,[EBX + 0xffe63385]
PUSH 0x5c8
PUSH EAX
CALL 0x002446e0
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nlonglong __regparm3 FUN_0017cbe0(int *param_1,uint *param_2)\n\n{\n  int *piVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  longlong lVar5;\n  uint uVar6;\n  int iVar7;\n  longlong lVar8;\n  \n  piVar1 = (int *)*param_1;\n  uVar2 = *param_2;\n  if (*(code **)(*piVar1 + 0x60) == FUN_00071550) {\n    if ((uint)(piVar1[0xf] - piVar1[0xe] >> 2) <= uVar2) {\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0("../../gold/object.h",0x5c8,"do_output_section",param_2);\n    }\n    iVar7 = *(int *)(piVar1[0xe] + uVar2 * 4);\n  }\n  else {\n    iVar7 = (**(code **)(*piVar1 + 0x60))(piVar1,uVar2);\n  }\n  if ((*(byte *)(iVar7 + 0x1c) & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00175d30();\n  }\n  uVar2 = *(uint *)(iVar7 + 4);\n  lVar5 = *(longlong *)(iVar7 + 4);\n  param_1 = (int *)*param_1;\n  uVar3 = *param_2;\n  if (*(code **)(*param_1 + 0x68) != FUN_001021c0) {\n    lVar8 = (**(code **)(*param_1 + 0x68))(param_1,uVar3);\n    return lVar8 + lVar5;\n  }\n  iVar4 = param_1[0x21];\n  uVar6 = param_1[0x22] - iVar4 >> 3;\n  if (uVar3 < uVar6) {\n    uVar6 = *(uint *)(iVar4 + uVar3 * 8);\n    return CONCAT44(*(int *)(iVar4 + 4 + uVar3 * 8) + *(int *)(iVar7 + 8) +\n                    (uint)CARRY4(uVar6,uVar2),uVar6 + uVar2);\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_002446e0("../../gold/object.h",0x7f7,"get_output_section_offset",uVar6);\n}\n\n" comment (function_definition "longlong __regparm3 FUN_0017cbe0(int *param_1,uint *param_2)\n\n{\n  int *piVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  longlong lVar5;\n  uint uVar6;\n  int iVar7;\n  longlong lVar8;\n  \n  piVar1 = (int *)*param_1;\n  uVar2 = *param_2;\n  if (*(code **)(*piVar1 + 0x60) == FUN_00071550) {\n    if ((uint)(piVar1[0xf] - piVar1[0xe] >> 2) <= uVar2) {\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0("../../gold/object.h",0x5c8,"do_output_section",param_2);\n    }\n    iVar7 = *(int *)(piVar1[0xe] + uVar2 * 4);\n  }\n  else {\n    iVar7 = (**(code **)(*piVar1 + 0x60))(piVar1,uVar2);\n  }\n  if ((*(byte *)(iVar7 + 0x1c) & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00175d30();\n  }\n  uVar2 = *(uint *)(iVar7 + 4);\n  lVar5 = *(longlong *)(iVar7 + 4);\n  param_1 = (int *)*param_1;\n  uVar3 = *param_2;\n  if (*(code **)(*param_1 + 0x68) != FUN_001021c0) {\n    lVar8 = (**(code **)(*param_1 + 0x68))(param_1,uVar3);\n    return lVar8 + lVar5;\n  }\n  iVar4 = param_1[0x21];\n  uVar6 = param_1[0x22] - iVar4 >> 3;\n  if (uVar3 < uVar6) {\n    uVar6 = *(uint *)(iVar4 + uVar3 * 8);\n    return CONCAT44(*(int *)(iVar4 + 4 + uVar3 * 8) + *(int *)(iVar7 + 8) +\n                    (uint)CARRY4(uVar6,uVar2),uVar6 + uVar2);\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_002446e0("../../gold/object.h",0x7f7,"get_output_section_offset",uVar6);\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "FUN_0017cbe0(int *param_1,uint *param_2)" identifier (parameter_list "(int *param_1,uint *param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  int *piVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  longlong lVar5;\n  uint uVar6;\n  int iVar7;\n  longlong lVar8;\n  \n  piVar1 = (int *)*param_1;\n  uVar2 = *param_2;\n  if (*(code **)(*piVar1 + 0x60) == FUN_00071550) {\n    if ((uint)(piVar1[0xf] - piVar1[0xe] >> 2) <= uVar2) {\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0("../../gold/object.h",0x5c8,"do_output_section",param_2);\n    }\n    iVar7 = *(int *)(piVar1[0xe] + uVar2 * 4);\n  }\n  else {\n    iVar7 = (**(code **)(*piVar1 + 0x60))(piVar1,uVar2);\n  }\n  if ((*(byte *)(iVar7 + 0x1c) & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00175d30();\n  }\n  uVar2 = *(uint *)(iVar7 + 4);\n  lVar5 = *(longlong *)(iVar7 + 4);\n  param_1 = (int *)*param_1;\n  uVar3 = *param_2;\n  if (*(code **)(*param_1 + 0x68) != FUN_001021c0) {\n    lVar8 = (**(code **)(*param_1 + 0x68))(param_1,uVar3);\n    return lVar8 + lVar5;\n  }\n  iVar4 = param_1[0x21];\n  uVar6 = param_1[0x22] - iVar4 >> 3;\n  if (uVar3 < uVar6) {\n    uVar6 = *(uint *)(iVar4 + uVar3 * 8);\n    return CONCAT44(*(int *)(iVar4 + 4 + uVar3 * 8) + *(int *)(iVar7 + 8) +\n                    (uint)CARRY4(uVar6,uVar2),uVar6 + uVar2);\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_002446e0("../../gold/object.h",0x7f7,"get_output_section_offset",uVar6);\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "longlong lVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "longlong lVar8;" type_identifier identifier ;) (expression_statement "piVar1 = (int *)*param_1;" (assignment_expression "piVar1 = (int *)*param_1" identifier = (cast_expression "(int *)*param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "uVar2 = *param_2;" (assignment_expression "uVar2 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if (*(code **)(*piVar1 + 0x60) == FUN_00071550) {\n    if ((uint)(piVar1[0xf] - piVar1[0xe] >> 2) <= uVar2) {\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0("../../gold/object.h",0x5c8,"do_output_section",param_2);\n    }\n    iVar7 = *(int *)(piVar1[0xe] + uVar2 * 4);\n  }\n  else {\n    iVar7 = (**(code **)(*piVar1 + 0x60))(piVar1,uVar2);\n  }" if (parenthesized_expression "(*(code **)(*piVar1 + 0x60) == FUN_00071550)" ( (binary_expression "*(code **)(*piVar1 + 0x60) == FUN_00071550" (pointer_expression "*(code **)(*piVar1 + 0x60)" * (cast_expression "(code **)(*piVar1 + 0x60)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar1 + 0x60)" ( (binary_expression "*piVar1 + 0x60" (pointer_expression "*piVar1" * identifier) + number_literal) )))) == identifier) )) (compound_statement "{\n    if ((uint)(piVar1[0xf] - piVar1[0xe] >> 2) <= uVar2) {\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0("../../gold/object.h",0x5c8,"do_output_section",param_2);\n    }\n    iVar7 = *(int *)(piVar1[0xe] + uVar2 * 4);\n  }" { (if_statement "if ((uint)(piVar1[0xf] - piVar1[0xe] >> 2) <= uVar2) {\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0("../../gold/object.h",0x5c8,"do_output_section",param_2);\n    }" if (parenthesized_expression "((uint)(piVar1[0xf] - piVar1[0xe] >> 2) <= uVar2)" ( (binary_expression "(uint)(piVar1[0xf] - piVar1[0xe] >> 2) <= uVar2" (call_expression "(uint)(piVar1[0xf] - piVar1[0xe] >> 2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(piVar1[0xf] - piVar1[0xe] >> 2)" ( (binary_expression "piVar1[0xf] - piVar1[0xe] >> 2" (binary_expression "piVar1[0xf] - piVar1[0xe]" (subscript_expression "piVar1[0xf]" identifier [ number_literal ]) - (subscript_expression "piVar1[0xe]" identifier [ number_literal ])) >> number_literal) ))) <= identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      FUN_002446e0("../../gold/object.h",0x5c8,"do_output_section",param_2);\n    }" { comment (expression_statement "FUN_002446e0("../../gold/object.h",0x5c8,"do_output_section",param_2);" (call_expression "FUN_002446e0("../../gold/object.h",0x5c8,"do_output_section",param_2)" identifier (argument_list "("../../gold/object.h",0x5c8,"do_output_section",param_2)" ( (string_literal ""../../gold/object.h"" " string_content ") , number_literal , (string_literal ""do_output_section"" " string_content ") , identifier ))) ;) })) (expression_statement "iVar7 = *(int *)(piVar1[0xe] + uVar2 * 4);" (assignment_expression "iVar7 = *(int *)(piVar1[0xe] + uVar2 * 4)" identifier = (pointer_expression "*(int *)(piVar1[0xe] + uVar2 * 4)" * (cast_expression "(int *)(piVar1[0xe] + uVar2 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar1[0xe] + uVar2 * 4)" ( (binary_expression "piVar1[0xe] + uVar2 * 4" (subscript_expression "piVar1[0xe]" identifier [ number_literal ]) + (binary_expression "uVar2 * 4" identifier * number_literal)) ))))) ;) }) (else_clause "else {\n    iVar7 = (**(code **)(*piVar1 + 0x60))(piVar1,uVar2);\n  }" else (compound_statement "{\n    iVar7 = (**(code **)(*piVar1 + 0x60))(piVar1,uVar2);\n  }" { (expression_statement "iVar7 = (**(code **)(*piVar1 + 0x60))(piVar1,uVar2);" (assignment_expression "iVar7 = (**(code **)(*piVar1 + 0x60))(piVar1,uVar2)" identifier = (call_expression "(**(code **)(*piVar1 + 0x60))(piVar1,uVar2)" (parenthesized_expression "(**(code **)(*piVar1 + 0x60))" ( (pointer_expression "**(code **)(*piVar1 + 0x60)" * (pointer_expression "*(code **)(*piVar1 + 0x60)" * (cast_expression "(code **)(*piVar1 + 0x60)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar1 + 0x60)" ( (binary_expression "*piVar1 + 0x60" (pointer_expression "*piVar1" * identifier) + number_literal) ))))) )) (argument_list "(piVar1,uVar2)" ( identifier , identifier )))) ;) }))) (if_statement "if ((*(byte *)(iVar7 + 0x1c) & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00175d30();\n  }" if (parenthesized_expression "((*(byte *)(iVar7 + 0x1c) & 1) == 0)" ( (binary_expression "(*(byte *)(iVar7 + 0x1c) & 1) == 0" (parenthesized_expression "(*(byte *)(iVar7 + 0x1c) & 1)" ( (binary_expression "*(byte *)(iVar7 + 0x1c) & 1" (pointer_expression "*(byte *)(iVar7 + 0x1c)" * (cast_expression "(byte *)(iVar7 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x1c)" ( (binary_expression "iVar7 + 0x1c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_00175d30();\n  }" { comment (expression_statement "FUN_00175d30();" (call_expression "FUN_00175d30()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "uVar2 = *(uint *)(iVar7 + 4);" (assignment_expression "uVar2 = *(uint *)(iVar7 + 4)" identifier = (pointer_expression "*(uint *)(iVar7 + 4)" * (cast_expression "(uint *)(iVar7 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 4)" ( (binary_expression "iVar7 + 4" identifier + number_literal) ))))) ;) (expression_statement "lVar5 = *(longlong *)(iVar7 + 4);" (assignment_expression "lVar5 = *(longlong *)(iVar7 + 4)" identifier = (pointer_expression "*(longlong *)(iVar7 + 4)" * (cast_expression "(longlong *)(iVar7 + 4)" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 4)" ( (binary_expression "iVar7 + 4" identifier + number_literal) ))))) ;) (expression_statement "param_1 = (int *)*param_1;" (assignment_expression "param_1 = (int *)*param_1" identifier = (cast_expression "(int *)*param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "uVar3 = *param_2;" (assignment_expression "uVar3 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if (*(code **)(*param_1 + 0x68) != FUN_001021c0) {\n    lVar8 = (**(code **)(*param_1 + 0x68))(param_1,uVar3);\n    return lVar8 + lVar5;\n  }" if (parenthesized_expression "(*(code **)(*param_1 + 0x68) != FUN_001021c0)" ( (binary_expression "*(code **)(*param_1 + 0x68) != FUN_001021c0" (pointer_expression "*(code **)(*param_1 + 0x68)" * (cast_expression "(code **)(*param_1 + 0x68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x68)" ( (binary_expression "*param_1 + 0x68" (pointer_expression "*param_1" * identifier) + number_literal) )))) != identifier) )) (compound_statement "{\n    lVar8 = (**(code **)(*param_1 + 0x68))(param_1,uVar3);\n    return lVar8 + lVar5;\n  }" { (expression_statement "lVar8 = (**(code **)(*param_1 + 0x68))(param_1,uVar3);" (assignment_expression "lVar8 = (**(code **)(*param_1 + 0x68))(param_1,uVar3)" identifier = (call_expression "(**(code **)(*param_1 + 0x68))(param_1,uVar3)" (parenthesized_expression "(**(code **)(*param_1 + 0x68))" ( (pointer_expression "**(code **)(*param_1 + 0x68)" * (pointer_expression "*(code **)(*param_1 + 0x68)" * (cast_expression "(code **)(*param_1 + 0x68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x68)" ( (binary_expression "*param_1 + 0x68" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(param_1,uVar3)" ( identifier , identifier )))) ;) (return_statement "return lVar8 + lVar5;" return (binary_expression "lVar8 + lVar5" identifier + identifier) ;) })) (expression_statement "iVar4 = param_1[0x21];" (assignment_expression "iVar4 = param_1[0x21]" identifier = (subscript_expression "param_1[0x21]" identifier [ number_literal ])) ;) (expression_statement "uVar6 = param_1[0x22] - iVar4 >> 3;" (assignment_expression "uVar6 = param_1[0x22] - iVar4 >> 3" identifier = (binary_expression "param_1[0x22] - iVar4 >> 3" (binary_expression "param_1[0x22] - iVar4" (subscript_expression "param_1[0x22]" identifier [ number_literal ]) - identifier) >> number_literal)) ;) (if_statement "if (uVar3 < uVar6) {\n    uVar6 = *(uint *)(iVar4 + uVar3 * 8);\n    return CONCAT44(*(int *)(iVar4 + 4 + uVar3 * 8) + *(int *)(iVar7 + 8) +\n                    (uint)CARRY4(uVar6,uVar2),uVar6 + uVar2);\n  }" if (parenthesized_expression "(uVar3 < uVar6)" ( (binary_expression "uVar3 < uVar6" identifier < identifier) )) (compound_statement "{\n    uVar6 = *(uint *)(iVar4 + uVar3 * 8);\n    return CONCAT44(*(int *)(iVar4 + 4 + uVar3 * 8) + *(int *)(iVar7 + 8) +\n                    (uint)CARRY4(uVar6,uVar2),uVar6 + uVar2);\n  }" { (expression_statement "uVar6 = *(uint *)(iVar4 + uVar3 * 8);" (assignment_expression "uVar6 = *(uint *)(iVar4 + uVar3 * 8)" identifier = (pointer_expression "*(uint *)(iVar4 + uVar3 * 8)" * (cast_expression "(uint *)(iVar4 + uVar3 * 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + uVar3 * 8)" ( (binary_expression "iVar4 + uVar3 * 8" identifier + (binary_expression "uVar3 * 8" identifier * number_literal)) ))))) ;) (return_statement "return CONCAT44(*(int *)(iVar4 + 4 + uVar3 * 8) + *(int *)(iVar7 + 8) +\n                    (uint)CARRY4(uVar6,uVar2),uVar6 + uVar2);" return (call_expression "CONCAT44(*(int *)(iVar4 + 4 + uVar3 * 8) + *(int *)(iVar7 + 8) +\n                    (uint)CARRY4(uVar6,uVar2),uVar6 + uVar2)" identifier (argument_list "(*(int *)(iVar4 + 4 + uVar3 * 8) + *(int *)(iVar7 + 8) +\n                    (uint)CARRY4(uVar6,uVar2),uVar6 + uVar2)" ( (binary_expression "*(int *)(iVar4 + 4 + uVar3 * 8) + *(int *)(iVar7 + 8) +\n                    (uint)CARRY4(uVar6,uVar2)" (binary_expression "*(int *)(iVar4 + 4 + uVar3 * 8) + *(int *)(iVar7 + 8)" (pointer_expression "*(int *)(iVar4 + 4 + uVar3 * 8)" * (cast_expression "(int *)(iVar4 + 4 + uVar3 * 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 4 + uVar3 * 8)" ( (binary_expression "iVar4 + 4 + uVar3 * 8" (binary_expression "iVar4 + 4" identifier + number_literal) + (binary_expression "uVar3 * 8" identifier * number_literal)) )))) + (pointer_expression "*(int *)(iVar7 + 8)" * (cast_expression "(int *)(iVar7 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 8)" ( (binary_expression "iVar7 + 8" identifier + number_literal) ))))) + (cast_expression "(uint)CARRY4(uVar6,uVar2)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar6,uVar2)" identifier (argument_list "(uVar6,uVar2)" ( identifier , identifier ))))) , (binary_expression "uVar6 + uVar2" identifier + identifier) ))) ;) })) comment (expression_statement "FUN_002446e0("../../gold/object.h",0x7f7,"get_output_section_offset",uVar6);" (call_expression "FUN_002446e0("../../gold/object.h",0x7f7,"get_output_section_offset",uVar6)" identifier (argument_list "("../../gold/object.h",0x7f7,"get_output_section_offset",uVar6)" ( (string_literal ""../../gold/object.h"" " string_content ") , number_literal , (string_literal ""get_output_section_offset"" " string_content ") , identifier ))) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* DWARF original prototype: Mips_address output_address(Mips16_stub_section<64,_false> * this,\n   Mips16_stub_section<64,_false> * this) */\n\nMips_address __thiscall\nanon_unknown.dwarf_d7d43e::Mips16_stub_section<64,_false>::output_address\n          (Mips16_stub_section<64,_false> *this,Mips16_stub_section<64,_false> *this_1)\n\n{\n}\n\n" comment comment (ERROR "Mips_address __thiscall\nanon_unknown.dwarf_d7d43e::Mips16_stub_section<64,_false>::output_address\n          (Mips16_stub_section<64,_false> *this,Mips16_stub_section<64,_false> *this_1)" type_identifier (ms_call_modifier "__thiscall" __thiscall) (ERROR "anon_unknown.dwarf_d7d43e::" identifier . identifier : :) identifier (ERROR "<64" < number_literal) , (ERROR "_false>::" identifier > : :) (function_declarator "output_address\n          (Mips16_stub_section<64,_false> *this,Mips16_stub_section<64,_false> *this_1)" identifier (parameter_list "(Mips16_stub_section<64,_false> *this,Mips16_stub_section<64,_false> *this_1)" ( (parameter_declaration "Mips16_stub_section" type_identifier) (ERROR "<64" < number_literal) , (parameter_declaration "_false> *this" type_identifier (ERROR ">" >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "Mips16_stub_section" type_identifier) (ERROR "<64" < number_literal) , (parameter_declaration "_false> *this_1" type_identifier (ERROR ">" >) (pointer_declarator "*this_1" * identifier)) )))) (compound_statement "{\n}" { }))
(translation_unit "longlong __regparm3 FUN_0017cbe0(int *param_1,uint *param_2)\n\n{\n  int *piVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  longlong lVar5;\n  uint uVar6;\n  int iVar7;\n  longlong lVar8;\n  \n  piVar1 = (int *)*param_1;\n  uVar2 = *param_2;\n  if (*(code **)(*piVar1 + 0x60) == FUN_00071550) {\n    if ((uint)(piVar1[0xf] - piVar1[0xe] >> 2) <= uVar2) {\n                    \n      FUN_002446e0("../../gold/object.h",0x5c8,"do_output_section",param_2);\n    }\n    iVar7 = *(int *)(piVar1[0xe] + uVar2 * 4);\n  }\n  else {\n    iVar7 = (**(code **)(*piVar1 + 0x60))(piVar1,uVar2);\n  }\n  if ((*(byte *)(iVar7 + 0x1c) & 1) == 0) {\n                    \n    FUN_00175d30();\n  }\n  uVar2 = *(uint *)(iVar7 + 4);\n  lVar5 = *(longlong *)(iVar7 + 4);\n  param_1 = (int *)*param_1;\n  uVar3 = *param_2;\n  if (*(code **)(*param_1 + 0x68) != FUN_001021c0) {\n    lVar8 = (**(code **)(*param_1 + 0x68))(param_1,uVar3);\n    return lVar8 + lVar5;\n  }\n  iVar4 = param_1[0x21];\n  uVar6 = param_1[0x22] - iVar4 >> 3;\n  if (uVar3 < uVar6) {\n    uVar6 = *(uint *)(iVar4 + uVar3 * 8);\n    return CONCAT44(*(int *)(iVar4 + 4 + uVar3 * 8) + *(int *)(iVar7 + 8) +\n                    (uint)CARRY4(uVar6,uVar2),uVar6 + uVar2);\n  }\n                    \n  FUN_002446e0("../../gold/object.h",0x7f7,"get_output_section_offset",uVar6);\n}\n\n" (function_definition "longlong __regparm3 FUN_0017cbe0(int *param_1,uint *param_2)\n\n{\n  int *piVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  longlong lVar5;\n  uint uVar6;\n  int iVar7;\n  longlong lVar8;\n  \n  piVar1 = (int *)*param_1;\n  uVar2 = *param_2;\n  if (*(code **)(*piVar1 + 0x60) == FUN_00071550) {\n    if ((uint)(piVar1[0xf] - piVar1[0xe] >> 2) <= uVar2) {\n                    \n      FUN_002446e0("../../gold/object.h",0x5c8,"do_output_section",param_2);\n    }\n    iVar7 = *(int *)(piVar1[0xe] + uVar2 * 4);\n  }\n  else {\n    iVar7 = (**(code **)(*piVar1 + 0x60))(piVar1,uVar2);\n  }\n  if ((*(byte *)(iVar7 + 0x1c) & 1) == 0) {\n                    \n    FUN_00175d30();\n  }\n  uVar2 = *(uint *)(iVar7 + 4);\n  lVar5 = *(longlong *)(iVar7 + 4);\n  param_1 = (int *)*param_1;\n  uVar3 = *param_2;\n  if (*(code **)(*param_1 + 0x68) != FUN_001021c0) {\n    lVar8 = (**(code **)(*param_1 + 0x68))(param_1,uVar3);\n    return lVar8 + lVar5;\n  }\n  iVar4 = param_1[0x21];\n  uVar6 = param_1[0x22] - iVar4 >> 3;\n  if (uVar3 < uVar6) {\n    uVar6 = *(uint *)(iVar4 + uVar3 * 8);\n    return CONCAT44(*(int *)(iVar4 + 4 + uVar3 * 8) + *(int *)(iVar7 + 8) +\n                    (uint)CARRY4(uVar6,uVar2),uVar6 + uVar2);\n  }\n                    \n  FUN_002446e0("../../gold/object.h",0x7f7,"get_output_section_offset",uVar6);\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "FUN_0017cbe0(int *param_1,uint *param_2)" identifier (parameter_list "(int *param_1,uint *param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  int *piVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  longlong lVar5;\n  uint uVar6;\n  int iVar7;\n  longlong lVar8;\n  \n  piVar1 = (int *)*param_1;\n  uVar2 = *param_2;\n  if (*(code **)(*piVar1 + 0x60) == FUN_00071550) {\n    if ((uint)(piVar1[0xf] - piVar1[0xe] >> 2) <= uVar2) {\n                    \n      FUN_002446e0("../../gold/object.h",0x5c8,"do_output_section",param_2);\n    }\n    iVar7 = *(int *)(piVar1[0xe] + uVar2 * 4);\n  }\n  else {\n    iVar7 = (**(code **)(*piVar1 + 0x60))(piVar1,uVar2);\n  }\n  if ((*(byte *)(iVar7 + 0x1c) & 1) == 0) {\n                    \n    FUN_00175d30();\n  }\n  uVar2 = *(uint *)(iVar7 + 4);\n  lVar5 = *(longlong *)(iVar7 + 4);\n  param_1 = (int *)*param_1;\n  uVar3 = *param_2;\n  if (*(code **)(*param_1 + 0x68) != FUN_001021c0) {\n    lVar8 = (**(code **)(*param_1 + 0x68))(param_1,uVar3);\n    return lVar8 + lVar5;\n  }\n  iVar4 = param_1[0x21];\n  uVar6 = param_1[0x22] - iVar4 >> 3;\n  if (uVar3 < uVar6) {\n    uVar6 = *(uint *)(iVar4 + uVar3 * 8);\n    return CONCAT44(*(int *)(iVar4 + 4 + uVar3 * 8) + *(int *)(iVar7 + 8) +\n                    (uint)CARRY4(uVar6,uVar2),uVar6 + uVar2);\n  }\n                    \n  FUN_002446e0("../../gold/object.h",0x7f7,"get_output_section_offset",uVar6);\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "longlong lVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "longlong lVar8;" type_identifier identifier ;) (expression_statement "piVar1 = (int *)*param_1;" (assignment_expression "piVar1 = (int *)*param_1" identifier = (cast_expression "(int *)*param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "uVar2 = *param_2;" (assignment_expression "uVar2 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if (*(code **)(*piVar1 + 0x60) == FUN_00071550) {\n    if ((uint)(piVar1[0xf] - piVar1[0xe] >> 2) <= uVar2) {\n                    \n      FUN_002446e0("../../gold/object.h",0x5c8,"do_output_section",param_2);\n    }\n    iVar7 = *(int *)(piVar1[0xe] + uVar2 * 4);\n  }\n  else {\n    iVar7 = (**(code **)(*piVar1 + 0x60))(piVar1,uVar2);\n  }" if (parenthesized_expression "(*(code **)(*piVar1 + 0x60) == FUN_00071550)" ( (binary_expression "*(code **)(*piVar1 + 0x60) == FUN_00071550" (pointer_expression "*(code **)(*piVar1 + 0x60)" * (cast_expression "(code **)(*piVar1 + 0x60)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar1 + 0x60)" ( (binary_expression "*piVar1 + 0x60" (pointer_expression "*piVar1" * identifier) + number_literal) )))) == identifier) )) (compound_statement "{\n    if ((uint)(piVar1[0xf] - piVar1[0xe] >> 2) <= uVar2) {\n                    \n      FUN_002446e0("../../gold/object.h",0x5c8,"do_output_section",param_2);\n    }\n    iVar7 = *(int *)(piVar1[0xe] + uVar2 * 4);\n  }" { (if_statement "if ((uint)(piVar1[0xf] - piVar1[0xe] >> 2) <= uVar2) {\n                    \n      FUN_002446e0("../../gold/object.h",0x5c8,"do_output_section",param_2);\n    }" if (parenthesized_expression "((uint)(piVar1[0xf] - piVar1[0xe] >> 2) <= uVar2)" ( (binary_expression "(uint)(piVar1[0xf] - piVar1[0xe] >> 2) <= uVar2" (call_expression "(uint)(piVar1[0xf] - piVar1[0xe] >> 2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(piVar1[0xf] - piVar1[0xe] >> 2)" ( (binary_expression "piVar1[0xf] - piVar1[0xe] >> 2" (binary_expression "piVar1[0xf] - piVar1[0xe]" (subscript_expression "piVar1[0xf]" identifier [ number_literal ]) - (subscript_expression "piVar1[0xe]" identifier [ number_literal ])) >> number_literal) ))) <= identifier) )) (compound_statement "{\n                    \n      FUN_002446e0("../../gold/object.h",0x5c8,"do_output_section",param_2);\n    }" { (expression_statement "FUN_002446e0("../../gold/object.h",0x5c8,"do_output_section",param_2);" (call_expression "FUN_002446e0("../../gold/object.h",0x5c8,"do_output_section",param_2)" identifier (argument_list "("../../gold/object.h",0x5c8,"do_output_section",param_2)" ( (string_literal ""../../gold/object.h"" " string_content ") , number_literal , (string_literal ""do_output_section"" " string_content ") , identifier ))) ;) })) (expression_statement "iVar7 = *(int *)(piVar1[0xe] + uVar2 * 4);" (assignment_expression "iVar7 = *(int *)(piVar1[0xe] + uVar2 * 4)" identifier = (pointer_expression "*(int *)(piVar1[0xe] + uVar2 * 4)" * (cast_expression "(int *)(piVar1[0xe] + uVar2 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar1[0xe] + uVar2 * 4)" ( (binary_expression "piVar1[0xe] + uVar2 * 4" (subscript_expression "piVar1[0xe]" identifier [ number_literal ]) + (binary_expression "uVar2 * 4" identifier * number_literal)) ))))) ;) }) (else_clause "else {\n    iVar7 = (**(code **)(*piVar1 + 0x60))(piVar1,uVar2);\n  }" else (compound_statement "{\n    iVar7 = (**(code **)(*piVar1 + 0x60))(piVar1,uVar2);\n  }" { (expression_statement "iVar7 = (**(code **)(*piVar1 + 0x60))(piVar1,uVar2);" (assignment_expression "iVar7 = (**(code **)(*piVar1 + 0x60))(piVar1,uVar2)" identifier = (call_expression "(**(code **)(*piVar1 + 0x60))(piVar1,uVar2)" (parenthesized_expression "(**(code **)(*piVar1 + 0x60))" ( (pointer_expression "**(code **)(*piVar1 + 0x60)" * (pointer_expression "*(code **)(*piVar1 + 0x60)" * (cast_expression "(code **)(*piVar1 + 0x60)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar1 + 0x60)" ( (binary_expression "*piVar1 + 0x60" (pointer_expression "*piVar1" * identifier) + number_literal) ))))) )) (argument_list "(piVar1,uVar2)" ( identifier , identifier )))) ;) }))) (if_statement "if ((*(byte *)(iVar7 + 0x1c) & 1) == 0) {\n                    \n    FUN_00175d30();\n  }" if (parenthesized_expression "((*(byte *)(iVar7 + 0x1c) & 1) == 0)" ( (binary_expression "(*(byte *)(iVar7 + 0x1c) & 1) == 0" (parenthesized_expression "(*(byte *)(iVar7 + 0x1c) & 1)" ( (binary_expression "*(byte *)(iVar7 + 0x1c) & 1" (pointer_expression "*(byte *)(iVar7 + 0x1c)" * (cast_expression "(byte *)(iVar7 + 0x1c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x1c)" ( (binary_expression "iVar7 + 0x1c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    \n    FUN_00175d30();\n  }" { (expression_statement "FUN_00175d30();" (call_expression "FUN_00175d30()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "uVar2 = *(uint *)(iVar7 + 4);" (assignment_expression "uVar2 = *(uint *)(iVar7 + 4)" identifier = (pointer_expression "*(uint *)(iVar7 + 4)" * (cast_expression "(uint *)(iVar7 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 4)" ( (binary_expression "iVar7 + 4" identifier + number_literal) ))))) ;) (expression_statement "lVar5 = *(longlong *)(iVar7 + 4);" (assignment_expression "lVar5 = *(longlong *)(iVar7 + 4)" identifier = (pointer_expression "*(longlong *)(iVar7 + 4)" * (cast_expression "(longlong *)(iVar7 + 4)" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 4)" ( (binary_expression "iVar7 + 4" identifier + number_literal) ))))) ;) (expression_statement "param_1 = (int *)*param_1;" (assignment_expression "param_1 = (int *)*param_1" identifier = (cast_expression "(int *)*param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "uVar3 = *param_2;" (assignment_expression "uVar3 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if (*(code **)(*param_1 + 0x68) != FUN_001021c0) {\n    lVar8 = (**(code **)(*param_1 + 0x68))(param_1,uVar3);\n    return lVar8 + lVar5;\n  }" if (parenthesized_expression "(*(code **)(*param_1 + 0x68) != FUN_001021c0)" ( (binary_expression "*(code **)(*param_1 + 0x68) != FUN_001021c0" (pointer_expression "*(code **)(*param_1 + 0x68)" * (cast_expression "(code **)(*param_1 + 0x68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x68)" ( (binary_expression "*param_1 + 0x68" (pointer_expression "*param_1" * identifier) + number_literal) )))) != identifier) )) (compound_statement "{\n    lVar8 = (**(code **)(*param_1 + 0x68))(param_1,uVar3);\n    return lVar8 + lVar5;\n  }" { (expression_statement "lVar8 = (**(code **)(*param_1 + 0x68))(param_1,uVar3);" (assignment_expression "lVar8 = (**(code **)(*param_1 + 0x68))(param_1,uVar3)" identifier = (call_expression "(**(code **)(*param_1 + 0x68))(param_1,uVar3)" (parenthesized_expression "(**(code **)(*param_1 + 0x68))" ( (pointer_expression "**(code **)(*param_1 + 0x68)" * (pointer_expression "*(code **)(*param_1 + 0x68)" * (cast_expression "(code **)(*param_1 + 0x68)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x68)" ( (binary_expression "*param_1 + 0x68" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(param_1,uVar3)" ( identifier , identifier )))) ;) (return_statement "return lVar8 + lVar5;" return (binary_expression "lVar8 + lVar5" identifier + identifier) ;) })) (expression_statement "iVar4 = param_1[0x21];" (assignment_expression "iVar4 = param_1[0x21]" identifier = (subscript_expression "param_1[0x21]" identifier [ number_literal ])) ;) (expression_statement "uVar6 = param_1[0x22] - iVar4 >> 3;" (assignment_expression "uVar6 = param_1[0x22] - iVar4 >> 3" identifier = (binary_expression "param_1[0x22] - iVar4 >> 3" (binary_expression "param_1[0x22] - iVar4" (subscript_expression "param_1[0x22]" identifier [ number_literal ]) - identifier) >> number_literal)) ;) (if_statement "if (uVar3 < uVar6) {\n    uVar6 = *(uint *)(iVar4 + uVar3 * 8);\n    return CONCAT44(*(int *)(iVar4 + 4 + uVar3 * 8) + *(int *)(iVar7 + 8) +\n                    (uint)CARRY4(uVar6,uVar2),uVar6 + uVar2);\n  }" if (parenthesized_expression "(uVar3 < uVar6)" ( (binary_expression "uVar3 < uVar6" identifier < identifier) )) (compound_statement "{\n    uVar6 = *(uint *)(iVar4 + uVar3 * 8);\n    return CONCAT44(*(int *)(iVar4 + 4 + uVar3 * 8) + *(int *)(iVar7 + 8) +\n                    (uint)CARRY4(uVar6,uVar2),uVar6 + uVar2);\n  }" { (expression_statement "uVar6 = *(uint *)(iVar4 + uVar3 * 8);" (assignment_expression "uVar6 = *(uint *)(iVar4 + uVar3 * 8)" identifier = (pointer_expression "*(uint *)(iVar4 + uVar3 * 8)" * (cast_expression "(uint *)(iVar4 + uVar3 * 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + uVar3 * 8)" ( (binary_expression "iVar4 + uVar3 * 8" identifier + (binary_expression "uVar3 * 8" identifier * number_literal)) ))))) ;) (return_statement "return CONCAT44(*(int *)(iVar4 + 4 + uVar3 * 8) + *(int *)(iVar7 + 8) +\n                    (uint)CARRY4(uVar6,uVar2),uVar6 + uVar2);" return (call_expression "CONCAT44(*(int *)(iVar4 + 4 + uVar3 * 8) + *(int *)(iVar7 + 8) +\n                    (uint)CARRY4(uVar6,uVar2),uVar6 + uVar2)" identifier (argument_list "(*(int *)(iVar4 + 4 + uVar3 * 8) + *(int *)(iVar7 + 8) +\n                    (uint)CARRY4(uVar6,uVar2),uVar6 + uVar2)" ( (binary_expression "*(int *)(iVar4 + 4 + uVar3 * 8) + *(int *)(iVar7 + 8) +\n                    (uint)CARRY4(uVar6,uVar2)" (binary_expression "*(int *)(iVar4 + 4 + uVar3 * 8) + *(int *)(iVar7 + 8)" (pointer_expression "*(int *)(iVar4 + 4 + uVar3 * 8)" * (cast_expression "(int *)(iVar4 + 4 + uVar3 * 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 4 + uVar3 * 8)" ( (binary_expression "iVar4 + 4 + uVar3 * 8" (binary_expression "iVar4 + 4" identifier + number_literal) + (binary_expression "uVar3 * 8" identifier * number_literal)) )))) + (pointer_expression "*(int *)(iVar7 + 8)" * (cast_expression "(int *)(iVar7 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 8)" ( (binary_expression "iVar7 + 8" identifier + number_literal) ))))) + (cast_expression "(uint)CARRY4(uVar6,uVar2)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar6,uVar2)" identifier (argument_list "(uVar6,uVar2)" ( identifier , identifier ))))) , (binary_expression "uVar6 + uVar2" identifier + identifier) ))) ;) })) (expression_statement "FUN_002446e0("../../gold/object.h",0x7f7,"get_output_section_offset",uVar6);" (call_expression "FUN_002446e0("../../gold/object.h",0x7f7,"get_output_section_offset",uVar6)" identifier (argument_list "("../../gold/object.h",0x7f7,"get_output_section_offset",uVar6)" ( (string_literal ""../../gold/object.h"" " string_content ") , number_literal , (string_literal ""get_output_section_offset"" " string_content ") , identifier ))) ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) == IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) - (subscript_expression IDENT [ LIT ])) >> LIT) ))) <= IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression IDENT * LIT)) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT , IDENT )))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT , IDENT )))) ;) (return_statement return (binary_expression IDENT + IDENT) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) - IDENT) >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) ;) (return_statement return (call_expression IDENT (argument_list ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT)) )))) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , IDENT ))))) , (binary_expression IDENT + IDENT) ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") , IDENT ))) ;) })))
(function_definition "longlong __regparm3 FUN_0017cbe0(int *param_1,uint *param_2)\n\n{\n  int *piVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  longlong lVar5;\n  uint uVar6;\n  int iVar7;\n  longlong lVar8;\n  \n  piVar1 = (int *)*param_1;\n  uVar2 = *param_2;\n  if (*(code **)(*piVar1 + 0x60) == FUN_00071550) {\n    if ((uint)(piVar1[0xf] - piVar1[0xe] >> 2) <= uVar2) {\n                    \n      FUN_002446e0("../../gold/object.h",0x5c8,"do_output_section",param_2);\n    }\n    iVar7 = *(int *)(piVar1[0xe] + uVar2 * 4);\n  }\n  else {\n    iVar7 = (**(code **)(*piVar1 + 0x60))(piVar1,uVar2);\n  }\n  if ((*(byte *)(iVar7 + 0x1c) & 1) == 0) {\n                    \n    FUN_00175d30();\n  }\n  uVar2 = *(uint *)(iVar7 + 4);\n  lVar5 = *(longlong *)(iVar7 + 4);\n  param_1 = (int *)*param_1;\n  uVar3 = *param_2;\n  if (*(code **)(*param_1 + 0x68) != FUN_001021c0) {\n    lVar8 = (**(code **)(*param_1 + 0x68))(param_1,uVar3);\n    return lVar8 + lVar5;\n  }\n  iVar4 = param_1[0x21];\n  uVar6 = param_1[0x22] - iVar4 >> 3;\n  if (uVar3 < uVar6) {\n    uVar6 = *(uint *)(iVar4 + uVar3 * 8);\n    return CONCAT44(*(int *)(iVar4 + 4 + uVar3 * 8) + *(int *)(iVar7 + 8) +\n                    (uint)CARRY4(uVar6,uVar2),uVar6 + uVar2);\n  }\n                    \n  FUN_002446e0("../../gold/object.h",0x7f7,"get_output_section_offset",uVar6);\n}" (type_identifier "longlong") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_0017cbe0(int *param_1,uint *param_2)" (identifier "FUN_0017cbe0") (parameter_list "(int *param_1,uint *param_2)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "uint *param_2" (type_identifier "uint") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  int *piVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  longlong lVar5;\n  uint uVar6;\n  int iVar7;\n  longlong lVar8;\n  \n  piVar1 = (int *)*param_1;\n  uVar2 = *param_2;\n  if (*(code **)(*piVar1 + 0x60) == FUN_00071550) {\n    if ((uint)(piVar1[0xf] - piVar1[0xe] >> 2) <= uVar2) {\n                    \n      FUN_002446e0("../../gold/object.h",0x5c8,"do_output_section",param_2);\n    }\n    iVar7 = *(int *)(piVar1[0xe] + uVar2 * 4);\n  }\n  else {\n    iVar7 = (**(code **)(*piVar1 + 0x60))(piVar1,uVar2);\n  }\n  if ((*(byte *)(iVar7 + 0x1c) & 1) == 0) {\n                    \n    FUN_00175d30();\n  }\n  uVar2 = *(uint *)(iVar7 + 4);\n  lVar5 = *(longlong *)(iVar7 + 4);\n  param_1 = (int *)*param_1;\n  uVar3 = *param_2;\n  if (*(code **)(*param_1 + 0x68) != FUN_001021c0) {\n    lVar8 = (**(code **)(*param_1 + 0x68))(param_1,uVar3);\n    return lVar8 + lVar5;\n  }\n  iVar4 = param_1[0x21];\n  uVar6 = param_1[0x22] - iVar4 >> 3;\n  if (uVar3 < uVar6) {\n    uVar6 = *(uint *)(iVar4 + uVar3 * 8);\n    return CONCAT44(*(int *)(iVar4 + 4 + uVar3 * 8) + *(int *)(iVar7 + 8) +\n                    (uint)CARRY4(uVar6,uVar2),uVar6 + uVar2);\n  }\n                    \n  FUN_002446e0("../../gold/object.h",0x7f7,"get_output_section_offset",uVar6);\n}" ({ "{") (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "longlong lVar5;" (type_identifier "longlong") (identifier "lVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "longlong lVar8;" (type_identifier "longlong") (identifier "lVar8") (; ";")) (expression_statement "piVar1 = (int *)*param_1;" (assignment_expression "piVar1 = (int *)*param_1" (identifier "piVar1") (= "=") (cast_expression "(int *)*param_1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (expression_statement "uVar2 = *param_2;" (assignment_expression "uVar2 = *param_2" (identifier "uVar2") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (if_statement "if (*(code **)(*piVar1 + 0x60) == FUN_00071550) {\n    if ((uint)(piVar1[0xf] - piVar1[0xe] >> 2) <= uVar2) {\n                    \n      FUN_002446e0("../../gold/object.h",0x5c8,"do_output_section",param_2);\n    }\n    iVar7 = *(int *)(piVar1[0xe] + uVar2 * 4);\n  }\n  else {\n    iVar7 = (**(code **)(*piVar1 + 0x60))(piVar1,uVar2);\n  }" (if "if") (parenthesized_expression "(*(code **)(*piVar1 + 0x60) == FUN_00071550)" (( "(") (binary_expression "*(code **)(*piVar1 + 0x60) == FUN_00071550" (pointer_expression "*(code **)(*piVar1 + 0x60)" (* "*") (cast_expression "(code **)(*piVar1 + 0x60)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar1 + 0x60)" (( "(") (binary_expression "*piVar1 + 0x60" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (+ "+") (number_literal "0x60")) () ")")))) (== "==") (identifier "FUN_00071550")) () ")")) (compound_statement "{\n    if ((uint)(piVar1[0xf] - piVar1[0xe] >> 2) <= uVar2) {\n                    \n      FUN_002446e0("../../gold/object.h",0x5c8,"do_output_section",param_2);\n    }\n    iVar7 = *(int *)(piVar1[0xe] + uVar2 * 4);\n  }" ({ "{") (if_statement "if ((uint)(piVar1[0xf] - piVar1[0xe] >> 2) <= uVar2) {\n                    \n      FUN_002446e0("../../gold/object.h",0x5c8,"do_output_section",param_2);\n    }" (if "if") (parenthesized_expression "((uint)(piVar1[0xf] - piVar1[0xe] >> 2) <= uVar2)" (( "(") (binary_expression "(uint)(piVar1[0xf] - piVar1[0xe] >> 2) <= uVar2" (call_expression "(uint)(piVar1[0xf] - piVar1[0xe] >> 2)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(piVar1[0xf] - piVar1[0xe] >> 2)" (( "(") (binary_expression "piVar1[0xf] - piVar1[0xe] >> 2" (binary_expression "piVar1[0xf] - piVar1[0xe]" (subscript_expression "piVar1[0xf]" (identifier "piVar1") ([ "[") (number_literal "0xf") (] "]")) (- "-") (subscript_expression "piVar1[0xe]" (identifier "piVar1") ([ "[") (number_literal "0xe") (] "]"))) (>> ">>") (number_literal "2")) () ")"))) (<= "<=") (identifier "uVar2")) () ")")) (compound_statement "{\n                    \n      FUN_002446e0("../../gold/object.h",0x5c8,"do_output_section",param_2);\n    }" ({ "{") (expression_statement "FUN_002446e0("../../gold/object.h",0x5c8,"do_output_section",param_2);" (call_expression "FUN_002446e0("../../gold/object.h",0x5c8,"do_output_section",param_2)" (identifier "FUN_002446e0") (argument_list "("../../gold/object.h",0x5c8,"do_output_section",param_2)" (( "(") (string_literal ""../../gold/object.h"" (" """) (string_content "../../gold/object.h") (" """)) (, ",") (number_literal "0x5c8") (, ",") (string_literal ""do_output_section"" (" """) (string_content "do_output_section") (" """)) (, ",") (identifier "param_2") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar7 = *(int *)(piVar1[0xe] + uVar2 * 4);" (assignment_expression "iVar7 = *(int *)(piVar1[0xe] + uVar2 * 4)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(piVar1[0xe] + uVar2 * 4)" (* "*") (cast_expression "(int *)(piVar1[0xe] + uVar2 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar1[0xe] + uVar2 * 4)" (( "(") (binary_expression "piVar1[0xe] + uVar2 * 4" (subscript_expression "piVar1[0xe]" (identifier "piVar1") ([ "[") (number_literal "0xe") (] "]")) (+ "+") (binary_expression "uVar2 * 4" (identifier "uVar2") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n    iVar7 = (**(code **)(*piVar1 + 0x60))(piVar1,uVar2);\n  }" (else "else") (compound_statement "{\n    iVar7 = (**(code **)(*piVar1 + 0x60))(piVar1,uVar2);\n  }" ({ "{") (expression_statement "iVar7 = (**(code **)(*piVar1 + 0x60))(piVar1,uVar2);" (assignment_expression "iVar7 = (**(code **)(*piVar1 + 0x60))(piVar1,uVar2)" (identifier "iVar7") (= "=") (call_expression "(**(code **)(*piVar1 + 0x60))(piVar1,uVar2)" (parenthesized_expression "(**(code **)(*piVar1 + 0x60))" (( "(") (pointer_expression "**(code **)(*piVar1 + 0x60)" (* "*") (pointer_expression "*(code **)(*piVar1 + 0x60)" (* "*") (cast_expression "(code **)(*piVar1 + 0x60)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar1 + 0x60)" (( "(") (binary_expression "*piVar1 + 0x60" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (+ "+") (number_literal "0x60")) () ")"))))) () ")")) (argument_list "(piVar1,uVar2)" (( "(") (identifier "piVar1") (, ",") (identifier "uVar2") () ")")))) (; ";")) (} "}")))) (if_statement "if ((*(byte *)(iVar7 + 0x1c) & 1) == 0) {\n                    \n    FUN_00175d30();\n  }" (if "if") (parenthesized_expression "((*(byte *)(iVar7 + 0x1c) & 1) == 0)" (( "(") (binary_expression "(*(byte *)(iVar7 + 0x1c) & 1) == 0" (parenthesized_expression "(*(byte *)(iVar7 + 0x1c) & 1)" (( "(") (binary_expression "*(byte *)(iVar7 + 0x1c) & 1" (pointer_expression "*(byte *)(iVar7 + 0x1c)" (* "*") (cast_expression "(byte *)(iVar7 + 0x1c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 0x1c)" (( "(") (binary_expression "iVar7 + 0x1c" (identifier "iVar7") (+ "+") (number_literal "0x1c")) () ")")))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    FUN_00175d30();\n  }" ({ "{") (expression_statement "FUN_00175d30();" (call_expression "FUN_00175d30()" (identifier "FUN_00175d30") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar2 = *(uint *)(iVar7 + 4);" (assignment_expression "uVar2 = *(uint *)(iVar7 + 4)" (identifier "uVar2") (= "=") (pointer_expression "*(uint *)(iVar7 + 4)" (* "*") (cast_expression "(uint *)(iVar7 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 4)" (( "(") (binary_expression "iVar7 + 4" (identifier "iVar7") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "lVar5 = *(longlong *)(iVar7 + 4);" (assignment_expression "lVar5 = *(longlong *)(iVar7 + 4)" (identifier "lVar5") (= "=") (pointer_expression "*(longlong *)(iVar7 + 4)" (* "*") (cast_expression "(longlong *)(iVar7 + 4)" (( "(") (type_descriptor "longlong *" (type_identifier "longlong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 4)" (( "(") (binary_expression "iVar7 + 4" (identifier "iVar7") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "param_1 = (int *)*param_1;" (assignment_expression "param_1 = (int *)*param_1" (identifier "param_1") (= "=") (cast_expression "(int *)*param_1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (expression_statement "uVar3 = *param_2;" (assignment_expression "uVar3 = *param_2" (identifier "uVar3") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (if_statement "if (*(code **)(*param_1 + 0x68) != FUN_001021c0) {\n    lVar8 = (**(code **)(*param_1 + 0x68))(param_1,uVar3);\n    return lVar8 + lVar5;\n  }" (if "if") (parenthesized_expression "(*(code **)(*param_1 + 0x68) != FUN_001021c0)" (( "(") (binary_expression "*(code **)(*param_1 + 0x68) != FUN_001021c0" (pointer_expression "*(code **)(*param_1 + 0x68)" (* "*") (cast_expression "(code **)(*param_1 + 0x68)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 0x68)" (( "(") (binary_expression "*param_1 + 0x68" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x68")) () ")")))) (!= "!=") (identifier "FUN_001021c0")) () ")")) (compound_statement "{\n    lVar8 = (**(code **)(*param_1 + 0x68))(param_1,uVar3);\n    return lVar8 + lVar5;\n  }" ({ "{") (expression_statement "lVar8 = (**(code **)(*param_1 + 0x68))(param_1,uVar3);" (assignment_expression "lVar8 = (**(code **)(*param_1 + 0x68))(param_1,uVar3)" (identifier "lVar8") (= "=") (call_expression "(**(code **)(*param_1 + 0x68))(param_1,uVar3)" (parenthesized_expression "(**(code **)(*param_1 + 0x68))" (( "(") (pointer_expression "**(code **)(*param_1 + 0x68)" (* "*") (pointer_expression "*(code **)(*param_1 + 0x68)" (* "*") (cast_expression "(code **)(*param_1 + 0x68)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 0x68)" (( "(") (binary_expression "*param_1 + 0x68" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x68")) () ")"))))) () ")")) (argument_list "(param_1,uVar3)" (( "(") (identifier "param_1") (, ",") (identifier "uVar3") () ")")))) (; ";")) (return_statement "return lVar8 + lVar5;" (return "return") (binary_expression "lVar8 + lVar5" (identifier "lVar8") (+ "+") (identifier "lVar5")) (; ";")) (} "}"))) (expression_statement "iVar4 = param_1[0x21];" (assignment_expression "iVar4 = param_1[0x21]" (identifier "iVar4") (= "=") (subscript_expression "param_1[0x21]" (identifier "param_1") ([ "[") (number_literal "0x21") (] "]"))) (; ";")) (expression_statement "uVar6 = param_1[0x22] - iVar4 >> 3;" (assignment_expression "uVar6 = param_1[0x22] - iVar4 >> 3" (identifier "uVar6") (= "=") (binary_expression "param_1[0x22] - iVar4 >> 3" (binary_expression "param_1[0x22] - iVar4" (subscript_expression "param_1[0x22]" (identifier "param_1") ([ "[") (number_literal "0x22") (] "]")) (- "-") (identifier "iVar4")) (>> ">>") (number_literal "3"))) (; ";")) (if_statement "if (uVar3 < uVar6) {\n    uVar6 = *(uint *)(iVar4 + uVar3 * 8);\n    return CONCAT44(*(int *)(iVar4 + 4 + uVar3 * 8) + *(int *)(iVar7 + 8) +\n                    (uint)CARRY4(uVar6,uVar2),uVar6 + uVar2);\n  }" (if "if") (parenthesized_expression "(uVar3 < uVar6)" (( "(") (binary_expression "uVar3 < uVar6" (identifier "uVar3") (< "<") (identifier "uVar6")) () ")")) (compound_statement "{\n    uVar6 = *(uint *)(iVar4 + uVar3 * 8);\n    return CONCAT44(*(int *)(iVar4 + 4 + uVar3 * 8) + *(int *)(iVar7 + 8) +\n                    (uint)CARRY4(uVar6,uVar2),uVar6 + uVar2);\n  }" ({ "{") (expression_statement "uVar6 = *(uint *)(iVar4 + uVar3 * 8);" (assignment_expression "uVar6 = *(uint *)(iVar4 + uVar3 * 8)" (identifier "uVar6") (= "=") (pointer_expression "*(uint *)(iVar4 + uVar3 * 8)" (* "*") (cast_expression "(uint *)(iVar4 + uVar3 * 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + uVar3 * 8)" (( "(") (binary_expression "iVar4 + uVar3 * 8" (identifier "iVar4") (+ "+") (binary_expression "uVar3 * 8" (identifier "uVar3") (* "*") (number_literal "8"))) () ")"))))) (; ";")) (return_statement "return CONCAT44(*(int *)(iVar4 + 4 + uVar3 * 8) + *(int *)(iVar7 + 8) +\n                    (uint)CARRY4(uVar6,uVar2),uVar6 + uVar2);" (return "return") (call_expression "CONCAT44(*(int *)(iVar4 + 4 + uVar3 * 8) + *(int *)(iVar7 + 8) +\n                    (uint)CARRY4(uVar6,uVar2),uVar6 + uVar2)" (identifier "CONCAT44") (argument_list "(*(int *)(iVar4 + 4 + uVar3 * 8) + *(int *)(iVar7 + 8) +\n                    (uint)CARRY4(uVar6,uVar2),uVar6 + uVar2)" (( "(") (binary_expression "*(int *)(iVar4 + 4 + uVar3 * 8) + *(int *)(iVar7 + 8) +\n                    (uint)CARRY4(uVar6,uVar2)" (binary_expression "*(int *)(iVar4 + 4 + uVar3 * 8) + *(int *)(iVar7 + 8)" (pointer_expression "*(int *)(iVar4 + 4 + uVar3 * 8)" (* "*") (cast_expression "(int *)(iVar4 + 4 + uVar3 * 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 4 + uVar3 * 8)" (( "(") (binary_expression "iVar4 + 4 + uVar3 * 8" (binary_expression "iVar4 + 4" (identifier "iVar4") (+ "+") (number_literal "4")) (+ "+") (binary_expression "uVar3 * 8" (identifier "uVar3") (* "*") (number_literal "8"))) () ")")))) (+ "+") (pointer_expression "*(int *)(iVar7 + 8)" (* "*") (cast_expression "(int *)(iVar7 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 8)" (( "(") (binary_expression "iVar7 + 8" (identifier "iVar7") (+ "+") (number_literal "8")) () ")"))))) (+ "+") (cast_expression "(uint)CARRY4(uVar6,uVar2)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CARRY4(uVar6,uVar2)" (identifier "CARRY4") (argument_list "(uVar6,uVar2)" (( "(") (identifier "uVar6") (, ",") (identifier "uVar2") () ")"))))) (, ",") (binary_expression "uVar6 + uVar2" (identifier "uVar6") (+ "+") (identifier "uVar2")) () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_002446e0("../../gold/object.h",0x7f7,"get_output_section_offset",uVar6);" (call_expression "FUN_002446e0("../../gold/object.h",0x7f7,"get_output_section_offset",uVar6)" (identifier "FUN_002446e0") (argument_list "("../../gold/object.h",0x7f7,"get_output_section_offset",uVar6)" (( "(") (string_literal ""../../gold/object.h"" (" """) (string_content "../../gold/object.h") (" """)) (, ",") (number_literal "0x7f7") (, ",") (string_literal ""get_output_section_offset"" (" """) (string_content "get_output_section_offset") (" """)) (, ",") (identifier "uVar6") () ")"))) (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* DWARF original prototype: Mips_address output_address(Mips16_stub_section<64,_false> * this,
   Mips16_stub_section<64,_false> * this) */

Mips_address __thiscall
anon_unknown.dwarf_d7d43e::Mips16_stub_section<64,_false>::output_address
          (Mips16_stub_section<64,_false> *this,Mips16_stub_section<64,_false> *this_1)

{
}


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

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

longlong __regparm3 MASKED(int *param_1,uint *param_2)

{
  int *piVar1;
  uint uVar2;
  uint uVar3;
  int iVar4;
  longlong lVar5;
  uint uVar6;
  int iVar7;
  longlong lVar8;
  
  piVar1 = (int *)*param_1;
  uVar2 = *param_2;
  if (*(code **)(*piVar1 + 0x60) == FUN_00071550) {
    if ((uint)(piVar1[0xf] - piVar1[0xe] >> 2) <= uVar2) {
                    /* WARNING: Subroutine does not return */
      FUN_002446e0("../../gold/object.h",0x5c8,"do_output_section",param_2);
    }
    iVar7 = *(int *)(piVar1[0xe] + uVar2 * 4);
  }
  else {
    iVar7 = (**(code **)(*piVar1 + 0x60))(piVar1,uVar2);
  }
  if ((*(byte *)(iVar7 + 0x1c) & 1) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_00175d30();
  }
  uVar2 = *(uint *)(iVar7 + 4);
  lVar5 = *(longlong *)(iVar7 + 4);
  param_1 = (int *)*param_1;
  uVar3 = *param_2;
  if (*(code **)(*param_1 + 0x68) != FUN_001021c0) {
    lVar8 = (**(code **)(*param_1 + 0x68))(param_1,uVar3);
    return lVar8 + lVar5;
  }
  iVar4 = param_1[0x21];
  uVar6 = param_1[0x22] - iVar4 >> 3;
  if (uVar3 < uVar6) {
    uVar6 = *(uint *)(iVar4 + uVar3 * 8);
    return CONCAT44(*(int *)(iVar4 + 4 + uVar3 * 8) + *(int *)(iVar7 + 8) +
                    (uint)CARRY4(uVar6,uVar2),uVar6 + uVar2);
  }
                    /* WARNING: Subroutine does not return */
  FUN_002446e0("../../gold/object.h",0x7f7,"get_output_section_offset",uVar6);
}

