
/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */
/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */
/* DWARF original prototype: int compare(Output_reloc<9,_true,_32,_false> * this,
   Output_reloc<9,_true,_32,_false> * r2) */

int __thiscall
gold::Output_reloc<9,_true,_32,_false>::compare
          (Output_reloc<9,_true,_32,_false> *this,Output_reloc<9,_true,_32,_false> *r2)

{
  int iVar1;
  undefined *puVar2;
  Elf_Addr EVar3;
  Elf_Addr EVar4;
  uint uVar5;
  uint uVar6;
  
  puVar2 = PTR_get_symbol_index_004c4340;
  iVar1 = *(int *)&r2->field_0x10 << 0x1c;
  if (*(int *)&this->field_0x10 << 0x1c < 0) {
    if (-1 < iVar1) {
      return -1;
    }
  }
  else {
    if (iVar1 < 0) {
      return 1;
    }
    uVar5 = (*(code *)PTR_get_symbol_index_004c4340)();
    uVar6 = (*(code *)puVar2)(r2);
    if (uVar5 < uVar6) {
      return -1;
    }
    if (uVar6 < uVar5) {
      return 1;
    }
  }
  EVar3 = get_address(this);
  EVar4 = get_address(r2);
  if ((int)EVar4 <= (int)EVar3) {
    if ((int)EVar4 < (int)EVar3) {
      return 1;
    }
    uVar5 = *(uint *)&this->field_0x10 >> 4;
    uVar6 = *(uint *)&r2->field_0x10 >> 4;
    if (uVar6 <= uVar5) {
      return (uint)(uVar6 < uVar5);
    }
  }
  return -1;
}



/* gold::Output_reloc<9, true, 32, false>::compare(gold::Output_reloc<9, true, 32, false> const&)
   const */

uint __thiscall
gold::Output_reloc<9,true,32,false>::compare
          (Output_reloc<9,true,32,false> *this,Output_reloc *param_1)

{
  undefined *puVar1;
  int iVar2;
  int iVar3;
  uint uVar4;
  uint uVar5;
  
  puVar1 = PTR_get_symbol_index_004c4340;
  if (*(int *)(this + 0x10) << 0x1c < 0) {
    if (-1 < *(int *)(param_1 + 0x10) << 0x1c) {
      return 0xffffffff;
    }
  }
  else {
    if (*(int *)(param_1 + 0x10) << 0x1c < 0) {
      return 1;
    }
    uVar4 = (*(code *)PTR_get_symbol_index_004c4340)();
    uVar5 = (*(code *)puVar1)(param_1);
    if (uVar4 < uVar5) {
      return 0xffffffff;
    }
    if (uVar5 < uVar4) {
      return 1;
    }
  }
  iVar2 = get_address(this);
  iVar3 = get_address((Output_reloc<9,true,32,false> *)param_1);
  if (iVar3 <= iVar2) {
    if (iVar3 < iVar2) {
      return 1;
    }
    if (*(uint *)(param_1 + 0x10) >> 4 <= *(uint *)(this + 0x10) >> 4) {
      return (uint)(*(uint *)(param_1 + 0x10) >> 4 < *(uint *)(this + 0x10) >> 4);
    }
  }
  return 0xffffffff;
}


lui gp,0x27
addiu gp,gp,-0x3ca0
addu gp,gp,t9
lw v1,0x10(a0)
addiu sp,sp,-0x30
lw v0,0x10(a1)
ext v1,v1,0x3,0x1
sw gp,0x10(sp)
sw s1,0x20(sp)
or s1,a0,zero
sw s0,0x1c(sp)
ext v0,v0,0x3,0x1
sw ra,0x2c(sp)
or s0,a1,zero
sw s3,0x28(sp)
beq v1,zero,0x0025cf94
_sw s2,0x24(sp)
beq v0,zero,0x0025cfcc
_lw ra,0x2c(sp)
lw s3,-0x4f04(gp)
or t9,s3,zero
bal 0x0025cc50
_or a0,s1,zero
or a0,s0,zero
or t9,s3,zero
bal 0x0025cc50
_or s2,v0,zero
slt v1,s2,v0
bne v1,zero,0x0025cfc8
_slt s2,v0,s2
bne s2,zero,0x0025cff8
_lw ra,0x2c(sp)
lw v0,0x10(s1)
lw v1,0x10(s0)
ext v0,v0,0x4,0x1c
ext v1,v1,0x4,0x1c
sltu a0,v0,v1
bne a0,zero,0x0025cfcc
_sltu v0,v1,v0
lw s3,0x28(sp)
lw s2,0x24(sp)
lw s1,0x20(sp)
lw s0,0x1c(sp)
jr ra
_addiu sp,sp,0x30
bne v0,zero,0x0025cff8
_lw ra,0x2c(sp)
lw s3,-0x4f00(gp)
or t9,s3,zero
jalr t9
_nop
or a0,s0,zero
or t9,s3,zero
jalr t9
_or s2,v0,zero
sltu v1,s2,v0
beq v1,zero,0x0025cfe8
_lw gp,0x10(sp)
lw ra,0x2c(sp)
li v0,-0x1
lw s3,0x28(sp)
lw s2,0x24(sp)
lw s1,0x20(sp)
lw s0,0x1c(sp)
jr ra
_addiu sp,sp,0x30
sltu s2,v0,s2
beq s2,zero,0x0025cf30
_lw s3,-0x4f04(gp)
lw ra,0x2c(sp)
li v0,0x1
lw s3,0x28(sp)
lw s2,0x24(sp)
lw s1,0x20(sp)
lw s0,0x1c(sp)
jr ra
_addiu sp,sp,0x30
(translation_unit "/* gold::Output_reloc<9, true, 32, false>::compare(gold::Output_reloc<9, true, 32, false> const&)\n   const */\n\nuint __thiscall\ngold::Output_reloc<9,true,32,false>::compare\n          (Output_reloc<9,true,32,false> *this,Output_reloc *param_1)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  uint uVar4;\n  uint uVar5;\n  \n  puVar1 = PTR_get_symbol_index_004c4340;\n  if (*(int *)(this + 0x10) << 0x1c < 0) {\n    if (-1 < *(int *)(param_1 + 0x10) << 0x1c) {\n      return 0xffffffff;\n    }\n  }\n  else {\n    if (*(int *)(param_1 + 0x10) << 0x1c < 0) {\n      return 1;\n    }\n    uVar4 = (*(code *)PTR_get_symbol_index_004c4340)();\n    uVar5 = (*(code *)puVar1)(param_1);\n    if (uVar4 < uVar5) {\n      return 0xffffffff;\n    }\n    if (uVar5 < uVar4) {\n      return 1;\n    }\n  }\n  iVar2 = get_address(this);\n  iVar3 = get_address((Output_reloc<9,true,32,false> *)param_1);\n  if (iVar3 <= iVar2) {\n    if (iVar3 < iVar2) {\n      return 1;\n    }\n    if (*(uint *)(param_1 + 0x10) >> 4 <= *(uint *)(this + 0x10) >> 4) {\n      return (uint)(*(uint *)(param_1 + 0x10) >> 4 < *(uint *)(this + 0x10) >> 4);\n    }\n  }\n  return 0xffffffff;\n}\n\n" comment (declaration "uint __thiscall\ngold::Output_reloc<9,true,32,false>::compare\n          (Output_reloc<9,true,32,false> *this,Output_reloc *param_1)\n\n{\n  undefined *puVar1;" type_identifier (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::" identifier : :) identifier (ERROR "<9" < number_literal) , identifier (ERROR ",32" , number_literal) , (ERROR "false>::compare\n          (Output_reloc<9,true,32,false> *this,Output_reloc *param_1)\n\n{\n  undefined" identifier > : : (function_declarator "compare\n          (Output_reloc<9,true,32,false> *this,Output_reloc *param_1)" identifier (parameter_list "(Output_reloc<9,true,32,false> *this,Output_reloc *param_1)" ( (parameter_declaration "Output_reloc" type_identifier) (ERROR "<9" < number_literal) , (parameter_declaration "true" type_identifier) (ERROR ",32" , number_literal) , (parameter_declaration "false> *this" type_identifier (ERROR ">" >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "Output_reloc *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) { identifier) (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (expression_statement "puVar1 = PTR_get_symbol_index_004c4340;" (assignment_expression "puVar1 = PTR_get_symbol_index_004c4340" identifier = identifier) ;) (if_statement "if (*(int *)(this + 0x10) << 0x1c < 0) {\n    if (-1 < *(int *)(param_1 + 0x10) << 0x1c) {\n      return 0xffffffff;\n    }\n  }\n  else {\n    if (*(int *)(param_1 + 0x10) << 0x1c < 0) {\n      return 1;\n    }\n    uVar4 = (*(code *)PTR_get_symbol_index_004c4340)();\n    uVar5 = (*(code *)puVar1)(param_1);\n    if (uVar4 < uVar5) {\n      return 0xffffffff;\n    }\n    if (uVar5 < uVar4) {\n      return 1;\n    }\n  }" if (parenthesized_expression "(*(int *)(this + 0x10) << 0x1c < 0)" ( (binary_expression "*(int *)(this + 0x10) << 0x1c < 0" (binary_expression "*(int *)(this + 0x10) << 0x1c" (pointer_expression "*(int *)(this + 0x10)" * (cast_expression "(int *)(this + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x10)" ( (binary_expression "this + 0x10" identifier + number_literal) )))) << number_literal) < number_literal) )) (compound_statement "{\n    if (-1 < *(int *)(param_1 + 0x10) << 0x1c) {\n      return 0xffffffff;\n    }\n  }" { (if_statement "if (-1 < *(int *)(param_1 + 0x10) << 0x1c) {\n      return 0xffffffff;\n    }" if (parenthesized_expression "(-1 < *(int *)(param_1 + 0x10) << 0x1c)" ( (binary_expression "-1 < *(int *)(param_1 + 0x10) << 0x1c" number_literal < (binary_expression "*(int *)(param_1 + 0x10) << 0x1c" (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) << number_literal)) )) (compound_statement "{\n      return 0xffffffff;\n    }" { (return_statement "return 0xffffffff;" return number_literal ;) })) }) (else_clause "else {\n    if (*(int *)(param_1 + 0x10) << 0x1c < 0) {\n      return 1;\n    }\n    uVar4 = (*(code *)PTR_get_symbol_index_004c4340)();\n    uVar5 = (*(code *)puVar1)(param_1);\n    if (uVar4 < uVar5) {\n      return 0xffffffff;\n    }\n    if (uVar5 < uVar4) {\n      return 1;\n    }\n  }" else (compound_statement "{\n    if (*(int *)(param_1 + 0x10) << 0x1c < 0) {\n      return 1;\n    }\n    uVar4 = (*(code *)PTR_get_symbol_index_004c4340)();\n    uVar5 = (*(code *)puVar1)(param_1);\n    if (uVar4 < uVar5) {\n      return 0xffffffff;\n    }\n    if (uVar5 < uVar4) {\n      return 1;\n    }\n  }" { (if_statement "if (*(int *)(param_1 + 0x10) << 0x1c < 0) {\n      return 1;\n    }" if (parenthesized_expression "(*(int *)(param_1 + 0x10) << 0x1c < 0)" ( (binary_expression "*(int *)(param_1 + 0x10) << 0x1c < 0" (binary_expression "*(int *)(param_1 + 0x10) << 0x1c" (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) << number_literal) < number_literal) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "uVar4 = (*(code *)PTR_get_symbol_index_004c4340)();" (assignment_expression "uVar4 = (*(code *)PTR_get_symbol_index_004c4340)()" identifier = (call_expression "(*(code *)PTR_get_symbol_index_004c4340)()" (parenthesized_expression "(*(code *)PTR_get_symbol_index_004c4340)" ( (pointer_expression "*(code *)PTR_get_symbol_index_004c4340" * (cast_expression "(code *)PTR_get_symbol_index_004c4340" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( )))) ;) (expression_statement "uVar5 = (*(code *)puVar1)(param_1);" (assignment_expression "uVar5 = (*(code *)puVar1)(param_1)" identifier = (call_expression "(*(code *)puVar1)(param_1)" (parenthesized_expression "(*(code *)puVar1)" ( (pointer_expression "*(code *)puVar1" * (cast_expression "(code *)puVar1" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (uVar4 < uVar5) {\n      return 0xffffffff;\n    }" if (parenthesized_expression "(uVar4 < uVar5)" ( (binary_expression "uVar4 < uVar5" identifier < identifier) )) (compound_statement "{\n      return 0xffffffff;\n    }" { (return_statement "return 0xffffffff;" return number_literal ;) })) (if_statement "if (uVar5 < uVar4) {\n      return 1;\n    }" if (parenthesized_expression "(uVar5 < uVar4)" ( (binary_expression "uVar5 < uVar4" identifier < identifier) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) }))) (expression_statement "iVar2 = get_address(this);" (assignment_expression "iVar2 = get_address(this)" identifier = (call_expression "get_address(this)" identifier (argument_list "(this)" ( identifier )))) ;) (expression_statement "iVar3 = get_address((Output_reloc<9,true,32,false> *)param_1);" (assignment_expression "iVar3 = get_address((Output_reloc<9,true,32,false> *)param_1)" identifier = (call_expression "get_address((Output_reloc<9,true,32,false> *)param_1)" identifier (argument_list "((Output_reloc<9,true,32,false> *)param_1)" ( (parenthesized_expression "(Output_reloc<9,true,32,false> *)param_1)" ( (comma_expression "Output_reloc<9,true,32,false> *)param_1" (binary_expression "Output_reloc<9" identifier < number_literal) , (comma_expression "true,32,false> *)param_1" true , (comma_expression "32,false> *)param_1" number_literal , (binary_expression "false> *)param_1" false > (pointer_expression "*)param_1" * (ERROR ")" )) identifier))))) )) )))) ;) (if_statement "if (iVar3 <= iVar2) {\n    if (iVar3 < iVar2) {\n      return 1;\n    }\n    if (*(uint *)(param_1 + 0x10) >> 4 <= *(uint *)(this + 0x10) >> 4) {\n      return (uint)(*(uint *)(param_1 + 0x10) >> 4 < *(uint *)(this + 0x10) >> 4);\n    }\n  }" if (parenthesized_expression "(iVar3 <= iVar2)" ( (binary_expression "iVar3 <= iVar2" identifier <= identifier) )) (compound_statement "{\n    if (iVar3 < iVar2) {\n      return 1;\n    }\n    if (*(uint *)(param_1 + 0x10) >> 4 <= *(uint *)(this + 0x10) >> 4) {\n      return (uint)(*(uint *)(param_1 + 0x10) >> 4 < *(uint *)(this + 0x10) >> 4);\n    }\n  }" { (if_statement "if (iVar3 < iVar2) {\n      return 1;\n    }" if (parenthesized_expression "(iVar3 < iVar2)" ( (binary_expression "iVar3 < iVar2" identifier < identifier) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) (if_statement "if (*(uint *)(param_1 + 0x10) >> 4 <= *(uint *)(this + 0x10) >> 4) {\n      return (uint)(*(uint *)(param_1 + 0x10) >> 4 < *(uint *)(this + 0x10) >> 4);\n    }" if (parenthesized_expression "(*(uint *)(param_1 + 0x10) >> 4 <= *(uint *)(this + 0x10) >> 4)" ( (binary_expression "*(uint *)(param_1 + 0x10) >> 4 <= *(uint *)(this + 0x10) >> 4" (binary_expression "*(uint *)(param_1 + 0x10) >> 4" (pointer_expression "*(uint *)(param_1 + 0x10)" * (cast_expression "(uint *)(param_1 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) >> number_literal) <= (binary_expression "*(uint *)(this + 0x10) >> 4" (pointer_expression "*(uint *)(this + 0x10)" * (cast_expression "(uint *)(this + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x10)" ( (binary_expression "this + 0x10" identifier + number_literal) )))) >> number_literal)) )) (compound_statement "{\n      return (uint)(*(uint *)(param_1 + 0x10) >> 4 < *(uint *)(this + 0x10) >> 4);\n    }" { (return_statement "return (uint)(*(uint *)(param_1 + 0x10) >> 4 < *(uint *)(this + 0x10) >> 4);" return (call_expression "(uint)(*(uint *)(param_1 + 0x10) >> 4 < *(uint *)(this + 0x10) >> 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(uint *)(param_1 + 0x10) >> 4 < *(uint *)(this + 0x10) >> 4)" ( (binary_expression "*(uint *)(param_1 + 0x10) >> 4 < *(uint *)(this + 0x10) >> 4" (binary_expression "*(uint *)(param_1 + 0x10) >> 4" (pointer_expression "*(uint *)(param_1 + 0x10)" * (cast_expression "(uint *)(param_1 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) >> number_literal) < (binary_expression "*(uint *)(this + 0x10) >> 4" (pointer_expression "*(uint *)(this + 0x10)" * (cast_expression "(uint *)(this + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x10)" ( (binary_expression "this + 0x10" identifier + number_literal) )))) >> number_literal)) ))) ;) })) })) (return_statement "return 0xffffffff;" return number_literal ;) (ERROR "}" }))
(translation_unit "/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */\n/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */\n/* DWARF original prototype: int compare(Output_reloc<9,_true,_32,_false> * this,\n   Output_reloc<9,_true,_32,_false> * r2) */\n\nint __thiscall\ngold::Output_reloc<9,_true,_32,_false>::compare\n          (Output_reloc<9,_true,_32,_false> *this,Output_reloc<9,_true,_32,_false> *r2)\n\n{\n  int iVar1;\n  undefined *puVar2;\n  Elf_Addr EVar3;\n  Elf_Addr EVar4;\n  uint uVar5;\n  uint uVar6;\n  \n  puVar2 = PTR_get_symbol_index_004c4340;\n  iVar1 = *(int *)&r2->field_0x10 << 0x1c;\n  if (*(int *)&this->field_0x10 << 0x1c < 0) {\n    if (-1 < iVar1) {\n      return -1;\n    }\n  }\n  else {\n    if (iVar1 < 0) {\n      return 1;\n    }\n    uVar5 = (*(code *)PTR_get_symbol_index_004c4340)();\n    uVar6 = (*(code *)puVar2)(r2);\n    if (uVar5 < uVar6) {\n      return -1;\n    }\n    if (uVar6 < uVar5) {\n      return 1;\n    }\n  }\n  EVar3 = get_address(this);\n  EVar4 = get_address(r2);\n  if ((int)EVar4 <= (int)EVar3) {\n    if ((int)EVar4 < (int)EVar3) {\n      return 1;\n    }\n    uVar5 = *(uint *)&this->field_0x10 >> 4;\n    uVar6 = *(uint *)&r2->field_0x10 >> 4;\n    if (uVar6 <= uVar5) {\n      return (uint)(uVar6 < uVar5);\n    }\n  }\n  return -1;\n}\n\n" comment comment comment (declaration "int __thiscall\ngold::Output_reloc<9,_true,_32,_false>::compare\n          (Output_reloc<9,_true,_32,_false> *this,Output_reloc<9,_true,_32,_false> *r2)\n\n{\n  int iVar1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::" identifier : :) identifier (ERROR "<9" < number_literal) , identifier , identifier , (ERROR "_false>::compare\n          (Output_reloc<9,_true,_32,_false> *this,Output_reloc<9,_true,_32,_false> *r2)\n\n{\n  int" identifier > : : (function_declarator "compare\n          (Output_reloc<9,_true,_32,_false> *this,Output_reloc<9,_true,_32,_false> *r2)" identifier (parameter_list "(Output_reloc<9,_true,_32,_false> *this,Output_reloc<9,_true,_32,_false> *r2)" ( (parameter_declaration "Output_reloc" type_identifier) (ERROR "<9" < number_literal) , (parameter_declaration "_true" type_identifier) , (parameter_declaration "_32" type_identifier) , (parameter_declaration "_false> *this" type_identifier (ERROR ">" >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "Output_reloc" type_identifier) (ERROR "<9" < number_literal) , (parameter_declaration "_true" type_identifier) , (parameter_declaration "_32" type_identifier) , (parameter_declaration "_false> *r2" type_identifier (ERROR ">" >) (pointer_declarator "*r2" * identifier)) ))) { primitive_type) identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "Elf_Addr EVar3;" type_identifier identifier ;) (declaration "Elf_Addr EVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (expression_statement "puVar2 = PTR_get_symbol_index_004c4340;" (assignment_expression "puVar2 = PTR_get_symbol_index_004c4340" identifier = identifier) ;) (expression_statement "iVar1 = *(int *)&r2->field_0x10 << 0x1c;" (assignment_expression "iVar1 = *(int *)&r2->field_0x10 << 0x1c" identifier = (binary_expression "*(int *)&r2->field_0x10 << 0x1c" (pointer_expression "*(int *)&r2->field_0x10" * (cast_expression "(int *)&r2->field_0x10" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&r2->field_0x10" & (field_expression "r2->field_0x10" identifier -> field_identifier)))) << number_literal)) ;) (if_statement "if (*(int *)&this->field_0x10 << 0x1c < 0) {\n    if (-1 < iVar1) {\n      return -1;\n    }\n  }\n  else {\n    if (iVar1 < 0) {\n      return 1;\n    }\n    uVar5 = (*(code *)PTR_get_symbol_index_004c4340)();\n    uVar6 = (*(code *)puVar2)(r2);\n    if (uVar5 < uVar6) {\n      return -1;\n    }\n    if (uVar6 < uVar5) {\n      return 1;\n    }\n  }" if (parenthesized_expression "(*(int *)&this->field_0x10 << 0x1c < 0)" ( (binary_expression "*(int *)&this->field_0x10 << 0x1c < 0" (binary_expression "*(int *)&this->field_0x10 << 0x1c" (pointer_expression "*(int *)&this->field_0x10" * (cast_expression "(int *)&this->field_0x10" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->field_0x10" & (field_expression "this->field_0x10" identifier -> field_identifier)))) << number_literal) < number_literal) )) (compound_statement "{\n    if (-1 < iVar1) {\n      return -1;\n    }\n  }" { (if_statement "if (-1 < iVar1) {\n      return -1;\n    }" if (parenthesized_expression "(-1 < iVar1)" ( (binary_expression "-1 < iVar1" number_literal < identifier) )) (compound_statement "{\n      return -1;\n    }" { (return_statement "return -1;" return number_literal ;) })) }) (else_clause "else {\n    if (iVar1 < 0) {\n      return 1;\n    }\n    uVar5 = (*(code *)PTR_get_symbol_index_004c4340)();\n    uVar6 = (*(code *)puVar2)(r2);\n    if (uVar5 < uVar6) {\n      return -1;\n    }\n    if (uVar6 < uVar5) {\n      return 1;\n    }\n  }" else (compound_statement "{\n    if (iVar1 < 0) {\n      return 1;\n    }\n    uVar5 = (*(code *)PTR_get_symbol_index_004c4340)();\n    uVar6 = (*(code *)puVar2)(r2);\n    if (uVar5 < uVar6) {\n      return -1;\n    }\n    if (uVar6 < uVar5) {\n      return 1;\n    }\n  }" { (if_statement "if (iVar1 < 0) {\n      return 1;\n    }" if (parenthesized_expression "(iVar1 < 0)" ( (binary_expression "iVar1 < 0" identifier < number_literal) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "uVar5 = (*(code *)PTR_get_symbol_index_004c4340)();" (assignment_expression "uVar5 = (*(code *)PTR_get_symbol_index_004c4340)()" identifier = (call_expression "(*(code *)PTR_get_symbol_index_004c4340)()" (parenthesized_expression "(*(code *)PTR_get_symbol_index_004c4340)" ( (pointer_expression "*(code *)PTR_get_symbol_index_004c4340" * (cast_expression "(code *)PTR_get_symbol_index_004c4340" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( )))) ;) (expression_statement "uVar6 = (*(code *)puVar2)(r2);" (assignment_expression "uVar6 = (*(code *)puVar2)(r2)" identifier = (call_expression "(*(code *)puVar2)(r2)" (parenthesized_expression "(*(code *)puVar2)" ( (pointer_expression "*(code *)puVar2" * (cast_expression "(code *)puVar2" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(r2)" ( identifier )))) ;) (if_statement "if (uVar5 < uVar6) {\n      return -1;\n    }" if (parenthesized_expression "(uVar5 < uVar6)" ( (binary_expression "uVar5 < uVar6" identifier < identifier) )) (compound_statement "{\n      return -1;\n    }" { (return_statement "return -1;" return number_literal ;) })) (if_statement "if (uVar6 < uVar5) {\n      return 1;\n    }" if (parenthesized_expression "(uVar6 < uVar5)" ( (binary_expression "uVar6 < uVar5" identifier < identifier) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) }))) (expression_statement "EVar3 = get_address(this);" (assignment_expression "EVar3 = get_address(this)" identifier = (call_expression "get_address(this)" identifier (argument_list "(this)" ( identifier )))) ;) (expression_statement "EVar4 = get_address(r2);" (assignment_expression "EVar4 = get_address(r2)" identifier = (call_expression "get_address(r2)" identifier (argument_list "(r2)" ( identifier )))) ;) (if_statement "if ((int)EVar4 <= (int)EVar3) {\n    if ((int)EVar4 < (int)EVar3) {\n      return 1;\n    }\n    uVar5 = *(uint *)&this->field_0x10 >> 4;\n    uVar6 = *(uint *)&r2->field_0x10 >> 4;\n    if (uVar6 <= uVar5) {\n      return (uint)(uVar6 < uVar5);\n    }\n  }" if (parenthesized_expression "((int)EVar4 <= (int)EVar3)" ( (binary_expression "(int)EVar4 <= (int)EVar3" (cast_expression "(int)EVar4" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)EVar3" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    if ((int)EVar4 < (int)EVar3) {\n      return 1;\n    }\n    uVar5 = *(uint *)&this->field_0x10 >> 4;\n    uVar6 = *(uint *)&r2->field_0x10 >> 4;\n    if (uVar6 <= uVar5) {\n      return (uint)(uVar6 < uVar5);\n    }\n  }" { (if_statement "if ((int)EVar4 < (int)EVar3) {\n      return 1;\n    }" if (parenthesized_expression "((int)EVar4 < (int)EVar3)" ( (binary_expression "(int)EVar4 < (int)EVar3" (cast_expression "(int)EVar4" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)EVar3" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "uVar5 = *(uint *)&this->field_0x10 >> 4;" (assignment_expression "uVar5 = *(uint *)&this->field_0x10 >> 4" identifier = (binary_expression "*(uint *)&this->field_0x10 >> 4" (pointer_expression "*(uint *)&this->field_0x10" * (cast_expression "(uint *)&this->field_0x10" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->field_0x10" & (field_expression "this->field_0x10" identifier -> field_identifier)))) >> number_literal)) ;) (expression_statement "uVar6 = *(uint *)&r2->field_0x10 >> 4;" (assignment_expression "uVar6 = *(uint *)&r2->field_0x10 >> 4" identifier = (binary_expression "*(uint *)&r2->field_0x10 >> 4" (pointer_expression "*(uint *)&r2->field_0x10" * (cast_expression "(uint *)&r2->field_0x10" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&r2->field_0x10" & (field_expression "r2->field_0x10" identifier -> field_identifier)))) >> number_literal)) ;) (if_statement "if (uVar6 <= uVar5) {\n      return (uint)(uVar6 < uVar5);\n    }" if (parenthesized_expression "(uVar6 <= uVar5)" ( (binary_expression "uVar6 <= uVar5" identifier <= identifier) )) (compound_statement "{\n      return (uint)(uVar6 < uVar5);\n    }" { (return_statement "return (uint)(uVar6 < uVar5);" return (call_expression "(uint)(uVar6 < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar6 < uVar5)" ( (binary_expression "uVar6 < uVar5" identifier < identifier) ))) ;) })) })) (return_statement "return -1;" return number_literal ;) (ERROR "}" }))
(translation_unit "uint __thiscall\ngold::Output_reloc<9,true,32,false>::compare\n          (Output_reloc<9,true,32,false> *this,Output_reloc *param_1)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  uint uVar4;\n  uint uVar5;\n  \n  puVar1 = PTR_get_symbol_index_004c4340;\n  if (*(int *)(this + 0x10) << 0x1c < 0) {\n    if (-1 < *(int *)(param_1 + 0x10) << 0x1c) {\n      return 0xffffffff;\n    }\n  }\n  else {\n    if (*(int *)(param_1 + 0x10) << 0x1c < 0) {\n      return 1;\n    }\n    uVar4 = (*(code *)PTR_get_symbol_index_004c4340)();\n    uVar5 = (*(code *)puVar1)(param_1);\n    if (uVar4 < uVar5) {\n      return 0xffffffff;\n    }\n    if (uVar5 < uVar4) {\n      return 1;\n    }\n  }\n  iVar2 = get_address(this);\n  iVar3 = get_address((Output_reloc<9,true,32,false> *)param_1);\n  if (iVar3 <= iVar2) {\n    if (iVar3 < iVar2) {\n      return 1;\n    }\n    if (*(uint *)(param_1 + 0x10) >> 4 <= *(uint *)(this + 0x10) >> 4) {\n      return (uint)(*(uint *)(param_1 + 0x10) >> 4 < *(uint *)(this + 0x10) >> 4);\n    }\n  }\n  return 0xffffffff;\n}\n\n" (declaration "uint __thiscall\ngold::Output_reloc<9,true,32,false>::compare\n          (Output_reloc<9,true,32,false> *this,Output_reloc *param_1)\n\n{\n  undefined *puVar1;" type_identifier (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::" identifier : :) identifier (ERROR "<9" < number_literal) , identifier (ERROR ",32" , number_literal) , (ERROR "false>::compare\n          (Output_reloc<9,true,32,false> *this,Output_reloc *param_1)\n\n{\n  undefined" identifier > : : (function_declarator "compare\n          (Output_reloc<9,true,32,false> *this,Output_reloc *param_1)" identifier (parameter_list "(Output_reloc<9,true,32,false> *this,Output_reloc *param_1)" ( (parameter_declaration "Output_reloc" type_identifier) (ERROR "<9" < number_literal) , (parameter_declaration "true" type_identifier) (ERROR ",32" , number_literal) , (parameter_declaration "false> *this" type_identifier (ERROR ">" >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "Output_reloc *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) { identifier) (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (expression_statement "puVar1 = PTR_get_symbol_index_004c4340;" (assignment_expression "puVar1 = PTR_get_symbol_index_004c4340" identifier = identifier) ;) (if_statement "if (*(int *)(this + 0x10) << 0x1c < 0) {\n    if (-1 < *(int *)(param_1 + 0x10) << 0x1c) {\n      return 0xffffffff;\n    }\n  }\n  else {\n    if (*(int *)(param_1 + 0x10) << 0x1c < 0) {\n      return 1;\n    }\n    uVar4 = (*(code *)PTR_get_symbol_index_004c4340)();\n    uVar5 = (*(code *)puVar1)(param_1);\n    if (uVar4 < uVar5) {\n      return 0xffffffff;\n    }\n    if (uVar5 < uVar4) {\n      return 1;\n    }\n  }" if (parenthesized_expression "(*(int *)(this + 0x10) << 0x1c < 0)" ( (binary_expression "*(int *)(this + 0x10) << 0x1c < 0" (binary_expression "*(int *)(this + 0x10) << 0x1c" (pointer_expression "*(int *)(this + 0x10)" * (cast_expression "(int *)(this + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x10)" ( (binary_expression "this + 0x10" identifier + number_literal) )))) << number_literal) < number_literal) )) (compound_statement "{\n    if (-1 < *(int *)(param_1 + 0x10) << 0x1c) {\n      return 0xffffffff;\n    }\n  }" { (if_statement "if (-1 < *(int *)(param_1 + 0x10) << 0x1c) {\n      return 0xffffffff;\n    }" if (parenthesized_expression "(-1 < *(int *)(param_1 + 0x10) << 0x1c)" ( (binary_expression "-1 < *(int *)(param_1 + 0x10) << 0x1c" number_literal < (binary_expression "*(int *)(param_1 + 0x10) << 0x1c" (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) << number_literal)) )) (compound_statement "{\n      return 0xffffffff;\n    }" { (return_statement "return 0xffffffff;" return number_literal ;) })) }) (else_clause "else {\n    if (*(int *)(param_1 + 0x10) << 0x1c < 0) {\n      return 1;\n    }\n    uVar4 = (*(code *)PTR_get_symbol_index_004c4340)();\n    uVar5 = (*(code *)puVar1)(param_1);\n    if (uVar4 < uVar5) {\n      return 0xffffffff;\n    }\n    if (uVar5 < uVar4) {\n      return 1;\n    }\n  }" else (compound_statement "{\n    if (*(int *)(param_1 + 0x10) << 0x1c < 0) {\n      return 1;\n    }\n    uVar4 = (*(code *)PTR_get_symbol_index_004c4340)();\n    uVar5 = (*(code *)puVar1)(param_1);\n    if (uVar4 < uVar5) {\n      return 0xffffffff;\n    }\n    if (uVar5 < uVar4) {\n      return 1;\n    }\n  }" { (if_statement "if (*(int *)(param_1 + 0x10) << 0x1c < 0) {\n      return 1;\n    }" if (parenthesized_expression "(*(int *)(param_1 + 0x10) << 0x1c < 0)" ( (binary_expression "*(int *)(param_1 + 0x10) << 0x1c < 0" (binary_expression "*(int *)(param_1 + 0x10) << 0x1c" (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) << number_literal) < number_literal) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "uVar4 = (*(code *)PTR_get_symbol_index_004c4340)();" (assignment_expression "uVar4 = (*(code *)PTR_get_symbol_index_004c4340)()" identifier = (call_expression "(*(code *)PTR_get_symbol_index_004c4340)()" (parenthesized_expression "(*(code *)PTR_get_symbol_index_004c4340)" ( (pointer_expression "*(code *)PTR_get_symbol_index_004c4340" * (cast_expression "(code *)PTR_get_symbol_index_004c4340" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( )))) ;) (expression_statement "uVar5 = (*(code *)puVar1)(param_1);" (assignment_expression "uVar5 = (*(code *)puVar1)(param_1)" identifier = (call_expression "(*(code *)puVar1)(param_1)" (parenthesized_expression "(*(code *)puVar1)" ( (pointer_expression "*(code *)puVar1" * (cast_expression "(code *)puVar1" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (uVar4 < uVar5) {\n      return 0xffffffff;\n    }" if (parenthesized_expression "(uVar4 < uVar5)" ( (binary_expression "uVar4 < uVar5" identifier < identifier) )) (compound_statement "{\n      return 0xffffffff;\n    }" { (return_statement "return 0xffffffff;" return number_literal ;) })) (if_statement "if (uVar5 < uVar4) {\n      return 1;\n    }" if (parenthesized_expression "(uVar5 < uVar4)" ( (binary_expression "uVar5 < uVar4" identifier < identifier) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) }))) (expression_statement "iVar2 = get_address(this);" (assignment_expression "iVar2 = get_address(this)" identifier = (call_expression "get_address(this)" identifier (argument_list "(this)" ( identifier )))) ;) (expression_statement "iVar3 = get_address((Output_reloc<9,true,32,false> *)param_1);" (assignment_expression "iVar3 = get_address((Output_reloc<9,true,32,false> *)param_1)" identifier = (call_expression "get_address((Output_reloc<9,true,32,false> *)param_1)" identifier (argument_list "((Output_reloc<9,true,32,false> *)param_1)" ( (parenthesized_expression "(Output_reloc<9,true,32,false> *)param_1)" ( (comma_expression "Output_reloc<9,true,32,false> *)param_1" (binary_expression "Output_reloc<9" identifier < number_literal) , (comma_expression "true,32,false> *)param_1" true , (comma_expression "32,false> *)param_1" number_literal , (binary_expression "false> *)param_1" false > (pointer_expression "*)param_1" * (ERROR ")" )) identifier))))) )) )))) ;) (if_statement "if (iVar3 <= iVar2) {\n    if (iVar3 < iVar2) {\n      return 1;\n    }\n    if (*(uint *)(param_1 + 0x10) >> 4 <= *(uint *)(this + 0x10) >> 4) {\n      return (uint)(*(uint *)(param_1 + 0x10) >> 4 < *(uint *)(this + 0x10) >> 4);\n    }\n  }" if (parenthesized_expression "(iVar3 <= iVar2)" ( (binary_expression "iVar3 <= iVar2" identifier <= identifier) )) (compound_statement "{\n    if (iVar3 < iVar2) {\n      return 1;\n    }\n    if (*(uint *)(param_1 + 0x10) >> 4 <= *(uint *)(this + 0x10) >> 4) {\n      return (uint)(*(uint *)(param_1 + 0x10) >> 4 < *(uint *)(this + 0x10) >> 4);\n    }\n  }" { (if_statement "if (iVar3 < iVar2) {\n      return 1;\n    }" if (parenthesized_expression "(iVar3 < iVar2)" ( (binary_expression "iVar3 < iVar2" identifier < identifier) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) (if_statement "if (*(uint *)(param_1 + 0x10) >> 4 <= *(uint *)(this + 0x10) >> 4) {\n      return (uint)(*(uint *)(param_1 + 0x10) >> 4 < *(uint *)(this + 0x10) >> 4);\n    }" if (parenthesized_expression "(*(uint *)(param_1 + 0x10) >> 4 <= *(uint *)(this + 0x10) >> 4)" ( (binary_expression "*(uint *)(param_1 + 0x10) >> 4 <= *(uint *)(this + 0x10) >> 4" (binary_expression "*(uint *)(param_1 + 0x10) >> 4" (pointer_expression "*(uint *)(param_1 + 0x10)" * (cast_expression "(uint *)(param_1 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) >> number_literal) <= (binary_expression "*(uint *)(this + 0x10) >> 4" (pointer_expression "*(uint *)(this + 0x10)" * (cast_expression "(uint *)(this + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x10)" ( (binary_expression "this + 0x10" identifier + number_literal) )))) >> number_literal)) )) (compound_statement "{\n      return (uint)(*(uint *)(param_1 + 0x10) >> 4 < *(uint *)(this + 0x10) >> 4);\n    }" { (return_statement "return (uint)(*(uint *)(param_1 + 0x10) >> 4 < *(uint *)(this + 0x10) >> 4);" return (call_expression "(uint)(*(uint *)(param_1 + 0x10) >> 4 < *(uint *)(this + 0x10) >> 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(uint *)(param_1 + 0x10) >> 4 < *(uint *)(this + 0x10) >> 4)" ( (binary_expression "*(uint *)(param_1 + 0x10) >> 4 < *(uint *)(this + 0x10) >> 4" (binary_expression "*(uint *)(param_1 + 0x10) >> 4" (pointer_expression "*(uint *)(param_1 + 0x10)" * (cast_expression "(uint *)(param_1 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) >> number_literal) < (binary_expression "*(uint *)(this + 0x10) >> 4" (pointer_expression "*(uint *)(this + 0x10)" * (cast_expression "(uint *)(this + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x10)" ( (binary_expression "this + 0x10" identifier + number_literal) )))) >> number_literal)) ))) ;) })) })) (return_statement "return 0xffffffff;" return number_literal ;) (ERROR "}" }))
(translation_unit (declaration TYPE (ms_call_modifier __thiscall) (ERROR IDENT : :) IDENT (ERROR < LIT) , IDENT (ERROR , LIT) , (ERROR IDENT > : : (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE) (ERROR < LIT) , (parameter_declaration TYPE) (ERROR , LIT) , (parameter_declaration TYPE (ERROR >) (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) { IDENT) (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) << LIT) < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) << LIT)) )) (compound_statement { (return_statement return LIT ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) << LIT) < LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (return_statement return LIT ;) })) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (parenthesized_expression ( (comma_expression (binary_expression IDENT < LIT) , (comma_expression BOOL , (comma_expression LIT , (binary_expression BOOL > (pointer_expression * (ERROR )) IDENT))))) )) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) >> LIT) <= (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) >> LIT)) )) (compound_statement { (return_statement return (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) >> LIT) < (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) >> LIT)) ))) ;) })) })) (return_statement return LIT ;) (ERROR }))
(declaration "uint __thiscall\ngold::Output_reloc<9,true,32,false>::compare\n          (Output_reloc<9,true,32,false> *this,Output_reloc *param_1)\n\n{\n  undefined *puVar1;" (type_identifier "uint") (ms_call_modifier "__thiscall" (__thiscall "__thiscall")) (ERROR "gold::" (identifier "gold") (: ":") (: ":")) (identifier "Output_reloc") (ERROR "<9" (< "<") (number_literal "9")) (, ",") (identifier "true") (ERROR ",32" (, ",") (number_literal "32")) (, ",") (ERROR "false>::compare\n          (Output_reloc<9,true,32,false> *this,Output_reloc *param_1)\n\n{\n  undefined" (identifier "false") (> ">") (: ":") (: ":") (function_declarator "compare\n          (Output_reloc<9,true,32,false> *this,Output_reloc *param_1)" (identifier "compare") (parameter_list "(Output_reloc<9,true,32,false> *this,Output_reloc *param_1)" (( "(") (parameter_declaration "Output_reloc" (type_identifier "Output_reloc")) (ERROR "<9" (< "<") (number_literal "9")) (, ",") (parameter_declaration "true" (type_identifier "true")) (ERROR ",32" (, ",") (number_literal "32")) (, ",") (parameter_declaration "false> *this" (type_identifier "false") (ERROR ">" (> ">")) (pointer_declarator "*this" (* "*") (identifier "this"))) (, ",") (parameter_declaration "Output_reloc *param_1" (type_identifier "Output_reloc") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) ({ "{") (identifier "undefined")) (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (expression_statement "puVar1 = PTR_get_symbol_index_004c4340;" (assignment_expression "puVar1 = PTR_get_symbol_index_004c4340" (identifier "puVar1") (= "=") (identifier "PTR_get_symbol_index_004c4340")) (; ";")) (if_statement "if (*(int *)(this + 0x10) << 0x1c < 0) {\n    if (-1 < *(int *)(param_1 + 0x10) << 0x1c) {\n      return 0xffffffff;\n    }\n  }\n  else {\n    if (*(int *)(param_1 + 0x10) << 0x1c < 0) {\n      return 1;\n    }\n    uVar4 = (*(code *)PTR_get_symbol_index_004c4340)();\n    uVar5 = (*(code *)puVar1)(param_1);\n    if (uVar4 < uVar5) {\n      return 0xffffffff;\n    }\n    if (uVar5 < uVar4) {\n      return 1;\n    }\n  }" (if "if") (parenthesized_expression "(*(int *)(this + 0x10) << 0x1c < 0)" (( "(") (binary_expression "*(int *)(this + 0x10) << 0x1c < 0" (binary_expression "*(int *)(this + 0x10) << 0x1c" (pointer_expression "*(int *)(this + 0x10)" (* "*") (cast_expression "(int *)(this + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 0x10)" (( "(") (binary_expression "this + 0x10" (identifier "this") (+ "+") (number_literal "0x10")) () ")")))) (<< "<<") (number_literal "0x1c")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n    if (-1 < *(int *)(param_1 + 0x10) << 0x1c) {\n      return 0xffffffff;\n    }\n  }" ({ "{") (if_statement "if (-1 < *(int *)(param_1 + 0x10) << 0x1c) {\n      return 0xffffffff;\n    }" (if "if") (parenthesized_expression "(-1 < *(int *)(param_1 + 0x10) << 0x1c)" (( "(") (binary_expression "-1 < *(int *)(param_1 + 0x10) << 0x1c" (number_literal "-1") (< "<") (binary_expression "*(int *)(param_1 + 0x10) << 0x1c" (pointer_expression "*(int *)(param_1 + 0x10)" (* "*") (cast_expression "(int *)(param_1 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (<< "<<") (number_literal "0x1c"))) () ")")) (compound_statement "{\n      return 0xffffffff;\n    }" ({ "{") (return_statement "return 0xffffffff;" (return "return") (number_literal "0xffffffff") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    if (*(int *)(param_1 + 0x10) << 0x1c < 0) {\n      return 1;\n    }\n    uVar4 = (*(code *)PTR_get_symbol_index_004c4340)();\n    uVar5 = (*(code *)puVar1)(param_1);\n    if (uVar4 < uVar5) {\n      return 0xffffffff;\n    }\n    if (uVar5 < uVar4) {\n      return 1;\n    }\n  }" (else "else") (compound_statement "{\n    if (*(int *)(param_1 + 0x10) << 0x1c < 0) {\n      return 1;\n    }\n    uVar4 = (*(code *)PTR_get_symbol_index_004c4340)();\n    uVar5 = (*(code *)puVar1)(param_1);\n    if (uVar4 < uVar5) {\n      return 0xffffffff;\n    }\n    if (uVar5 < uVar4) {\n      return 1;\n    }\n  }" ({ "{") (if_statement "if (*(int *)(param_1 + 0x10) << 0x1c < 0) {\n      return 1;\n    }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x10) << 0x1c < 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x10) << 0x1c < 0" (binary_expression "*(int *)(param_1 + 0x10) << 0x1c" (pointer_expression "*(int *)(param_1 + 0x10)" (* "*") (cast_expression "(int *)(param_1 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (<< "<<") (number_literal "0x1c")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      return 1;\n    }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (expression_statement "uVar4 = (*(code *)PTR_get_symbol_index_004c4340)();" (assignment_expression "uVar4 = (*(code *)PTR_get_symbol_index_004c4340)()" (identifier "uVar4") (= "=") (call_expression "(*(code *)PTR_get_symbol_index_004c4340)()" (parenthesized_expression "(*(code *)PTR_get_symbol_index_004c4340)" (( "(") (pointer_expression "*(code *)PTR_get_symbol_index_004c4340" (* "*") (cast_expression "(code *)PTR_get_symbol_index_004c4340" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_get_symbol_index_004c4340"))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "uVar5 = (*(code *)puVar1)(param_1);" (assignment_expression "uVar5 = (*(code *)puVar1)(param_1)" (identifier "uVar5") (= "=") (call_expression "(*(code *)puVar1)(param_1)" (parenthesized_expression "(*(code *)puVar1)" (( "(") (pointer_expression "*(code *)puVar1" (* "*") (cast_expression "(code *)puVar1" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar1"))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (if_statement "if (uVar4 < uVar5) {\n      return 0xffffffff;\n    }" (if "if") (parenthesized_expression "(uVar4 < uVar5)" (( "(") (binary_expression "uVar4 < uVar5" (identifier "uVar4") (< "<") (identifier "uVar5")) () ")")) (compound_statement "{\n      return 0xffffffff;\n    }" ({ "{") (return_statement "return 0xffffffff;" (return "return") (number_literal "0xffffffff") (; ";")) (} "}"))) (if_statement "if (uVar5 < uVar4) {\n      return 1;\n    }" (if "if") (parenthesized_expression "(uVar5 < uVar4)" (( "(") (binary_expression "uVar5 < uVar4" (identifier "uVar5") (< "<") (identifier "uVar4")) () ")")) (compound_statement "{\n      return 1;\n    }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (} "}")))) (expression_statement "iVar2 = get_address(this);" (assignment_expression "iVar2 = get_address(this)" (identifier "iVar2") (= "=") (call_expression "get_address(this)" (identifier "get_address") (argument_list "(this)" (( "(") (identifier "this") () ")")))) (; ";")) (expression_statement "iVar3 = get_address((Output_reloc<9,true,32,false> *)param_1);" (assignment_expression "iVar3 = get_address((Output_reloc<9,true,32,false> *)param_1)" (identifier "iVar3") (= "=") (call_expression "get_address((Output_reloc<9,true,32,false> *)param_1)" (identifier "get_address") (argument_list "((Output_reloc<9,true,32,false> *)param_1)" (( "(") (parenthesized_expression "(Output_reloc<9,true,32,false> *)param_1)" (( "(") (comma_expression "Output_reloc<9,true,32,false> *)param_1" (binary_expression "Output_reloc<9" (identifier "Output_reloc") (< "<") (number_literal "9")) (, ",") (comma_expression "true,32,false> *)param_1" (true "true") (, ",") (comma_expression "32,false> *)param_1" (number_literal "32") (, ",") (binary_expression "false> *)param_1" (false "false") (> ">") (pointer_expression "*)param_1" (* "*") (ERROR ")" () ")")) (identifier "param_1")))))) () ")")) () "")))) (; ";")) (if_statement "if (iVar3 <= iVar2) {\n    if (iVar3 < iVar2) {\n      return 1;\n    }\n    if (*(uint *)(param_1 + 0x10) >> 4 <= *(uint *)(this + 0x10) >> 4) {\n      return (uint)(*(uint *)(param_1 + 0x10) >> 4 < *(uint *)(this + 0x10) >> 4);\n    }\n  }" (if "if") (parenthesized_expression "(iVar3 <= iVar2)" (( "(") (binary_expression "iVar3 <= iVar2" (identifier "iVar3") (<= "<=") (identifier "iVar2")) () ")")) (compound_statement "{\n    if (iVar3 < iVar2) {\n      return 1;\n    }\n    if (*(uint *)(param_1 + 0x10) >> 4 <= *(uint *)(this + 0x10) >> 4) {\n      return (uint)(*(uint *)(param_1 + 0x10) >> 4 < *(uint *)(this + 0x10) >> 4);\n    }\n  }" ({ "{") (if_statement "if (iVar3 < iVar2) {\n      return 1;\n    }" (if "if") (parenthesized_expression "(iVar3 < iVar2)" (( "(") (binary_expression "iVar3 < iVar2" (identifier "iVar3") (< "<") (identifier "iVar2")) () ")")) (compound_statement "{\n      return 1;\n    }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (if_statement "if (*(uint *)(param_1 + 0x10) >> 4 <= *(uint *)(this + 0x10) >> 4) {\n      return (uint)(*(uint *)(param_1 + 0x10) >> 4 < *(uint *)(this + 0x10) >> 4);\n    }" (if "if") (parenthesized_expression "(*(uint *)(param_1 + 0x10) >> 4 <= *(uint *)(this + 0x10) >> 4)" (( "(") (binary_expression "*(uint *)(param_1 + 0x10) >> 4 <= *(uint *)(this + 0x10) >> 4" (binary_expression "*(uint *)(param_1 + 0x10) >> 4" (pointer_expression "*(uint *)(param_1 + 0x10)" (* "*") (cast_expression "(uint *)(param_1 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (>> ">>") (number_literal "4")) (<= "<=") (binary_expression "*(uint *)(this + 0x10) >> 4" (pointer_expression "*(uint *)(this + 0x10)" (* "*") (cast_expression "(uint *)(this + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 0x10)" (( "(") (binary_expression "this + 0x10" (identifier "this") (+ "+") (number_literal "0x10")) () ")")))) (>> ">>") (number_literal "4"))) () ")")) (compound_statement "{\n      return (uint)(*(uint *)(param_1 + 0x10) >> 4 < *(uint *)(this + 0x10) >> 4);\n    }" ({ "{") (return_statement "return (uint)(*(uint *)(param_1 + 0x10) >> 4 < *(uint *)(this + 0x10) >> 4);" (return "return") (call_expression "(uint)(*(uint *)(param_1 + 0x10) >> 4 < *(uint *)(this + 0x10) >> 4)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(uint *)(param_1 + 0x10) >> 4 < *(uint *)(this + 0x10) >> 4)" (( "(") (binary_expression "*(uint *)(param_1 + 0x10) >> 4 < *(uint *)(this + 0x10) >> 4" (binary_expression "*(uint *)(param_1 + 0x10) >> 4" (pointer_expression "*(uint *)(param_1 + 0x10)" (* "*") (cast_expression "(uint *)(param_1 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (>> ">>") (number_literal "4")) (< "<") (binary_expression "*(uint *)(this + 0x10) >> 4" (pointer_expression "*(uint *)(this + 0x10)" (* "*") (cast_expression "(uint *)(this + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 0x10)" (( "(") (binary_expression "this + 0x10" (identifier "this") (+ "+") (number_literal "0x10")) () ")")))) (>> ">>") (number_literal "4"))) () ")"))) (; ";")) (} "}"))) (} "}"))) (return_statement "return 0xffffffff;" (return "return") (number_literal "0xffffffff") (; ";")) (ERROR "}" (} "}"))

/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */
/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */
/* DWARF original prototype: int compare(Output_reloc<9,_true,_32,_false> * this,
   Output_reloc<9,_true,_32,_false> * r2) */

int __thiscall
gold::Output_reloc<9,_true,_32,_false>::compare
          (Output_reloc<9,_true,_32,_false> *this,Output_reloc<9,_true,_32,_false> *r2)

{
  int var_1;
  type_1 *puVar2;
  type_2 EVar3;
  type_2 EVar4;
  type_3 var_2;
  type_3 var_3;
  
  puVar2 = PTR_get_symbol_index_004c4340;
  var_1 = *(int *)&r2->field_0x10 << 0x1c;
  if (*(int *)&this->field_0x10 << 0x1c < 0) {
    if (-1 < var_1) {
      return -1;
    }
  }
  else {
    if (var_1 < 0) {
      return 1;
    }
    var_2 = (*(type_4 *)PTR_get_symbol_index_004c4340)();
    var_3 = (*(type_4 *)puVar2)(r2);
    if (var_2 < var_3) {
      return -1;
    }
    if (var_3 < var_2) {
      return 1;
    }
  }
  EVar3 = var_4(this);
  EVar4 = var_4(r2);
  if ((int)EVar4 <= (int)EVar3) {
    if ((int)EVar4 < (int)EVar3) {
      return 1;
    }
    var_2 = *(type_3 *)&this->field_0x10 >> 4;
    var_3 = *(type_3 *)&r2->field_0x10 >> 4;
    if (var_3 <= var_2) {
      return (type_3)(var_3 < var_2);
    }
  }
  return -1;
}


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

/* gold::Output_reloc<9, true, 32, false>::MASKED(gold::Output_reloc<9, true, 32, false> const&)
   const */

uint __thiscall
gold::Output_reloc<9,true,32,false>::MASKED
          (Output_reloc<9,true,32,false> *this,Output_reloc *param_1)

{
  undefined *puVar1;
  int iVar2;
  int iVar3;
  uint uVar4;
  uint uVar5;
  
  puVar1 = PTR_get_symbol_index_004c4340;
  if (*(int *)(this + 0x10) << 0x1c < 0) {
    if (-1 < *(int *)(param_1 + 0x10) << 0x1c) {
      return 0xffffffff;
    }
  }
  else {
    if (*(int *)(param_1 + 0x10) << 0x1c < 0) {
      return 1;
    }
    uVar4 = (*(code *)PTR_get_symbol_index_004c4340)();
    uVar5 = (*(code *)puVar1)(param_1);
    if (uVar4 < uVar5) {
      return 0xffffffff;
    }
    if (uVar5 < uVar4) {
      return 1;
    }
  }
  iVar2 = get_address(this);
  iVar3 = get_address((Output_reloc<9,true,32,false> *)param_1);
  if (iVar3 <= iVar2) {
    if (iVar3 < iVar2) {
      return 1;
    }
    if (*(uint *)(param_1 + 0x10) >> 4 <= *(uint *)(this + 0x10) >> 4) {
      return (uint)(*(uint *)(param_1 + 0x10) >> 4 < *(uint *)(this + 0x10) >> 4);
    }
  }
  return 0xffffffff;
}

