
/* DWARF original prototype: bool operator()(Sort_commons<32> * this, Symbol * pa, Symbol * pb) */

bool __thiscall gold::Sort_commons<32>::operator()(Sort_commons<32> *this,Symbol *pa,Symbol *pb)

{
  Sort_commons_order SVar1;
  uint uVar2;
  uint uVar3;
  int iVar4;
  Sized_symbol<32> *pSVar5;
  Sized_symbol<32> *pSVar6;
  
  if (pa == (Symbol *)0x0) {
    return false;
  }
  if (pb == (Symbol *)0x0) {
    return true;
  }
  pSVar5 = Symbol_table::get_sized_symbol<32>((Symbol_table *)pa,pa);
  pSVar6 = Symbol_table::get_sized_symbol<32>((Symbol_table *)pb,pa);
  SVar1 = this->sort_order_;
  uVar2 = pSVar5->value_;
  uVar3 = pSVar6->value_;
  if (SVar1 == SORT_COMMONS_BY_ALIGNMENT_DESCENDING) {
    if (uVar2 < uVar3) {
      return false;
    }
    if (uVar3 < uVar2) {
      return true;
    }
  }
  else if (SVar1 == SORT_COMMONS_BY_ALIGNMENT_ASCENDING) {
    if (uVar2 < uVar3) {
      return true;
    }
    if (uVar3 < uVar2) {
      return false;
    }
  }
  else if (SVar1 != SORT_COMMONS_BY_SIZE_DESCENDING) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/common.cc",0x7c,"operator()");
  }
  if (pSVar5->symsize_ < pSVar6->symsize_) {
    return false;
  }
  if (pSVar5->symsize_ <= pSVar6->symsize_) {
    if (SVar1 == SORT_COMMONS_BY_SIZE_DESCENDING) {
      if (uVar2 < uVar3) {
        return false;
      }
      if (uVar2 >= uVar3 && uVar2 != uVar3) {
        return true;
      }
    }
    iVar4 = strcmp((pSVar5->super_Symbol).name_,(pSVar6->super_Symbol).name_);
    return SUB41((uint)iVar4 >> 0x1f,0);
  }
  return true;
}



uint FUN_002a28f0(long param_1,long param_2,long param_3)

{
  int iVar1;
  uint uVar2;
  uint uVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  
  if (param_2 == 0) {
    return 0;
  }
  if (param_3 == 0) {
    return 1;
  }
  puVar4 = (undefined8 *)FUN_002a27d0(param_2);
  puVar5 = (undefined8 *)FUN_002a27d0(param_3);
  iVar1 = *(int *)(param_1 + 8);
  uVar3 = *(uint *)(puVar4 + 8);
  uVar2 = *(uint *)(puVar5 + 8);
  if (iVar1 == 1) {
    if (uVar3 < uVar2) {
      return 0;
    }
    if (uVar2 < uVar3) {
      return 1;
    }
  }
  else if (iVar1 == 2) {
    if (uVar3 < uVar2) {
      return 1;
    }
    if (uVar2 < uVar3) {
      return 0;
    }
  }
  else if (iVar1 != 0) {
                    /* WARNING: Subroutine does not return */
    FUN_0018dcf0("../../gold/common.cc",0x7c,"operator()");
  }
  if (*(uint *)((long)puVar4 + 0x44) < *(uint *)((long)puVar5 + 0x44)) {
    return 0;
  }
  if (*(uint *)((long)puVar4 + 0x44) <= *(uint *)((long)puVar5 + 0x44)) {
    if (iVar1 == 0) {
      if (uVar3 < uVar2) {
        return 0;
      }
      if (uVar3 >= uVar2 && uVar3 != uVar2) {
        return 1;
      }
    }
    uVar3 = strcmp((char *)*puVar4,(char *)*puVar5);
    return uVar3 >> 0x1f;
  }
  return 1;
}


TEST RSI,RSI
JZ 0x002a29a0
TEST RDX,RDX
JZ 0x002a2990
PUSH R12
PUSH RBP
MOV RBP,RDI
MOV RDI,RSI
PUSH RBX
MOV RBX,RDX
CALL 0x002a27d0
MOV RDI,RBX
MOV R12,RAX
CALL 0x002a27d0
MOV EDX,dword ptr [RBP + 0x8]
MOV ESI,dword ptr [R12 + 0x40]
MOV ECX,dword ptr [RAX + 0x40]
CMP EDX,0x1
JZ 0x002a2968
CMP EDX,0x2
JZ 0x002a2980
TEST EDX,EDX
JNZ 0x002a29a3
MOV EBX,dword ptr [RAX + 0x44]
CMP dword ptr [R12 + 0x44],EBX
JC 0x002a2986
JA 0x002a296e
TEST EDX,EDX
JNZ 0x002a294e
CMP ESI,ECX
JC 0x002a2986
JA 0x002a296e
MOV RDI,qword ptr [R12]
MOV RSI,qword ptr [RAX]
CALL 0x00149790
POP RBX
POP RBP
SHR EAX,0x1f
POP R12
RET
CMP ESI,ECX
JC 0x002a2986
JBE 0x002a2938
POP RBX
MOV EAX,0x1
POP RBP
POP R12
RET
CMP ESI,ECX
JC 0x002a296e
JBE 0x002a2938
POP RBX
XOR EAX,EAX
POP RBP
POP R12
RET
MOV EAX,0x1
RET
XOR EAX,EAX
RET
LEA RDX,[0x3a20a8]
MOV ESI,0x7c
LEA RDI,[0x3a1e2d]
CALL 0x0018dcf0
(translation_unit "uint FUN_002a28f0(long param_1,long param_2,long param_3)\n\n{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  undefined8 *puVar4;\n  undefined8 *puVar5;\n  \n  if (param_2 == 0) {\n    return 0;\n  }\n  if (param_3 == 0) {\n    return 1;\n  }\n  puVar4 = (undefined8 *)FUN_002a27d0(param_2);\n  puVar5 = (undefined8 *)FUN_002a27d0(param_3);\n  iVar1 = *(int *)(param_1 + 8);\n  uVar3 = *(uint *)(puVar4 + 8);\n  uVar2 = *(uint *)(puVar5 + 8);\n  if (iVar1 == 1) {\n    if (uVar3 < uVar2) {\n      return 0;\n    }\n    if (uVar2 < uVar3) {\n      return 1;\n    }\n  }\n  else if (iVar1 == 2) {\n    if (uVar3 < uVar2) {\n      return 1;\n    }\n    if (uVar2 < uVar3) {\n      return 0;\n    }\n  }\n  else if (iVar1 != 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0018dcf0("../../gold/common.cc",0x7c,"operator()");\n  }\n  if (*(uint *)((long)puVar4 + 0x44) < *(uint *)((long)puVar5 + 0x44)) {\n    return 0;\n  }\n  if (*(uint *)((long)puVar4 + 0x44) <= *(uint *)((long)puVar5 + 0x44)) {\n    if (iVar1 == 0) {\n      if (uVar3 < uVar2) {\n        return 0;\n      }\n      if (uVar3 >= uVar2 && uVar3 != uVar2) {\n        return 1;\n      }\n    }\n    uVar3 = strcmp((char *)*puVar4,(char *)*puVar5);\n    return uVar3 >> 0x1f;\n  }\n  return 1;\n}\n\n" (function_definition "uint FUN_002a28f0(long param_1,long param_2,long param_3)\n\n{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  undefined8 *puVar4;\n  undefined8 *puVar5;\n  \n  if (param_2 == 0) {\n    return 0;\n  }\n  if (param_3 == 0) {\n    return 1;\n  }\n  puVar4 = (undefined8 *)FUN_002a27d0(param_2);\n  puVar5 = (undefined8 *)FUN_002a27d0(param_3);\n  iVar1 = *(int *)(param_1 + 8);\n  uVar3 = *(uint *)(puVar4 + 8);\n  uVar2 = *(uint *)(puVar5 + 8);\n  if (iVar1 == 1) {\n    if (uVar3 < uVar2) {\n      return 0;\n    }\n    if (uVar2 < uVar3) {\n      return 1;\n    }\n  }\n  else if (iVar1 == 2) {\n    if (uVar3 < uVar2) {\n      return 1;\n    }\n    if (uVar2 < uVar3) {\n      return 0;\n    }\n  }\n  else if (iVar1 != 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0018dcf0("../../gold/common.cc",0x7c,"operator()");\n  }\n  if (*(uint *)((long)puVar4 + 0x44) < *(uint *)((long)puVar5 + 0x44)) {\n    return 0;\n  }\n  if (*(uint *)((long)puVar4 + 0x44) <= *(uint *)((long)puVar5 + 0x44)) {\n    if (iVar1 == 0) {\n      if (uVar3 < uVar2) {\n        return 0;\n      }\n      if (uVar3 >= uVar2 && uVar3 != uVar2) {\n        return 1;\n      }\n    }\n    uVar3 = strcmp((char *)*puVar4,(char *)*puVar5);\n    return uVar3 >> 0x1f;\n  }\n  return 1;\n}" type_identifier (function_declarator "FUN_002a28f0(long param_1,long param_2,long param_3)" identifier (parameter_list "(long param_1,long param_2,long param_3)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  undefined8 *puVar4;\n  undefined8 *puVar5;\n  \n  if (param_2 == 0) {\n    return 0;\n  }\n  if (param_3 == 0) {\n    return 1;\n  }\n  puVar4 = (undefined8 *)FUN_002a27d0(param_2);\n  puVar5 = (undefined8 *)FUN_002a27d0(param_3);\n  iVar1 = *(int *)(param_1 + 8);\n  uVar3 = *(uint *)(puVar4 + 8);\n  uVar2 = *(uint *)(puVar5 + 8);\n  if (iVar1 == 1) {\n    if (uVar3 < uVar2) {\n      return 0;\n    }\n    if (uVar2 < uVar3) {\n      return 1;\n    }\n  }\n  else if (iVar1 == 2) {\n    if (uVar3 < uVar2) {\n      return 1;\n    }\n    if (uVar2 < uVar3) {\n      return 0;\n    }\n  }\n  else if (iVar1 != 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0018dcf0("../../gold/common.cc",0x7c,"operator()");\n  }\n  if (*(uint *)((long)puVar4 + 0x44) < *(uint *)((long)puVar5 + 0x44)) {\n    return 0;\n  }\n  if (*(uint *)((long)puVar4 + 0x44) <= *(uint *)((long)puVar5 + 0x44)) {\n    if (iVar1 == 0) {\n      if (uVar3 < uVar2) {\n        return 0;\n      }\n      if (uVar3 >= uVar2 && uVar3 != uVar2) {\n        return 1;\n      }\n    }\n    uVar3 = strcmp((char *)*puVar4,(char *)*puVar5);\n    return uVar3 >> 0x1f;\n  }\n  return 1;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "undefined8 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined8 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (if_statement "if (param_2 == 0) {\n    return 0;\n  }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (param_3 == 0) {\n    return 1;\n  }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n    return 1;\n  }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "puVar4 = (undefined8 *)FUN_002a27d0(param_2);" (assignment_expression "puVar4 = (undefined8 *)FUN_002a27d0(param_2)" identifier = (cast_expression "(undefined8 *)FUN_002a27d0(param_2)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002a27d0(param_2)" identifier (argument_list "(param_2)" ( identifier ))))) ;) (expression_statement "puVar5 = (undefined8 *)FUN_002a27d0(param_3);" (assignment_expression "puVar5 = (undefined8 *)FUN_002a27d0(param_3)" identifier = (cast_expression "(undefined8 *)FUN_002a27d0(param_3)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002a27d0(param_3)" identifier (argument_list "(param_3)" ( identifier ))))) ;) (expression_statement "iVar1 = *(int *)(param_1 + 8);" (assignment_expression "iVar1 = *(int *)(param_1 + 8)" identifier = (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = *(uint *)(puVar4 + 8);" (assignment_expression "uVar3 = *(uint *)(puVar4 + 8)" identifier = (pointer_expression "*(uint *)(puVar4 + 8)" * (cast_expression "(uint *)(puVar4 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 8)" ( (binary_expression "puVar4 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar2 = *(uint *)(puVar5 + 8);" (assignment_expression "uVar2 = *(uint *)(puVar5 + 8)" identifier = (pointer_expression "*(uint *)(puVar5 + 8)" * (cast_expression "(uint *)(puVar5 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 8)" ( (binary_expression "puVar5 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar1 == 1) {\n    if (uVar3 < uVar2) {\n      return 0;\n    }\n    if (uVar2 < uVar3) {\n      return 1;\n    }\n  }\n  else if (iVar1 == 2) {\n    if (uVar3 < uVar2) {\n      return 1;\n    }\n    if (uVar2 < uVar3) {\n      return 0;\n    }\n  }\n  else if (iVar1 != 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0018dcf0("../../gold/common.cc",0x7c,"operator()");\n  }" if (parenthesized_expression "(iVar1 == 1)" ( (binary_expression "iVar1 == 1" identifier == number_literal) )) (compound_statement "{\n    if (uVar3 < uVar2) {\n      return 0;\n    }\n    if (uVar2 < uVar3) {\n      return 1;\n    }\n  }" { (if_statement "if (uVar3 < uVar2) {\n      return 0;\n    }" if (parenthesized_expression "(uVar3 < uVar2)" ( (binary_expression "uVar3 < uVar2" identifier < identifier) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (uVar2 < uVar3) {\n      return 1;\n    }" if (parenthesized_expression "(uVar2 < uVar3)" ( (binary_expression "uVar2 < uVar3" identifier < identifier) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) }) (else_clause "else if (iVar1 == 2) {\n    if (uVar3 < uVar2) {\n      return 1;\n    }\n    if (uVar2 < uVar3) {\n      return 0;\n    }\n  }\n  else if (iVar1 != 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0018dcf0("../../gold/common.cc",0x7c,"operator()");\n  }" else (if_statement "if (iVar1 == 2) {\n    if (uVar3 < uVar2) {\n      return 1;\n    }\n    if (uVar2 < uVar3) {\n      return 0;\n    }\n  }\n  else if (iVar1 != 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0018dcf0("../../gold/common.cc",0x7c,"operator()");\n  }" if (parenthesized_expression "(iVar1 == 2)" ( (binary_expression "iVar1 == 2" identifier == number_literal) )) (compound_statement "{\n    if (uVar3 < uVar2) {\n      return 1;\n    }\n    if (uVar2 < uVar3) {\n      return 0;\n    }\n  }" { (if_statement "if (uVar3 < uVar2) {\n      return 1;\n    }" if (parenthesized_expression "(uVar3 < uVar2)" ( (binary_expression "uVar3 < uVar2" identifier < identifier) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) (if_statement "if (uVar2 < uVar3) {\n      return 0;\n    }" if (parenthesized_expression "(uVar2 < uVar3)" ( (binary_expression "uVar2 < uVar3" identifier < identifier) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) }) (else_clause "else if (iVar1 != 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0018dcf0("../../gold/common.cc",0x7c,"operator()");\n  }" else (if_statement "if (iVar1 != 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0018dcf0("../../gold/common.cc",0x7c,"operator()");\n  }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0018dcf0("../../gold/common.cc",0x7c,"operator()");\n  }" { comment (expression_statement "FUN_0018dcf0("../../gold/common.cc",0x7c,"operator()");" (call_expression "FUN_0018dcf0("../../gold/common.cc",0x7c,"operator()")" identifier (argument_list "("../../gold/common.cc",0x7c,"operator()")" ( (string_literal ""../../gold/common.cc"" " string_content ") , number_literal , (string_literal ""operator()"" " string_content ") ))) ;) })))))) (if_statement "if (*(uint *)((long)puVar4 + 0x44) < *(uint *)((long)puVar5 + 0x44)) {\n    return 0;\n  }" if (parenthesized_expression "(*(uint *)((long)puVar4 + 0x44) < *(uint *)((long)puVar5 + 0x44))" ( (binary_expression "*(uint *)((long)puVar4 + 0x44) < *(uint *)((long)puVar5 + 0x44)" (pointer_expression "*(uint *)((long)puVar4 + 0x44)" * (cast_expression "(uint *)((long)puVar4 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar4 + 0x44)" ( (binary_expression "(long)puVar4 + 0x44" (cast_expression "(long)puVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) < (pointer_expression "*(uint *)((long)puVar5 + 0x44)" * (cast_expression "(uint *)((long)puVar5 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar5 + 0x44)" ( (binary_expression "(long)puVar5 + 0x44" (cast_expression "(long)puVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (*(uint *)((long)puVar4 + 0x44) <= *(uint *)((long)puVar5 + 0x44)) {\n    if (iVar1 == 0) {\n      if (uVar3 < uVar2) {\n        return 0;\n      }\n      if (uVar3 >= uVar2 && uVar3 != uVar2) {\n        return 1;\n      }\n    }\n    uVar3 = strcmp((char *)*puVar4,(char *)*puVar5);\n    return uVar3 >> 0x1f;\n  }" if (parenthesized_expression "(*(uint *)((long)puVar4 + 0x44) <= *(uint *)((long)puVar5 + 0x44))" ( (binary_expression "*(uint *)((long)puVar4 + 0x44) <= *(uint *)((long)puVar5 + 0x44)" (pointer_expression "*(uint *)((long)puVar4 + 0x44)" * (cast_expression "(uint *)((long)puVar4 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar4 + 0x44)" ( (binary_expression "(long)puVar4 + 0x44" (cast_expression "(long)puVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) <= (pointer_expression "*(uint *)((long)puVar5 + 0x44)" * (cast_expression "(uint *)((long)puVar5 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar5 + 0x44)" ( (binary_expression "(long)puVar5 + 0x44" (cast_expression "(long)puVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) )) (compound_statement "{\n    if (iVar1 == 0) {\n      if (uVar3 < uVar2) {\n        return 0;\n      }\n      if (uVar3 >= uVar2 && uVar3 != uVar2) {\n        return 1;\n      }\n    }\n    uVar3 = strcmp((char *)*puVar4,(char *)*puVar5);\n    return uVar3 >> 0x1f;\n  }" { (if_statement "if (iVar1 == 0) {\n      if (uVar3 < uVar2) {\n        return 0;\n      }\n      if (uVar3 >= uVar2 && uVar3 != uVar2) {\n        return 1;\n      }\n    }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      if (uVar3 < uVar2) {\n        return 0;\n      }\n      if (uVar3 >= uVar2 && uVar3 != uVar2) {\n        return 1;\n      }\n    }" { (if_statement "if (uVar3 < uVar2) {\n        return 0;\n      }" if (parenthesized_expression "(uVar3 < uVar2)" ( (binary_expression "uVar3 < uVar2" identifier < identifier) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (uVar3 >= uVar2 && uVar3 != uVar2) {\n        return 1;\n      }" if (parenthesized_expression "(uVar3 >= uVar2 && uVar3 != uVar2)" ( (binary_expression "uVar3 >= uVar2 && uVar3 != uVar2" (binary_expression "uVar3 >= uVar2" identifier >= identifier) && (binary_expression "uVar3 != uVar2" identifier != identifier)) )) (compound_statement "{\n        return 1;\n      }" { (return_statement "return 1;" return number_literal ;) })) })) (expression_statement "uVar3 = strcmp((char *)*puVar4,(char *)*puVar5);" (assignment_expression "uVar3 = strcmp((char *)*puVar4,(char *)*puVar5)" identifier = (call_expression "strcmp((char *)*puVar4,(char *)*puVar5)" identifier (argument_list "((char *)*puVar4,(char *)*puVar5)" ( (cast_expression "(char *)*puVar4" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar4" * identifier)) , (cast_expression "(char *)*puVar5" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar5" * identifier)) )))) ;) (return_statement "return uVar3 >> 0x1f;" return (binary_expression "uVar3 >> 0x1f" identifier >> number_literal) ;) })) (return_statement "return 1;" return number_literal ;) })))
(translation_unit "/* DWARF original prototype: bool operator()(Sort_commons<32> * this, Symbol * pa, Symbol * pb) */\n\nbool __thiscall gold::Sort_commons<32>::operator()(Sort_commons<32> *this,Symbol *pa,Symbol *pb)\n\n{\n  Sort_commons_order SVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  Sized_symbol<32> *pSVar5;\n  Sized_symbol<32> *pSVar6;\n  \n  if (pa == (Symbol *)0x0) {\n    return false;\n  }\n  if (pb == (Symbol *)0x0) {\n    return true;\n  }\n  pSVar5 = Symbol_table::get_sized_symbol<32>((Symbol_table *)pa,pa);\n  pSVar6 = Symbol_table::get_sized_symbol<32>((Symbol_table *)pb,pa);\n  SVar1 = this->sort_order_;\n  uVar2 = pSVar5->value_;\n  uVar3 = pSVar6->value_;\n  if (SVar1 == SORT_COMMONS_BY_ALIGNMENT_DESCENDING) {\n    if (uVar2 < uVar3) {\n      return false;\n    }\n    if (uVar3 < uVar2) {\n      return true;\n    }\n  }\n  else if (SVar1 == SORT_COMMONS_BY_ALIGNMENT_ASCENDING) {\n    if (uVar2 < uVar3) {\n      return true;\n    }\n    if (uVar3 < uVar2) {\n      return false;\n    }\n  }\n  else if (SVar1 != SORT_COMMONS_BY_SIZE_DESCENDING) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/common.cc",0x7c,"operator()");\n  }\n  if (pSVar5->symsize_ < pSVar6->symsize_) {\n    return false;\n  }\n  if (pSVar5->symsize_ <= pSVar6->symsize_) {\n    if (SVar1 == SORT_COMMONS_BY_SIZE_DESCENDING) {\n      if (uVar2 < uVar3) {\n        return false;\n      }\n      if (uVar2 >= uVar3 && uVar2 != uVar3) {\n        return true;\n      }\n    }\n    iVar4 = strcmp((pSVar5->super_Symbol).name_,(pSVar6->super_Symbol).name_);\n    return SUB41((uint)iVar4 >> 0x1f,0);\n  }\n  return true;\n}\n\n" comment (function_definition "bool __thiscall gold::Sort_commons<32>::operator()(Sort_commons<32> *this,Symbol *pa,Symbol *pb)\n\n{\n  Sort_commons_order SVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  Sized_symbol<32> *pSVar5;\n  Sized_symbol<32> *pSVar6;\n  \n  if (pa == (Symbol *)0x0) {\n    return false;\n  }\n  if (pb == (Symbol *)0x0) {\n    return true;\n  }\n  pSVar5 = Symbol_table::get_sized_symbol<32>((Symbol_table *)pa,pa);\n  pSVar6 = Symbol_table::get_sized_symbol<32>((Symbol_table *)pb,pa);\n  SVar1 = this->sort_order_;\n  uVar2 = pSVar5->value_;\n  uVar3 = pSVar6->value_;\n  if (SVar1 == SORT_COMMONS_BY_ALIGNMENT_DESCENDING) {\n    if (uVar2 < uVar3) {\n      return false;\n    }\n    if (uVar3 < uVar2) {\n      return true;\n    }\n  }\n  else if (SVar1 == SORT_COMMONS_BY_ALIGNMENT_ASCENDING) {\n    if (uVar2 < uVar3) {\n      return true;\n    }\n    if (uVar3 < uVar2) {\n      return false;\n    }\n  }\n  else if (SVar1 != SORT_COMMONS_BY_SIZE_DESCENDING) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/common.cc",0x7c,"operator()");\n  }\n  if (pSVar5->symsize_ < pSVar6->symsize_) {\n    return false;\n  }\n  if (pSVar5->symsize_ <= pSVar6->symsize_) {\n    if (SVar1 == SORT_COMMONS_BY_SIZE_DESCENDING) {\n      if (uVar2 < uVar3) {\n        return false;\n      }\n      if (uVar2 >= uVar3 && uVar2 != uVar3) {\n        return true;\n      }\n    }\n    iVar4 = strcmp((pSVar5->super_Symbol).name_,(pSVar6->super_Symbol).name_);\n    return SUB41((uint)iVar4 >> 0x1f,0);\n  }\n  return true;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Sort_commons<32>::" identifier : : identifier < number_literal > : :) (function_declarator "operator()(Sort_commons<32> *this,Symbol *pa,Symbol *pb)" (function_declarator "operator()" identifier (parameter_list "()" ( ))) (parameter_list "(Sort_commons<32> *this,Symbol *pa,Symbol *pb)" ( (parameter_declaration "Sort_commons<32> *this" type_identifier (ERROR "<32>" < number_literal >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "Symbol *pa" type_identifier (pointer_declarator "*pa" * identifier)) , (parameter_declaration "Symbol *pb" type_identifier (pointer_declarator "*pb" * identifier)) ))) (compound_statement "{\n  Sort_commons_order SVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  Sized_symbol<32> *pSVar5;\n  Sized_symbol<32> *pSVar6;\n  \n  if (pa == (Symbol *)0x0) {\n    return false;\n  }\n  if (pb == (Symbol *)0x0) {\n    return true;\n  }\n  pSVar5 = Symbol_table::get_sized_symbol<32>((Symbol_table *)pa,pa);\n  pSVar6 = Symbol_table::get_sized_symbol<32>((Symbol_table *)pb,pa);\n  SVar1 = this->sort_order_;\n  uVar2 = pSVar5->value_;\n  uVar3 = pSVar6->value_;\n  if (SVar1 == SORT_COMMONS_BY_ALIGNMENT_DESCENDING) {\n    if (uVar2 < uVar3) {\n      return false;\n    }\n    if (uVar3 < uVar2) {\n      return true;\n    }\n  }\n  else if (SVar1 == SORT_COMMONS_BY_ALIGNMENT_ASCENDING) {\n    if (uVar2 < uVar3) {\n      return true;\n    }\n    if (uVar3 < uVar2) {\n      return false;\n    }\n  }\n  else if (SVar1 != SORT_COMMONS_BY_SIZE_DESCENDING) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/common.cc",0x7c,"operator()");\n  }\n  if (pSVar5->symsize_ < pSVar6->symsize_) {\n    return false;\n  }\n  if (pSVar5->symsize_ <= pSVar6->symsize_) {\n    if (SVar1 == SORT_COMMONS_BY_SIZE_DESCENDING) {\n      if (uVar2 < uVar3) {\n        return false;\n      }\n      if (uVar2 >= uVar3 && uVar2 != uVar3) {\n        return true;\n      }\n    }\n    iVar4 = strcmp((pSVar5->super_Symbol).name_,(pSVar6->super_Symbol).name_);\n    return SUB41((uint)iVar4 >> 0x1f,0);\n  }\n  return true;\n}" { (declaration "Sort_commons_order SVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (expression_statement "Sized_symbol<32> *pSVar5;" (binary_expression "Sized_symbol<32> *pSVar5" (binary_expression "Sized_symbol<32" identifier < number_literal) > (pointer_expression "*pSVar5" * identifier)) ;) (expression_statement "Sized_symbol<32> *pSVar6;" (binary_expression "Sized_symbol<32> *pSVar6" (binary_expression "Sized_symbol<32" identifier < number_literal) > (pointer_expression "*pSVar6" * identifier)) ;) (if_statement "if (pa == (Symbol *)0x0) {\n    return false;\n  }" if (parenthesized_expression "(pa == (Symbol *)0x0)" ( (binary_expression "pa == (Symbol *)0x0" identifier == (cast_expression "(Symbol *)0x0" ( (type_descriptor "Symbol *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return false;\n  }" { (return_statement "return false;" return false ;) })) (if_statement "if (pb == (Symbol *)0x0) {\n    return true;\n  }" if (parenthesized_expression "(pb == (Symbol *)0x0)" ( (binary_expression "pb == (Symbol *)0x0" identifier == (cast_expression "(Symbol *)0x0" ( (type_descriptor "Symbol *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return true;\n  }" { (return_statement "return true;" return true ;) })) (expression_statement "pSVar5 = Symbol_table::get_sized_symbol<32>((Symbol_table *)pa,pa);" (binary_expression "pSVar5 = Symbol_table::get_sized_symbol<32>((Symbol_table *)pa,pa)" (binary_expression "pSVar5 = Symbol_table::get_sized_symbol<32" (assignment_expression "pSVar5 = Symbol_table" identifier = identifier) (ERROR "::get_sized_symbol" : : identifier) < number_literal) > (parenthesized_expression "((Symbol_table *)pa,pa)" ( (comma_expression "(Symbol_table *)pa,pa" (cast_expression "(Symbol_table *)pa" ( (type_descriptor "Symbol_table *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier) ))) ;) (expression_statement "pSVar6 = Symbol_table::get_sized_symbol<32>((Symbol_table *)pb,pa);" (binary_expression "pSVar6 = Symbol_table::get_sized_symbol<32>((Symbol_table *)pb,pa)" (binary_expression "pSVar6 = Symbol_table::get_sized_symbol<32" (assignment_expression "pSVar6 = Symbol_table" identifier = identifier) (ERROR "::get_sized_symbol" : : identifier) < number_literal) > (parenthesized_expression "((Symbol_table *)pb,pa)" ( (comma_expression "(Symbol_table *)pb,pa" (cast_expression "(Symbol_table *)pb" ( (type_descriptor "Symbol_table *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier) ))) ;) (expression_statement "SVar1 = this->sort_order_;" (assignment_expression "SVar1 = this->sort_order_" identifier = (field_expression "this->sort_order_" identifier -> field_identifier)) ;) (expression_statement "uVar2 = pSVar5->value_;" (assignment_expression "uVar2 = pSVar5->value_" identifier = (field_expression "pSVar5->value_" identifier -> field_identifier)) ;) (expression_statement "uVar3 = pSVar6->value_;" (assignment_expression "uVar3 = pSVar6->value_" identifier = (field_expression "pSVar6->value_" identifier -> field_identifier)) ;) (if_statement "if (SVar1 == SORT_COMMONS_BY_ALIGNMENT_DESCENDING) {\n    if (uVar2 < uVar3) {\n      return false;\n    }\n    if (uVar3 < uVar2) {\n      return true;\n    }\n  }\n  else if (SVar1 == SORT_COMMONS_BY_ALIGNMENT_ASCENDING) {\n    if (uVar2 < uVar3) {\n      return true;\n    }\n    if (uVar3 < uVar2) {\n      return false;\n    }\n  }\n  else if (SVar1 != SORT_COMMONS_BY_SIZE_DESCENDING) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/common.cc",0x7c,"operator()");\n  }" if (parenthesized_expression "(SVar1 == SORT_COMMONS_BY_ALIGNMENT_DESCENDING)" ( (binary_expression "SVar1 == SORT_COMMONS_BY_ALIGNMENT_DESCENDING" identifier == identifier) )) (compound_statement "{\n    if (uVar2 < uVar3) {\n      return false;\n    }\n    if (uVar3 < uVar2) {\n      return true;\n    }\n  }" { (if_statement "if (uVar2 < uVar3) {\n      return false;\n    }" if (parenthesized_expression "(uVar2 < uVar3)" ( (binary_expression "uVar2 < uVar3" identifier < identifier) )) (compound_statement "{\n      return false;\n    }" { (return_statement "return false;" return false ;) })) (if_statement "if (uVar3 < uVar2) {\n      return true;\n    }" if (parenthesized_expression "(uVar3 < uVar2)" ( (binary_expression "uVar3 < uVar2" identifier < identifier) )) (compound_statement "{\n      return true;\n    }" { (return_statement "return true;" return true ;) })) }) (else_clause "else if (SVar1 == SORT_COMMONS_BY_ALIGNMENT_ASCENDING) {\n    if (uVar2 < uVar3) {\n      return true;\n    }\n    if (uVar3 < uVar2) {\n      return false;\n    }\n  }\n  else if (SVar1 != SORT_COMMONS_BY_SIZE_DESCENDING) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/common.cc",0x7c,"operator()");\n  }" else (if_statement "if (SVar1 == SORT_COMMONS_BY_ALIGNMENT_ASCENDING) {\n    if (uVar2 < uVar3) {\n      return true;\n    }\n    if (uVar3 < uVar2) {\n      return false;\n    }\n  }\n  else if (SVar1 != SORT_COMMONS_BY_SIZE_DESCENDING) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/common.cc",0x7c,"operator()");\n  }" if (parenthesized_expression "(SVar1 == SORT_COMMONS_BY_ALIGNMENT_ASCENDING)" ( (binary_expression "SVar1 == SORT_COMMONS_BY_ALIGNMENT_ASCENDING" identifier == identifier) )) (compound_statement "{\n    if (uVar2 < uVar3) {\n      return true;\n    }\n    if (uVar3 < uVar2) {\n      return false;\n    }\n  }" { (if_statement "if (uVar2 < uVar3) {\n      return true;\n    }" if (parenthesized_expression "(uVar2 < uVar3)" ( (binary_expression "uVar2 < uVar3" identifier < identifier) )) (compound_statement "{\n      return true;\n    }" { (return_statement "return true;" return true ;) })) (if_statement "if (uVar3 < uVar2) {\n      return false;\n    }" if (parenthesized_expression "(uVar3 < uVar2)" ( (binary_expression "uVar3 < uVar2" identifier < identifier) )) (compound_statement "{\n      return false;\n    }" { (return_statement "return false;" return false ;) })) }) (else_clause "else if (SVar1 != SORT_COMMONS_BY_SIZE_DESCENDING) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/common.cc",0x7c,"operator()");\n  }" else (if_statement "if (SVar1 != SORT_COMMONS_BY_SIZE_DESCENDING) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/common.cc",0x7c,"operator()");\n  }" if (parenthesized_expression "(SVar1 != SORT_COMMONS_BY_SIZE_DESCENDING)" ( (binary_expression "SVar1 != SORT_COMMONS_BY_SIZE_DESCENDING" identifier != identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/common.cc",0x7c,"operator()");\n  }" { comment (expression_statement "do_gold_unreachable("../../gold/common.cc",0x7c,"operator()");" (call_expression "do_gold_unreachable("../../gold/common.cc",0x7c,"operator()")" identifier (argument_list "("../../gold/common.cc",0x7c,"operator()")" ( (string_literal ""../../gold/common.cc"" " string_content ") , number_literal , (string_literal ""operator()"" " string_content ") ))) ;) })))))) (if_statement "if (pSVar5->symsize_ < pSVar6->symsize_) {\n    return false;\n  }" if (parenthesized_expression "(pSVar5->symsize_ < pSVar6->symsize_)" ( (binary_expression "pSVar5->symsize_ < pSVar6->symsize_" (field_expression "pSVar5->symsize_" identifier -> field_identifier) < (field_expression "pSVar6->symsize_" identifier -> field_identifier)) )) (compound_statement "{\n    return false;\n  }" { (return_statement "return false;" return false ;) })) (if_statement "if (pSVar5->symsize_ <= pSVar6->symsize_) {\n    if (SVar1 == SORT_COMMONS_BY_SIZE_DESCENDING) {\n      if (uVar2 < uVar3) {\n        return false;\n      }\n      if (uVar2 >= uVar3 && uVar2 != uVar3) {\n        return true;\n      }\n    }\n    iVar4 = strcmp((pSVar5->super_Symbol).name_,(pSVar6->super_Symbol).name_);\n    return SUB41((uint)iVar4 >> 0x1f,0);\n  }" if (parenthesized_expression "(pSVar5->symsize_ <= pSVar6->symsize_)" ( (binary_expression "pSVar5->symsize_ <= pSVar6->symsize_" (field_expression "pSVar5->symsize_" identifier -> field_identifier) <= (field_expression "pSVar6->symsize_" identifier -> field_identifier)) )) (compound_statement "{\n    if (SVar1 == SORT_COMMONS_BY_SIZE_DESCENDING) {\n      if (uVar2 < uVar3) {\n        return false;\n      }\n      if (uVar2 >= uVar3 && uVar2 != uVar3) {\n        return true;\n      }\n    }\n    iVar4 = strcmp((pSVar5->super_Symbol).name_,(pSVar6->super_Symbol).name_);\n    return SUB41((uint)iVar4 >> 0x1f,0);\n  }" { (if_statement "if (SVar1 == SORT_COMMONS_BY_SIZE_DESCENDING) {\n      if (uVar2 < uVar3) {\n        return false;\n      }\n      if (uVar2 >= uVar3 && uVar2 != uVar3) {\n        return true;\n      }\n    }" if (parenthesized_expression "(SVar1 == SORT_COMMONS_BY_SIZE_DESCENDING)" ( (binary_expression "SVar1 == SORT_COMMONS_BY_SIZE_DESCENDING" identifier == identifier) )) (compound_statement "{\n      if (uVar2 < uVar3) {\n        return false;\n      }\n      if (uVar2 >= uVar3 && uVar2 != uVar3) {\n        return true;\n      }\n    }" { (if_statement "if (uVar2 < uVar3) {\n        return false;\n      }" if (parenthesized_expression "(uVar2 < uVar3)" ( (binary_expression "uVar2 < uVar3" identifier < identifier) )) (compound_statement "{\n        return false;\n      }" { (return_statement "return false;" return false ;) })) (if_statement "if (uVar2 >= uVar3 && uVar2 != uVar3) {\n        return true;\n      }" if (parenthesized_expression "(uVar2 >= uVar3 && uVar2 != uVar3)" ( (binary_expression "uVar2 >= uVar3 && uVar2 != uVar3" (binary_expression "uVar2 >= uVar3" identifier >= identifier) && (binary_expression "uVar2 != uVar3" identifier != identifier)) )) (compound_statement "{\n        return true;\n      }" { (return_statement "return true;" return true ;) })) })) (expression_statement "iVar4 = strcmp((pSVar5->super_Symbol).name_,(pSVar6->super_Symbol).name_);" (assignment_expression "iVar4 = strcmp((pSVar5->super_Symbol).name_,(pSVar6->super_Symbol).name_)" identifier = (call_expression "strcmp((pSVar5->super_Symbol).name_,(pSVar6->super_Symbol).name_)" identifier (argument_list "((pSVar5->super_Symbol).name_,(pSVar6->super_Symbol).name_)" ( (field_expression "(pSVar5->super_Symbol).name_" (parenthesized_expression "(pSVar5->super_Symbol)" ( (field_expression "pSVar5->super_Symbol" identifier -> field_identifier) )) . field_identifier) , (field_expression "(pSVar6->super_Symbol).name_" (parenthesized_expression "(pSVar6->super_Symbol)" ( (field_expression "pSVar6->super_Symbol" identifier -> field_identifier) )) . field_identifier) )))) ;) (return_statement "return SUB41((uint)iVar4 >> 0x1f,0);" return (call_expression "SUB41((uint)iVar4 >> 0x1f,0)" identifier (argument_list "((uint)iVar4 >> 0x1f,0)" ( (binary_expression "(uint)iVar4 >> 0x1f" (cast_expression "(uint)iVar4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) , number_literal ))) ;) })) (return_statement "return true;" return true ;) })))
(translation_unit "uint FUN_002a28f0(long param_1,long param_2,long param_3)\n\n{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  undefined8 *puVar4;\n  undefined8 *puVar5;\n  \n  if (param_2 == 0) {\n    return 0;\n  }\n  if (param_3 == 0) {\n    return 1;\n  }\n  puVar4 = (undefined8 *)FUN_002a27d0(param_2);\n  puVar5 = (undefined8 *)FUN_002a27d0(param_3);\n  iVar1 = *(int *)(param_1 + 8);\n  uVar3 = *(uint *)(puVar4 + 8);\n  uVar2 = *(uint *)(puVar5 + 8);\n  if (iVar1 == 1) {\n    if (uVar3 < uVar2) {\n      return 0;\n    }\n    if (uVar2 < uVar3) {\n      return 1;\n    }\n  }\n  else if (iVar1 == 2) {\n    if (uVar3 < uVar2) {\n      return 1;\n    }\n    if (uVar2 < uVar3) {\n      return 0;\n    }\n  }\n  else if (iVar1 != 0) {\n                    \n    FUN_0018dcf0("../../gold/common.cc",0x7c,"operator()");\n  }\n  if (*(uint *)((long)puVar4 + 0x44) < *(uint *)((long)puVar5 + 0x44)) {\n    return 0;\n  }\n  if (*(uint *)((long)puVar4 + 0x44) <= *(uint *)((long)puVar5 + 0x44)) {\n    if (iVar1 == 0) {\n      if (uVar3 < uVar2) {\n        return 0;\n      }\n      if (uVar3 >= uVar2 && uVar3 != uVar2) {\n        return 1;\n      }\n    }\n    uVar3 = strcmp((char *)*puVar4,(char *)*puVar5);\n    return uVar3 >> 0x1f;\n  }\n  return 1;\n}\n\n" (function_definition "uint FUN_002a28f0(long param_1,long param_2,long param_3)\n\n{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  undefined8 *puVar4;\n  undefined8 *puVar5;\n  \n  if (param_2 == 0) {\n    return 0;\n  }\n  if (param_3 == 0) {\n    return 1;\n  }\n  puVar4 = (undefined8 *)FUN_002a27d0(param_2);\n  puVar5 = (undefined8 *)FUN_002a27d0(param_3);\n  iVar1 = *(int *)(param_1 + 8);\n  uVar3 = *(uint *)(puVar4 + 8);\n  uVar2 = *(uint *)(puVar5 + 8);\n  if (iVar1 == 1) {\n    if (uVar3 < uVar2) {\n      return 0;\n    }\n    if (uVar2 < uVar3) {\n      return 1;\n    }\n  }\n  else if (iVar1 == 2) {\n    if (uVar3 < uVar2) {\n      return 1;\n    }\n    if (uVar2 < uVar3) {\n      return 0;\n    }\n  }\n  else if (iVar1 != 0) {\n                    \n    FUN_0018dcf0("../../gold/common.cc",0x7c,"operator()");\n  }\n  if (*(uint *)((long)puVar4 + 0x44) < *(uint *)((long)puVar5 + 0x44)) {\n    return 0;\n  }\n  if (*(uint *)((long)puVar4 + 0x44) <= *(uint *)((long)puVar5 + 0x44)) {\n    if (iVar1 == 0) {\n      if (uVar3 < uVar2) {\n        return 0;\n      }\n      if (uVar3 >= uVar2 && uVar3 != uVar2) {\n        return 1;\n      }\n    }\n    uVar3 = strcmp((char *)*puVar4,(char *)*puVar5);\n    return uVar3 >> 0x1f;\n  }\n  return 1;\n}" type_identifier (function_declarator "FUN_002a28f0(long param_1,long param_2,long param_3)" identifier (parameter_list "(long param_1,long param_2,long param_3)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  undefined8 *puVar4;\n  undefined8 *puVar5;\n  \n  if (param_2 == 0) {\n    return 0;\n  }\n  if (param_3 == 0) {\n    return 1;\n  }\n  puVar4 = (undefined8 *)FUN_002a27d0(param_2);\n  puVar5 = (undefined8 *)FUN_002a27d0(param_3);\n  iVar1 = *(int *)(param_1 + 8);\n  uVar3 = *(uint *)(puVar4 + 8);\n  uVar2 = *(uint *)(puVar5 + 8);\n  if (iVar1 == 1) {\n    if (uVar3 < uVar2) {\n      return 0;\n    }\n    if (uVar2 < uVar3) {\n      return 1;\n    }\n  }\n  else if (iVar1 == 2) {\n    if (uVar3 < uVar2) {\n      return 1;\n    }\n    if (uVar2 < uVar3) {\n      return 0;\n    }\n  }\n  else if (iVar1 != 0) {\n                    \n    FUN_0018dcf0("../../gold/common.cc",0x7c,"operator()");\n  }\n  if (*(uint *)((long)puVar4 + 0x44) < *(uint *)((long)puVar5 + 0x44)) {\n    return 0;\n  }\n  if (*(uint *)((long)puVar4 + 0x44) <= *(uint *)((long)puVar5 + 0x44)) {\n    if (iVar1 == 0) {\n      if (uVar3 < uVar2) {\n        return 0;\n      }\n      if (uVar3 >= uVar2 && uVar3 != uVar2) {\n        return 1;\n      }\n    }\n    uVar3 = strcmp((char *)*puVar4,(char *)*puVar5);\n    return uVar3 >> 0x1f;\n  }\n  return 1;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "undefined8 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined8 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (if_statement "if (param_2 == 0) {\n    return 0;\n  }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (param_3 == 0) {\n    return 1;\n  }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n    return 1;\n  }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "puVar4 = (undefined8 *)FUN_002a27d0(param_2);" (assignment_expression "puVar4 = (undefined8 *)FUN_002a27d0(param_2)" identifier = (cast_expression "(undefined8 *)FUN_002a27d0(param_2)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002a27d0(param_2)" identifier (argument_list "(param_2)" ( identifier ))))) ;) (expression_statement "puVar5 = (undefined8 *)FUN_002a27d0(param_3);" (assignment_expression "puVar5 = (undefined8 *)FUN_002a27d0(param_3)" identifier = (cast_expression "(undefined8 *)FUN_002a27d0(param_3)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002a27d0(param_3)" identifier (argument_list "(param_3)" ( identifier ))))) ;) (expression_statement "iVar1 = *(int *)(param_1 + 8);" (assignment_expression "iVar1 = *(int *)(param_1 + 8)" identifier = (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = *(uint *)(puVar4 + 8);" (assignment_expression "uVar3 = *(uint *)(puVar4 + 8)" identifier = (pointer_expression "*(uint *)(puVar4 + 8)" * (cast_expression "(uint *)(puVar4 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 8)" ( (binary_expression "puVar4 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar2 = *(uint *)(puVar5 + 8);" (assignment_expression "uVar2 = *(uint *)(puVar5 + 8)" identifier = (pointer_expression "*(uint *)(puVar5 + 8)" * (cast_expression "(uint *)(puVar5 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 8)" ( (binary_expression "puVar5 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar1 == 1) {\n    if (uVar3 < uVar2) {\n      return 0;\n    }\n    if (uVar2 < uVar3) {\n      return 1;\n    }\n  }\n  else if (iVar1 == 2) {\n    if (uVar3 < uVar2) {\n      return 1;\n    }\n    if (uVar2 < uVar3) {\n      return 0;\n    }\n  }\n  else if (iVar1 != 0) {\n                    \n    FUN_0018dcf0("../../gold/common.cc",0x7c,"operator()");\n  }" if (parenthesized_expression "(iVar1 == 1)" ( (binary_expression "iVar1 == 1" identifier == number_literal) )) (compound_statement "{\n    if (uVar3 < uVar2) {\n      return 0;\n    }\n    if (uVar2 < uVar3) {\n      return 1;\n    }\n  }" { (if_statement "if (uVar3 < uVar2) {\n      return 0;\n    }" if (parenthesized_expression "(uVar3 < uVar2)" ( (binary_expression "uVar3 < uVar2" identifier < identifier) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (uVar2 < uVar3) {\n      return 1;\n    }" if (parenthesized_expression "(uVar2 < uVar3)" ( (binary_expression "uVar2 < uVar3" identifier < identifier) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) }) (else_clause "else if (iVar1 == 2) {\n    if (uVar3 < uVar2) {\n      return 1;\n    }\n    if (uVar2 < uVar3) {\n      return 0;\n    }\n  }\n  else if (iVar1 != 0) {\n                    \n    FUN_0018dcf0("../../gold/common.cc",0x7c,"operator()");\n  }" else (if_statement "if (iVar1 == 2) {\n    if (uVar3 < uVar2) {\n      return 1;\n    }\n    if (uVar2 < uVar3) {\n      return 0;\n    }\n  }\n  else if (iVar1 != 0) {\n                    \n    FUN_0018dcf0("../../gold/common.cc",0x7c,"operator()");\n  }" if (parenthesized_expression "(iVar1 == 2)" ( (binary_expression "iVar1 == 2" identifier == number_literal) )) (compound_statement "{\n    if (uVar3 < uVar2) {\n      return 1;\n    }\n    if (uVar2 < uVar3) {\n      return 0;\n    }\n  }" { (if_statement "if (uVar3 < uVar2) {\n      return 1;\n    }" if (parenthesized_expression "(uVar3 < uVar2)" ( (binary_expression "uVar3 < uVar2" identifier < identifier) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) (if_statement "if (uVar2 < uVar3) {\n      return 0;\n    }" if (parenthesized_expression "(uVar2 < uVar3)" ( (binary_expression "uVar2 < uVar3" identifier < identifier) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) }) (else_clause "else if (iVar1 != 0) {\n                    \n    FUN_0018dcf0("../../gold/common.cc",0x7c,"operator()");\n  }" else (if_statement "if (iVar1 != 0) {\n                    \n    FUN_0018dcf0("../../gold/common.cc",0x7c,"operator()");\n  }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n                    \n    FUN_0018dcf0("../../gold/common.cc",0x7c,"operator()");\n  }" { (expression_statement "FUN_0018dcf0("../../gold/common.cc",0x7c,"operator()");" (call_expression "FUN_0018dcf0("../../gold/common.cc",0x7c,"operator()")" identifier (argument_list "("../../gold/common.cc",0x7c,"operator()")" ( (string_literal ""../../gold/common.cc"" " string_content ") , number_literal , (string_literal ""operator()"" " string_content ") ))) ;) })))))) (if_statement "if (*(uint *)((long)puVar4 + 0x44) < *(uint *)((long)puVar5 + 0x44)) {\n    return 0;\n  }" if (parenthesized_expression "(*(uint *)((long)puVar4 + 0x44) < *(uint *)((long)puVar5 + 0x44))" ( (binary_expression "*(uint *)((long)puVar4 + 0x44) < *(uint *)((long)puVar5 + 0x44)" (pointer_expression "*(uint *)((long)puVar4 + 0x44)" * (cast_expression "(uint *)((long)puVar4 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar4 + 0x44)" ( (binary_expression "(long)puVar4 + 0x44" (cast_expression "(long)puVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) < (pointer_expression "*(uint *)((long)puVar5 + 0x44)" * (cast_expression "(uint *)((long)puVar5 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar5 + 0x44)" ( (binary_expression "(long)puVar5 + 0x44" (cast_expression "(long)puVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (*(uint *)((long)puVar4 + 0x44) <= *(uint *)((long)puVar5 + 0x44)) {\n    if (iVar1 == 0) {\n      if (uVar3 < uVar2) {\n        return 0;\n      }\n      if (uVar3 >= uVar2 && uVar3 != uVar2) {\n        return 1;\n      }\n    }\n    uVar3 = strcmp((char *)*puVar4,(char *)*puVar5);\n    return uVar3 >> 0x1f;\n  }" if (parenthesized_expression "(*(uint *)((long)puVar4 + 0x44) <= *(uint *)((long)puVar5 + 0x44))" ( (binary_expression "*(uint *)((long)puVar4 + 0x44) <= *(uint *)((long)puVar5 + 0x44)" (pointer_expression "*(uint *)((long)puVar4 + 0x44)" * (cast_expression "(uint *)((long)puVar4 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar4 + 0x44)" ( (binary_expression "(long)puVar4 + 0x44" (cast_expression "(long)puVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) <= (pointer_expression "*(uint *)((long)puVar5 + 0x44)" * (cast_expression "(uint *)((long)puVar5 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar5 + 0x44)" ( (binary_expression "(long)puVar5 + 0x44" (cast_expression "(long)puVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) )) (compound_statement "{\n    if (iVar1 == 0) {\n      if (uVar3 < uVar2) {\n        return 0;\n      }\n      if (uVar3 >= uVar2 && uVar3 != uVar2) {\n        return 1;\n      }\n    }\n    uVar3 = strcmp((char *)*puVar4,(char *)*puVar5);\n    return uVar3 >> 0x1f;\n  }" { (if_statement "if (iVar1 == 0) {\n      if (uVar3 < uVar2) {\n        return 0;\n      }\n      if (uVar3 >= uVar2 && uVar3 != uVar2) {\n        return 1;\n      }\n    }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      if (uVar3 < uVar2) {\n        return 0;\n      }\n      if (uVar3 >= uVar2 && uVar3 != uVar2) {\n        return 1;\n      }\n    }" { (if_statement "if (uVar3 < uVar2) {\n        return 0;\n      }" if (parenthesized_expression "(uVar3 < uVar2)" ( (binary_expression "uVar3 < uVar2" identifier < identifier) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (uVar3 >= uVar2 && uVar3 != uVar2) {\n        return 1;\n      }" if (parenthesized_expression "(uVar3 >= uVar2 && uVar3 != uVar2)" ( (binary_expression "uVar3 >= uVar2 && uVar3 != uVar2" (binary_expression "uVar3 >= uVar2" identifier >= identifier) && (binary_expression "uVar3 != uVar2" identifier != identifier)) )) (compound_statement "{\n        return 1;\n      }" { (return_statement "return 1;" return number_literal ;) })) })) (expression_statement "uVar3 = strcmp((char *)*puVar4,(char *)*puVar5);" (assignment_expression "uVar3 = strcmp((char *)*puVar4,(char *)*puVar5)" identifier = (call_expression "strcmp((char *)*puVar4,(char *)*puVar5)" identifier (argument_list "((char *)*puVar4,(char *)*puVar5)" ( (cast_expression "(char *)*puVar4" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar4" * identifier)) , (cast_expression "(char *)*puVar5" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar5" * identifier)) )))) ;) (return_statement "return uVar3 >> 0x1f;" return (binary_expression "uVar3 >> 0x1f" identifier >> number_literal) ;) })) (return_statement "return 1;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (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 ;) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (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 ;) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })))))) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))))) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) <= (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (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 IDENT >= IDENT) && (binary_expression IDENT != IDENT)) )) (compound_statement { (return_statement return LIT ;) })) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) )))) ;) (return_statement return (binary_expression IDENT >> LIT) ;) })) (return_statement return LIT ;) })))
(function_definition "uint FUN_002a28f0(long param_1,long param_2,long param_3)\n\n{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  undefined8 *puVar4;\n  undefined8 *puVar5;\n  \n  if (param_2 == 0) {\n    return 0;\n  }\n  if (param_3 == 0) {\n    return 1;\n  }\n  puVar4 = (undefined8 *)FUN_002a27d0(param_2);\n  puVar5 = (undefined8 *)FUN_002a27d0(param_3);\n  iVar1 = *(int *)(param_1 + 8);\n  uVar3 = *(uint *)(puVar4 + 8);\n  uVar2 = *(uint *)(puVar5 + 8);\n  if (iVar1 == 1) {\n    if (uVar3 < uVar2) {\n      return 0;\n    }\n    if (uVar2 < uVar3) {\n      return 1;\n    }\n  }\n  else if (iVar1 == 2) {\n    if (uVar3 < uVar2) {\n      return 1;\n    }\n    if (uVar2 < uVar3) {\n      return 0;\n    }\n  }\n  else if (iVar1 != 0) {\n                    \n    FUN_0018dcf0("../../gold/common.cc",0x7c,"operator()");\n  }\n  if (*(uint *)((long)puVar4 + 0x44) < *(uint *)((long)puVar5 + 0x44)) {\n    return 0;\n  }\n  if (*(uint *)((long)puVar4 + 0x44) <= *(uint *)((long)puVar5 + 0x44)) {\n    if (iVar1 == 0) {\n      if (uVar3 < uVar2) {\n        return 0;\n      }\n      if (uVar3 >= uVar2 && uVar3 != uVar2) {\n        return 1;\n      }\n    }\n    uVar3 = strcmp((char *)*puVar4,(char *)*puVar5);\n    return uVar3 >> 0x1f;\n  }\n  return 1;\n}" (type_identifier "uint") (function_declarator "FUN_002a28f0(long param_1,long param_2,long param_3)" (identifier "FUN_002a28f0") (parameter_list "(long param_1,long param_2,long param_3)" (( "(") (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")) (, ",") (parameter_declaration "long param_3" (sized_type_specifier "long" (long "long")) (identifier "param_3")) () ")"))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  undefined8 *puVar4;\n  undefined8 *puVar5;\n  \n  if (param_2 == 0) {\n    return 0;\n  }\n  if (param_3 == 0) {\n    return 1;\n  }\n  puVar4 = (undefined8 *)FUN_002a27d0(param_2);\n  puVar5 = (undefined8 *)FUN_002a27d0(param_3);\n  iVar1 = *(int *)(param_1 + 8);\n  uVar3 = *(uint *)(puVar4 + 8);\n  uVar2 = *(uint *)(puVar5 + 8);\n  if (iVar1 == 1) {\n    if (uVar3 < uVar2) {\n      return 0;\n    }\n    if (uVar2 < uVar3) {\n      return 1;\n    }\n  }\n  else if (iVar1 == 2) {\n    if (uVar3 < uVar2) {\n      return 1;\n    }\n    if (uVar2 < uVar3) {\n      return 0;\n    }\n  }\n  else if (iVar1 != 0) {\n                    \n    FUN_0018dcf0("../../gold/common.cc",0x7c,"operator()");\n  }\n  if (*(uint *)((long)puVar4 + 0x44) < *(uint *)((long)puVar5 + 0x44)) {\n    return 0;\n  }\n  if (*(uint *)((long)puVar4 + 0x44) <= *(uint *)((long)puVar5 + 0x44)) {\n    if (iVar1 == 0) {\n      if (uVar3 < uVar2) {\n        return 0;\n      }\n      if (uVar3 >= uVar2 && uVar3 != uVar2) {\n        return 1;\n      }\n    }\n    uVar3 = strcmp((char *)*puVar4,(char *)*puVar5);\n    return uVar3 >> 0x1f;\n  }\n  return 1;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "undefined8 *puVar4;" (type_identifier "undefined8") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "undefined8 *puVar5;" (type_identifier "undefined8") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (if_statement "if (param_2 == 0) {\n    return 0;\n  }" (if "if") (parenthesized_expression "(param_2 == 0)" (( "(") (binary_expression "param_2 == 0" (identifier "param_2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if (param_3 == 0) {\n    return 1;\n  }" (if "if") (parenthesized_expression "(param_3 == 0)" (( "(") (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    return 1;\n  }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (expression_statement "puVar4 = (undefined8 *)FUN_002a27d0(param_2);" (assignment_expression "puVar4 = (undefined8 *)FUN_002a27d0(param_2)" (identifier "puVar4") (= "=") (cast_expression "(undefined8 *)FUN_002a27d0(param_2)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002a27d0(param_2)" (identifier "FUN_002a27d0") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")"))))) (; ";")) (expression_statement "puVar5 = (undefined8 *)FUN_002a27d0(param_3);" (assignment_expression "puVar5 = (undefined8 *)FUN_002a27d0(param_3)" (identifier "puVar5") (= "=") (cast_expression "(undefined8 *)FUN_002a27d0(param_3)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002a27d0(param_3)" (identifier "FUN_002a27d0") (argument_list "(param_3)" (( "(") (identifier "param_3") () ")"))))) (; ";")) (expression_statement "iVar1 = *(int *)(param_1 + 8);" (assignment_expression "iVar1 = *(int *)(param_1 + 8)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "uVar3 = *(uint *)(puVar4 + 8);" (assignment_expression "uVar3 = *(uint *)(puVar4 + 8)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)(puVar4 + 8)" (* "*") (cast_expression "(uint *)(puVar4 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 8)" (( "(") (binary_expression "puVar4 + 8" (identifier "puVar4") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "uVar2 = *(uint *)(puVar5 + 8);" (assignment_expression "uVar2 = *(uint *)(puVar5 + 8)" (identifier "uVar2") (= "=") (pointer_expression "*(uint *)(puVar5 + 8)" (* "*") (cast_expression "(uint *)(puVar5 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar5 + 8)" (( "(") (binary_expression "puVar5 + 8" (identifier "puVar5") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (iVar1 == 1) {\n    if (uVar3 < uVar2) {\n      return 0;\n    }\n    if (uVar2 < uVar3) {\n      return 1;\n    }\n  }\n  else if (iVar1 == 2) {\n    if (uVar3 < uVar2) {\n      return 1;\n    }\n    if (uVar2 < uVar3) {\n      return 0;\n    }\n  }\n  else if (iVar1 != 0) {\n                    \n    FUN_0018dcf0("../../gold/common.cc",0x7c,"operator()");\n  }" (if "if") (parenthesized_expression "(iVar1 == 1)" (( "(") (binary_expression "iVar1 == 1" (identifier "iVar1") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n    if (uVar3 < uVar2) {\n      return 0;\n    }\n    if (uVar2 < uVar3) {\n      return 1;\n    }\n  }" ({ "{") (if_statement "if (uVar3 < uVar2) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(uVar3 < uVar2)" (( "(") (binary_expression "uVar3 < uVar2" (identifier "uVar3") (< "<") (identifier "uVar2")) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if (uVar2 < uVar3) {\n      return 1;\n    }" (if "if") (parenthesized_expression "(uVar2 < uVar3)" (( "(") (binary_expression "uVar2 < uVar3" (identifier "uVar2") (< "<") (identifier "uVar3")) () ")")) (compound_statement "{\n      return 1;\n    }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (} "}")) (else_clause "else if (iVar1 == 2) {\n    if (uVar3 < uVar2) {\n      return 1;\n    }\n    if (uVar2 < uVar3) {\n      return 0;\n    }\n  }\n  else if (iVar1 != 0) {\n                    \n    FUN_0018dcf0("../../gold/common.cc",0x7c,"operator()");\n  }" (else "else") (if_statement "if (iVar1 == 2) {\n    if (uVar3 < uVar2) {\n      return 1;\n    }\n    if (uVar2 < uVar3) {\n      return 0;\n    }\n  }\n  else if (iVar1 != 0) {\n                    \n    FUN_0018dcf0("../../gold/common.cc",0x7c,"operator()");\n  }" (if "if") (parenthesized_expression "(iVar1 == 2)" (( "(") (binary_expression "iVar1 == 2" (identifier "iVar1") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n    if (uVar3 < uVar2) {\n      return 1;\n    }\n    if (uVar2 < uVar3) {\n      return 0;\n    }\n  }" ({ "{") (if_statement "if (uVar3 < uVar2) {\n      return 1;\n    }" (if "if") (parenthesized_expression "(uVar3 < uVar2)" (( "(") (binary_expression "uVar3 < uVar2" (identifier "uVar3") (< "<") (identifier "uVar2")) () ")")) (compound_statement "{\n      return 1;\n    }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (if_statement "if (uVar2 < uVar3) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(uVar2 < uVar3)" (( "(") (binary_expression "uVar2 < uVar3" (identifier "uVar2") (< "<") (identifier "uVar3")) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (} "}")) (else_clause "else if (iVar1 != 0) {\n                    \n    FUN_0018dcf0("../../gold/common.cc",0x7c,"operator()");\n  }" (else "else") (if_statement "if (iVar1 != 0) {\n                    \n    FUN_0018dcf0("../../gold/common.cc",0x7c,"operator()");\n  }" (if "if") (parenthesized_expression "(iVar1 != 0)" (( "(") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    FUN_0018dcf0("../../gold/common.cc",0x7c,"operator()");\n  }" ({ "{") (expression_statement "FUN_0018dcf0("../../gold/common.cc",0x7c,"operator()");" (call_expression "FUN_0018dcf0("../../gold/common.cc",0x7c,"operator()")" (identifier "FUN_0018dcf0") (argument_list "("../../gold/common.cc",0x7c,"operator()")" (( "(") (string_literal ""../../gold/common.cc"" (" """) (string_content "../../gold/common.cc") (" """)) (, ",") (number_literal "0x7c") (, ",") (string_literal ""operator()"" (" """) (string_content "operator()") (" """)) () ")"))) (; ";")) (} "}"))))))) (if_statement "if (*(uint *)((long)puVar4 + 0x44) < *(uint *)((long)puVar5 + 0x44)) {\n    return 0;\n  }" (if "if") (parenthesized_expression "(*(uint *)((long)puVar4 + 0x44) < *(uint *)((long)puVar5 + 0x44))" (( "(") (binary_expression "*(uint *)((long)puVar4 + 0x44) < *(uint *)((long)puVar5 + 0x44)" (pointer_expression "*(uint *)((long)puVar4 + 0x44)" (* "*") (cast_expression "(uint *)((long)puVar4 + 0x44)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar4 + 0x44)" (( "(") (binary_expression "(long)puVar4 + 0x44" (cast_expression "(long)puVar4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar4")) (+ "+") (number_literal "0x44")) () ")")))) (< "<") (pointer_expression "*(uint *)((long)puVar5 + 0x44)" (* "*") (cast_expression "(uint *)((long)puVar5 + 0x44)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar5 + 0x44)" (( "(") (binary_expression "(long)puVar5 + 0x44" (cast_expression "(long)puVar5" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar5")) (+ "+") (number_literal "0x44")) () ")"))))) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if (*(uint *)((long)puVar4 + 0x44) <= *(uint *)((long)puVar5 + 0x44)) {\n    if (iVar1 == 0) {\n      if (uVar3 < uVar2) {\n        return 0;\n      }\n      if (uVar3 >= uVar2 && uVar3 != uVar2) {\n        return 1;\n      }\n    }\n    uVar3 = strcmp((char *)*puVar4,(char *)*puVar5);\n    return uVar3 >> 0x1f;\n  }" (if "if") (parenthesized_expression "(*(uint *)((long)puVar4 + 0x44) <= *(uint *)((long)puVar5 + 0x44))" (( "(") (binary_expression "*(uint *)((long)puVar4 + 0x44) <= *(uint *)((long)puVar5 + 0x44)" (pointer_expression "*(uint *)((long)puVar4 + 0x44)" (* "*") (cast_expression "(uint *)((long)puVar4 + 0x44)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar4 + 0x44)" (( "(") (binary_expression "(long)puVar4 + 0x44" (cast_expression "(long)puVar4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar4")) (+ "+") (number_literal "0x44")) () ")")))) (<= "<=") (pointer_expression "*(uint *)((long)puVar5 + 0x44)" (* "*") (cast_expression "(uint *)((long)puVar5 + 0x44)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar5 + 0x44)" (( "(") (binary_expression "(long)puVar5 + 0x44" (cast_expression "(long)puVar5" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar5")) (+ "+") (number_literal "0x44")) () ")"))))) () ")")) (compound_statement "{\n    if (iVar1 == 0) {\n      if (uVar3 < uVar2) {\n        return 0;\n      }\n      if (uVar3 >= uVar2 && uVar3 != uVar2) {\n        return 1;\n      }\n    }\n    uVar3 = strcmp((char *)*puVar4,(char *)*puVar5);\n    return uVar3 >> 0x1f;\n  }" ({ "{") (if_statement "if (iVar1 == 0) {\n      if (uVar3 < uVar2) {\n        return 0;\n      }\n      if (uVar3 >= uVar2 && uVar3 != uVar2) {\n        return 1;\n      }\n    }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if (uVar3 < uVar2) {\n        return 0;\n      }\n      if (uVar3 >= uVar2 && uVar3 != uVar2) {\n        return 1;\n      }\n    }" ({ "{") (if_statement "if (uVar3 < uVar2) {\n        return 0;\n      }" (if "if") (parenthesized_expression "(uVar3 < uVar2)" (( "(") (binary_expression "uVar3 < uVar2" (identifier "uVar3") (< "<") (identifier "uVar2")) () ")")) (compound_statement "{\n        return 0;\n      }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if (uVar3 >= uVar2 && uVar3 != uVar2) {\n        return 1;\n      }" (if "if") (parenthesized_expression "(uVar3 >= uVar2 && uVar3 != uVar2)" (( "(") (binary_expression "uVar3 >= uVar2 && uVar3 != uVar2" (binary_expression "uVar3 >= uVar2" (identifier "uVar3") (>= ">=") (identifier "uVar2")) (&& "&&") (binary_expression "uVar3 != uVar2" (identifier "uVar3") (!= "!=") (identifier "uVar2"))) () ")")) (compound_statement "{\n        return 1;\n      }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (} "}"))) (expression_statement "uVar3 = strcmp((char *)*puVar4,(char *)*puVar5);" (assignment_expression "uVar3 = strcmp((char *)*puVar4,(char *)*puVar5)" (identifier "uVar3") (= "=") (call_expression "strcmp((char *)*puVar4,(char *)*puVar5)" (identifier "strcmp") (argument_list "((char *)*puVar4,(char *)*puVar5)" (( "(") (cast_expression "(char *)*puVar4" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar4" (* "*") (identifier "puVar4"))) (, ",") (cast_expression "(char *)*puVar5" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) () ")")))) (; ";")) (return_statement "return uVar3 >> 0x1f;" (return "return") (binary_expression "uVar3 >> 0x1f" (identifier "uVar3") (>> ">>") (number_literal "0x1f")) (; ";")) (} "}"))) (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}")))

/* DWARF original prototype: bool operator()(Sort_commons<32> * this, Symbol * pa, Symbol * pb) */

bool __thiscall gold::type_1<32>::function_1()(type_1<32> *this,type_2 *var_2,type_2 *var_3)

{
  type_3 var_4;
  type_4 var_6;
  type_4 var_7;
  int iVar4;
  var_1<32> *pSVar5;
  var_1<32> *pSVar6;
  
  if (var_2 == (type_2 *)0x0) {
    return false;
  }
  if (var_3 == (type_2 *)0x0) {
    return true;
  }
  pSVar5 = type_5::get_sized_symbol<32>((type_5 *)var_2,var_2);
  pSVar6 = type_5::get_sized_symbol<32>((type_5 *)var_3,var_2);
  var_4 = this->sort_order_;
  var_6 = pSVar5->value_;
  var_7 = pSVar6->value_;
  if (var_4 == var_5) {
    if (var_6 < var_7) {
      return false;
    }
    if (var_7 < var_6) {
      return true;
    }
  }
  else if (var_4 == var_8) {
    if (var_6 < var_7) {
      return true;
    }
    if (var_7 < var_6) {
      return false;
    }
  }
  else if (var_4 != var_9) {
                    /* WARNING: Subroutine does not return */
    var_10("../../gold/common.cc",0x7c,"operator()");
  }
  if (pSVar5->symsize_ < pSVar6->symsize_) {
    return false;
  }
  if (pSVar5->symsize_ <= pSVar6->symsize_) {
    if (var_4 == var_9) {
      if (var_6 < var_7) {
        return false;
      }
      if (var_6 >= var_7 && var_6 != var_7) {
        return true;
      }
    }
    iVar4 = var_11((pSVar5->super_Symbol).name_,(pSVar6->super_Symbol).name_);
    return var_12((type_4)iVar4 >> 0x1f,0);
  }
  return true;
}


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

uint MASKED(long param_1,long param_2,long param_3)

{
  int iVar1;
  uint uVar2;
  uint uVar3;
  undefined8 *puVar4;
  undefined8 *puVar5;
  
  if (param_2 == 0) {
    return 0;
  }
  if (param_3 == 0) {
    return 1;
  }
  puVar4 = (undefined8 *)FUN_002a27d0(param_2);
  puVar5 = (undefined8 *)FUN_002a27d0(param_3);
  iVar1 = *(int *)(param_1 + 8);
  uVar3 = *(uint *)(puVar4 + 8);
  uVar2 = *(uint *)(puVar5 + 8);
  if (iVar1 == 1) {
    if (uVar3 < uVar2) {
      return 0;
    }
    if (uVar2 < uVar3) {
      return 1;
    }
  }
  else if (iVar1 == 2) {
    if (uVar3 < uVar2) {
      return 1;
    }
    if (uVar2 < uVar3) {
      return 0;
    }
  }
  else if (iVar1 != 0) {
                    /* WARNING: Subroutine does not return */
    FUN_0018dcf0("../../gold/common.cc",0x7c,"operator()");
  }
  if (*(uint *)((long)puVar4 + 0x44) < *(uint *)((long)puVar5 + 0x44)) {
    return 0;
  }
  if (*(uint *)((long)puVar4 + 0x44) <= *(uint *)((long)puVar5 + 0x44)) {
    if (iVar1 == 0) {
      if (uVar3 < uVar2) {
        return 0;
      }
      if (uVar3 >= uVar2 && uVar3 != uVar2) {
        return 1;
      }
    }
    uVar3 = strcmp((char *)*puVar4,(char *)*puVar5);
    return uVar3 >> 0x1f;
  }
  return 1;
}

