
int non_numeric_forward(void *P_x,void *P_y)

{
  char *__s2;
  char *__s1;
  int iVar1;
  asymbol *paVar2;
  asymbol *paVar3;
  
  paVar2 = (*sort_bfd->xvec->_minisymbol_to_symbol)(sort_bfd,sort_dynamic,P_x,sort_x);
  paVar3 = (*sort_bfd->xvec->_minisymbol_to_symbol)(sort_bfd,sort_dynamic,P_y,sort_y);
  if ((paVar2 == (asymbol *)0x0) || (paVar3 == (asymbol *)0x0)) {
                    /* WARNING: Subroutine does not return */
    bfd_fatal(sort_bfd->filename);
  }
  __s2 = paVar3->name;
  __s1 = paVar2->name;
  if (__s2 == (char *)0x0) {
    return (int)(__s1 != (char *)0x0);
  }
  if (__s1 != (char *)0x0) {
    if (*__s2 == '\0') {
      return (uint)(*__s1 != '\0');
    }
    if (*__s1 != '\0') {
      iVar1 = strcoll(__s1,__s2);
      return iVar1;
    }
  }
  return -1;
}



uint FUN_00103d00(undefined8 param_1,undefined8 param_2)

{
  char *__s2;
  char *__s1;
  uint uVar1;
  long lVar2;
  long lVar3;
  
  lVar2 = (**(code **)(DAT_0010cbe0[1] + 0x260))(DAT_0010cbe0,DAT_0010cbd8,param_1,DAT_0010cbd0);
  lVar3 = (**(code **)(DAT_0010cbe0[1] + 0x260))(DAT_0010cbe0,DAT_0010cbd8,param_2,DAT_0010cbc8);
  if ((lVar2 == 0) || (lVar3 == 0)) {
                    /* WARNING: Subroutine does not return */
    FUN_00106090(*DAT_0010cbe0);
  }
  __s2 = *(char **)(lVar3 + 8);
  __s1 = *(char **)(lVar2 + 8);
  if (__s2 == (char *)0x0) {
    return (uint)(__s1 != (char *)0x0);
  }
  if (__s1 != (char *)0x0) {
    if (*__s2 == '\0') {
      return (uint)(*__s1 != '\0');
    }
    if (*__s1 != '\0') {
      uVar1 = strcoll(__s1,__s2);
      return uVar1;
    }
  }
  return 0xffffffff;
}


PUSH RBP
MOV RDX,RDI
MOV RBP,RSI
PUSH RBX
SUB RSP,0x8
MOV RDI,qword ptr [0x0010cbe0]
MOV ESI,dword ptr [0x0010cbd8]
MOV RCX,qword ptr [0x0010cbd0]
MOV RAX,qword ptr [RDI + 0x8]
CALL qword ptr [RAX + 0x260]
MOV RDI,qword ptr [0x0010cbe0]
MOV RDX,RBP
MOV RCX,qword ptr [0x0010cbc8]
MOV RBX,RAX
MOV ESI,dword ptr [0x0010cbd8]
MOV RAX,qword ptr [RDI + 0x8]
CALL qword ptr [RAX + 0x260]
TEST RBX,RBX
JZ 0x00103db6
TEST RAX,RAX
JZ 0x00103db6
MOV RSI,qword ptr [RAX + 0x8]
MOV RDI,qword ptr [RBX + 0x8]
TEST RSI,RSI
JZ 0x00103da0
TEST RDI,RDI
JZ 0x00103daf
CMP byte ptr [RSI],0x0
MOVZX EAX,byte ptr [RDI]
JZ 0x00103d88
TEST AL,AL
JZ 0x00103daf
ADD RSP,0x8
POP RBX
POP RBP
JMP 0x00103390
TEST AL,AL
SETNZ AL
MOVZX EAX,AL
ADD RSP,0x8
POP RBX
POP RBP
RET
XOR EAX,EAX
TEST RDI,RDI
SETNZ AL
ADD RSP,0x8
POP RBX
POP RBP
RET
MOV EAX,0xffffffff
JMP 0x00103d90
MOV RAX,qword ptr [0x0010cbe0]
MOV RDI,qword ptr [RAX]
CALL 0x00106090
(translation_unit "uint FUN_00103d00(undefined8 param_1,undefined8 param_2)\n\n{\n  char *__s2;\n  char *__s1;\n  uint uVar1;\n  long lVar2;\n  long lVar3;\n  \n  lVar2 = (**(code **)(DAT_0010cbe0[1] + 0x260))(DAT_0010cbe0,DAT_0010cbd8,param_1,DAT_0010cbd0);\n  lVar3 = (**(code **)(DAT_0010cbe0[1] + 0x260))(DAT_0010cbe0,DAT_0010cbd8,param_2,DAT_0010cbc8);\n  if ((lVar2 == 0) || (lVar3 == 0)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00106090(*DAT_0010cbe0);\n  }\n  __s2 = *(char **)(lVar3 + 8);\n  __s1 = *(char **)(lVar2 + 8);\n  if (__s2 == (char *)0x0) {\n    return (uint)(__s1 != (char *)0x0);\n  }\n  if (__s1 != (char *)0x0) {\n    if (*__s2 == '\0') {\n      return (uint)(*__s1 != '\0');\n    }\n    if (*__s1 != '\0') {\n      uVar1 = strcoll(__s1,__s2);\n      return uVar1;\n    }\n  }\n  return 0xffffffff;\n}\n\n" (function_definition "uint FUN_00103d00(undefined8 param_1,undefined8 param_2)\n\n{\n  char *__s2;\n  char *__s1;\n  uint uVar1;\n  long lVar2;\n  long lVar3;\n  \n  lVar2 = (**(code **)(DAT_0010cbe0[1] + 0x260))(DAT_0010cbe0,DAT_0010cbd8,param_1,DAT_0010cbd0);\n  lVar3 = (**(code **)(DAT_0010cbe0[1] + 0x260))(DAT_0010cbe0,DAT_0010cbd8,param_2,DAT_0010cbc8);\n  if ((lVar2 == 0) || (lVar3 == 0)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00106090(*DAT_0010cbe0);\n  }\n  __s2 = *(char **)(lVar3 + 8);\n  __s1 = *(char **)(lVar2 + 8);\n  if (__s2 == (char *)0x0) {\n    return (uint)(__s1 != (char *)0x0);\n  }\n  if (__s1 != (char *)0x0) {\n    if (*__s2 == '\0') {\n      return (uint)(*__s1 != '\0');\n    }\n    if (*__s1 != '\0') {\n      uVar1 = strcoll(__s1,__s2);\n      return uVar1;\n    }\n  }\n  return 0xffffffff;\n}" type_identifier (function_declarator "FUN_00103d00(undefined8 param_1,undefined8 param_2)" identifier (parameter_list "(undefined8 param_1,undefined8 param_2)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) ))) (compound_statement "{\n  char *__s2;\n  char *__s1;\n  uint uVar1;\n  long lVar2;\n  long lVar3;\n  \n  lVar2 = (**(code **)(DAT_0010cbe0[1] + 0x260))(DAT_0010cbe0,DAT_0010cbd8,param_1,DAT_0010cbd0);\n  lVar3 = (**(code **)(DAT_0010cbe0[1] + 0x260))(DAT_0010cbe0,DAT_0010cbd8,param_2,DAT_0010cbc8);\n  if ((lVar2 == 0) || (lVar3 == 0)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00106090(*DAT_0010cbe0);\n  }\n  __s2 = *(char **)(lVar3 + 8);\n  __s1 = *(char **)(lVar2 + 8);\n  if (__s2 == (char *)0x0) {\n    return (uint)(__s1 != (char *)0x0);\n  }\n  if (__s1 != (char *)0x0) {\n    if (*__s2 == '\0') {\n      return (uint)(*__s1 != '\0');\n    }\n    if (*__s1 != '\0') {\n      uVar1 = strcoll(__s1,__s2);\n      return uVar1;\n    }\n  }\n  return 0xffffffff;\n}" { (declaration "char *__s2;" primitive_type (pointer_declarator "*__s2" * identifier) ;) (declaration "char *__s1;" primitive_type (pointer_declarator "*__s1" * identifier) ;) (declaration "uint uVar1;" type_identifier identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (expression_statement "lVar2 = (**(code **)(DAT_0010cbe0[1] + 0x260))(DAT_0010cbe0,DAT_0010cbd8,param_1,DAT_0010cbd0);" (assignment_expression "lVar2 = (**(code **)(DAT_0010cbe0[1] + 0x260))(DAT_0010cbe0,DAT_0010cbd8,param_1,DAT_0010cbd0)" identifier = (call_expression "(**(code **)(DAT_0010cbe0[1] + 0x260))(DAT_0010cbe0,DAT_0010cbd8,param_1,DAT_0010cbd0)" (parenthesized_expression "(**(code **)(DAT_0010cbe0[1] + 0x260))" ( (pointer_expression "**(code **)(DAT_0010cbe0[1] + 0x260)" * (pointer_expression "*(code **)(DAT_0010cbe0[1] + 0x260)" * (cast_expression "(code **)(DAT_0010cbe0[1] + 0x260)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(DAT_0010cbe0[1] + 0x260)" ( (binary_expression "DAT_0010cbe0[1] + 0x260" (subscript_expression "DAT_0010cbe0[1]" identifier [ number_literal ]) + number_literal) ))))) )) (argument_list "(DAT_0010cbe0,DAT_0010cbd8,param_1,DAT_0010cbd0)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "lVar3 = (**(code **)(DAT_0010cbe0[1] + 0x260))(DAT_0010cbe0,DAT_0010cbd8,param_2,DAT_0010cbc8);" (assignment_expression "lVar3 = (**(code **)(DAT_0010cbe0[1] + 0x260))(DAT_0010cbe0,DAT_0010cbd8,param_2,DAT_0010cbc8)" identifier = (call_expression "(**(code **)(DAT_0010cbe0[1] + 0x260))(DAT_0010cbe0,DAT_0010cbd8,param_2,DAT_0010cbc8)" (parenthesized_expression "(**(code **)(DAT_0010cbe0[1] + 0x260))" ( (pointer_expression "**(code **)(DAT_0010cbe0[1] + 0x260)" * (pointer_expression "*(code **)(DAT_0010cbe0[1] + 0x260)" * (cast_expression "(code **)(DAT_0010cbe0[1] + 0x260)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(DAT_0010cbe0[1] + 0x260)" ( (binary_expression "DAT_0010cbe0[1] + 0x260" (subscript_expression "DAT_0010cbe0[1]" identifier [ number_literal ]) + number_literal) ))))) )) (argument_list "(DAT_0010cbe0,DAT_0010cbd8,param_2,DAT_0010cbc8)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if ((lVar2 == 0) || (lVar3 == 0)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00106090(*DAT_0010cbe0);\n  }" if (parenthesized_expression "((lVar2 == 0) || (lVar3 == 0))" ( (binary_expression "(lVar2 == 0) || (lVar3 == 0)" (parenthesized_expression "(lVar2 == 0)" ( (binary_expression "lVar2 == 0" identifier == number_literal) )) || (parenthesized_expression "(lVar3 == 0)" ( (binary_expression "lVar3 == 0" identifier == number_literal) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_00106090(*DAT_0010cbe0);\n  }" { comment (expression_statement "FUN_00106090(*DAT_0010cbe0);" (call_expression "FUN_00106090(*DAT_0010cbe0)" identifier (argument_list "(*DAT_0010cbe0)" ( (pointer_expression "*DAT_0010cbe0" * identifier) ))) ;) })) (expression_statement "__s2 = *(char **)(lVar3 + 8);" (assignment_expression "__s2 = *(char **)(lVar3 + 8)" identifier = (pointer_expression "*(char **)(lVar3 + 8)" * (cast_expression "(char **)(lVar3 + 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar3 + 8)" ( (binary_expression "lVar3 + 8" identifier + number_literal) ))))) ;) (expression_statement "__s1 = *(char **)(lVar2 + 8);" (assignment_expression "__s1 = *(char **)(lVar2 + 8)" identifier = (pointer_expression "*(char **)(lVar2 + 8)" * (cast_expression "(char **)(lVar2 + 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar2 + 8)" ( (binary_expression "lVar2 + 8" identifier + number_literal) ))))) ;) (if_statement "if (__s2 == (char *)0x0) {\n    return (uint)(__s1 != (char *)0x0);\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 (uint)(__s1 != (char *)0x0);\n  }" { (return_statement "return (uint)(__s1 != (char *)0x0);" return (call_expression "(uint)(__s1 != (char *)0x0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(__s1 != (char *)0x0)" ( (binary_expression "__s1 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) ;) })) (if_statement "if (__s1 != (char *)0x0) {\n    if (*__s2 == '\0') {\n      return (uint)(*__s1 != '\0');\n    }\n    if (*__s1 != '\0') {\n      uVar1 = strcoll(__s1,__s2);\n      return uVar1;\n    }\n  }" if (parenthesized_expression "(__s1 != (char *)0x0)" ( (binary_expression "__s1 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (*__s2 == '\0') {\n      return (uint)(*__s1 != '\0');\n    }\n    if (*__s1 != '\0') {\n      uVar1 = strcoll(__s1,__s2);\n      return uVar1;\n    }\n  }" { (if_statement "if (*__s2 == '\0') {\n      return (uint)(*__s1 != '\0');\n    }" if (parenthesized_expression "(*__s2 == '\0')" ( (binary_expression "*__s2 == '\0'" (pointer_expression "*__s2" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      return (uint)(*__s1 != '\0');\n    }" { (return_statement "return (uint)(*__s1 != '\0');" return (call_expression "(uint)(*__s1 != '\0')" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*__s1 != '\0')" ( (binary_expression "*__s1 != '\0'" (pointer_expression "*__s1" * identifier) != (char_literal "'\0'" ' escape_sequence ')) ))) ;) })) (if_statement "if (*__s1 != '\0') {\n      uVar1 = strcoll(__s1,__s2);\n      return uVar1;\n    }" if (parenthesized_expression "(*__s1 != '\0')" ( (binary_expression "*__s1 != '\0'" (pointer_expression "*__s1" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      uVar1 = strcoll(__s1,__s2);\n      return uVar1;\n    }" { (expression_statement "uVar1 = strcoll(__s1,__s2);" (assignment_expression "uVar1 = strcoll(__s1,__s2)" identifier = (call_expression "strcoll(__s1,__s2)" identifier (argument_list "(__s1,__s2)" ( identifier , identifier )))) ;) (return_statement "return uVar1;" return identifier ;) })) })) (return_statement "return 0xffffffff;" return number_literal ;) })))
(translation_unit "int non_numeric_forward(void *P_x,void *P_y)\n\n{\n  char *__s2;\n  char *__s1;\n  int iVar1;\n  asymbol *paVar2;\n  asymbol *paVar3;\n  \n  paVar2 = (*sort_bfd->xvec->_minisymbol_to_symbol)(sort_bfd,sort_dynamic,P_x,sort_x);\n  paVar3 = (*sort_bfd->xvec->_minisymbol_to_symbol)(sort_bfd,sort_dynamic,P_y,sort_y);\n  if ((paVar2 == (asymbol *)0x0) || (paVar3 == (asymbol *)0x0)) {\n                    /* WARNING: Subroutine does not return */\n    bfd_fatal(sort_bfd->filename);\n  }\n  __s2 = paVar3->name;\n  __s1 = paVar2->name;\n  if (__s2 == (char *)0x0) {\n    return (int)(__s1 != (char *)0x0);\n  }\n  if (__s1 != (char *)0x0) {\n    if (*__s2 == '\0') {\n      return (uint)(*__s1 != '\0');\n    }\n    if (*__s1 != '\0') {\n      iVar1 = strcoll(__s1,__s2);\n      return iVar1;\n    }\n  }\n  return -1;\n}\n\n" (function_definition "int non_numeric_forward(void *P_x,void *P_y)\n\n{\n  char *__s2;\n  char *__s1;\n  int iVar1;\n  asymbol *paVar2;\n  asymbol *paVar3;\n  \n  paVar2 = (*sort_bfd->xvec->_minisymbol_to_symbol)(sort_bfd,sort_dynamic,P_x,sort_x);\n  paVar3 = (*sort_bfd->xvec->_minisymbol_to_symbol)(sort_bfd,sort_dynamic,P_y,sort_y);\n  if ((paVar2 == (asymbol *)0x0) || (paVar3 == (asymbol *)0x0)) {\n                    /* WARNING: Subroutine does not return */\n    bfd_fatal(sort_bfd->filename);\n  }\n  __s2 = paVar3->name;\n  __s1 = paVar2->name;\n  if (__s2 == (char *)0x0) {\n    return (int)(__s1 != (char *)0x0);\n  }\n  if (__s1 != (char *)0x0) {\n    if (*__s2 == '\0') {\n      return (uint)(*__s1 != '\0');\n    }\n    if (*__s1 != '\0') {\n      iVar1 = strcoll(__s1,__s2);\n      return iVar1;\n    }\n  }\n  return -1;\n}" primitive_type (function_declarator "non_numeric_forward(void *P_x,void *P_y)" identifier (parameter_list "(void *P_x,void *P_y)" ( (parameter_declaration "void *P_x" primitive_type (pointer_declarator "*P_x" * identifier)) , (parameter_declaration "void *P_y" primitive_type (pointer_declarator "*P_y" * identifier)) ))) (compound_statement "{\n  char *__s2;\n  char *__s1;\n  int iVar1;\n  asymbol *paVar2;\n  asymbol *paVar3;\n  \n  paVar2 = (*sort_bfd->xvec->_minisymbol_to_symbol)(sort_bfd,sort_dynamic,P_x,sort_x);\n  paVar3 = (*sort_bfd->xvec->_minisymbol_to_symbol)(sort_bfd,sort_dynamic,P_y,sort_y);\n  if ((paVar2 == (asymbol *)0x0) || (paVar3 == (asymbol *)0x0)) {\n                    /* WARNING: Subroutine does not return */\n    bfd_fatal(sort_bfd->filename);\n  }\n  __s2 = paVar3->name;\n  __s1 = paVar2->name;\n  if (__s2 == (char *)0x0) {\n    return (int)(__s1 != (char *)0x0);\n  }\n  if (__s1 != (char *)0x0) {\n    if (*__s2 == '\0') {\n      return (uint)(*__s1 != '\0');\n    }\n    if (*__s1 != '\0') {\n      iVar1 = strcoll(__s1,__s2);\n      return iVar1;\n    }\n  }\n  return -1;\n}" { (declaration "char *__s2;" primitive_type (pointer_declarator "*__s2" * identifier) ;) (declaration "char *__s1;" primitive_type (pointer_declarator "*__s1" * identifier) ;) (declaration "int iVar1;" primitive_type identifier ;) (declaration "asymbol *paVar2;" type_identifier (pointer_declarator "*paVar2" * identifier) ;) (declaration "asymbol *paVar3;" type_identifier (pointer_declarator "*paVar3" * identifier) ;) (expression_statement "paVar2 = (*sort_bfd->xvec->_minisymbol_to_symbol)(sort_bfd,sort_dynamic,P_x,sort_x);" (assignment_expression "paVar2 = (*sort_bfd->xvec->_minisymbol_to_symbol)(sort_bfd,sort_dynamic,P_x,sort_x)" identifier = (call_expression "(*sort_bfd->xvec->_minisymbol_to_symbol)(sort_bfd,sort_dynamic,P_x,sort_x)" (parenthesized_expression "(*sort_bfd->xvec->_minisymbol_to_symbol)" ( (pointer_expression "*sort_bfd->xvec->_minisymbol_to_symbol" * (field_expression "sort_bfd->xvec->_minisymbol_to_symbol" (field_expression "sort_bfd->xvec" identifier -> field_identifier) -> field_identifier)) )) (argument_list "(sort_bfd,sort_dynamic,P_x,sort_x)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "paVar3 = (*sort_bfd->xvec->_minisymbol_to_symbol)(sort_bfd,sort_dynamic,P_y,sort_y);" (assignment_expression "paVar3 = (*sort_bfd->xvec->_minisymbol_to_symbol)(sort_bfd,sort_dynamic,P_y,sort_y)" identifier = (call_expression "(*sort_bfd->xvec->_minisymbol_to_symbol)(sort_bfd,sort_dynamic,P_y,sort_y)" (parenthesized_expression "(*sort_bfd->xvec->_minisymbol_to_symbol)" ( (pointer_expression "*sort_bfd->xvec->_minisymbol_to_symbol" * (field_expression "sort_bfd->xvec->_minisymbol_to_symbol" (field_expression "sort_bfd->xvec" identifier -> field_identifier) -> field_identifier)) )) (argument_list "(sort_bfd,sort_dynamic,P_y,sort_y)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if ((paVar2 == (asymbol *)0x0) || (paVar3 == (asymbol *)0x0)) {\n                    /* WARNING: Subroutine does not return */\n    bfd_fatal(sort_bfd->filename);\n  }" if (parenthesized_expression "((paVar2 == (asymbol *)0x0) || (paVar3 == (asymbol *)0x0))" ( (binary_expression "(paVar2 == (asymbol *)0x0) || (paVar3 == (asymbol *)0x0)" (parenthesized_expression "(paVar2 == (asymbol *)0x0)" ( (binary_expression "paVar2 == (asymbol *)0x0" identifier == (cast_expression "(asymbol *)0x0" ( (type_descriptor "asymbol *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(paVar3 == (asymbol *)0x0)" ( (binary_expression "paVar3 == (asymbol *)0x0" identifier == (cast_expression "(asymbol *)0x0" ( (type_descriptor "asymbol *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    bfd_fatal(sort_bfd->filename);\n  }" { comment (expression_statement "bfd_fatal(sort_bfd->filename);" (call_expression "bfd_fatal(sort_bfd->filename)" identifier (argument_list "(sort_bfd->filename)" ( (field_expression "sort_bfd->filename" identifier -> field_identifier) ))) ;) })) (expression_statement "__s2 = paVar3->name;" (assignment_expression "__s2 = paVar3->name" identifier = (field_expression "paVar3->name" identifier -> field_identifier)) ;) (expression_statement "__s1 = paVar2->name;" (assignment_expression "__s1 = paVar2->name" identifier = (field_expression "paVar2->name" identifier -> field_identifier)) ;) (if_statement "if (__s2 == (char *)0x0) {\n    return (int)(__s1 != (char *)0x0);\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 (int)(__s1 != (char *)0x0);\n  }" { (return_statement "return (int)(__s1 != (char *)0x0);" return (cast_expression "(int)(__s1 != (char *)0x0)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(__s1 != (char *)0x0)" ( (binary_expression "__s1 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) ;) })) (if_statement "if (__s1 != (char *)0x0) {\n    if (*__s2 == '\0') {\n      return (uint)(*__s1 != '\0');\n    }\n    if (*__s1 != '\0') {\n      iVar1 = strcoll(__s1,__s2);\n      return iVar1;\n    }\n  }" if (parenthesized_expression "(__s1 != (char *)0x0)" ( (binary_expression "__s1 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (*__s2 == '\0') {\n      return (uint)(*__s1 != '\0');\n    }\n    if (*__s1 != '\0') {\n      iVar1 = strcoll(__s1,__s2);\n      return iVar1;\n    }\n  }" { (if_statement "if (*__s2 == '\0') {\n      return (uint)(*__s1 != '\0');\n    }" if (parenthesized_expression "(*__s2 == '\0')" ( (binary_expression "*__s2 == '\0'" (pointer_expression "*__s2" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      return (uint)(*__s1 != '\0');\n    }" { (return_statement "return (uint)(*__s1 != '\0');" return (call_expression "(uint)(*__s1 != '\0')" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*__s1 != '\0')" ( (binary_expression "*__s1 != '\0'" (pointer_expression "*__s1" * identifier) != (char_literal "'\0'" ' escape_sequence ')) ))) ;) })) (if_statement "if (*__s1 != '\0') {\n      iVar1 = strcoll(__s1,__s2);\n      return iVar1;\n    }" if (parenthesized_expression "(*__s1 != '\0')" ( (binary_expression "*__s1 != '\0'" (pointer_expression "*__s1" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      iVar1 = strcoll(__s1,__s2);\n      return iVar1;\n    }" { (expression_statement "iVar1 = strcoll(__s1,__s2);" (assignment_expression "iVar1 = strcoll(__s1,__s2)" identifier = (call_expression "strcoll(__s1,__s2)" identifier (argument_list "(__s1,__s2)" ( identifier , identifier )))) ;) (return_statement "return iVar1;" return identifier ;) })) })) (return_statement "return -1;" return number_literal ;) })))
(translation_unit "uint FUN_00103d00(undefined8 param_1,undefined8 param_2)\n\n{\n  char *__s2;\n  char *__s1;\n  uint uVar1;\n  long lVar2;\n  long lVar3;\n  \n  lVar2 = (**(code **)(DAT_0010cbe0[1] + 0x260))(DAT_0010cbe0,DAT_0010cbd8,param_1,DAT_0010cbd0);\n  lVar3 = (**(code **)(DAT_0010cbe0[1] + 0x260))(DAT_0010cbe0,DAT_0010cbd8,param_2,DAT_0010cbc8);\n  if ((lVar2 == 0) || (lVar3 == 0)) {\n                    \n    FUN_00106090(*DAT_0010cbe0);\n  }\n  __s2 = *(char **)(lVar3 + 8);\n  __s1 = *(char **)(lVar2 + 8);\n  if (__s2 == (char *)0x0) {\n    return (uint)(__s1 != (char *)0x0);\n  }\n  if (__s1 != (char *)0x0) {\n    if (*__s2 == '\0') {\n      return (uint)(*__s1 != '\0');\n    }\n    if (*__s1 != '\0') {\n      uVar1 = strcoll(__s1,__s2);\n      return uVar1;\n    }\n  }\n  return 0xffffffff;\n}\n\n" (function_definition "uint FUN_00103d00(undefined8 param_1,undefined8 param_2)\n\n{\n  char *__s2;\n  char *__s1;\n  uint uVar1;\n  long lVar2;\n  long lVar3;\n  \n  lVar2 = (**(code **)(DAT_0010cbe0[1] + 0x260))(DAT_0010cbe0,DAT_0010cbd8,param_1,DAT_0010cbd0);\n  lVar3 = (**(code **)(DAT_0010cbe0[1] + 0x260))(DAT_0010cbe0,DAT_0010cbd8,param_2,DAT_0010cbc8);\n  if ((lVar2 == 0) || (lVar3 == 0)) {\n                    \n    FUN_00106090(*DAT_0010cbe0);\n  }\n  __s2 = *(char **)(lVar3 + 8);\n  __s1 = *(char **)(lVar2 + 8);\n  if (__s2 == (char *)0x0) {\n    return (uint)(__s1 != (char *)0x0);\n  }\n  if (__s1 != (char *)0x0) {\n    if (*__s2 == '\0') {\n      return (uint)(*__s1 != '\0');\n    }\n    if (*__s1 != '\0') {\n      uVar1 = strcoll(__s1,__s2);\n      return uVar1;\n    }\n  }\n  return 0xffffffff;\n}" type_identifier (function_declarator "FUN_00103d00(undefined8 param_1,undefined8 param_2)" identifier (parameter_list "(undefined8 param_1,undefined8 param_2)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) ))) (compound_statement "{\n  char *__s2;\n  char *__s1;\n  uint uVar1;\n  long lVar2;\n  long lVar3;\n  \n  lVar2 = (**(code **)(DAT_0010cbe0[1] + 0x260))(DAT_0010cbe0,DAT_0010cbd8,param_1,DAT_0010cbd0);\n  lVar3 = (**(code **)(DAT_0010cbe0[1] + 0x260))(DAT_0010cbe0,DAT_0010cbd8,param_2,DAT_0010cbc8);\n  if ((lVar2 == 0) || (lVar3 == 0)) {\n                    \n    FUN_00106090(*DAT_0010cbe0);\n  }\n  __s2 = *(char **)(lVar3 + 8);\n  __s1 = *(char **)(lVar2 + 8);\n  if (__s2 == (char *)0x0) {\n    return (uint)(__s1 != (char *)0x0);\n  }\n  if (__s1 != (char *)0x0) {\n    if (*__s2 == '\0') {\n      return (uint)(*__s1 != '\0');\n    }\n    if (*__s1 != '\0') {\n      uVar1 = strcoll(__s1,__s2);\n      return uVar1;\n    }\n  }\n  return 0xffffffff;\n}" { (declaration "char *__s2;" primitive_type (pointer_declarator "*__s2" * identifier) ;) (declaration "char *__s1;" primitive_type (pointer_declarator "*__s1" * identifier) ;) (declaration "uint uVar1;" type_identifier identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (expression_statement "lVar2 = (**(code **)(DAT_0010cbe0[1] + 0x260))(DAT_0010cbe0,DAT_0010cbd8,param_1,DAT_0010cbd0);" (assignment_expression "lVar2 = (**(code **)(DAT_0010cbe0[1] + 0x260))(DAT_0010cbe0,DAT_0010cbd8,param_1,DAT_0010cbd0)" identifier = (call_expression "(**(code **)(DAT_0010cbe0[1] + 0x260))(DAT_0010cbe0,DAT_0010cbd8,param_1,DAT_0010cbd0)" (parenthesized_expression "(**(code **)(DAT_0010cbe0[1] + 0x260))" ( (pointer_expression "**(code **)(DAT_0010cbe0[1] + 0x260)" * (pointer_expression "*(code **)(DAT_0010cbe0[1] + 0x260)" * (cast_expression "(code **)(DAT_0010cbe0[1] + 0x260)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(DAT_0010cbe0[1] + 0x260)" ( (binary_expression "DAT_0010cbe0[1] + 0x260" (subscript_expression "DAT_0010cbe0[1]" identifier [ number_literal ]) + number_literal) ))))) )) (argument_list "(DAT_0010cbe0,DAT_0010cbd8,param_1,DAT_0010cbd0)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "lVar3 = (**(code **)(DAT_0010cbe0[1] + 0x260))(DAT_0010cbe0,DAT_0010cbd8,param_2,DAT_0010cbc8);" (assignment_expression "lVar3 = (**(code **)(DAT_0010cbe0[1] + 0x260))(DAT_0010cbe0,DAT_0010cbd8,param_2,DAT_0010cbc8)" identifier = (call_expression "(**(code **)(DAT_0010cbe0[1] + 0x260))(DAT_0010cbe0,DAT_0010cbd8,param_2,DAT_0010cbc8)" (parenthesized_expression "(**(code **)(DAT_0010cbe0[1] + 0x260))" ( (pointer_expression "**(code **)(DAT_0010cbe0[1] + 0x260)" * (pointer_expression "*(code **)(DAT_0010cbe0[1] + 0x260)" * (cast_expression "(code **)(DAT_0010cbe0[1] + 0x260)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(DAT_0010cbe0[1] + 0x260)" ( (binary_expression "DAT_0010cbe0[1] + 0x260" (subscript_expression "DAT_0010cbe0[1]" identifier [ number_literal ]) + number_literal) ))))) )) (argument_list "(DAT_0010cbe0,DAT_0010cbd8,param_2,DAT_0010cbc8)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if ((lVar2 == 0) || (lVar3 == 0)) {\n                    \n    FUN_00106090(*DAT_0010cbe0);\n  }" if (parenthesized_expression "((lVar2 == 0) || (lVar3 == 0))" ( (binary_expression "(lVar2 == 0) || (lVar3 == 0)" (parenthesized_expression "(lVar2 == 0)" ( (binary_expression "lVar2 == 0" identifier == number_literal) )) || (parenthesized_expression "(lVar3 == 0)" ( (binary_expression "lVar3 == 0" identifier == number_literal) ))) )) (compound_statement "{\n                    \n    FUN_00106090(*DAT_0010cbe0);\n  }" { (expression_statement "FUN_00106090(*DAT_0010cbe0);" (call_expression "FUN_00106090(*DAT_0010cbe0)" identifier (argument_list "(*DAT_0010cbe0)" ( (pointer_expression "*DAT_0010cbe0" * identifier) ))) ;) })) (expression_statement "__s2 = *(char **)(lVar3 + 8);" (assignment_expression "__s2 = *(char **)(lVar3 + 8)" identifier = (pointer_expression "*(char **)(lVar3 + 8)" * (cast_expression "(char **)(lVar3 + 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar3 + 8)" ( (binary_expression "lVar3 + 8" identifier + number_literal) ))))) ;) (expression_statement "__s1 = *(char **)(lVar2 + 8);" (assignment_expression "__s1 = *(char **)(lVar2 + 8)" identifier = (pointer_expression "*(char **)(lVar2 + 8)" * (cast_expression "(char **)(lVar2 + 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar2 + 8)" ( (binary_expression "lVar2 + 8" identifier + number_literal) ))))) ;) (if_statement "if (__s2 == (char *)0x0) {\n    return (uint)(__s1 != (char *)0x0);\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 (uint)(__s1 != (char *)0x0);\n  }" { (return_statement "return (uint)(__s1 != (char *)0x0);" return (call_expression "(uint)(__s1 != (char *)0x0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(__s1 != (char *)0x0)" ( (binary_expression "__s1 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) ;) })) (if_statement "if (__s1 != (char *)0x0) {\n    if (*__s2 == '\0') {\n      return (uint)(*__s1 != '\0');\n    }\n    if (*__s1 != '\0') {\n      uVar1 = strcoll(__s1,__s2);\n      return uVar1;\n    }\n  }" if (parenthesized_expression "(__s1 != (char *)0x0)" ( (binary_expression "__s1 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (*__s2 == '\0') {\n      return (uint)(*__s1 != '\0');\n    }\n    if (*__s1 != '\0') {\n      uVar1 = strcoll(__s1,__s2);\n      return uVar1;\n    }\n  }" { (if_statement "if (*__s2 == '\0') {\n      return (uint)(*__s1 != '\0');\n    }" if (parenthesized_expression "(*__s2 == '\0')" ( (binary_expression "*__s2 == '\0'" (pointer_expression "*__s2" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      return (uint)(*__s1 != '\0');\n    }" { (return_statement "return (uint)(*__s1 != '\0');" return (call_expression "(uint)(*__s1 != '\0')" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*__s1 != '\0')" ( (binary_expression "*__s1 != '\0'" (pointer_expression "*__s1" * identifier) != (char_literal "'\0'" ' escape_sequence ')) ))) ;) })) (if_statement "if (*__s1 != '\0') {\n      uVar1 = strcoll(__s1,__s2);\n      return uVar1;\n    }" if (parenthesized_expression "(*__s1 != '\0')" ( (binary_expression "*__s1 != '\0'" (pointer_expression "*__s1" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      uVar1 = strcoll(__s1,__s2);\n      return uVar1;\n    }" { (expression_statement "uVar1 = strcoll(__s1,__s2);" (assignment_expression "uVar1 = strcoll(__s1,__s2)" identifier = (call_expression "strcoll(__s1,__s2)" identifier (argument_list "(__s1,__s2)" ( identifier , identifier )))) ;) (return_statement "return uVar1;" return identifier ;) })) })) (return_statement "return 0xffffffff;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * IDENT) ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' escape_sequence ')) )) (compound_statement { (return_statement return (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * IDENT) != (char_literal ' escape_sequence ')) ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (return_statement return IDENT ;) })) })) (return_statement return LIT ;) })))
(function_definition "uint FUN_00103d00(undefined8 param_1,undefined8 param_2)\n\n{\n  char *__s2;\n  char *__s1;\n  uint uVar1;\n  long lVar2;\n  long lVar3;\n  \n  lVar2 = (**(code **)(DAT_0010cbe0[1] + 0x260))(DAT_0010cbe0,DAT_0010cbd8,param_1,DAT_0010cbd0);\n  lVar3 = (**(code **)(DAT_0010cbe0[1] + 0x260))(DAT_0010cbe0,DAT_0010cbd8,param_2,DAT_0010cbc8);\n  if ((lVar2 == 0) || (lVar3 == 0)) {\n                    \n    FUN_00106090(*DAT_0010cbe0);\n  }\n  __s2 = *(char **)(lVar3 + 8);\n  __s1 = *(char **)(lVar2 + 8);\n  if (__s2 == (char *)0x0) {\n    return (uint)(__s1 != (char *)0x0);\n  }\n  if (__s1 != (char *)0x0) {\n    if (*__s2 == '\0') {\n      return (uint)(*__s1 != '\0');\n    }\n    if (*__s1 != '\0') {\n      uVar1 = strcoll(__s1,__s2);\n      return uVar1;\n    }\n  }\n  return 0xffffffff;\n}" (type_identifier "uint") (function_declarator "FUN_00103d00(undefined8 param_1,undefined8 param_2)" (identifier "FUN_00103d00") (parameter_list "(undefined8 param_1,undefined8 param_2)" (( "(") (parameter_declaration "undefined8 param_1" (type_identifier "undefined8") (identifier "param_1")) (, ",") (parameter_declaration "undefined8 param_2" (type_identifier "undefined8") (identifier "param_2")) () ")"))) (compound_statement "{\n  char *__s2;\n  char *__s1;\n  uint uVar1;\n  long lVar2;\n  long lVar3;\n  \n  lVar2 = (**(code **)(DAT_0010cbe0[1] + 0x260))(DAT_0010cbe0,DAT_0010cbd8,param_1,DAT_0010cbd0);\n  lVar3 = (**(code **)(DAT_0010cbe0[1] + 0x260))(DAT_0010cbe0,DAT_0010cbd8,param_2,DAT_0010cbc8);\n  if ((lVar2 == 0) || (lVar3 == 0)) {\n                    \n    FUN_00106090(*DAT_0010cbe0);\n  }\n  __s2 = *(char **)(lVar3 + 8);\n  __s1 = *(char **)(lVar2 + 8);\n  if (__s2 == (char *)0x0) {\n    return (uint)(__s1 != (char *)0x0);\n  }\n  if (__s1 != (char *)0x0) {\n    if (*__s2 == '\0') {\n      return (uint)(*__s1 != '\0');\n    }\n    if (*__s1 != '\0') {\n      uVar1 = strcoll(__s1,__s2);\n      return uVar1;\n    }\n  }\n  return 0xffffffff;\n}" ({ "{") (declaration "char *__s2;" (primitive_type "char") (pointer_declarator "*__s2" (* "*") (identifier "__s2")) (; ";")) (declaration "char *__s1;" (primitive_type "char") (pointer_declarator "*__s1" (* "*") (identifier "__s1")) (; ";")) (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "long lVar2;" (sized_type_specifier "long" (long "long")) (identifier "lVar2") (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (expression_statement "lVar2 = (**(code **)(DAT_0010cbe0[1] + 0x260))(DAT_0010cbe0,DAT_0010cbd8,param_1,DAT_0010cbd0);" (assignment_expression "lVar2 = (**(code **)(DAT_0010cbe0[1] + 0x260))(DAT_0010cbe0,DAT_0010cbd8,param_1,DAT_0010cbd0)" (identifier "lVar2") (= "=") (call_expression "(**(code **)(DAT_0010cbe0[1] + 0x260))(DAT_0010cbe0,DAT_0010cbd8,param_1,DAT_0010cbd0)" (parenthesized_expression "(**(code **)(DAT_0010cbe0[1] + 0x260))" (( "(") (pointer_expression "**(code **)(DAT_0010cbe0[1] + 0x260)" (* "*") (pointer_expression "*(code **)(DAT_0010cbe0[1] + 0x260)" (* "*") (cast_expression "(code **)(DAT_0010cbe0[1] + 0x260)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(DAT_0010cbe0[1] + 0x260)" (( "(") (binary_expression "DAT_0010cbe0[1] + 0x260" (subscript_expression "DAT_0010cbe0[1]" (identifier "DAT_0010cbe0") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "0x260")) () ")"))))) () ")")) (argument_list "(DAT_0010cbe0,DAT_0010cbd8,param_1,DAT_0010cbd0)" (( "(") (identifier "DAT_0010cbe0") (, ",") (identifier "DAT_0010cbd8") (, ",") (identifier "param_1") (, ",") (identifier "DAT_0010cbd0") () ")")))) (; ";")) (expression_statement "lVar3 = (**(code **)(DAT_0010cbe0[1] + 0x260))(DAT_0010cbe0,DAT_0010cbd8,param_2,DAT_0010cbc8);" (assignment_expression "lVar3 = (**(code **)(DAT_0010cbe0[1] + 0x260))(DAT_0010cbe0,DAT_0010cbd8,param_2,DAT_0010cbc8)" (identifier "lVar3") (= "=") (call_expression "(**(code **)(DAT_0010cbe0[1] + 0x260))(DAT_0010cbe0,DAT_0010cbd8,param_2,DAT_0010cbc8)" (parenthesized_expression "(**(code **)(DAT_0010cbe0[1] + 0x260))" (( "(") (pointer_expression "**(code **)(DAT_0010cbe0[1] + 0x260)" (* "*") (pointer_expression "*(code **)(DAT_0010cbe0[1] + 0x260)" (* "*") (cast_expression "(code **)(DAT_0010cbe0[1] + 0x260)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(DAT_0010cbe0[1] + 0x260)" (( "(") (binary_expression "DAT_0010cbe0[1] + 0x260" (subscript_expression "DAT_0010cbe0[1]" (identifier "DAT_0010cbe0") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "0x260")) () ")"))))) () ")")) (argument_list "(DAT_0010cbe0,DAT_0010cbd8,param_2,DAT_0010cbc8)" (( "(") (identifier "DAT_0010cbe0") (, ",") (identifier "DAT_0010cbd8") (, ",") (identifier "param_2") (, ",") (identifier "DAT_0010cbc8") () ")")))) (; ";")) (if_statement "if ((lVar2 == 0) || (lVar3 == 0)) {\n                    \n    FUN_00106090(*DAT_0010cbe0);\n  }" (if "if") (parenthesized_expression "((lVar2 == 0) || (lVar3 == 0))" (( "(") (binary_expression "(lVar2 == 0) || (lVar3 == 0)" (parenthesized_expression "(lVar2 == 0)" (( "(") (binary_expression "lVar2 == 0" (identifier "lVar2") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(lVar3 == 0)" (( "(") (binary_expression "lVar3 == 0" (identifier "lVar3") (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n                    \n    FUN_00106090(*DAT_0010cbe0);\n  }" ({ "{") (expression_statement "FUN_00106090(*DAT_0010cbe0);" (call_expression "FUN_00106090(*DAT_0010cbe0)" (identifier "FUN_00106090") (argument_list "(*DAT_0010cbe0)" (( "(") (pointer_expression "*DAT_0010cbe0" (* "*") (identifier "DAT_0010cbe0")) () ")"))) (; ";")) (} "}"))) (expression_statement "__s2 = *(char **)(lVar3 + 8);" (assignment_expression "__s2 = *(char **)(lVar3 + 8)" (identifier "__s2") (= "=") (pointer_expression "*(char **)(lVar3 + 8)" (* "*") (cast_expression "(char **)(lVar3 + 8)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar3 + 8)" (( "(") (binary_expression "lVar3 + 8" (identifier "lVar3") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "__s1 = *(char **)(lVar2 + 8);" (assignment_expression "__s1 = *(char **)(lVar2 + 8)" (identifier "__s1") (= "=") (pointer_expression "*(char **)(lVar2 + 8)" (* "*") (cast_expression "(char **)(lVar2 + 8)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar2 + 8)" (( "(") (binary_expression "lVar2 + 8" (identifier "lVar2") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (__s2 == (char *)0x0) {\n    return (uint)(__s1 != (char *)0x0);\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 (uint)(__s1 != (char *)0x0);\n  }" ({ "{") (return_statement "return (uint)(__s1 != (char *)0x0);" (return "return") (call_expression "(uint)(__s1 != (char *)0x0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(__s1 != (char *)0x0)" (( "(") (binary_expression "__s1 != (char *)0x0" (identifier "__s1") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")"))) (; ";")) (} "}"))) (if_statement "if (__s1 != (char *)0x0) {\n    if (*__s2 == '\0') {\n      return (uint)(*__s1 != '\0');\n    }\n    if (*__s1 != '\0') {\n      uVar1 = strcoll(__s1,__s2);\n      return uVar1;\n    }\n  }" (if "if") (parenthesized_expression "(__s1 != (char *)0x0)" (( "(") (binary_expression "__s1 != (char *)0x0" (identifier "__s1") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    if (*__s2 == '\0') {\n      return (uint)(*__s1 != '\0');\n    }\n    if (*__s1 != '\0') {\n      uVar1 = strcoll(__s1,__s2);\n      return uVar1;\n    }\n  }" ({ "{") (if_statement "if (*__s2 == '\0') {\n      return (uint)(*__s1 != '\0');\n    }" (if "if") (parenthesized_expression "(*__s2 == '\0')" (( "(") (binary_expression "*__s2 == '\0'" (pointer_expression "*__s2" (* "*") (identifier "__s2")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      return (uint)(*__s1 != '\0');\n    }" ({ "{") (return_statement "return (uint)(*__s1 != '\0');" (return "return") (call_expression "(uint)(*__s1 != '\0')" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*__s1 != '\0')" (( "(") (binary_expression "*__s1 != '\0'" (pointer_expression "*__s1" (* "*") (identifier "__s1")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) (; ";")) (} "}"))) (if_statement "if (*__s1 != '\0') {\n      uVar1 = strcoll(__s1,__s2);\n      return uVar1;\n    }" (if "if") (parenthesized_expression "(*__s1 != '\0')" (( "(") (binary_expression "*__s1 != '\0'" (pointer_expression "*__s1" (* "*") (identifier "__s1")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      uVar1 = strcoll(__s1,__s2);\n      return uVar1;\n    }" ({ "{") (expression_statement "uVar1 = strcoll(__s1,__s2);" (assignment_expression "uVar1 = strcoll(__s1,__s2)" (identifier "uVar1") (= "=") (call_expression "strcoll(__s1,__s2)" (identifier "strcoll") (argument_list "(__s1,__s2)" (( "(") (identifier "__s1") (, ",") (identifier "__s2") () ")")))) (; ";")) (return_statement "return uVar1;" (return "return") (identifier "uVar1") (; ";")) (} "}"))) (} "}"))) (return_statement "return 0xffffffff;" (return "return") (number_literal "0xffffffff") (; ";")) (} "}")))

int function_1(void *P_x,void *P_y)

{
  char *var_4;
  char *var_5;
  int iVar1;
  type_1 *var_1;
  type_1 *var_2;
  
  var_1 = (*sort_bfd->xvec->_minisymbol_to_symbol)(sort_bfd,sort_dynamic,P_x,sort_x);
  var_2 = (*sort_bfd->xvec->_minisymbol_to_symbol)(sort_bfd,sort_dynamic,P_y,sort_y);
  if ((var_1 == (type_1 *)0x0) || (var_2 == (type_1 *)0x0)) {
                    /* WARNING: Subroutine does not return */
    var_3(sort_bfd->filename);
  }
  var_4 = var_2->name;
  var_5 = var_1->name;
  if (var_4 == (char *)0x0) {
    return (int)(var_5 != (char *)0x0);
  }
  if (var_5 != (char *)0x0) {
    if (*var_4 == '\0') {
      return (uint)(*var_5 != '\0');
    }
    if (*var_5 != '\0') {
      iVar1 = var_6(var_5,var_4);
      return iVar1;
    }
  }
  return -1;
}


(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: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))))) arguments: (argument_list (identifier) (identifier) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))))) arguments: (argument_list (identifier) (identifier) (identifier) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator 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: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (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 (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))))))) (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 (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (return_statement (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (escape_sequence)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (return_statement (identifier)))))) (return_statement (number_literal)))))

uint MASKED(undefined8 param_1,undefined8 param_2)

{
  char *__s2;
  char *__s1;
  uint uVar1;
  long lVar2;
  long lVar3;
  
  lVar2 = (**(code **)(DAT_0010cbe0[1] + 0x260))(DAT_0010cbe0,DAT_0010cbd8,param_1,DAT_0010cbd0);
  lVar3 = (**(code **)(DAT_0010cbe0[1] + 0x260))(DAT_0010cbe0,DAT_0010cbd8,param_2,DAT_0010cbc8);
  if ((lVar2 == 0) || (lVar3 == 0)) {
                    /* WARNING: Subroutine does not return */
    FUN_00106090(*DAT_0010cbe0);
  }
  __s2 = *(char **)(lVar3 + 8);
  __s1 = *(char **)(lVar2 + 8);
  if (__s2 == (char *)0x0) {
    return (uint)(__s1 != (char *)0x0);
  }
  if (__s1 != (char *)0x0) {
    if (*__s2 == '\0') {
      return (uint)(*__s1 != '\0');
    }
    if (*__s1 != '\0') {
      uVar1 = strcoll(__s1,__s2);
      return uVar1;
    }
  }
  return 0xffffffff;
}

