
/* DWARF original prototype: bool sort_before(Output_reloc<4,_true,_64,_true> * this,
   Output_reloc<4,_true,_64,_true> * r2) */

bool __thiscall
gold::Output_reloc<4,_true,_64,_true>::sort_before
          (Output_reloc<4,_true,_64,_true> *this,Output_reloc<4,_true,_64,_true> *r2)

{
  int iVar1;
  bool bVar2;
  
  iVar1 = Output_reloc<9,_true,_64,_true>::compare(&this->rel_,&r2->rel_);
  bVar2 = true;
  if ((-1 < iVar1) && (bVar2 = false, iVar1 == 0)) {
    return this->addend_ < r2->addend_;
  }
  return bVar2;
}



bool FUN_0022bd40(long param_1,long param_2)

{
  int iVar1;
  bool bVar2;
  
  iVar1 = FUN_0022bc80();
  bVar2 = true;
  if ((-1 < iVar1) && (bVar2 = false, iVar1 == 0)) {
    return *(ulong *)(param_1 + 0x28) < *(ulong *)(param_2 + 0x28);
  }
  return bVar2;
}


PUSH RBP
MOV RBP,RDI
PUSH RBX
MOV RBX,RSI
SUB RSP,0x8
CALL 0x0022bc80
MOV EDX,0x1
TEST EAX,EAX
JS 0x0022bd61
MOV EDX,0x0
JZ 0x0022bd70
ADD RSP,0x8
MOV EAX,EDX
POP RBX
POP RBP
RET
MOV RAX,qword ptr [RBX + 0x28]
CMP qword ptr [RBP + 0x28],RAX
SETC DL
ADD RSP,0x8
MOV EAX,EDX
POP RBX
POP RBP
RET
(translation_unit "bool FUN_0022bd40(long param_1,long param_2)\n\n{\n  int iVar1;\n  bool bVar2;\n  \n  iVar1 = FUN_0022bc80();\n  bVar2 = true;\n  if ((-1 < iVar1) && (bVar2 = false, iVar1 == 0)) {\n    return *(ulong *)(param_1 + 0x28) < *(ulong *)(param_2 + 0x28);\n  }\n  return bVar2;\n}\n\n" (function_definition "bool FUN_0022bd40(long param_1,long param_2)\n\n{\n  int iVar1;\n  bool bVar2;\n  \n  iVar1 = FUN_0022bc80();\n  bVar2 = true;\n  if ((-1 < iVar1) && (bVar2 = false, iVar1 == 0)) {\n    return *(ulong *)(param_1 + 0x28) < *(ulong *)(param_2 + 0x28);\n  }\n  return bVar2;\n}" primitive_type (function_declarator "FUN_0022bd40(long param_1,long param_2)" identifier (parameter_list "(long param_1,long param_2)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  int iVar1;\n  bool bVar2;\n  \n  iVar1 = FUN_0022bc80();\n  bVar2 = true;\n  if ((-1 < iVar1) && (bVar2 = false, iVar1 == 0)) {\n    return *(ulong *)(param_1 + 0x28) < *(ulong *)(param_2 + 0x28);\n  }\n  return bVar2;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (expression_statement "iVar1 = FUN_0022bc80();" (assignment_expression "iVar1 = FUN_0022bc80()" identifier = (call_expression "FUN_0022bc80()" identifier (argument_list "()" ( )))) ;) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) (if_statement "if ((-1 < iVar1) && (bVar2 = false, iVar1 == 0)) {\n    return *(ulong *)(param_1 + 0x28) < *(ulong *)(param_2 + 0x28);\n  }" if (parenthesized_expression "((-1 < iVar1) && (bVar2 = false, iVar1 == 0))" ( (binary_expression "(-1 < iVar1) && (bVar2 = false, iVar1 == 0)" (parenthesized_expression "(-1 < iVar1)" ( (binary_expression "-1 < iVar1" number_literal < identifier) )) && (parenthesized_expression "(bVar2 = false, iVar1 == 0)" ( (comma_expression "bVar2 = false, iVar1 == 0" (assignment_expression "bVar2 = false" identifier = false) , (binary_expression "iVar1 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n    return *(ulong *)(param_1 + 0x28) < *(ulong *)(param_2 + 0x28);\n  }" { (return_statement "return *(ulong *)(param_1 + 0x28) < *(ulong *)(param_2 + 0x28);" return (binary_expression "*(ulong *)(param_1 + 0x28) < *(ulong *)(param_2 + 0x28)" (pointer_expression "*(ulong *)(param_1 + 0x28)" * (cast_expression "(ulong *)(param_1 + 0x28)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) < (pointer_expression "*(ulong *)(param_2 + 0x28)" * (cast_expression "(ulong *)(param_2 + 0x28)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x28)" ( (binary_expression "param_2 + 0x28" identifier + number_literal) ))))) ;) })) (return_statement "return bVar2;" return identifier ;) })))
(translation_unit "/* DWARF original prototype: bool sort_before(Output_reloc<4,_true,_64,_true> * this,\n   Output_reloc<4,_true,_64,_true> * r2) */\n\nbool __thiscall\ngold::Output_reloc<4,_true,_64,_true>::sort_before\n          (Output_reloc<4,_true,_64,_true> *this,Output_reloc<4,_true,_64,_true> *r2)\n\n{\n  int iVar1;\n  bool bVar2;\n  \n  iVar1 = Output_reloc<9,_true,_64,_true>::compare(&this->rel_,&r2->rel_);\n  bVar2 = true;\n  if ((-1 < iVar1) && (bVar2 = false, iVar1 == 0)) {\n    return this->addend_ < r2->addend_;\n  }\n  return bVar2;\n}\n\n" comment (declaration "bool __thiscall\ngold::Output_reloc<4,_true,_64,_true>::sort_before\n          (Output_reloc<4,_true,_64,_true> *this,Output_reloc<4,_true,_64,_true> *r2)\n\n{\n  int iVar1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::" identifier : :) identifier (ERROR "<4" < number_literal) , identifier , identifier , (ERROR "_true>::sort_before\n          (Output_reloc<4,_true,_64,_true> *this,Output_reloc<4,_true,_64,_true> *r2)\n\n{\n  int" identifier > : : (function_declarator "sort_before\n          (Output_reloc<4,_true,_64,_true> *this,Output_reloc<4,_true,_64,_true> *r2)" identifier (parameter_list "(Output_reloc<4,_true,_64,_true> *this,Output_reloc<4,_true,_64,_true> *r2)" ( (parameter_declaration "Output_reloc" type_identifier) (ERROR "<4" < number_literal) , (parameter_declaration "_true" type_identifier) , (parameter_declaration "_64" type_identifier) , (parameter_declaration "_true> *this" type_identifier (ERROR ">" >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "Output_reloc" type_identifier) (ERROR "<4" < number_literal) , (parameter_declaration "_true" type_identifier) , (parameter_declaration "_64" type_identifier) , (parameter_declaration "_true> *r2" type_identifier (ERROR ">" >) (pointer_declarator "*r2" * identifier)) ))) { primitive_type) identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (expression_statement "iVar1 = Output_reloc<9,_true,_64,_true>::compare(&this->rel_,&r2->rel_);" (update_expression "iVar1 = Output_reloc<9,_true,_64,_true>::compare(&this->rel_,&r2->rel_)" (binary_expression "iVar1 = Output_reloc<9,_true,_64,_true>::compare(&this->rel_,&r2->rel_)" (assignment_expression "iVar1 = Output_reloc<9" identifier = (binary_expression "Output_reloc<9" identifier < number_literal)) (ERROR ",_true,_64,_true" , identifier , identifier , identifier) > (ERROR "::" : :) (call_expression "compare(&this->rel_,&r2->rel_)" identifier (argument_list "(&this->rel_,&r2->rel_)" ( (pointer_expression "&this->rel_" & (field_expression "this->rel_" identifier -> field_identifier)) , (pointer_expression "&r2->rel_" & (field_expression "r2->rel_" identifier -> field_identifier)) )))) --) ;) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) (if_statement "if ((-1 < iVar1) && (bVar2 = false, iVar1 == 0)) {\n    return this->addend_ < r2->addend_;\n  }" if (parenthesized_expression "((-1 < iVar1) && (bVar2 = false, iVar1 == 0))" ( (binary_expression "(-1 < iVar1) && (bVar2 = false, iVar1 == 0)" (parenthesized_expression "(-1 < iVar1)" ( (binary_expression "-1 < iVar1" number_literal < identifier) )) && (parenthesized_expression "(bVar2 = false, iVar1 == 0)" ( (comma_expression "bVar2 = false, iVar1 == 0" (assignment_expression "bVar2 = false" identifier = false) , (binary_expression "iVar1 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n    return this->addend_ < r2->addend_;\n  }" { (return_statement "return this->addend_ < r2->addend_;" return (binary_expression "this->addend_ < r2->addend_" (field_expression "this->addend_" identifier -> field_identifier) < (field_expression "r2->addend_" identifier -> field_identifier)) ;) })) (return_statement "return bVar2;" return identifier ;) (ERROR "}" }))
(translation_unit "bool FUN_0022bd40(long param_1,long param_2)\n\n{\n  int iVar1;\n  bool bVar2;\n  \n  iVar1 = FUN_0022bc80();\n  bVar2 = true;\n  if ((-1 < iVar1) && (bVar2 = false, iVar1 == 0)) {\n    return *(ulong *)(param_1 + 0x28) < *(ulong *)(param_2 + 0x28);\n  }\n  return bVar2;\n}\n\n" (function_definition "bool FUN_0022bd40(long param_1,long param_2)\n\n{\n  int iVar1;\n  bool bVar2;\n  \n  iVar1 = FUN_0022bc80();\n  bVar2 = true;\n  if ((-1 < iVar1) && (bVar2 = false, iVar1 == 0)) {\n    return *(ulong *)(param_1 + 0x28) < *(ulong *)(param_2 + 0x28);\n  }\n  return bVar2;\n}" primitive_type (function_declarator "FUN_0022bd40(long param_1,long param_2)" identifier (parameter_list "(long param_1,long param_2)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  int iVar1;\n  bool bVar2;\n  \n  iVar1 = FUN_0022bc80();\n  bVar2 = true;\n  if ((-1 < iVar1) && (bVar2 = false, iVar1 == 0)) {\n    return *(ulong *)(param_1 + 0x28) < *(ulong *)(param_2 + 0x28);\n  }\n  return bVar2;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (expression_statement "iVar1 = FUN_0022bc80();" (assignment_expression "iVar1 = FUN_0022bc80()" identifier = (call_expression "FUN_0022bc80()" identifier (argument_list "()" ( )))) ;) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) (if_statement "if ((-1 < iVar1) && (bVar2 = false, iVar1 == 0)) {\n    return *(ulong *)(param_1 + 0x28) < *(ulong *)(param_2 + 0x28);\n  }" if (parenthesized_expression "((-1 < iVar1) && (bVar2 = false, iVar1 == 0))" ( (binary_expression "(-1 < iVar1) && (bVar2 = false, iVar1 == 0)" (parenthesized_expression "(-1 < iVar1)" ( (binary_expression "-1 < iVar1" number_literal < identifier) )) && (parenthesized_expression "(bVar2 = false, iVar1 == 0)" ( (comma_expression "bVar2 = false, iVar1 == 0" (assignment_expression "bVar2 = false" identifier = false) , (binary_expression "iVar1 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n    return *(ulong *)(param_1 + 0x28) < *(ulong *)(param_2 + 0x28);\n  }" { (return_statement "return *(ulong *)(param_1 + 0x28) < *(ulong *)(param_2 + 0x28);" return (binary_expression "*(ulong *)(param_1 + 0x28) < *(ulong *)(param_2 + 0x28)" (pointer_expression "*(ulong *)(param_1 + 0x28)" * (cast_expression "(ulong *)(param_1 + 0x28)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) < (pointer_expression "*(ulong *)(param_2 + 0x28)" * (cast_expression "(ulong *)(param_2 + 0x28)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x28)" ( (binary_expression "param_2 + 0x28" identifier + number_literal) ))))) ;) })) (return_statement "return bVar2;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = BOOL) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (return_statement return (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (return_statement return IDENT ;) })))
(function_definition "bool FUN_0022bd40(long param_1,long param_2)\n\n{\n  int iVar1;\n  bool bVar2;\n  \n  iVar1 = FUN_0022bc80();\n  bVar2 = true;\n  if ((-1 < iVar1) && (bVar2 = false, iVar1 == 0)) {\n    return *(ulong *)(param_1 + 0x28) < *(ulong *)(param_2 + 0x28);\n  }\n  return bVar2;\n}" (primitive_type "bool") (function_declarator "FUN_0022bd40(long param_1,long param_2)" (identifier "FUN_0022bd40") (parameter_list "(long param_1,long param_2)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "long param_2" (sized_type_specifier "long" (long "long")) (identifier "param_2")) () ")"))) (compound_statement "{\n  int iVar1;\n  bool bVar2;\n  \n  iVar1 = FUN_0022bc80();\n  bVar2 = true;\n  if ((-1 < iVar1) && (bVar2 = false, iVar1 == 0)) {\n    return *(ulong *)(param_1 + 0x28) < *(ulong *)(param_2 + 0x28);\n  }\n  return bVar2;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "bool bVar2;" (primitive_type "bool") (identifier "bVar2") (; ";")) (expression_statement "iVar1 = FUN_0022bc80();" (assignment_expression "iVar1 = FUN_0022bc80()" (identifier "iVar1") (= "=") (call_expression "FUN_0022bc80()" (identifier "FUN_0022bc80") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" (identifier "bVar2") (= "=") (true "true")) (; ";")) (if_statement "if ((-1 < iVar1) && (bVar2 = false, iVar1 == 0)) {\n    return *(ulong *)(param_1 + 0x28) < *(ulong *)(param_2 + 0x28);\n  }" (if "if") (parenthesized_expression "((-1 < iVar1) && (bVar2 = false, iVar1 == 0))" (( "(") (binary_expression "(-1 < iVar1) && (bVar2 = false, iVar1 == 0)" (parenthesized_expression "(-1 < iVar1)" (( "(") (binary_expression "-1 < iVar1" (number_literal "-1") (< "<") (identifier "iVar1")) () ")")) (&& "&&") (parenthesized_expression "(bVar2 = false, iVar1 == 0)" (( "(") (comma_expression "bVar2 = false, iVar1 == 0" (assignment_expression "bVar2 = false" (identifier "bVar2") (= "=") (false "false")) (, ",") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n    return *(ulong *)(param_1 + 0x28) < *(ulong *)(param_2 + 0x28);\n  }" ({ "{") (return_statement "return *(ulong *)(param_1 + 0x28) < *(ulong *)(param_2 + 0x28);" (return "return") (binary_expression "*(ulong *)(param_1 + 0x28) < *(ulong *)(param_2 + 0x28)" (pointer_expression "*(ulong *)(param_1 + 0x28)" (* "*") (cast_expression "(ulong *)(param_1 + 0x28)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")")))) (< "<") (pointer_expression "*(ulong *)(param_2 + 0x28)" (* "*") (cast_expression "(ulong *)(param_2 + 0x28)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x28)" (( "(") (binary_expression "param_2 + 0x28" (identifier "param_2") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (} "}"))) (return_statement "return bVar2;" (return "return") (identifier "bVar2") (; ";")) (} "}")))

/* DWARF original prototype: bool sort_before(Output_reloc<4,_true,_64,_true> * this,
   Output_reloc<4,_true,_64,_true> * r2) */

bool __thiscall
gold::var_1<4,_true,_64,_true>::sort_before
          (var_1<4,_true,_64,_true> *this,var_1<4,_true,_64,_true> *r2)

{
  int var_3;
  bool bVar2;
  
  var_3 = var_1<9,_true,_64,_true>::var_2(&this->rel_,&r2->rel_);
  bVar2 = true;
  if ((-1 < var_3) && (bVar2 = false, var_3 == 0)) {
    return this->addend_ < r2->addend_;
  }
  return bVar2;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (sized_type_specifier) declarator: (identifier)) (parameter_declaration type: (sized_type_specifier) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (true))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (false)) right: (binary_expression left: (identifier) right: (number_literal)))))) consequence: (compound_statement (return_statement (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: (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))))))))) (return_statement (identifier)))))

bool MASKED(long param_1,long param_2)

{
  int iVar1;
  bool bVar2;
  
  iVar1 = FUN_0022bc80();
  bVar2 = true;
  if ((-1 < iVar1) && (bVar2 = false, iVar1 == 0)) {
    return *(ulong *)(param_1 + 0x28) < *(ulong *)(param_2 + 0x28);
  }
  return bVar2;
}

