
/* DWARF original prototype: bool operator()(Cref_table_compare * this, Symbol * s1, Symbol * s2) */

bool __thiscall
gold::Cref_inputs::Cref_table_compare::operator()(Cref_table_compare *this,Symbol *s1,Symbol *s2)

{
  char *__s2;
  byte bVar1;
  bool bVar2;
  int iVar3;
  byte bVar4;
  
  iVar3 = strcmp(s1->name_,s2->name_);
  if (iVar3 == 0) {
    __s2 = s2->version_;
    if (s1->version_ == (char *)0x0) {
      if (__s2 != (char *)0x0) {
        return true;
      }
    }
    else {
      if (__s2 == (char *)0x0) {
        return false;
      }
      iVar3 = strcmp(s1->version_,__s2);
      if (iVar3 != 0) goto LAB_00263bb0;
    }
    if (s2 == s1) {
      return false;
    }
    bVar1 = (byte)s1->field_0x3a >> 4;
    bVar4 = (byte)s2->field_0x3a >> 4 & 1;
    bVar2 = (bool)(bVar1 & 1);
    if ((bVar1 & 1) == 0) {
      if (bVar4 != 0) {
        return bVar2;
      }
    }
    else if (bVar4 == 0) {
      return bVar2;
    }
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/cref.cc",0xf6,"operator()");
  }
LAB_00263bb0:
  return SUB41((uint)iVar3 >> 0x1f,0);
}



uint FUN_00263b30(undefined8 param_1,undefined8 *param_2,undefined8 *param_3)

{
  char *__s2;
  byte bVar1;
  uint uVar2;
  byte bVar3;
  
  uVar2 = strcmp((char *)*param_2,(char *)*param_3);
  if (uVar2 == 0) {
    __s2 = (char *)param_3[1];
    if ((char *)param_2[1] == (char *)0x0) {
      if (__s2 != (char *)0x0) {
        return 1;
      }
    }
    else {
      if (__s2 == (char *)0x0) {
        return 0;
      }
      uVar2 = strcmp((char *)param_2[1],__s2);
      if (uVar2 != 0) goto LAB_00263bb0;
    }
    if (param_3 == param_2) {
      return 0;
    }
    bVar1 = *(byte *)((long)param_2 + 0x3a) >> 4;
    bVar3 = *(byte *)((long)param_3 + 0x3a) >> 4 & 1;
    uVar2 = bVar1 & 1;
    if ((bVar1 & 1) == 0) {
      if (bVar3 != 0) {
        return uVar2;
      }
    }
    else if (bVar3 == 0) {
      return uVar2;
    }
                    /* WARNING: Subroutine does not return */
    FUN_00199900("../../gold/cref.cc",0xf6,"operator()");
  }
LAB_00263bb0:
  return uVar2 >> 0x1f;
}


PUSH RBP
MOV RBP,RSI
PUSH RBX
MOV RBX,RDX
SUB RSP,0x8
MOV RSI,qword ptr [RDX]
MOV RDI,qword ptr [RBP]
CALL 0x00144790
TEST EAX,EAX
JNZ 0x00263bb0
MOV RDI,qword ptr [RBP + 0x8]
MOV RSI,qword ptr [RBX + 0x8]
TEST RDI,RDI
JZ 0x00263bc0
TEST RSI,RSI
JZ 0x00263bd8
CALL 0x00144790
TEST EAX,EAX
JNZ 0x00263bb0
CMP RBX,RBP
JZ 0x00263bd8
MOVZX EAX,byte ptr [RBP + 0x3a]
MOVZX EDX,byte ptr [RBX + 0x3a]
SHR AL,0x4
SHR DL,0x4
AND EDX,0x1
AND EAX,0x1
JZ 0x00263ba0
TEST DL,DL
JZ 0x00263ba4
LEA RDX,[0x355320]
MOV ESI,0xf6
LEA RDI,[0x355263]
CALL 0x00199900
TEST DL,DL
JZ 0x00263b86
ADD RSP,0x8
POP RBX
POP RBP
RET
ADD RSP,0x8
SHR EAX,0x1f
POP RBX
POP RBP
RET
MOV EAX,0x1
TEST RSI,RSI
JZ 0x00263b67
ADD RSP,0x8
POP RBX
POP RBP
RET
ADD RSP,0x8
XOR EAX,EAX
POP RBX
POP RBP
RET
(translation_unit "uint FUN_00263b30(undefined8 param_1,undefined8 *param_2,undefined8 *param_3)\n\n{\n  char *__s2;\n  byte bVar1;\n  uint uVar2;\n  byte bVar3;\n  \n  uVar2 = strcmp((char *)*param_2,(char *)*param_3);\n  if (uVar2 == 0) {\n    __s2 = (char *)param_3[1];\n    if ((char *)param_2[1] == (char *)0x0) {\n      if (__s2 != (char *)0x0) {\n        return 1;\n      }\n    }\n    else {\n      if (__s2 == (char *)0x0) {\n        return 0;\n      }\n      uVar2 = strcmp((char *)param_2[1],__s2);\n      if (uVar2 != 0) goto LAB_00263bb0;\n    }\n    if (param_3 == param_2) {\n      return 0;\n    }\n    bVar1 = *(byte *)((long)param_2 + 0x3a) >> 4;\n    bVar3 = *(byte *)((long)param_3 + 0x3a) >> 4 & 1;\n    uVar2 = bVar1 & 1;\n    if ((bVar1 & 1) == 0) {\n      if (bVar3 != 0) {\n        return uVar2;\n      }\n    }\n    else if (bVar3 == 0) {\n      return uVar2;\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_00199900("../../gold/cref.cc",0xf6,"operator()");\n  }\nLAB_00263bb0:\n  return uVar2 >> 0x1f;\n}\n\n" (function_definition "uint FUN_00263b30(undefined8 param_1,undefined8 *param_2,undefined8 *param_3)\n\n{\n  char *__s2;\n  byte bVar1;\n  uint uVar2;\n  byte bVar3;\n  \n  uVar2 = strcmp((char *)*param_2,(char *)*param_3);\n  if (uVar2 == 0) {\n    __s2 = (char *)param_3[1];\n    if ((char *)param_2[1] == (char *)0x0) {\n      if (__s2 != (char *)0x0) {\n        return 1;\n      }\n    }\n    else {\n      if (__s2 == (char *)0x0) {\n        return 0;\n      }\n      uVar2 = strcmp((char *)param_2[1],__s2);\n      if (uVar2 != 0) goto LAB_00263bb0;\n    }\n    if (param_3 == param_2) {\n      return 0;\n    }\n    bVar1 = *(byte *)((long)param_2 + 0x3a) >> 4;\n    bVar3 = *(byte *)((long)param_3 + 0x3a) >> 4 & 1;\n    uVar2 = bVar1 & 1;\n    if ((bVar1 & 1) == 0) {\n      if (bVar3 != 0) {\n        return uVar2;\n      }\n    }\n    else if (bVar3 == 0) {\n      return uVar2;\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_00199900("../../gold/cref.cc",0xf6,"operator()");\n  }\nLAB_00263bb0:\n  return uVar2 >> 0x1f;\n}" type_identifier (function_declarator "FUN_00263b30(undefined8 param_1,undefined8 *param_2,undefined8 *param_3)" identifier (parameter_list "(undefined8 param_1,undefined8 *param_2,undefined8 *param_3)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) , (parameter_declaration "undefined8 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined8 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  char *__s2;\n  byte bVar1;\n  uint uVar2;\n  byte bVar3;\n  \n  uVar2 = strcmp((char *)*param_2,(char *)*param_3);\n  if (uVar2 == 0) {\n    __s2 = (char *)param_3[1];\n    if ((char *)param_2[1] == (char *)0x0) {\n      if (__s2 != (char *)0x0) {\n        return 1;\n      }\n    }\n    else {\n      if (__s2 == (char *)0x0) {\n        return 0;\n      }\n      uVar2 = strcmp((char *)param_2[1],__s2);\n      if (uVar2 != 0) goto LAB_00263bb0;\n    }\n    if (param_3 == param_2) {\n      return 0;\n    }\n    bVar1 = *(byte *)((long)param_2 + 0x3a) >> 4;\n    bVar3 = *(byte *)((long)param_3 + 0x3a) >> 4 & 1;\n    uVar2 = bVar1 & 1;\n    if ((bVar1 & 1) == 0) {\n      if (bVar3 != 0) {\n        return uVar2;\n      }\n    }\n    else if (bVar3 == 0) {\n      return uVar2;\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_00199900("../../gold/cref.cc",0xf6,"operator()");\n  }\nLAB_00263bb0:\n  return uVar2 >> 0x1f;\n}" { (declaration "char *__s2;" primitive_type (pointer_declarator "*__s2" * identifier) ;) (declaration "byte bVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "byte bVar3;" type_identifier identifier ;) (expression_statement "uVar2 = strcmp((char *)*param_2,(char *)*param_3);" (assignment_expression "uVar2 = strcmp((char *)*param_2,(char *)*param_3)" identifier = (call_expression "strcmp((char *)*param_2,(char *)*param_3)" identifier (argument_list "((char *)*param_2,(char *)*param_3)" ( (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier)) , (cast_expression "(char *)*param_3" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_3" * identifier)) )))) ;) (if_statement "if (uVar2 == 0) {\n    __s2 = (char *)param_3[1];\n    if ((char *)param_2[1] == (char *)0x0) {\n      if (__s2 != (char *)0x0) {\n        return 1;\n      }\n    }\n    else {\n      if (__s2 == (char *)0x0) {\n        return 0;\n      }\n      uVar2 = strcmp((char *)param_2[1],__s2);\n      if (uVar2 != 0) goto LAB_00263bb0;\n    }\n    if (param_3 == param_2) {\n      return 0;\n    }\n    bVar1 = *(byte *)((long)param_2 + 0x3a) >> 4;\n    bVar3 = *(byte *)((long)param_3 + 0x3a) >> 4 & 1;\n    uVar2 = bVar1 & 1;\n    if ((bVar1 & 1) == 0) {\n      if (bVar3 != 0) {\n        return uVar2;\n      }\n    }\n    else if (bVar3 == 0) {\n      return uVar2;\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_00199900("../../gold/cref.cc",0xf6,"operator()");\n  }" if (parenthesized_expression "(uVar2 == 0)" ( (binary_expression "uVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    __s2 = (char *)param_3[1];\n    if ((char *)param_2[1] == (char *)0x0) {\n      if (__s2 != (char *)0x0) {\n        return 1;\n      }\n    }\n    else {\n      if (__s2 == (char *)0x0) {\n        return 0;\n      }\n      uVar2 = strcmp((char *)param_2[1],__s2);\n      if (uVar2 != 0) goto LAB_00263bb0;\n    }\n    if (param_3 == param_2) {\n      return 0;\n    }\n    bVar1 = *(byte *)((long)param_2 + 0x3a) >> 4;\n    bVar3 = *(byte *)((long)param_3 + 0x3a) >> 4 & 1;\n    uVar2 = bVar1 & 1;\n    if ((bVar1 & 1) == 0) {\n      if (bVar3 != 0) {\n        return uVar2;\n      }\n    }\n    else if (bVar3 == 0) {\n      return uVar2;\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_00199900("../../gold/cref.cc",0xf6,"operator()");\n  }" { (expression_statement "__s2 = (char *)param_3[1];" (assignment_expression "__s2 = (char *)param_3[1]" identifier = (cast_expression "(char *)param_3[1]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[1]" identifier [ number_literal ]))) ;) (if_statement "if ((char *)param_2[1] == (char *)0x0) {\n      if (__s2 != (char *)0x0) {\n        return 1;\n      }\n    }\n    else {\n      if (__s2 == (char *)0x0) {\n        return 0;\n      }\n      uVar2 = strcmp((char *)param_2[1],__s2);\n      if (uVar2 != 0) goto LAB_00263bb0;\n    }" if (parenthesized_expression "((char *)param_2[1] == (char *)0x0)" ( (binary_expression "(char *)param_2[1] == (char *)0x0" (cast_expression "(char *)param_2[1]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[1]" identifier [ number_literal ])) == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if (__s2 != (char *)0x0) {\n        return 1;\n      }\n    }" { (if_statement "if (__s2 != (char *)0x0) {\n        return 1;\n      }" if (parenthesized_expression "(__s2 != (char *)0x0)" ( (binary_expression "__s2 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        return 1;\n      }" { (return_statement "return 1;" return number_literal ;) })) }) (else_clause "else {\n      if (__s2 == (char *)0x0) {\n        return 0;\n      }\n      uVar2 = strcmp((char *)param_2[1],__s2);\n      if (uVar2 != 0) goto LAB_00263bb0;\n    }" else (compound_statement "{\n      if (__s2 == (char *)0x0) {\n        return 0;\n      }\n      uVar2 = strcmp((char *)param_2[1],__s2);\n      if (uVar2 != 0) goto LAB_00263bb0;\n    }" { (if_statement "if (__s2 == (char *)0x0) {\n        return 0;\n      }" if (parenthesized_expression "(__s2 == (char *)0x0)" ( (binary_expression "__s2 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "uVar2 = strcmp((char *)param_2[1],__s2);" (assignment_expression "uVar2 = strcmp((char *)param_2[1],__s2)" identifier = (call_expression "strcmp((char *)param_2[1],__s2)" identifier (argument_list "((char *)param_2[1],__s2)" ( (cast_expression "(char *)param_2[1]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[1]" identifier [ number_literal ])) , identifier )))) ;) (if_statement "if (uVar2 != 0) goto LAB_00263bb0;" if (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00263bb0;" goto statement_identifier ;)) }))) (if_statement "if (param_3 == param_2) {\n      return 0;\n    }" if (parenthesized_expression "(param_3 == param_2)" ( (binary_expression "param_3 == param_2" identifier == identifier) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "bVar1 = *(byte *)((long)param_2 + 0x3a) >> 4;" (assignment_expression "bVar1 = *(byte *)((long)param_2 + 0x3a) >> 4" identifier = (binary_expression "*(byte *)((long)param_2 + 0x3a) >> 4" (pointer_expression "*(byte *)((long)param_2 + 0x3a)" * (cast_expression "(byte *)((long)param_2 + 0x3a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 + 0x3a)" ( (binary_expression "(long)param_2 + 0x3a" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) >> number_literal)) ;) (expression_statement "bVar3 = *(byte *)((long)param_3 + 0x3a) >> 4 & 1;" (assignment_expression "bVar3 = *(byte *)((long)param_3 + 0x3a) >> 4 & 1" identifier = (binary_expression "*(byte *)((long)param_3 + 0x3a) >> 4 & 1" (binary_expression "*(byte *)((long)param_3 + 0x3a) >> 4" (pointer_expression "*(byte *)((long)param_3 + 0x3a)" * (cast_expression "(byte *)((long)param_3 + 0x3a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_3 + 0x3a)" ( (binary_expression "(long)param_3 + 0x3a" (cast_expression "(long)param_3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) >> number_literal) & number_literal)) ;) (expression_statement "uVar2 = bVar1 & 1;" (assignment_expression "uVar2 = bVar1 & 1" identifier = (binary_expression "bVar1 & 1" identifier & number_literal)) ;) (if_statement "if ((bVar1 & 1) == 0) {\n      if (bVar3 != 0) {\n        return uVar2;\n      }\n    }\n    else if (bVar3 == 0) {\n      return uVar2;\n    }" if (parenthesized_expression "((bVar1 & 1) == 0)" ( (binary_expression "(bVar1 & 1) == 0" (parenthesized_expression "(bVar1 & 1)" ( (binary_expression "bVar1 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      if (bVar3 != 0) {\n        return uVar2;\n      }\n    }" { (if_statement "if (bVar3 != 0) {\n        return uVar2;\n      }" if (parenthesized_expression "(bVar3 != 0)" ( (binary_expression "bVar3 != 0" identifier != number_literal) )) (compound_statement "{\n        return uVar2;\n      }" { (return_statement "return uVar2;" return identifier ;) })) }) (else_clause "else if (bVar3 == 0) {\n      return uVar2;\n    }" else (if_statement "if (bVar3 == 0) {\n      return uVar2;\n    }" if (parenthesized_expression "(bVar3 == 0)" ( (binary_expression "bVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      return uVar2;\n    }" { (return_statement "return uVar2;" return identifier ;) })))) comment (expression_statement "FUN_00199900("../../gold/cref.cc",0xf6,"operator()");" (call_expression "FUN_00199900("../../gold/cref.cc",0xf6,"operator()")" identifier (argument_list "("../../gold/cref.cc",0xf6,"operator()")" ( (string_literal ""../../gold/cref.cc"" " string_content ") , number_literal , (string_literal ""operator()"" " string_content ") ))) ;) })) (labeled_statement "LAB_00263bb0:\n  return uVar2 >> 0x1f;" statement_identifier : (return_statement "return uVar2 >> 0x1f;" return (binary_expression "uVar2 >> 0x1f" identifier >> number_literal) ;)) })))
(translation_unit "/* DWARF original prototype: bool operator()(Cref_table_compare * this, Symbol * s1, Symbol * s2) */\n\nbool __thiscall\ngold::Cref_inputs::Cref_table_compare::operator()(Cref_table_compare *this,Symbol *s1,Symbol *s2)\n\n{\n  char *__s2;\n  byte bVar1;\n  bool bVar2;\n  int iVar3;\n  byte bVar4;\n  \n  iVar3 = strcmp(s1->name_,s2->name_);\n  if (iVar3 == 0) {\n    __s2 = s2->version_;\n    if (s1->version_ == (char *)0x0) {\n      if (__s2 != (char *)0x0) {\n        return true;\n      }\n    }\n    else {\n      if (__s2 == (char *)0x0) {\n        return false;\n      }\n      iVar3 = strcmp(s1->version_,__s2);\n      if (iVar3 != 0) goto LAB_00263bb0;\n    }\n    if (s2 == s1) {\n      return false;\n    }\n    bVar1 = (byte)s1->field_0x3a >> 4;\n    bVar4 = (byte)s2->field_0x3a >> 4 & 1;\n    bVar2 = (bool)(bVar1 & 1);\n    if ((bVar1 & 1) == 0) {\n      if (bVar4 != 0) {\n        return bVar2;\n      }\n    }\n    else if (bVar4 == 0) {\n      return bVar2;\n    }\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/cref.cc",0xf6,"operator()");\n  }\nLAB_00263bb0:\n  return SUB41((uint)iVar3 >> 0x1f,0);\n}\n\n" comment (function_definition "bool __thiscall\ngold::Cref_inputs::Cref_table_compare::operator()(Cref_table_compare *this,Symbol *s1,Symbol *s2)\n\n{\n  char *__s2;\n  byte bVar1;\n  bool bVar2;\n  int iVar3;\n  byte bVar4;\n  \n  iVar3 = strcmp(s1->name_,s2->name_);\n  if (iVar3 == 0) {\n    __s2 = s2->version_;\n    if (s1->version_ == (char *)0x0) {\n      if (__s2 != (char *)0x0) {\n        return true;\n      }\n    }\n    else {\n      if (__s2 == (char *)0x0) {\n        return false;\n      }\n      iVar3 = strcmp(s1->version_,__s2);\n      if (iVar3 != 0) goto LAB_00263bb0;\n    }\n    if (s2 == s1) {\n      return false;\n    }\n    bVar1 = (byte)s1->field_0x3a >> 4;\n    bVar4 = (byte)s2->field_0x3a >> 4 & 1;\n    bVar2 = (bool)(bVar1 & 1);\n    if ((bVar1 & 1) == 0) {\n      if (bVar4 != 0) {\n        return bVar2;\n      }\n    }\n    else if (bVar4 == 0) {\n      return bVar2;\n    }\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/cref.cc",0xf6,"operator()");\n  }\nLAB_00263bb0:\n  return SUB41((uint)iVar3 >> 0x1f,0);\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Cref_inputs::Cref_table_compare::" identifier : : identifier : : identifier : :) (function_declarator "operator()(Cref_table_compare *this,Symbol *s1,Symbol *s2)" (function_declarator "operator()" identifier (parameter_list "()" ( ))) (parameter_list "(Cref_table_compare *this,Symbol *s1,Symbol *s2)" ( (parameter_declaration "Cref_table_compare *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Symbol *s1" type_identifier (pointer_declarator "*s1" * identifier)) , (parameter_declaration "Symbol *s2" type_identifier (pointer_declarator "*s2" * identifier)) ))) (compound_statement "{\n  char *__s2;\n  byte bVar1;\n  bool bVar2;\n  int iVar3;\n  byte bVar4;\n  \n  iVar3 = strcmp(s1->name_,s2->name_);\n  if (iVar3 == 0) {\n    __s2 = s2->version_;\n    if (s1->version_ == (char *)0x0) {\n      if (__s2 != (char *)0x0) {\n        return true;\n      }\n    }\n    else {\n      if (__s2 == (char *)0x0) {\n        return false;\n      }\n      iVar3 = strcmp(s1->version_,__s2);\n      if (iVar3 != 0) goto LAB_00263bb0;\n    }\n    if (s2 == s1) {\n      return false;\n    }\n    bVar1 = (byte)s1->field_0x3a >> 4;\n    bVar4 = (byte)s2->field_0x3a >> 4 & 1;\n    bVar2 = (bool)(bVar1 & 1);\n    if ((bVar1 & 1) == 0) {\n      if (bVar4 != 0) {\n        return bVar2;\n      }\n    }\n    else if (bVar4 == 0) {\n      return bVar2;\n    }\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/cref.cc",0xf6,"operator()");\n  }\nLAB_00263bb0:\n  return SUB41((uint)iVar3 >> 0x1f,0);\n}" { (declaration "char *__s2;" primitive_type (pointer_declarator "*__s2" * identifier) ;) (declaration "byte bVar1;" type_identifier identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "byte bVar4;" type_identifier identifier ;) (expression_statement "iVar3 = strcmp(s1->name_,s2->name_);" (assignment_expression "iVar3 = strcmp(s1->name_,s2->name_)" identifier = (call_expression "strcmp(s1->name_,s2->name_)" identifier (argument_list "(s1->name_,s2->name_)" ( (field_expression "s1->name_" identifier -> field_identifier) , (field_expression "s2->name_" identifier -> field_identifier) )))) ;) (if_statement "if (iVar3 == 0) {\n    __s2 = s2->version_;\n    if (s1->version_ == (char *)0x0) {\n      if (__s2 != (char *)0x0) {\n        return true;\n      }\n    }\n    else {\n      if (__s2 == (char *)0x0) {\n        return false;\n      }\n      iVar3 = strcmp(s1->version_,__s2);\n      if (iVar3 != 0) goto LAB_00263bb0;\n    }\n    if (s2 == s1) {\n      return false;\n    }\n    bVar1 = (byte)s1->field_0x3a >> 4;\n    bVar4 = (byte)s2->field_0x3a >> 4 & 1;\n    bVar2 = (bool)(bVar1 & 1);\n    if ((bVar1 & 1) == 0) {\n      if (bVar4 != 0) {\n        return bVar2;\n      }\n    }\n    else if (bVar4 == 0) {\n      return bVar2;\n    }\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/cref.cc",0xf6,"operator()");\n  }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n    __s2 = s2->version_;\n    if (s1->version_ == (char *)0x0) {\n      if (__s2 != (char *)0x0) {\n        return true;\n      }\n    }\n    else {\n      if (__s2 == (char *)0x0) {\n        return false;\n      }\n      iVar3 = strcmp(s1->version_,__s2);\n      if (iVar3 != 0) goto LAB_00263bb0;\n    }\n    if (s2 == s1) {\n      return false;\n    }\n    bVar1 = (byte)s1->field_0x3a >> 4;\n    bVar4 = (byte)s2->field_0x3a >> 4 & 1;\n    bVar2 = (bool)(bVar1 & 1);\n    if ((bVar1 & 1) == 0) {\n      if (bVar4 != 0) {\n        return bVar2;\n      }\n    }\n    else if (bVar4 == 0) {\n      return bVar2;\n    }\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/cref.cc",0xf6,"operator()");\n  }" { (expression_statement "__s2 = s2->version_;" (assignment_expression "__s2 = s2->version_" identifier = (field_expression "s2->version_" identifier -> field_identifier)) ;) (if_statement "if (s1->version_ == (char *)0x0) {\n      if (__s2 != (char *)0x0) {\n        return true;\n      }\n    }\n    else {\n      if (__s2 == (char *)0x0) {\n        return false;\n      }\n      iVar3 = strcmp(s1->version_,__s2);\n      if (iVar3 != 0) goto LAB_00263bb0;\n    }" if (parenthesized_expression "(s1->version_ == (char *)0x0)" ( (binary_expression "s1->version_ == (char *)0x0" (field_expression "s1->version_" identifier -> field_identifier) == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if (__s2 != (char *)0x0) {\n        return true;\n      }\n    }" { (if_statement "if (__s2 != (char *)0x0) {\n        return true;\n      }" if (parenthesized_expression "(__s2 != (char *)0x0)" ( (binary_expression "__s2 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        return true;\n      }" { (return_statement "return true;" return true ;) })) }) (else_clause "else {\n      if (__s2 == (char *)0x0) {\n        return false;\n      }\n      iVar3 = strcmp(s1->version_,__s2);\n      if (iVar3 != 0) goto LAB_00263bb0;\n    }" else (compound_statement "{\n      if (__s2 == (char *)0x0) {\n        return false;\n      }\n      iVar3 = strcmp(s1->version_,__s2);\n      if (iVar3 != 0) goto LAB_00263bb0;\n    }" { (if_statement "if (__s2 == (char *)0x0) {\n        return false;\n      }" if (parenthesized_expression "(__s2 == (char *)0x0)" ( (binary_expression "__s2 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        return false;\n      }" { (return_statement "return false;" return false ;) })) (expression_statement "iVar3 = strcmp(s1->version_,__s2);" (assignment_expression "iVar3 = strcmp(s1->version_,__s2)" identifier = (call_expression "strcmp(s1->version_,__s2)" identifier (argument_list "(s1->version_,__s2)" ( (field_expression "s1->version_" identifier -> field_identifier) , identifier )))) ;) (if_statement "if (iVar3 != 0) goto LAB_00263bb0;" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00263bb0;" goto statement_identifier ;)) }))) (if_statement "if (s2 == s1) {\n      return false;\n    }" if (parenthesized_expression "(s2 == s1)" ( (binary_expression "s2 == s1" identifier == identifier) )) (compound_statement "{\n      return false;\n    }" { (return_statement "return false;" return false ;) })) (expression_statement "bVar1 = (byte)s1->field_0x3a >> 4;" (assignment_expression "bVar1 = (byte)s1->field_0x3a >> 4" identifier = (binary_expression "(byte)s1->field_0x3a >> 4" (cast_expression "(byte)s1->field_0x3a" ( (type_descriptor "byte" type_identifier) ) (field_expression "s1->field_0x3a" identifier -> field_identifier)) >> number_literal)) ;) (expression_statement "bVar4 = (byte)s2->field_0x3a >> 4 & 1;" (assignment_expression "bVar4 = (byte)s2->field_0x3a >> 4 & 1" identifier = (binary_expression "(byte)s2->field_0x3a >> 4 & 1" (binary_expression "(byte)s2->field_0x3a >> 4" (cast_expression "(byte)s2->field_0x3a" ( (type_descriptor "byte" type_identifier) ) (field_expression "s2->field_0x3a" identifier -> field_identifier)) >> number_literal) & number_literal)) ;) (expression_statement "bVar2 = (bool)(bVar1 & 1);" (assignment_expression "bVar2 = (bool)(bVar1 & 1)" identifier = (cast_expression "(bool)(bVar1 & 1)" ( (type_descriptor "bool" primitive_type) ) (parenthesized_expression "(bVar1 & 1)" ( (binary_expression "bVar1 & 1" identifier & number_literal) )))) ;) (if_statement "if ((bVar1 & 1) == 0) {\n      if (bVar4 != 0) {\n        return bVar2;\n      }\n    }\n    else if (bVar4 == 0) {\n      return bVar2;\n    }" if (parenthesized_expression "((bVar1 & 1) == 0)" ( (binary_expression "(bVar1 & 1) == 0" (parenthesized_expression "(bVar1 & 1)" ( (binary_expression "bVar1 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      if (bVar4 != 0) {\n        return bVar2;\n      }\n    }" { (if_statement "if (bVar4 != 0) {\n        return bVar2;\n      }" if (parenthesized_expression "(bVar4 != 0)" ( (binary_expression "bVar4 != 0" identifier != number_literal) )) (compound_statement "{\n        return bVar2;\n      }" { (return_statement "return bVar2;" return identifier ;) })) }) (else_clause "else if (bVar4 == 0) {\n      return bVar2;\n    }" else (if_statement "if (bVar4 == 0) {\n      return bVar2;\n    }" if (parenthesized_expression "(bVar4 == 0)" ( (binary_expression "bVar4 == 0" identifier == number_literal) )) (compound_statement "{\n      return bVar2;\n    }" { (return_statement "return bVar2;" return identifier ;) })))) comment (expression_statement "do_gold_unreachable("../../gold/cref.cc",0xf6,"operator()");" (call_expression "do_gold_unreachable("../../gold/cref.cc",0xf6,"operator()")" identifier (argument_list "("../../gold/cref.cc",0xf6,"operator()")" ( (string_literal ""../../gold/cref.cc"" " string_content ") , number_literal , (string_literal ""operator()"" " string_content ") ))) ;) })) (labeled_statement "LAB_00263bb0:\n  return SUB41((uint)iVar3 >> 0x1f,0);" statement_identifier : (return_statement "return SUB41((uint)iVar3 >> 0x1f,0);" return (call_expression "SUB41((uint)iVar3 >> 0x1f,0)" identifier (argument_list "((uint)iVar3 >> 0x1f,0)" ( (binary_expression "(uint)iVar3 >> 0x1f" (cast_expression "(uint)iVar3" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) , number_literal ))) ;)) })))
(translation_unit "uint FUN_00263b30(undefined8 param_1,undefined8 *param_2,undefined8 *param_3)\n\n{\n  char *__s2;\n  byte bVar1;\n  uint uVar2;\n  byte bVar3;\n  \n  uVar2 = strcmp((char *)*param_2,(char *)*param_3);\n  if (uVar2 == 0) {\n    __s2 = (char *)param_3[1];\n    if ((char *)param_2[1] == (char *)0x0) {\n      if (__s2 != (char *)0x0) {\n        return 1;\n      }\n    }\n    else {\n      if (__s2 == (char *)0x0) {\n        return 0;\n      }\n      uVar2 = strcmp((char *)param_2[1],__s2);\n      if (uVar2 != 0) goto LAB_00263bb0;\n    }\n    if (param_3 == param_2) {\n      return 0;\n    }\n    bVar1 = *(byte *)((long)param_2 + 0x3a) >> 4;\n    bVar3 = *(byte *)((long)param_3 + 0x3a) >> 4 & 1;\n    uVar2 = bVar1 & 1;\n    if ((bVar1 & 1) == 0) {\n      if (bVar3 != 0) {\n        return uVar2;\n      }\n    }\n    else if (bVar3 == 0) {\n      return uVar2;\n    }\n                    \n    FUN_00199900("../../gold/cref.cc",0xf6,"operator()");\n  }\nLAB_00263bb0:\n  return uVar2 >> 0x1f;\n}\n\n" (function_definition "uint FUN_00263b30(undefined8 param_1,undefined8 *param_2,undefined8 *param_3)\n\n{\n  char *__s2;\n  byte bVar1;\n  uint uVar2;\n  byte bVar3;\n  \n  uVar2 = strcmp((char *)*param_2,(char *)*param_3);\n  if (uVar2 == 0) {\n    __s2 = (char *)param_3[1];\n    if ((char *)param_2[1] == (char *)0x0) {\n      if (__s2 != (char *)0x0) {\n        return 1;\n      }\n    }\n    else {\n      if (__s2 == (char *)0x0) {\n        return 0;\n      }\n      uVar2 = strcmp((char *)param_2[1],__s2);\n      if (uVar2 != 0) goto LAB_00263bb0;\n    }\n    if (param_3 == param_2) {\n      return 0;\n    }\n    bVar1 = *(byte *)((long)param_2 + 0x3a) >> 4;\n    bVar3 = *(byte *)((long)param_3 + 0x3a) >> 4 & 1;\n    uVar2 = bVar1 & 1;\n    if ((bVar1 & 1) == 0) {\n      if (bVar3 != 0) {\n        return uVar2;\n      }\n    }\n    else if (bVar3 == 0) {\n      return uVar2;\n    }\n                    \n    FUN_00199900("../../gold/cref.cc",0xf6,"operator()");\n  }\nLAB_00263bb0:\n  return uVar2 >> 0x1f;\n}" type_identifier (function_declarator "FUN_00263b30(undefined8 param_1,undefined8 *param_2,undefined8 *param_3)" identifier (parameter_list "(undefined8 param_1,undefined8 *param_2,undefined8 *param_3)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) , (parameter_declaration "undefined8 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined8 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  char *__s2;\n  byte bVar1;\n  uint uVar2;\n  byte bVar3;\n  \n  uVar2 = strcmp((char *)*param_2,(char *)*param_3);\n  if (uVar2 == 0) {\n    __s2 = (char *)param_3[1];\n    if ((char *)param_2[1] == (char *)0x0) {\n      if (__s2 != (char *)0x0) {\n        return 1;\n      }\n    }\n    else {\n      if (__s2 == (char *)0x0) {\n        return 0;\n      }\n      uVar2 = strcmp((char *)param_2[1],__s2);\n      if (uVar2 != 0) goto LAB_00263bb0;\n    }\n    if (param_3 == param_2) {\n      return 0;\n    }\n    bVar1 = *(byte *)((long)param_2 + 0x3a) >> 4;\n    bVar3 = *(byte *)((long)param_3 + 0x3a) >> 4 & 1;\n    uVar2 = bVar1 & 1;\n    if ((bVar1 & 1) == 0) {\n      if (bVar3 != 0) {\n        return uVar2;\n      }\n    }\n    else if (bVar3 == 0) {\n      return uVar2;\n    }\n                    \n    FUN_00199900("../../gold/cref.cc",0xf6,"operator()");\n  }\nLAB_00263bb0:\n  return uVar2 >> 0x1f;\n}" { (declaration "char *__s2;" primitive_type (pointer_declarator "*__s2" * identifier) ;) (declaration "byte bVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "byte bVar3;" type_identifier identifier ;) (expression_statement "uVar2 = strcmp((char *)*param_2,(char *)*param_3);" (assignment_expression "uVar2 = strcmp((char *)*param_2,(char *)*param_3)" identifier = (call_expression "strcmp((char *)*param_2,(char *)*param_3)" identifier (argument_list "((char *)*param_2,(char *)*param_3)" ( (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier)) , (cast_expression "(char *)*param_3" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_3" * identifier)) )))) ;) (if_statement "if (uVar2 == 0) {\n    __s2 = (char *)param_3[1];\n    if ((char *)param_2[1] == (char *)0x0) {\n      if (__s2 != (char *)0x0) {\n        return 1;\n      }\n    }\n    else {\n      if (__s2 == (char *)0x0) {\n        return 0;\n      }\n      uVar2 = strcmp((char *)param_2[1],__s2);\n      if (uVar2 != 0) goto LAB_00263bb0;\n    }\n    if (param_3 == param_2) {\n      return 0;\n    }\n    bVar1 = *(byte *)((long)param_2 + 0x3a) >> 4;\n    bVar3 = *(byte *)((long)param_3 + 0x3a) >> 4 & 1;\n    uVar2 = bVar1 & 1;\n    if ((bVar1 & 1) == 0) {\n      if (bVar3 != 0) {\n        return uVar2;\n      }\n    }\n    else if (bVar3 == 0) {\n      return uVar2;\n    }\n                    \n    FUN_00199900("../../gold/cref.cc",0xf6,"operator()");\n  }" if (parenthesized_expression "(uVar2 == 0)" ( (binary_expression "uVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    __s2 = (char *)param_3[1];\n    if ((char *)param_2[1] == (char *)0x0) {\n      if (__s2 != (char *)0x0) {\n        return 1;\n      }\n    }\n    else {\n      if (__s2 == (char *)0x0) {\n        return 0;\n      }\n      uVar2 = strcmp((char *)param_2[1],__s2);\n      if (uVar2 != 0) goto LAB_00263bb0;\n    }\n    if (param_3 == param_2) {\n      return 0;\n    }\n    bVar1 = *(byte *)((long)param_2 + 0x3a) >> 4;\n    bVar3 = *(byte *)((long)param_3 + 0x3a) >> 4 & 1;\n    uVar2 = bVar1 & 1;\n    if ((bVar1 & 1) == 0) {\n      if (bVar3 != 0) {\n        return uVar2;\n      }\n    }\n    else if (bVar3 == 0) {\n      return uVar2;\n    }\n                    \n    FUN_00199900("../../gold/cref.cc",0xf6,"operator()");\n  }" { (expression_statement "__s2 = (char *)param_3[1];" (assignment_expression "__s2 = (char *)param_3[1]" identifier = (cast_expression "(char *)param_3[1]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[1]" identifier [ number_literal ]))) ;) (if_statement "if ((char *)param_2[1] == (char *)0x0) {\n      if (__s2 != (char *)0x0) {\n        return 1;\n      }\n    }\n    else {\n      if (__s2 == (char *)0x0) {\n        return 0;\n      }\n      uVar2 = strcmp((char *)param_2[1],__s2);\n      if (uVar2 != 0) goto LAB_00263bb0;\n    }" if (parenthesized_expression "((char *)param_2[1] == (char *)0x0)" ( (binary_expression "(char *)param_2[1] == (char *)0x0" (cast_expression "(char *)param_2[1]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[1]" identifier [ number_literal ])) == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if (__s2 != (char *)0x0) {\n        return 1;\n      }\n    }" { (if_statement "if (__s2 != (char *)0x0) {\n        return 1;\n      }" if (parenthesized_expression "(__s2 != (char *)0x0)" ( (binary_expression "__s2 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        return 1;\n      }" { (return_statement "return 1;" return number_literal ;) })) }) (else_clause "else {\n      if (__s2 == (char *)0x0) {\n        return 0;\n      }\n      uVar2 = strcmp((char *)param_2[1],__s2);\n      if (uVar2 != 0) goto LAB_00263bb0;\n    }" else (compound_statement "{\n      if (__s2 == (char *)0x0) {\n        return 0;\n      }\n      uVar2 = strcmp((char *)param_2[1],__s2);\n      if (uVar2 != 0) goto LAB_00263bb0;\n    }" { (if_statement "if (__s2 == (char *)0x0) {\n        return 0;\n      }" if (parenthesized_expression "(__s2 == (char *)0x0)" ( (binary_expression "__s2 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "uVar2 = strcmp((char *)param_2[1],__s2);" (assignment_expression "uVar2 = strcmp((char *)param_2[1],__s2)" identifier = (call_expression "strcmp((char *)param_2[1],__s2)" identifier (argument_list "((char *)param_2[1],__s2)" ( (cast_expression "(char *)param_2[1]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[1]" identifier [ number_literal ])) , identifier )))) ;) (if_statement "if (uVar2 != 0) goto LAB_00263bb0;" if (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00263bb0;" goto statement_identifier ;)) }))) (if_statement "if (param_3 == param_2) {\n      return 0;\n    }" if (parenthesized_expression "(param_3 == param_2)" ( (binary_expression "param_3 == param_2" identifier == identifier) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "bVar1 = *(byte *)((long)param_2 + 0x3a) >> 4;" (assignment_expression "bVar1 = *(byte *)((long)param_2 + 0x3a) >> 4" identifier = (binary_expression "*(byte *)((long)param_2 + 0x3a) >> 4" (pointer_expression "*(byte *)((long)param_2 + 0x3a)" * (cast_expression "(byte *)((long)param_2 + 0x3a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_2 + 0x3a)" ( (binary_expression "(long)param_2 + 0x3a" (cast_expression "(long)param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) >> number_literal)) ;) (expression_statement "bVar3 = *(byte *)((long)param_3 + 0x3a) >> 4 & 1;" (assignment_expression "bVar3 = *(byte *)((long)param_3 + 0x3a) >> 4 & 1" identifier = (binary_expression "*(byte *)((long)param_3 + 0x3a) >> 4 & 1" (binary_expression "*(byte *)((long)param_3 + 0x3a) >> 4" (pointer_expression "*(byte *)((long)param_3 + 0x3a)" * (cast_expression "(byte *)((long)param_3 + 0x3a)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_3 + 0x3a)" ( (binary_expression "(long)param_3 + 0x3a" (cast_expression "(long)param_3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) >> number_literal) & number_literal)) ;) (expression_statement "uVar2 = bVar1 & 1;" (assignment_expression "uVar2 = bVar1 & 1" identifier = (binary_expression "bVar1 & 1" identifier & number_literal)) ;) (if_statement "if ((bVar1 & 1) == 0) {\n      if (bVar3 != 0) {\n        return uVar2;\n      }\n    }\n    else if (bVar3 == 0) {\n      return uVar2;\n    }" if (parenthesized_expression "((bVar1 & 1) == 0)" ( (binary_expression "(bVar1 & 1) == 0" (parenthesized_expression "(bVar1 & 1)" ( (binary_expression "bVar1 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      if (bVar3 != 0) {\n        return uVar2;\n      }\n    }" { (if_statement "if (bVar3 != 0) {\n        return uVar2;\n      }" if (parenthesized_expression "(bVar3 != 0)" ( (binary_expression "bVar3 != 0" identifier != number_literal) )) (compound_statement "{\n        return uVar2;\n      }" { (return_statement "return uVar2;" return identifier ;) })) }) (else_clause "else if (bVar3 == 0) {\n      return uVar2;\n    }" else (if_statement "if (bVar3 == 0) {\n      return uVar2;\n    }" if (parenthesized_expression "(bVar3 == 0)" ( (binary_expression "bVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      return uVar2;\n    }" { (return_statement "return uVar2;" return identifier ;) })))) (expression_statement "FUN_00199900("../../gold/cref.cc",0xf6,"operator()");" (call_expression "FUN_00199900("../../gold/cref.cc",0xf6,"operator()")" identifier (argument_list "("../../gold/cref.cc",0xf6,"operator()")" ( (string_literal ""../../gold/cref.cc"" " string_content ") , number_literal , (string_literal ""operator()"" " string_content ") ))) ;) })) (labeled_statement "LAB_00263bb0:\n  return uVar2 >> 0x1f;" statement_identifier : (return_statement "return uVar2 >> 0x1f;" return (binary_expression "uVar2 >> 0x1f" identifier >> number_literal) ;)) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (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)) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return LIT ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (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) )))) >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_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) )))) >> LIT) & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return IDENT ;) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return IDENT ;) })))) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (labeled_statement statement_identifier : (return_statement return (binary_expression IDENT >> LIT) ;)) })))
(function_definition "uint FUN_00263b30(undefined8 param_1,undefined8 *param_2,undefined8 *param_3)\n\n{\n  char *__s2;\n  byte bVar1;\n  uint uVar2;\n  byte bVar3;\n  \n  uVar2 = strcmp((char *)*param_2,(char *)*param_3);\n  if (uVar2 == 0) {\n    __s2 = (char *)param_3[1];\n    if ((char *)param_2[1] == (char *)0x0) {\n      if (__s2 != (char *)0x0) {\n        return 1;\n      }\n    }\n    else {\n      if (__s2 == (char *)0x0) {\n        return 0;\n      }\n      uVar2 = strcmp((char *)param_2[1],__s2);\n      if (uVar2 != 0) goto LAB_00263bb0;\n    }\n    if (param_3 == param_2) {\n      return 0;\n    }\n    bVar1 = *(byte *)((long)param_2 + 0x3a) >> 4;\n    bVar3 = *(byte *)((long)param_3 + 0x3a) >> 4 & 1;\n    uVar2 = bVar1 & 1;\n    if ((bVar1 & 1) == 0) {\n      if (bVar3 != 0) {\n        return uVar2;\n      }\n    }\n    else if (bVar3 == 0) {\n      return uVar2;\n    }\n                    \n    FUN_00199900("../../gold/cref.cc",0xf6,"operator()");\n  }\nLAB_00263bb0:\n  return uVar2 >> 0x1f;\n}" (type_identifier "uint") (function_declarator "FUN_00263b30(undefined8 param_1,undefined8 *param_2,undefined8 *param_3)" (identifier "FUN_00263b30") (parameter_list "(undefined8 param_1,undefined8 *param_2,undefined8 *param_3)" (( "(") (parameter_declaration "undefined8 param_1" (type_identifier "undefined8") (identifier "param_1")) (, ",") (parameter_declaration "undefined8 *param_2" (type_identifier "undefined8") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "undefined8 *param_3" (type_identifier "undefined8") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  char *__s2;\n  byte bVar1;\n  uint uVar2;\n  byte bVar3;\n  \n  uVar2 = strcmp((char *)*param_2,(char *)*param_3);\n  if (uVar2 == 0) {\n    __s2 = (char *)param_3[1];\n    if ((char *)param_2[1] == (char *)0x0) {\n      if (__s2 != (char *)0x0) {\n        return 1;\n      }\n    }\n    else {\n      if (__s2 == (char *)0x0) {\n        return 0;\n      }\n      uVar2 = strcmp((char *)param_2[1],__s2);\n      if (uVar2 != 0) goto LAB_00263bb0;\n    }\n    if (param_3 == param_2) {\n      return 0;\n    }\n    bVar1 = *(byte *)((long)param_2 + 0x3a) >> 4;\n    bVar3 = *(byte *)((long)param_3 + 0x3a) >> 4 & 1;\n    uVar2 = bVar1 & 1;\n    if ((bVar1 & 1) == 0) {\n      if (bVar3 != 0) {\n        return uVar2;\n      }\n    }\n    else if (bVar3 == 0) {\n      return uVar2;\n    }\n                    \n    FUN_00199900("../../gold/cref.cc",0xf6,"operator()");\n  }\nLAB_00263bb0:\n  return uVar2 >> 0x1f;\n}" ({ "{") (declaration "char *__s2;" (primitive_type "char") (pointer_declarator "*__s2" (* "*") (identifier "__s2")) (; ";")) (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "byte bVar3;" (type_identifier "byte") (identifier "bVar3") (; ";")) (expression_statement "uVar2 = strcmp((char *)*param_2,(char *)*param_3);" (assignment_expression "uVar2 = strcmp((char *)*param_2,(char *)*param_3)" (identifier "uVar2") (= "=") (call_expression "strcmp((char *)*param_2,(char *)*param_3)" (identifier "strcmp") (argument_list "((char *)*param_2,(char *)*param_3)" (( "(") (cast_expression "(char *)*param_2" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (, ",") (cast_expression "(char *)*param_3" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_3" (* "*") (identifier "param_3"))) () ")")))) (; ";")) (if_statement "if (uVar2 == 0) {\n    __s2 = (char *)param_3[1];\n    if ((char *)param_2[1] == (char *)0x0) {\n      if (__s2 != (char *)0x0) {\n        return 1;\n      }\n    }\n    else {\n      if (__s2 == (char *)0x0) {\n        return 0;\n      }\n      uVar2 = strcmp((char *)param_2[1],__s2);\n      if (uVar2 != 0) goto LAB_00263bb0;\n    }\n    if (param_3 == param_2) {\n      return 0;\n    }\n    bVar1 = *(byte *)((long)param_2 + 0x3a) >> 4;\n    bVar3 = *(byte *)((long)param_3 + 0x3a) >> 4 & 1;\n    uVar2 = bVar1 & 1;\n    if ((bVar1 & 1) == 0) {\n      if (bVar3 != 0) {\n        return uVar2;\n      }\n    }\n    else if (bVar3 == 0) {\n      return uVar2;\n    }\n                    \n    FUN_00199900("../../gold/cref.cc",0xf6,"operator()");\n  }" (if "if") (parenthesized_expression "(uVar2 == 0)" (( "(") (binary_expression "uVar2 == 0" (identifier "uVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    __s2 = (char *)param_3[1];\n    if ((char *)param_2[1] == (char *)0x0) {\n      if (__s2 != (char *)0x0) {\n        return 1;\n      }\n    }\n    else {\n      if (__s2 == (char *)0x0) {\n        return 0;\n      }\n      uVar2 = strcmp((char *)param_2[1],__s2);\n      if (uVar2 != 0) goto LAB_00263bb0;\n    }\n    if (param_3 == param_2) {\n      return 0;\n    }\n    bVar1 = *(byte *)((long)param_2 + 0x3a) >> 4;\n    bVar3 = *(byte *)((long)param_3 + 0x3a) >> 4 & 1;\n    uVar2 = bVar1 & 1;\n    if ((bVar1 & 1) == 0) {\n      if (bVar3 != 0) {\n        return uVar2;\n      }\n    }\n    else if (bVar3 == 0) {\n      return uVar2;\n    }\n                    \n    FUN_00199900("../../gold/cref.cc",0xf6,"operator()");\n  }" ({ "{") (expression_statement "__s2 = (char *)param_3[1];" (assignment_expression "__s2 = (char *)param_3[1]" (identifier "__s2") (= "=") (cast_expression "(char *)param_3[1]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]")))) (; ";")) (if_statement "if ((char *)param_2[1] == (char *)0x0) {\n      if (__s2 != (char *)0x0) {\n        return 1;\n      }\n    }\n    else {\n      if (__s2 == (char *)0x0) {\n        return 0;\n      }\n      uVar2 = strcmp((char *)param_2[1],__s2);\n      if (uVar2 != 0) goto LAB_00263bb0;\n    }" (if "if") (parenthesized_expression "((char *)param_2[1] == (char *)0x0)" (( "(") (binary_expression "(char *)param_2[1] == (char *)0x0" (cast_expression "(char *)param_2[1]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      if (__s2 != (char *)0x0) {\n        return 1;\n      }\n    }" ({ "{") (if_statement "if (__s2 != (char *)0x0) {\n        return 1;\n      }" (if "if") (parenthesized_expression "(__s2 != (char *)0x0)" (( "(") (binary_expression "__s2 != (char *)0x0" (identifier "__s2") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        return 1;\n      }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      if (__s2 == (char *)0x0) {\n        return 0;\n      }\n      uVar2 = strcmp((char *)param_2[1],__s2);\n      if (uVar2 != 0) goto LAB_00263bb0;\n    }" (else "else") (compound_statement "{\n      if (__s2 == (char *)0x0) {\n        return 0;\n      }\n      uVar2 = strcmp((char *)param_2[1],__s2);\n      if (uVar2 != 0) goto LAB_00263bb0;\n    }" ({ "{") (if_statement "if (__s2 == (char *)0x0) {\n        return 0;\n      }" (if "if") (parenthesized_expression "(__s2 == (char *)0x0)" (( "(") (binary_expression "__s2 == (char *)0x0" (identifier "__s2") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        return 0;\n      }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "uVar2 = strcmp((char *)param_2[1],__s2);" (assignment_expression "uVar2 = strcmp((char *)param_2[1],__s2)" (identifier "uVar2") (= "=") (call_expression "strcmp((char *)param_2[1],__s2)" (identifier "strcmp") (argument_list "((char *)param_2[1],__s2)" (( "(") (cast_expression "(char *)param_2[1]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (, ",") (identifier "__s2") () ")")))) (; ";")) (if_statement "if (uVar2 != 0) goto LAB_00263bb0;" (if "if") (parenthesized_expression "(uVar2 != 0)" (( "(") (binary_expression "uVar2 != 0" (identifier "uVar2") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00263bb0;" (goto "goto") (statement_identifier "LAB_00263bb0") (; ";"))) (} "}")))) (if_statement "if (param_3 == param_2) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(param_3 == param_2)" (( "(") (binary_expression "param_3 == param_2" (identifier "param_3") (== "==") (identifier "param_2")) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "bVar1 = *(byte *)((long)param_2 + 0x3a) >> 4;" (assignment_expression "bVar1 = *(byte *)((long)param_2 + 0x3a) >> 4" (identifier "bVar1") (= "=") (binary_expression "*(byte *)((long)param_2 + 0x3a) >> 4" (pointer_expression "*(byte *)((long)param_2 + 0x3a)" (* "*") (cast_expression "(byte *)((long)param_2 + 0x3a)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_2 + 0x3a)" (( "(") (binary_expression "(long)param_2 + 0x3a" (cast_expression "(long)param_2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_2")) (+ "+") (number_literal "0x3a")) () ")")))) (>> ">>") (number_literal "4"))) (; ";")) (expression_statement "bVar3 = *(byte *)((long)param_3 + 0x3a) >> 4 & 1;" (assignment_expression "bVar3 = *(byte *)((long)param_3 + 0x3a) >> 4 & 1" (identifier "bVar3") (= "=") (binary_expression "*(byte *)((long)param_3 + 0x3a) >> 4 & 1" (binary_expression "*(byte *)((long)param_3 + 0x3a) >> 4" (pointer_expression "*(byte *)((long)param_3 + 0x3a)" (* "*") (cast_expression "(byte *)((long)param_3 + 0x3a)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_3 + 0x3a)" (( "(") (binary_expression "(long)param_3 + 0x3a" (cast_expression "(long)param_3" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_3")) (+ "+") (number_literal "0x3a")) () ")")))) (>> ">>") (number_literal "4")) (& "&") (number_literal "1"))) (; ";")) (expression_statement "uVar2 = bVar1 & 1;" (assignment_expression "uVar2 = bVar1 & 1" (identifier "uVar2") (= "=") (binary_expression "bVar1 & 1" (identifier "bVar1") (& "&") (number_literal "1"))) (; ";")) (if_statement "if ((bVar1 & 1) == 0) {\n      if (bVar3 != 0) {\n        return uVar2;\n      }\n    }\n    else if (bVar3 == 0) {\n      return uVar2;\n    }" (if "if") (parenthesized_expression "((bVar1 & 1) == 0)" (( "(") (binary_expression "(bVar1 & 1) == 0" (parenthesized_expression "(bVar1 & 1)" (( "(") (binary_expression "bVar1 & 1" (identifier "bVar1") (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if (bVar3 != 0) {\n        return uVar2;\n      }\n    }" ({ "{") (if_statement "if (bVar3 != 0) {\n        return uVar2;\n      }" (if "if") (parenthesized_expression "(bVar3 != 0)" (( "(") (binary_expression "bVar3 != 0" (identifier "bVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        return uVar2;\n      }" ({ "{") (return_statement "return uVar2;" (return "return") (identifier "uVar2") (; ";")) (} "}"))) (} "}")) (else_clause "else if (bVar3 == 0) {\n      return uVar2;\n    }" (else "else") (if_statement "if (bVar3 == 0) {\n      return uVar2;\n    }" (if "if") (parenthesized_expression "(bVar3 == 0)" (( "(") (binary_expression "bVar3 == 0" (identifier "bVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      return uVar2;\n    }" ({ "{") (return_statement "return uVar2;" (return "return") (identifier "uVar2") (; ";")) (} "}"))))) (expression_statement "FUN_00199900("../../gold/cref.cc",0xf6,"operator()");" (call_expression "FUN_00199900("../../gold/cref.cc",0xf6,"operator()")" (identifier "FUN_00199900") (argument_list "("../../gold/cref.cc",0xf6,"operator()")" (( "(") (string_literal ""../../gold/cref.cc"" (" """) (string_content "../../gold/cref.cc") (" """)) (, ",") (number_literal "0xf6") (, ",") (string_literal ""operator()"" (" """) (string_content "operator()") (" """)) () ")"))) (; ";")) (} "}"))) (labeled_statement "LAB_00263bb0:\n  return uVar2 >> 0x1f;" (statement_identifier "LAB_00263bb0") (: ":") (return_statement "return uVar2 >> 0x1f;" (return "return") (binary_expression "uVar2 >> 0x1f" (identifier "uVar2") (>> ">>") (number_literal "0x1f")) (; ";"))) (} "}")))

/* DWARF original prototype: bool operator()(Cref_table_compare * this, Symbol * s1, Symbol * s2) */

bool __thiscall
gold::Cref_inputs::type_1::function_1()(type_1 *this,type_2 *var_5,type_2 *var_4)

{
  char *var_3;
  type_3 var_6;
  bool bVar2;
  int var_2;
  type_3 var_7;
  
  var_2 = var_1(var_5->name_,var_4->name_);
  if (var_2 == 0) {
    var_3 = var_4->version_;
    if (var_5->version_ == (char *)0x0) {
      if (var_3 != (char *)0x0) {
        return true;
      }
    }
    else {
      if (var_3 == (char *)0x0) {
        return false;
      }
      var_2 = var_1(var_5->version_,var_3);
      if (var_2 != 0) goto LAB_00263bb0;
    }
    if (var_4 == var_5) {
      return false;
    }
    var_6 = (type_3)var_5->field_0x3a >> 4;
    var_7 = (type_3)var_4->field_0x3a >> 4 & 1;
    bVar2 = (bool)(var_6 & 1);
    if ((var_6 & 1) == 0) {
      if (var_7 != 0) {
        return bVar2;
      }
    }
    else if (var_7 == 0) {
      return bVar2;
    }
                    /* WARNING: Subroutine does not return */
    var_8("../../gold/cref.cc",0xf6,"operator()");
  }
LAB_00263bb0:
  return var_9((type_4)var_2 >> 0x1f,0);
}


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

uint MASKED(undefined8 param_1,undefined8 *param_2,undefined8 *param_3)

{
  char *__s2;
  byte bVar1;
  uint uVar2;
  byte bVar3;
  
  uVar2 = strcmp((char *)*param_2,(char *)*param_3);
  if (uVar2 == 0) {
    __s2 = (char *)param_3[1];
    if ((char *)param_2[1] == (char *)0x0) {
      if (__s2 != (char *)0x0) {
        return 1;
      }
    }
    else {
      if (__s2 == (char *)0x0) {
        return 0;
      }
      uVar2 = strcmp((char *)param_2[1],__s2);
      if (uVar2 != 0) goto LAB_00263bb0;
    }
    if (param_3 == param_2) {
      return 0;
    }
    bVar1 = *(byte *)((long)param_2 + 0x3a) >> 4;
    bVar3 = *(byte *)((long)param_3 + 0x3a) >> 4 & 1;
    uVar2 = bVar1 & 1;
    if ((bVar1 & 1) == 0) {
      if (bVar3 != 0) {
        return uVar2;
      }
    }
    else if (bVar3 == 0) {
      return uVar2;
    }
                    /* WARNING: Subroutine does not return */
    FUN_00199900("../../gold/cref.cc",0xf6,"operator()");
  }
LAB_00263bb0:
  return uVar2 >> 0x1f;
}

