
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Unknown calling convention */

int cookie_sort(void *p1,void *p2)

{
  int iVar1;
  int iVar2;
  char *pcVar3;
  size_t sVar4;
  uint uVar5;
  
                    /* WARNING: Load size is inaccurate */
  iVar1 = *p1;
                    /* WARNING: Load size is inaccurate */
  iVar2 = *p2;
  pcVar3 = *(char **)(iVar2 + 0xc);
  if (*(char **)(iVar1 + 0xc) == (char *)0x0) {
    sVar4 = 0;
    if (pcVar3 != (char *)0x0) goto LAB_0001e83e;
  }
  else {
    sVar4 = strlen(*(char **)(iVar1 + 0xc));
    if (pcVar3 == (char *)0x0) {
      if (sVar4 != 0) {
        return -1;
      }
    }
    else {
LAB_0001e83e:
      uVar5 = strlen(pcVar3);
      if (uVar5 != sVar4) goto LAB_0001e88e;
    }
  }
  pcVar3 = *(char **)(iVar2 + 0x14);
  if (*(char **)(iVar1 + 0x14) == (char *)0x0) {
    sVar4 = 0;
    if (pcVar3 != (char *)0x0) goto LAB_0001e876;
  }
  else {
    sVar4 = strlen(*(char **)(iVar1 + 0x14));
    if (pcVar3 == (char *)0x0) {
      if (sVar4 != 0) {
        return -1;
      }
    }
    else {
LAB_0001e876:
      uVar5 = strlen(pcVar3);
      if (uVar5 != sVar4) goto LAB_0001e88e;
    }
  }
  pcVar3 = *(char **)(iVar2 + 4);
  if (*(char **)(iVar1 + 4) == (char *)0x0) {
    sVar4 = 0;
    if (pcVar3 == (char *)0x0) goto LAB_0001e904;
  }
  else {
    sVar4 = strlen(*(char **)(iVar1 + 4));
    if (pcVar3 == (char *)0x0) {
      if (sVar4 != 0) {
        return -1;
      }
      goto LAB_0001e904;
    }
  }
  uVar5 = strlen(pcVar3);
  if (uVar5 != sVar4) {
LAB_0001e88e:
    return (-(uint)(sVar4 < uVar5) & 2) - 1;
  }
LAB_0001e904:
  return (uint)(*(int *)(iVar1 + 0x34) < *(int *)(iVar2 + 0x34)) * 2 + -1;
}



int __regparm2 FUN_0001e800(undefined4 param_1,undefined4 param_2,int *param_3)

{
  int iVar1;
  int iVar2;
  char *pcVar3;
  size_t sVar4;
  uint uVar5;
  int *unaff_retaddr;
  
  entry(param_2,0x1e809);
  iVar1 = *unaff_retaddr;
  iVar2 = *param_3;
  pcVar3 = *(char **)(iVar2 + 0xc);
  if (*(char **)(iVar1 + 0xc) == (char *)0x0) {
    sVar4 = 0;
    if (pcVar3 != (char *)0x0) goto LAB_0001e83e;
  }
  else {
    sVar4 = strlen(*(char **)(iVar1 + 0xc));
    if (pcVar3 == (char *)0x0) {
      if (sVar4 != 0) {
        return -1;
      }
    }
    else {
LAB_0001e83e:
      uVar5 = strlen(pcVar3);
      if (uVar5 != sVar4) goto LAB_0001e88e;
    }
  }
  pcVar3 = *(char **)(iVar2 + 0x14);
  if (*(char **)(iVar1 + 0x14) == (char *)0x0) {
    sVar4 = 0;
    if (pcVar3 != (char *)0x0) goto LAB_0001e876;
  }
  else {
    sVar4 = strlen(*(char **)(iVar1 + 0x14));
    if (pcVar3 == (char *)0x0) {
      if (sVar4 != 0) {
        return -1;
      }
    }
    else {
LAB_0001e876:
      uVar5 = strlen(pcVar3);
      if (uVar5 != sVar4) goto LAB_0001e88e;
    }
  }
  pcVar3 = *(char **)(iVar2 + 4);
  if (*(char **)(iVar1 + 4) == (char *)0x0) {
    sVar4 = 0;
    if (pcVar3 == (char *)0x0) goto LAB_0001e904;
  }
  else {
    sVar4 = strlen(*(char **)(iVar1 + 4));
    if (pcVar3 == (char *)0x0) {
      if (sVar4 != 0) {
        return -1;
      }
      goto LAB_0001e904;
    }
  }
  uVar5 = strlen(pcVar3);
  if (uVar5 != sVar4) {
LAB_0001e88e:
    return (-(uint)(sVar4 < uVar5) & 2) - 1;
  }
LAB_0001e904:
  return (uint)(*(int *)(iVar1 + 0x34) < *(int *)(iVar2 + 0x34)) * 2 + -1;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00019ed0
ADD EBX,0x91fd7
SUB ESP,0x1c
MOV EAX,dword ptr [ESP + 0x30]
MOV ESI,dword ptr [EAX]
MOV EAX,dword ptr [ESP + 0x34]
MOV EDI,dword ptr [EAX]
MOV EAX,dword ptr [ESI + 0xc]
MOV EBP,dword ptr [EDI + 0xc]
TEST EAX,EAX
JZ 0x0001e920
SUB ESP,0xc
PUSH EAX
CALL 0x00018850
ADD ESP,0x10
MOV EDX,EAX
TEST EBP,EBP
JZ 0x0001e8a8
MOV dword ptr [ESP + 0xc],EDX
SUB ESP,0xc
PUSH EBP
CALL 0x00018850
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0xc]
CMP EAX,EDX
JNZ 0x0001e88e
MOV EAX,dword ptr [ESI + 0x14]
MOV EBP,dword ptr [EDI + 0x14]
TEST EAX,EAX
JZ 0x0001e8c0
SUB ESP,0xc
PUSH EAX
CALL 0x00018850
ADD ESP,0x10
MOV EDX,EAX
TEST EBP,EBP
JZ 0x0001e940
MOV dword ptr [ESP + 0xc],EDX
SUB ESP,0xc
PUSH EBP
CALL 0x00018850
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0xc]
CMP EAX,EDX
JZ 0x0001e8d0
CMP EDX,EAX
SBB EDX,EDX
AND EDX,0x2
SUB EDX,0x1
ADD ESP,0x1c
MOV EAX,EDX
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EDX,0xffffffff
TEST EAX,EAX
JZ 0x0001e856
ADD ESP,0x1c
MOV EAX,EDX
POP EBX
POP ESI
POP EDI
POP EBP
RET
XOR EDX,EDX
TEST EBP,EBP
JNZ 0x0001e876
LEA ESI,[ESI]
LEA ESI,[ESI]
MOV EAX,dword ptr [ESI + 0x4]
MOV EBP,dword ptr [EDI + 0x4]
TEST EAX,EAX
JZ 0x0001e930
SUB ESP,0xc
PUSH EAX
CALL 0x00018850
ADD ESP,0x10
MOV EDX,EAX
TEST EBP,EBP
JZ 0x0001e950
MOV dword ptr [ESP + 0xc],EDX
SUB ESP,0xc
PUSH EBP
CALL 0x00018850
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0xc]
CMP EAX,EDX
JNZ 0x0001e88e
MOV EAX,dword ptr [ESI + 0x34]
XOR EDX,EDX
CMP dword ptr [EDI + 0x34],EAX
SETG DL
ADD ESP,0x1c
LEA EDX,[EDX + EDX*0x1 + -0x1]
POP EBX
POP ESI
MOV EAX,EDX
POP EDI
POP EBP
RET
XOR EDX,EDX
TEST EBP,EBP
JNZ 0x0001e83e
JMP 0x0001e856
XOR EDX,EDX
TEST EBP,EBP
JNZ 0x0001e8ec
JMP 0x0001e904
MOV EDX,0xffffffff
TEST EAX,EAX
JNZ 0x0001e898
JMP 0x0001e8d0
MOV EDX,0xffffffff
TEST EAX,EAX
JNZ 0x0001e898
JMP 0x0001e904
(translation_unit "int __regparm2 FUN_0001e800(undefined4 param_1,undefined4 param_2,int *param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  char *pcVar3;\n  size_t sVar4;\n  uint uVar5;\n  int *unaff_retaddr;\n  \n  entry(param_2,0x1e809);\n  iVar1 = *unaff_retaddr;\n  iVar2 = *param_3;\n  pcVar3 = *(char **)(iVar2 + 0xc);\n  if (*(char **)(iVar1 + 0xc) == (char *)0x0) {\n    sVar4 = 0;\n    if (pcVar3 != (char *)0x0) goto LAB_0001e83e;\n  }\n  else {\n    sVar4 = strlen(*(char **)(iVar1 + 0xc));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }\n    else {\nLAB_0001e83e:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }\n  }\n  pcVar3 = *(char **)(iVar2 + 0x14);\n  if (*(char **)(iVar1 + 0x14) == (char *)0x0) {\n    sVar4 = 0;\n    if (pcVar3 != (char *)0x0) goto LAB_0001e876;\n  }\n  else {\n    sVar4 = strlen(*(char **)(iVar1 + 0x14));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }\n    else {\nLAB_0001e876:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }\n  }\n  pcVar3 = *(char **)(iVar2 + 4);\n  if (*(char **)(iVar1 + 4) == (char *)0x0) {\n    sVar4 = 0;\n    if (pcVar3 == (char *)0x0) goto LAB_0001e904;\n  }\n  else {\n    sVar4 = strlen(*(char **)(iVar1 + 4));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n      goto LAB_0001e904;\n    }\n  }\n  uVar5 = strlen(pcVar3);\n  if (uVar5 != sVar4) {\nLAB_0001e88e:\n    return (-(uint)(sVar4 < uVar5) & 2) - 1;\n  }\nLAB_0001e904:\n  return (uint)(*(int *)(iVar1 + 0x34) < *(int *)(iVar2 + 0x34)) * 2 + -1;\n}\n\n" (function_definition "int __regparm2 FUN_0001e800(undefined4 param_1,undefined4 param_2,int *param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  char *pcVar3;\n  size_t sVar4;\n  uint uVar5;\n  int *unaff_retaddr;\n  \n  entry(param_2,0x1e809);\n  iVar1 = *unaff_retaddr;\n  iVar2 = *param_3;\n  pcVar3 = *(char **)(iVar2 + 0xc);\n  if (*(char **)(iVar1 + 0xc) == (char *)0x0) {\n    sVar4 = 0;\n    if (pcVar3 != (char *)0x0) goto LAB_0001e83e;\n  }\n  else {\n    sVar4 = strlen(*(char **)(iVar1 + 0xc));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }\n    else {\nLAB_0001e83e:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }\n  }\n  pcVar3 = *(char **)(iVar2 + 0x14);\n  if (*(char **)(iVar1 + 0x14) == (char *)0x0) {\n    sVar4 = 0;\n    if (pcVar3 != (char *)0x0) goto LAB_0001e876;\n  }\n  else {\n    sVar4 = strlen(*(char **)(iVar1 + 0x14));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }\n    else {\nLAB_0001e876:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }\n  }\n  pcVar3 = *(char **)(iVar2 + 4);\n  if (*(char **)(iVar1 + 4) == (char *)0x0) {\n    sVar4 = 0;\n    if (pcVar3 == (char *)0x0) goto LAB_0001e904;\n  }\n  else {\n    sVar4 = strlen(*(char **)(iVar1 + 4));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n      goto LAB_0001e904;\n    }\n  }\n  uVar5 = strlen(pcVar3);\n  if (uVar5 != sVar4) {\nLAB_0001e88e:\n    return (-(uint)(sVar4 < uVar5) & 2) - 1;\n  }\nLAB_0001e904:\n  return (uint)(*(int *)(iVar1 + 0x34) < *(int *)(iVar2 + 0x34)) * 2 + -1;\n}" primitive_type (ERROR "__regparm2" identifier) (function_declarator "FUN_0001e800(undefined4 param_1,undefined4 param_2,int *param_3)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2,int *param_3)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  char *pcVar3;\n  size_t sVar4;\n  uint uVar5;\n  int *unaff_retaddr;\n  \n  entry(param_2,0x1e809);\n  iVar1 = *unaff_retaddr;\n  iVar2 = *param_3;\n  pcVar3 = *(char **)(iVar2 + 0xc);\n  if (*(char **)(iVar1 + 0xc) == (char *)0x0) {\n    sVar4 = 0;\n    if (pcVar3 != (char *)0x0) goto LAB_0001e83e;\n  }\n  else {\n    sVar4 = strlen(*(char **)(iVar1 + 0xc));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }\n    else {\nLAB_0001e83e:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }\n  }\n  pcVar3 = *(char **)(iVar2 + 0x14);\n  if (*(char **)(iVar1 + 0x14) == (char *)0x0) {\n    sVar4 = 0;\n    if (pcVar3 != (char *)0x0) goto LAB_0001e876;\n  }\n  else {\n    sVar4 = strlen(*(char **)(iVar1 + 0x14));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }\n    else {\nLAB_0001e876:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }\n  }\n  pcVar3 = *(char **)(iVar2 + 4);\n  if (*(char **)(iVar1 + 4) == (char *)0x0) {\n    sVar4 = 0;\n    if (pcVar3 == (char *)0x0) goto LAB_0001e904;\n  }\n  else {\n    sVar4 = strlen(*(char **)(iVar1 + 4));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n      goto LAB_0001e904;\n    }\n  }\n  uVar5 = strlen(pcVar3);\n  if (uVar5 != sVar4) {\nLAB_0001e88e:\n    return (-(uint)(sVar4 < uVar5) & 2) - 1;\n  }\nLAB_0001e904:\n  return (uint)(*(int *)(iVar1 + 0x34) < *(int *)(iVar2 + 0x34)) * 2 + -1;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "int *unaff_retaddr;" primitive_type (pointer_declarator "*unaff_retaddr" * identifier) ;) (expression_statement "entry(param_2,0x1e809);" (call_expression "entry(param_2,0x1e809)" identifier (argument_list "(param_2,0x1e809)" ( identifier , number_literal ))) ;) (expression_statement "iVar1 = *unaff_retaddr;" (assignment_expression "iVar1 = *unaff_retaddr" identifier = (pointer_expression "*unaff_retaddr" * identifier)) ;) (expression_statement "iVar2 = *param_3;" (assignment_expression "iVar2 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "pcVar3 = *(char **)(iVar2 + 0xc);" (assignment_expression "pcVar3 = *(char **)(iVar2 + 0xc)" identifier = (pointer_expression "*(char **)(iVar2 + 0xc)" * (cast_expression "(char **)(iVar2 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (*(char **)(iVar1 + 0xc) == (char *)0x0) {\n    sVar4 = 0;\n    if (pcVar3 != (char *)0x0) goto LAB_0001e83e;\n  }\n  else {\n    sVar4 = strlen(*(char **)(iVar1 + 0xc));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }\n    else {\nLAB_0001e83e:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }\n  }" if (parenthesized_expression "(*(char **)(iVar1 + 0xc) == (char *)0x0)" ( (binary_expression "*(char **)(iVar1 + 0xc) == (char *)0x0" (pointer_expression "*(char **)(iVar1 + 0xc)" * (cast_expression "(char **)(iVar1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) )))) == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    sVar4 = 0;\n    if (pcVar3 != (char *)0x0) goto LAB_0001e83e;\n  }" { (expression_statement "sVar4 = 0;" (assignment_expression "sVar4 = 0" identifier = number_literal) ;) (if_statement "if (pcVar3 != (char *)0x0) goto LAB_0001e83e;" if (parenthesized_expression "(pcVar3 != (char *)0x0)" ( (binary_expression "pcVar3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0001e83e;" goto statement_identifier ;)) }) (else_clause "else {\n    sVar4 = strlen(*(char **)(iVar1 + 0xc));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }\n    else {\nLAB_0001e83e:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }\n  }" else (compound_statement "{\n    sVar4 = strlen(*(char **)(iVar1 + 0xc));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }\n    else {\nLAB_0001e83e:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }\n  }" { (expression_statement "sVar4 = strlen(*(char **)(iVar1 + 0xc));" (assignment_expression "sVar4 = strlen(*(char **)(iVar1 + 0xc))" identifier = (call_expression "strlen(*(char **)(iVar1 + 0xc))" identifier (argument_list "(*(char **)(iVar1 + 0xc))" ( (pointer_expression "*(char **)(iVar1 + 0xc)" * (cast_expression "(char **)(iVar1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) )))) )))) ;) (if_statement "if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }\n    else {\nLAB_0001e83e:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }" if (parenthesized_expression "(pcVar3 == (char *)0x0)" ( (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }" { (if_statement "if (sVar4 != 0) {\n        return -1;\n      }" if (parenthesized_expression "(sVar4 != 0)" ( (binary_expression "sVar4 != 0" identifier != number_literal) )) (compound_statement "{\n        return -1;\n      }" { (return_statement "return -1;" return number_literal ;) })) }) (else_clause "else {\nLAB_0001e83e:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }" else (compound_statement "{\nLAB_0001e83e:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }" { (labeled_statement "LAB_0001e83e:\n      uVar5 = strlen(pcVar3);" statement_identifier : (expression_statement "uVar5 = strlen(pcVar3);" (assignment_expression "uVar5 = strlen(pcVar3)" identifier = (call_expression "strlen(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier )))) ;)) (if_statement "if (uVar5 != sVar4) goto LAB_0001e88e;" if (parenthesized_expression "(uVar5 != sVar4)" ( (binary_expression "uVar5 != sVar4" identifier != identifier) )) (goto_statement "goto LAB_0001e88e;" goto statement_identifier ;)) }))) }))) (expression_statement "pcVar3 = *(char **)(iVar2 + 0x14);" (assignment_expression "pcVar3 = *(char **)(iVar2 + 0x14)" identifier = (pointer_expression "*(char **)(iVar2 + 0x14)" * (cast_expression "(char **)(iVar2 + 0x14)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 0x14)" ( (binary_expression "iVar2 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (*(char **)(iVar1 + 0x14) == (char *)0x0) {\n    sVar4 = 0;\n    if (pcVar3 != (char *)0x0) goto LAB_0001e876;\n  }\n  else {\n    sVar4 = strlen(*(char **)(iVar1 + 0x14));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }\n    else {\nLAB_0001e876:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }\n  }" if (parenthesized_expression "(*(char **)(iVar1 + 0x14) == (char *)0x0)" ( (binary_expression "*(char **)(iVar1 + 0x14) == (char *)0x0" (pointer_expression "*(char **)(iVar1 + 0x14)" * (cast_expression "(char **)(iVar1 + 0x14)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 0x14)" ( (binary_expression "iVar1 + 0x14" identifier + number_literal) )))) == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    sVar4 = 0;\n    if (pcVar3 != (char *)0x0) goto LAB_0001e876;\n  }" { (expression_statement "sVar4 = 0;" (assignment_expression "sVar4 = 0" identifier = number_literal) ;) (if_statement "if (pcVar3 != (char *)0x0) goto LAB_0001e876;" if (parenthesized_expression "(pcVar3 != (char *)0x0)" ( (binary_expression "pcVar3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0001e876;" goto statement_identifier ;)) }) (else_clause "else {\n    sVar4 = strlen(*(char **)(iVar1 + 0x14));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }\n    else {\nLAB_0001e876:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }\n  }" else (compound_statement "{\n    sVar4 = strlen(*(char **)(iVar1 + 0x14));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }\n    else {\nLAB_0001e876:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }\n  }" { (expression_statement "sVar4 = strlen(*(char **)(iVar1 + 0x14));" (assignment_expression "sVar4 = strlen(*(char **)(iVar1 + 0x14))" identifier = (call_expression "strlen(*(char **)(iVar1 + 0x14))" identifier (argument_list "(*(char **)(iVar1 + 0x14))" ( (pointer_expression "*(char **)(iVar1 + 0x14)" * (cast_expression "(char **)(iVar1 + 0x14)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 0x14)" ( (binary_expression "iVar1 + 0x14" identifier + number_literal) )))) )))) ;) (if_statement "if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }\n    else {\nLAB_0001e876:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }" if (parenthesized_expression "(pcVar3 == (char *)0x0)" ( (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }" { (if_statement "if (sVar4 != 0) {\n        return -1;\n      }" if (parenthesized_expression "(sVar4 != 0)" ( (binary_expression "sVar4 != 0" identifier != number_literal) )) (compound_statement "{\n        return -1;\n      }" { (return_statement "return -1;" return number_literal ;) })) }) (else_clause "else {\nLAB_0001e876:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }" else (compound_statement "{\nLAB_0001e876:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }" { (labeled_statement "LAB_0001e876:\n      uVar5 = strlen(pcVar3);" statement_identifier : (expression_statement "uVar5 = strlen(pcVar3);" (assignment_expression "uVar5 = strlen(pcVar3)" identifier = (call_expression "strlen(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier )))) ;)) (if_statement "if (uVar5 != sVar4) goto LAB_0001e88e;" if (parenthesized_expression "(uVar5 != sVar4)" ( (binary_expression "uVar5 != sVar4" identifier != identifier) )) (goto_statement "goto LAB_0001e88e;" goto statement_identifier ;)) }))) }))) (expression_statement "pcVar3 = *(char **)(iVar2 + 4);" (assignment_expression "pcVar3 = *(char **)(iVar2 + 4)" identifier = (pointer_expression "*(char **)(iVar2 + 4)" * (cast_expression "(char **)(iVar2 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 4)" ( (binary_expression "iVar2 + 4" identifier + number_literal) ))))) ;) (if_statement "if (*(char **)(iVar1 + 4) == (char *)0x0) {\n    sVar4 = 0;\n    if (pcVar3 == (char *)0x0) goto LAB_0001e904;\n  }\n  else {\n    sVar4 = strlen(*(char **)(iVar1 + 4));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n      goto LAB_0001e904;\n    }\n  }" if (parenthesized_expression "(*(char **)(iVar1 + 4) == (char *)0x0)" ( (binary_expression "*(char **)(iVar1 + 4) == (char *)0x0" (pointer_expression "*(char **)(iVar1 + 4)" * (cast_expression "(char **)(iVar1 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) )))) == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    sVar4 = 0;\n    if (pcVar3 == (char *)0x0) goto LAB_0001e904;\n  }" { (expression_statement "sVar4 = 0;" (assignment_expression "sVar4 = 0" identifier = number_literal) ;) (if_statement "if (pcVar3 == (char *)0x0) goto LAB_0001e904;" if (parenthesized_expression "(pcVar3 == (char *)0x0)" ( (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0001e904;" goto statement_identifier ;)) }) (else_clause "else {\n    sVar4 = strlen(*(char **)(iVar1 + 4));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n      goto LAB_0001e904;\n    }\n  }" else (compound_statement "{\n    sVar4 = strlen(*(char **)(iVar1 + 4));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n      goto LAB_0001e904;\n    }\n  }" { (expression_statement "sVar4 = strlen(*(char **)(iVar1 + 4));" (assignment_expression "sVar4 = strlen(*(char **)(iVar1 + 4))" identifier = (call_expression "strlen(*(char **)(iVar1 + 4))" identifier (argument_list "(*(char **)(iVar1 + 4))" ( (pointer_expression "*(char **)(iVar1 + 4)" * (cast_expression "(char **)(iVar1 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) )))) )))) ;) (if_statement "if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n      goto LAB_0001e904;\n    }" if (parenthesized_expression "(pcVar3 == (char *)0x0)" ( (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if (sVar4 != 0) {\n        return -1;\n      }\n      goto LAB_0001e904;\n    }" { (if_statement "if (sVar4 != 0) {\n        return -1;\n      }" if (parenthesized_expression "(sVar4 != 0)" ( (binary_expression "sVar4 != 0" identifier != number_literal) )) (compound_statement "{\n        return -1;\n      }" { (return_statement "return -1;" return number_literal ;) })) (goto_statement "goto LAB_0001e904;" goto statement_identifier ;) })) }))) (expression_statement "uVar5 = strlen(pcVar3);" (assignment_expression "uVar5 = strlen(pcVar3)" identifier = (call_expression "strlen(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier )))) ;) (if_statement "if (uVar5 != sVar4) {\nLAB_0001e88e:\n    return (-(uint)(sVar4 < uVar5) & 2) - 1;\n  }" if (parenthesized_expression "(uVar5 != sVar4)" ( (binary_expression "uVar5 != sVar4" identifier != identifier) )) (compound_statement "{\nLAB_0001e88e:\n    return (-(uint)(sVar4 < uVar5) & 2) - 1;\n  }" { (labeled_statement "LAB_0001e88e:\n    return (-(uint)(sVar4 < uVar5) & 2) - 1;" statement_identifier : (return_statement "return (-(uint)(sVar4 < uVar5) & 2) - 1;" return (binary_expression "(-(uint)(sVar4 < uVar5) & 2) - 1" (parenthesized_expression "(-(uint)(sVar4 < uVar5) & 2)" ( (binary_expression "-(uint)(sVar4 < uVar5) & 2" (unary_expression "-(uint)(sVar4 < uVar5)" - (call_expression "(uint)(sVar4 < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(sVar4 < uVar5)" ( (binary_expression "sVar4 < uVar5" identifier < identifier) )))) & number_literal) )) - number_literal) ;)) })) (labeled_statement "LAB_0001e904:\n  return (uint)(*(int *)(iVar1 + 0x34) < *(int *)(iVar2 + 0x34)) * 2 + -1;" statement_identifier : (return_statement "return (uint)(*(int *)(iVar1 + 0x34) < *(int *)(iVar2 + 0x34)) * 2 + -1;" return (binary_expression "(uint)(*(int *)(iVar1 + 0x34) < *(int *)(iVar2 + 0x34)) * 2 + -1" (binary_expression "(uint)(*(int *)(iVar1 + 0x34) < *(int *)(iVar2 + 0x34)) * 2" (call_expression "(uint)(*(int *)(iVar1 + 0x34) < *(int *)(iVar2 + 0x34))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)(iVar1 + 0x34) < *(int *)(iVar2 + 0x34))" ( (binary_expression "*(int *)(iVar1 + 0x34) < *(int *)(iVar2 + 0x34)" (pointer_expression "*(int *)(iVar1 + 0x34)" * (cast_expression "(int *)(iVar1 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x34)" ( (binary_expression "iVar1 + 0x34" identifier + number_literal) )))) < (pointer_expression "*(int *)(iVar2 + 0x34)" * (cast_expression "(int *)(iVar2 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x34)" ( (binary_expression "iVar2 + 0x34" identifier + number_literal) ))))) ))) * number_literal) + number_literal) ;)) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Unknown calling convention */\n\nint cookie_sort(void *p1,void *p2)\n\n{\n  int iVar1;\n  int iVar2;\n  char *pcVar3;\n  size_t sVar4;\n  uint uVar5;\n  \n                    /* WARNING: Load size is inaccurate */\n  iVar1 = *p1;\n                    /* WARNING: Load size is inaccurate */\n  iVar2 = *p2;\n  pcVar3 = *(char **)(iVar2 + 0xc);\n  if (*(char **)(iVar1 + 0xc) == (char *)0x0) {\n    sVar4 = 0;\n    if (pcVar3 != (char *)0x0) goto LAB_0001e83e;\n  }\n  else {\n    sVar4 = strlen(*(char **)(iVar1 + 0xc));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }\n    else {\nLAB_0001e83e:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }\n  }\n  pcVar3 = *(char **)(iVar2 + 0x14);\n  if (*(char **)(iVar1 + 0x14) == (char *)0x0) {\n    sVar4 = 0;\n    if (pcVar3 != (char *)0x0) goto LAB_0001e876;\n  }\n  else {\n    sVar4 = strlen(*(char **)(iVar1 + 0x14));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }\n    else {\nLAB_0001e876:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }\n  }\n  pcVar3 = *(char **)(iVar2 + 4);\n  if (*(char **)(iVar1 + 4) == (char *)0x0) {\n    sVar4 = 0;\n    if (pcVar3 == (char *)0x0) goto LAB_0001e904;\n  }\n  else {\n    sVar4 = strlen(*(char **)(iVar1 + 4));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n      goto LAB_0001e904;\n    }\n  }\n  uVar5 = strlen(pcVar3);\n  if (uVar5 != sVar4) {\nLAB_0001e88e:\n    return (-(uint)(sVar4 < uVar5) & 2) - 1;\n  }\nLAB_0001e904:\n  return (uint)(*(int *)(iVar1 + 0x34) < *(int *)(iVar2 + 0x34)) * 2 + -1;\n}\n\n" comment comment (function_definition "int cookie_sort(void *p1,void *p2)\n\n{\n  int iVar1;\n  int iVar2;\n  char *pcVar3;\n  size_t sVar4;\n  uint uVar5;\n  \n                    /* WARNING: Load size is inaccurate */\n  iVar1 = *p1;\n                    /* WARNING: Load size is inaccurate */\n  iVar2 = *p2;\n  pcVar3 = *(char **)(iVar2 + 0xc);\n  if (*(char **)(iVar1 + 0xc) == (char *)0x0) {\n    sVar4 = 0;\n    if (pcVar3 != (char *)0x0) goto LAB_0001e83e;\n  }\n  else {\n    sVar4 = strlen(*(char **)(iVar1 + 0xc));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }\n    else {\nLAB_0001e83e:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }\n  }\n  pcVar3 = *(char **)(iVar2 + 0x14);\n  if (*(char **)(iVar1 + 0x14) == (char *)0x0) {\n    sVar4 = 0;\n    if (pcVar3 != (char *)0x0) goto LAB_0001e876;\n  }\n  else {\n    sVar4 = strlen(*(char **)(iVar1 + 0x14));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }\n    else {\nLAB_0001e876:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }\n  }\n  pcVar3 = *(char **)(iVar2 + 4);\n  if (*(char **)(iVar1 + 4) == (char *)0x0) {\n    sVar4 = 0;\n    if (pcVar3 == (char *)0x0) goto LAB_0001e904;\n  }\n  else {\n    sVar4 = strlen(*(char **)(iVar1 + 4));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n      goto LAB_0001e904;\n    }\n  }\n  uVar5 = strlen(pcVar3);\n  if (uVar5 != sVar4) {\nLAB_0001e88e:\n    return (-(uint)(sVar4 < uVar5) & 2) - 1;\n  }\nLAB_0001e904:\n  return (uint)(*(int *)(iVar1 + 0x34) < *(int *)(iVar2 + 0x34)) * 2 + -1;\n}" primitive_type (function_declarator "cookie_sort(void *p1,void *p2)" identifier (parameter_list "(void *p1,void *p2)" ( (parameter_declaration "void *p1" primitive_type (pointer_declarator "*p1" * identifier)) , (parameter_declaration "void *p2" primitive_type (pointer_declarator "*p2" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  char *pcVar3;\n  size_t sVar4;\n  uint uVar5;\n  \n                    /* WARNING: Load size is inaccurate */\n  iVar1 = *p1;\n                    /* WARNING: Load size is inaccurate */\n  iVar2 = *p2;\n  pcVar3 = *(char **)(iVar2 + 0xc);\n  if (*(char **)(iVar1 + 0xc) == (char *)0x0) {\n    sVar4 = 0;\n    if (pcVar3 != (char *)0x0) goto LAB_0001e83e;\n  }\n  else {\n    sVar4 = strlen(*(char **)(iVar1 + 0xc));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }\n    else {\nLAB_0001e83e:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }\n  }\n  pcVar3 = *(char **)(iVar2 + 0x14);\n  if (*(char **)(iVar1 + 0x14) == (char *)0x0) {\n    sVar4 = 0;\n    if (pcVar3 != (char *)0x0) goto LAB_0001e876;\n  }\n  else {\n    sVar4 = strlen(*(char **)(iVar1 + 0x14));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }\n    else {\nLAB_0001e876:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }\n  }\n  pcVar3 = *(char **)(iVar2 + 4);\n  if (*(char **)(iVar1 + 4) == (char *)0x0) {\n    sVar4 = 0;\n    if (pcVar3 == (char *)0x0) goto LAB_0001e904;\n  }\n  else {\n    sVar4 = strlen(*(char **)(iVar1 + 4));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n      goto LAB_0001e904;\n    }\n  }\n  uVar5 = strlen(pcVar3);\n  if (uVar5 != sVar4) {\nLAB_0001e88e:\n    return (-(uint)(sVar4 < uVar5) & 2) - 1;\n  }\nLAB_0001e904:\n  return (uint)(*(int *)(iVar1 + 0x34) < *(int *)(iVar2 + 0x34)) * 2 + -1;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) comment (expression_statement "iVar1 = *p1;" (assignment_expression "iVar1 = *p1" identifier = (pointer_expression "*p1" * identifier)) ;) comment (expression_statement "iVar2 = *p2;" (assignment_expression "iVar2 = *p2" identifier = (pointer_expression "*p2" * identifier)) ;) (expression_statement "pcVar3 = *(char **)(iVar2 + 0xc);" (assignment_expression "pcVar3 = *(char **)(iVar2 + 0xc)" identifier = (pointer_expression "*(char **)(iVar2 + 0xc)" * (cast_expression "(char **)(iVar2 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (*(char **)(iVar1 + 0xc) == (char *)0x0) {\n    sVar4 = 0;\n    if (pcVar3 != (char *)0x0) goto LAB_0001e83e;\n  }\n  else {\n    sVar4 = strlen(*(char **)(iVar1 + 0xc));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }\n    else {\nLAB_0001e83e:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }\n  }" if (parenthesized_expression "(*(char **)(iVar1 + 0xc) == (char *)0x0)" ( (binary_expression "*(char **)(iVar1 + 0xc) == (char *)0x0" (pointer_expression "*(char **)(iVar1 + 0xc)" * (cast_expression "(char **)(iVar1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) )))) == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    sVar4 = 0;\n    if (pcVar3 != (char *)0x0) goto LAB_0001e83e;\n  }" { (expression_statement "sVar4 = 0;" (assignment_expression "sVar4 = 0" identifier = number_literal) ;) (if_statement "if (pcVar3 != (char *)0x0) goto LAB_0001e83e;" if (parenthesized_expression "(pcVar3 != (char *)0x0)" ( (binary_expression "pcVar3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0001e83e;" goto statement_identifier ;)) }) (else_clause "else {\n    sVar4 = strlen(*(char **)(iVar1 + 0xc));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }\n    else {\nLAB_0001e83e:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }\n  }" else (compound_statement "{\n    sVar4 = strlen(*(char **)(iVar1 + 0xc));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }\n    else {\nLAB_0001e83e:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }\n  }" { (expression_statement "sVar4 = strlen(*(char **)(iVar1 + 0xc));" (assignment_expression "sVar4 = strlen(*(char **)(iVar1 + 0xc))" identifier = (call_expression "strlen(*(char **)(iVar1 + 0xc))" identifier (argument_list "(*(char **)(iVar1 + 0xc))" ( (pointer_expression "*(char **)(iVar1 + 0xc)" * (cast_expression "(char **)(iVar1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) )))) )))) ;) (if_statement "if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }\n    else {\nLAB_0001e83e:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }" if (parenthesized_expression "(pcVar3 == (char *)0x0)" ( (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }" { (if_statement "if (sVar4 != 0) {\n        return -1;\n      }" if (parenthesized_expression "(sVar4 != 0)" ( (binary_expression "sVar4 != 0" identifier != number_literal) )) (compound_statement "{\n        return -1;\n      }" { (return_statement "return -1;" return number_literal ;) })) }) (else_clause "else {\nLAB_0001e83e:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }" else (compound_statement "{\nLAB_0001e83e:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }" { (labeled_statement "LAB_0001e83e:\n      uVar5 = strlen(pcVar3);" statement_identifier : (expression_statement "uVar5 = strlen(pcVar3);" (assignment_expression "uVar5 = strlen(pcVar3)" identifier = (call_expression "strlen(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier )))) ;)) (if_statement "if (uVar5 != sVar4) goto LAB_0001e88e;" if (parenthesized_expression "(uVar5 != sVar4)" ( (binary_expression "uVar5 != sVar4" identifier != identifier) )) (goto_statement "goto LAB_0001e88e;" goto statement_identifier ;)) }))) }))) (expression_statement "pcVar3 = *(char **)(iVar2 + 0x14);" (assignment_expression "pcVar3 = *(char **)(iVar2 + 0x14)" identifier = (pointer_expression "*(char **)(iVar2 + 0x14)" * (cast_expression "(char **)(iVar2 + 0x14)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 0x14)" ( (binary_expression "iVar2 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (*(char **)(iVar1 + 0x14) == (char *)0x0) {\n    sVar4 = 0;\n    if (pcVar3 != (char *)0x0) goto LAB_0001e876;\n  }\n  else {\n    sVar4 = strlen(*(char **)(iVar1 + 0x14));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }\n    else {\nLAB_0001e876:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }\n  }" if (parenthesized_expression "(*(char **)(iVar1 + 0x14) == (char *)0x0)" ( (binary_expression "*(char **)(iVar1 + 0x14) == (char *)0x0" (pointer_expression "*(char **)(iVar1 + 0x14)" * (cast_expression "(char **)(iVar1 + 0x14)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 0x14)" ( (binary_expression "iVar1 + 0x14" identifier + number_literal) )))) == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    sVar4 = 0;\n    if (pcVar3 != (char *)0x0) goto LAB_0001e876;\n  }" { (expression_statement "sVar4 = 0;" (assignment_expression "sVar4 = 0" identifier = number_literal) ;) (if_statement "if (pcVar3 != (char *)0x0) goto LAB_0001e876;" if (parenthesized_expression "(pcVar3 != (char *)0x0)" ( (binary_expression "pcVar3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0001e876;" goto statement_identifier ;)) }) (else_clause "else {\n    sVar4 = strlen(*(char **)(iVar1 + 0x14));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }\n    else {\nLAB_0001e876:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }\n  }" else (compound_statement "{\n    sVar4 = strlen(*(char **)(iVar1 + 0x14));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }\n    else {\nLAB_0001e876:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }\n  }" { (expression_statement "sVar4 = strlen(*(char **)(iVar1 + 0x14));" (assignment_expression "sVar4 = strlen(*(char **)(iVar1 + 0x14))" identifier = (call_expression "strlen(*(char **)(iVar1 + 0x14))" identifier (argument_list "(*(char **)(iVar1 + 0x14))" ( (pointer_expression "*(char **)(iVar1 + 0x14)" * (cast_expression "(char **)(iVar1 + 0x14)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 0x14)" ( (binary_expression "iVar1 + 0x14" identifier + number_literal) )))) )))) ;) (if_statement "if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }\n    else {\nLAB_0001e876:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }" if (parenthesized_expression "(pcVar3 == (char *)0x0)" ( (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }" { (if_statement "if (sVar4 != 0) {\n        return -1;\n      }" if (parenthesized_expression "(sVar4 != 0)" ( (binary_expression "sVar4 != 0" identifier != number_literal) )) (compound_statement "{\n        return -1;\n      }" { (return_statement "return -1;" return number_literal ;) })) }) (else_clause "else {\nLAB_0001e876:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }" else (compound_statement "{\nLAB_0001e876:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }" { (labeled_statement "LAB_0001e876:\n      uVar5 = strlen(pcVar3);" statement_identifier : (expression_statement "uVar5 = strlen(pcVar3);" (assignment_expression "uVar5 = strlen(pcVar3)" identifier = (call_expression "strlen(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier )))) ;)) (if_statement "if (uVar5 != sVar4) goto LAB_0001e88e;" if (parenthesized_expression "(uVar5 != sVar4)" ( (binary_expression "uVar5 != sVar4" identifier != identifier) )) (goto_statement "goto LAB_0001e88e;" goto statement_identifier ;)) }))) }))) (expression_statement "pcVar3 = *(char **)(iVar2 + 4);" (assignment_expression "pcVar3 = *(char **)(iVar2 + 4)" identifier = (pointer_expression "*(char **)(iVar2 + 4)" * (cast_expression "(char **)(iVar2 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 4)" ( (binary_expression "iVar2 + 4" identifier + number_literal) ))))) ;) (if_statement "if (*(char **)(iVar1 + 4) == (char *)0x0) {\n    sVar4 = 0;\n    if (pcVar3 == (char *)0x0) goto LAB_0001e904;\n  }\n  else {\n    sVar4 = strlen(*(char **)(iVar1 + 4));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n      goto LAB_0001e904;\n    }\n  }" if (parenthesized_expression "(*(char **)(iVar1 + 4) == (char *)0x0)" ( (binary_expression "*(char **)(iVar1 + 4) == (char *)0x0" (pointer_expression "*(char **)(iVar1 + 4)" * (cast_expression "(char **)(iVar1 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) )))) == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    sVar4 = 0;\n    if (pcVar3 == (char *)0x0) goto LAB_0001e904;\n  }" { (expression_statement "sVar4 = 0;" (assignment_expression "sVar4 = 0" identifier = number_literal) ;) (if_statement "if (pcVar3 == (char *)0x0) goto LAB_0001e904;" if (parenthesized_expression "(pcVar3 == (char *)0x0)" ( (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0001e904;" goto statement_identifier ;)) }) (else_clause "else {\n    sVar4 = strlen(*(char **)(iVar1 + 4));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n      goto LAB_0001e904;\n    }\n  }" else (compound_statement "{\n    sVar4 = strlen(*(char **)(iVar1 + 4));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n      goto LAB_0001e904;\n    }\n  }" { (expression_statement "sVar4 = strlen(*(char **)(iVar1 + 4));" (assignment_expression "sVar4 = strlen(*(char **)(iVar1 + 4))" identifier = (call_expression "strlen(*(char **)(iVar1 + 4))" identifier (argument_list "(*(char **)(iVar1 + 4))" ( (pointer_expression "*(char **)(iVar1 + 4)" * (cast_expression "(char **)(iVar1 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) )))) )))) ;) (if_statement "if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n      goto LAB_0001e904;\n    }" if (parenthesized_expression "(pcVar3 == (char *)0x0)" ( (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if (sVar4 != 0) {\n        return -1;\n      }\n      goto LAB_0001e904;\n    }" { (if_statement "if (sVar4 != 0) {\n        return -1;\n      }" if (parenthesized_expression "(sVar4 != 0)" ( (binary_expression "sVar4 != 0" identifier != number_literal) )) (compound_statement "{\n        return -1;\n      }" { (return_statement "return -1;" return number_literal ;) })) (goto_statement "goto LAB_0001e904;" goto statement_identifier ;) })) }))) (expression_statement "uVar5 = strlen(pcVar3);" (assignment_expression "uVar5 = strlen(pcVar3)" identifier = (call_expression "strlen(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier )))) ;) (if_statement "if (uVar5 != sVar4) {\nLAB_0001e88e:\n    return (-(uint)(sVar4 < uVar5) & 2) - 1;\n  }" if (parenthesized_expression "(uVar5 != sVar4)" ( (binary_expression "uVar5 != sVar4" identifier != identifier) )) (compound_statement "{\nLAB_0001e88e:\n    return (-(uint)(sVar4 < uVar5) & 2) - 1;\n  }" { (labeled_statement "LAB_0001e88e:\n    return (-(uint)(sVar4 < uVar5) & 2) - 1;" statement_identifier : (return_statement "return (-(uint)(sVar4 < uVar5) & 2) - 1;" return (binary_expression "(-(uint)(sVar4 < uVar5) & 2) - 1" (parenthesized_expression "(-(uint)(sVar4 < uVar5) & 2)" ( (binary_expression "-(uint)(sVar4 < uVar5) & 2" (unary_expression "-(uint)(sVar4 < uVar5)" - (call_expression "(uint)(sVar4 < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(sVar4 < uVar5)" ( (binary_expression "sVar4 < uVar5" identifier < identifier) )))) & number_literal) )) - number_literal) ;)) })) (labeled_statement "LAB_0001e904:\n  return (uint)(*(int *)(iVar1 + 0x34) < *(int *)(iVar2 + 0x34)) * 2 + -1;" statement_identifier : (return_statement "return (uint)(*(int *)(iVar1 + 0x34) < *(int *)(iVar2 + 0x34)) * 2 + -1;" return (binary_expression "(uint)(*(int *)(iVar1 + 0x34) < *(int *)(iVar2 + 0x34)) * 2 + -1" (binary_expression "(uint)(*(int *)(iVar1 + 0x34) < *(int *)(iVar2 + 0x34)) * 2" (call_expression "(uint)(*(int *)(iVar1 + 0x34) < *(int *)(iVar2 + 0x34))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)(iVar1 + 0x34) < *(int *)(iVar2 + 0x34))" ( (binary_expression "*(int *)(iVar1 + 0x34) < *(int *)(iVar2 + 0x34)" (pointer_expression "*(int *)(iVar1 + 0x34)" * (cast_expression "(int *)(iVar1 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x34)" ( (binary_expression "iVar1 + 0x34" identifier + number_literal) )))) < (pointer_expression "*(int *)(iVar2 + 0x34)" * (cast_expression "(int *)(iVar2 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x34)" ( (binary_expression "iVar2 + 0x34" identifier + number_literal) ))))) ))) * number_literal) + number_literal) ;)) })))
(translation_unit "int __regparm2 FUN_0001e800(undefined4 param_1,undefined4 param_2,int *param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  char *pcVar3;\n  size_t sVar4;\n  uint uVar5;\n  int *unaff_retaddr;\n  \n  entry(param_2,0x1e809);\n  iVar1 = *unaff_retaddr;\n  iVar2 = *param_3;\n  pcVar3 = *(char **)(iVar2 + 0xc);\n  if (*(char **)(iVar1 + 0xc) == (char *)0x0) {\n    sVar4 = 0;\n    if (pcVar3 != (char *)0x0) goto LAB_0001e83e;\n  }\n  else {\n    sVar4 = strlen(*(char **)(iVar1 + 0xc));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }\n    else {\nLAB_0001e83e:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }\n  }\n  pcVar3 = *(char **)(iVar2 + 0x14);\n  if (*(char **)(iVar1 + 0x14) == (char *)0x0) {\n    sVar4 = 0;\n    if (pcVar3 != (char *)0x0) goto LAB_0001e876;\n  }\n  else {\n    sVar4 = strlen(*(char **)(iVar1 + 0x14));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }\n    else {\nLAB_0001e876:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }\n  }\n  pcVar3 = *(char **)(iVar2 + 4);\n  if (*(char **)(iVar1 + 4) == (char *)0x0) {\n    sVar4 = 0;\n    if (pcVar3 == (char *)0x0) goto LAB_0001e904;\n  }\n  else {\n    sVar4 = strlen(*(char **)(iVar1 + 4));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n      goto LAB_0001e904;\n    }\n  }\n  uVar5 = strlen(pcVar3);\n  if (uVar5 != sVar4) {\nLAB_0001e88e:\n    return (-(uint)(sVar4 < uVar5) & 2) - 1;\n  }\nLAB_0001e904:\n  return (uint)(*(int *)(iVar1 + 0x34) < *(int *)(iVar2 + 0x34)) * 2 + -1;\n}\n\n" (function_definition "int __regparm2 FUN_0001e800(undefined4 param_1,undefined4 param_2,int *param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  char *pcVar3;\n  size_t sVar4;\n  uint uVar5;\n  int *unaff_retaddr;\n  \n  entry(param_2,0x1e809);\n  iVar1 = *unaff_retaddr;\n  iVar2 = *param_3;\n  pcVar3 = *(char **)(iVar2 + 0xc);\n  if (*(char **)(iVar1 + 0xc) == (char *)0x0) {\n    sVar4 = 0;\n    if (pcVar3 != (char *)0x0) goto LAB_0001e83e;\n  }\n  else {\n    sVar4 = strlen(*(char **)(iVar1 + 0xc));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }\n    else {\nLAB_0001e83e:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }\n  }\n  pcVar3 = *(char **)(iVar2 + 0x14);\n  if (*(char **)(iVar1 + 0x14) == (char *)0x0) {\n    sVar4 = 0;\n    if (pcVar3 != (char *)0x0) goto LAB_0001e876;\n  }\n  else {\n    sVar4 = strlen(*(char **)(iVar1 + 0x14));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }\n    else {\nLAB_0001e876:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }\n  }\n  pcVar3 = *(char **)(iVar2 + 4);\n  if (*(char **)(iVar1 + 4) == (char *)0x0) {\n    sVar4 = 0;\n    if (pcVar3 == (char *)0x0) goto LAB_0001e904;\n  }\n  else {\n    sVar4 = strlen(*(char **)(iVar1 + 4));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n      goto LAB_0001e904;\n    }\n  }\n  uVar5 = strlen(pcVar3);\n  if (uVar5 != sVar4) {\nLAB_0001e88e:\n    return (-(uint)(sVar4 < uVar5) & 2) - 1;\n  }\nLAB_0001e904:\n  return (uint)(*(int *)(iVar1 + 0x34) < *(int *)(iVar2 + 0x34)) * 2 + -1;\n}" primitive_type (ERROR "__regparm2" identifier) (function_declarator "FUN_0001e800(undefined4 param_1,undefined4 param_2,int *param_3)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2,int *param_3)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  char *pcVar3;\n  size_t sVar4;\n  uint uVar5;\n  int *unaff_retaddr;\n  \n  entry(param_2,0x1e809);\n  iVar1 = *unaff_retaddr;\n  iVar2 = *param_3;\n  pcVar3 = *(char **)(iVar2 + 0xc);\n  if (*(char **)(iVar1 + 0xc) == (char *)0x0) {\n    sVar4 = 0;\n    if (pcVar3 != (char *)0x0) goto LAB_0001e83e;\n  }\n  else {\n    sVar4 = strlen(*(char **)(iVar1 + 0xc));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }\n    else {\nLAB_0001e83e:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }\n  }\n  pcVar3 = *(char **)(iVar2 + 0x14);\n  if (*(char **)(iVar1 + 0x14) == (char *)0x0) {\n    sVar4 = 0;\n    if (pcVar3 != (char *)0x0) goto LAB_0001e876;\n  }\n  else {\n    sVar4 = strlen(*(char **)(iVar1 + 0x14));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }\n    else {\nLAB_0001e876:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }\n  }\n  pcVar3 = *(char **)(iVar2 + 4);\n  if (*(char **)(iVar1 + 4) == (char *)0x0) {\n    sVar4 = 0;\n    if (pcVar3 == (char *)0x0) goto LAB_0001e904;\n  }\n  else {\n    sVar4 = strlen(*(char **)(iVar1 + 4));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n      goto LAB_0001e904;\n    }\n  }\n  uVar5 = strlen(pcVar3);\n  if (uVar5 != sVar4) {\nLAB_0001e88e:\n    return (-(uint)(sVar4 < uVar5) & 2) - 1;\n  }\nLAB_0001e904:\n  return (uint)(*(int *)(iVar1 + 0x34) < *(int *)(iVar2 + 0x34)) * 2 + -1;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "int *unaff_retaddr;" primitive_type (pointer_declarator "*unaff_retaddr" * identifier) ;) (expression_statement "entry(param_2,0x1e809);" (call_expression "entry(param_2,0x1e809)" identifier (argument_list "(param_2,0x1e809)" ( identifier , number_literal ))) ;) (expression_statement "iVar1 = *unaff_retaddr;" (assignment_expression "iVar1 = *unaff_retaddr" identifier = (pointer_expression "*unaff_retaddr" * identifier)) ;) (expression_statement "iVar2 = *param_3;" (assignment_expression "iVar2 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "pcVar3 = *(char **)(iVar2 + 0xc);" (assignment_expression "pcVar3 = *(char **)(iVar2 + 0xc)" identifier = (pointer_expression "*(char **)(iVar2 + 0xc)" * (cast_expression "(char **)(iVar2 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (*(char **)(iVar1 + 0xc) == (char *)0x0) {\n    sVar4 = 0;\n    if (pcVar3 != (char *)0x0) goto LAB_0001e83e;\n  }\n  else {\n    sVar4 = strlen(*(char **)(iVar1 + 0xc));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }\n    else {\nLAB_0001e83e:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }\n  }" if (parenthesized_expression "(*(char **)(iVar1 + 0xc) == (char *)0x0)" ( (binary_expression "*(char **)(iVar1 + 0xc) == (char *)0x0" (pointer_expression "*(char **)(iVar1 + 0xc)" * (cast_expression "(char **)(iVar1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) )))) == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    sVar4 = 0;\n    if (pcVar3 != (char *)0x0) goto LAB_0001e83e;\n  }" { (expression_statement "sVar4 = 0;" (assignment_expression "sVar4 = 0" identifier = number_literal) ;) (if_statement "if (pcVar3 != (char *)0x0) goto LAB_0001e83e;" if (parenthesized_expression "(pcVar3 != (char *)0x0)" ( (binary_expression "pcVar3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0001e83e;" goto statement_identifier ;)) }) (else_clause "else {\n    sVar4 = strlen(*(char **)(iVar1 + 0xc));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }\n    else {\nLAB_0001e83e:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }\n  }" else (compound_statement "{\n    sVar4 = strlen(*(char **)(iVar1 + 0xc));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }\n    else {\nLAB_0001e83e:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }\n  }" { (expression_statement "sVar4 = strlen(*(char **)(iVar1 + 0xc));" (assignment_expression "sVar4 = strlen(*(char **)(iVar1 + 0xc))" identifier = (call_expression "strlen(*(char **)(iVar1 + 0xc))" identifier (argument_list "(*(char **)(iVar1 + 0xc))" ( (pointer_expression "*(char **)(iVar1 + 0xc)" * (cast_expression "(char **)(iVar1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) )))) )))) ;) (if_statement "if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }\n    else {\nLAB_0001e83e:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }" if (parenthesized_expression "(pcVar3 == (char *)0x0)" ( (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }" { (if_statement "if (sVar4 != 0) {\n        return -1;\n      }" if (parenthesized_expression "(sVar4 != 0)" ( (binary_expression "sVar4 != 0" identifier != number_literal) )) (compound_statement "{\n        return -1;\n      }" { (return_statement "return -1;" return number_literal ;) })) }) (else_clause "else {\nLAB_0001e83e:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }" else (compound_statement "{\nLAB_0001e83e:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }" { (labeled_statement "LAB_0001e83e:\n      uVar5 = strlen(pcVar3);" statement_identifier : (expression_statement "uVar5 = strlen(pcVar3);" (assignment_expression "uVar5 = strlen(pcVar3)" identifier = (call_expression "strlen(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier )))) ;)) (if_statement "if (uVar5 != sVar4) goto LAB_0001e88e;" if (parenthesized_expression "(uVar5 != sVar4)" ( (binary_expression "uVar5 != sVar4" identifier != identifier) )) (goto_statement "goto LAB_0001e88e;" goto statement_identifier ;)) }))) }))) (expression_statement "pcVar3 = *(char **)(iVar2 + 0x14);" (assignment_expression "pcVar3 = *(char **)(iVar2 + 0x14)" identifier = (pointer_expression "*(char **)(iVar2 + 0x14)" * (cast_expression "(char **)(iVar2 + 0x14)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 0x14)" ( (binary_expression "iVar2 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (*(char **)(iVar1 + 0x14) == (char *)0x0) {\n    sVar4 = 0;\n    if (pcVar3 != (char *)0x0) goto LAB_0001e876;\n  }\n  else {\n    sVar4 = strlen(*(char **)(iVar1 + 0x14));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }\n    else {\nLAB_0001e876:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }\n  }" if (parenthesized_expression "(*(char **)(iVar1 + 0x14) == (char *)0x0)" ( (binary_expression "*(char **)(iVar1 + 0x14) == (char *)0x0" (pointer_expression "*(char **)(iVar1 + 0x14)" * (cast_expression "(char **)(iVar1 + 0x14)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 0x14)" ( (binary_expression "iVar1 + 0x14" identifier + number_literal) )))) == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    sVar4 = 0;\n    if (pcVar3 != (char *)0x0) goto LAB_0001e876;\n  }" { (expression_statement "sVar4 = 0;" (assignment_expression "sVar4 = 0" identifier = number_literal) ;) (if_statement "if (pcVar3 != (char *)0x0) goto LAB_0001e876;" if (parenthesized_expression "(pcVar3 != (char *)0x0)" ( (binary_expression "pcVar3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0001e876;" goto statement_identifier ;)) }) (else_clause "else {\n    sVar4 = strlen(*(char **)(iVar1 + 0x14));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }\n    else {\nLAB_0001e876:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }\n  }" else (compound_statement "{\n    sVar4 = strlen(*(char **)(iVar1 + 0x14));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }\n    else {\nLAB_0001e876:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }\n  }" { (expression_statement "sVar4 = strlen(*(char **)(iVar1 + 0x14));" (assignment_expression "sVar4 = strlen(*(char **)(iVar1 + 0x14))" identifier = (call_expression "strlen(*(char **)(iVar1 + 0x14))" identifier (argument_list "(*(char **)(iVar1 + 0x14))" ( (pointer_expression "*(char **)(iVar1 + 0x14)" * (cast_expression "(char **)(iVar1 + 0x14)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 0x14)" ( (binary_expression "iVar1 + 0x14" identifier + number_literal) )))) )))) ;) (if_statement "if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }\n    else {\nLAB_0001e876:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }" if (parenthesized_expression "(pcVar3 == (char *)0x0)" ( (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }" { (if_statement "if (sVar4 != 0) {\n        return -1;\n      }" if (parenthesized_expression "(sVar4 != 0)" ( (binary_expression "sVar4 != 0" identifier != number_literal) )) (compound_statement "{\n        return -1;\n      }" { (return_statement "return -1;" return number_literal ;) })) }) (else_clause "else {\nLAB_0001e876:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }" else (compound_statement "{\nLAB_0001e876:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }" { (labeled_statement "LAB_0001e876:\n      uVar5 = strlen(pcVar3);" statement_identifier : (expression_statement "uVar5 = strlen(pcVar3);" (assignment_expression "uVar5 = strlen(pcVar3)" identifier = (call_expression "strlen(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier )))) ;)) (if_statement "if (uVar5 != sVar4) goto LAB_0001e88e;" if (parenthesized_expression "(uVar5 != sVar4)" ( (binary_expression "uVar5 != sVar4" identifier != identifier) )) (goto_statement "goto LAB_0001e88e;" goto statement_identifier ;)) }))) }))) (expression_statement "pcVar3 = *(char **)(iVar2 + 4);" (assignment_expression "pcVar3 = *(char **)(iVar2 + 4)" identifier = (pointer_expression "*(char **)(iVar2 + 4)" * (cast_expression "(char **)(iVar2 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 4)" ( (binary_expression "iVar2 + 4" identifier + number_literal) ))))) ;) (if_statement "if (*(char **)(iVar1 + 4) == (char *)0x0) {\n    sVar4 = 0;\n    if (pcVar3 == (char *)0x0) goto LAB_0001e904;\n  }\n  else {\n    sVar4 = strlen(*(char **)(iVar1 + 4));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n      goto LAB_0001e904;\n    }\n  }" if (parenthesized_expression "(*(char **)(iVar1 + 4) == (char *)0x0)" ( (binary_expression "*(char **)(iVar1 + 4) == (char *)0x0" (pointer_expression "*(char **)(iVar1 + 4)" * (cast_expression "(char **)(iVar1 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) )))) == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    sVar4 = 0;\n    if (pcVar3 == (char *)0x0) goto LAB_0001e904;\n  }" { (expression_statement "sVar4 = 0;" (assignment_expression "sVar4 = 0" identifier = number_literal) ;) (if_statement "if (pcVar3 == (char *)0x0) goto LAB_0001e904;" if (parenthesized_expression "(pcVar3 == (char *)0x0)" ( (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0001e904;" goto statement_identifier ;)) }) (else_clause "else {\n    sVar4 = strlen(*(char **)(iVar1 + 4));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n      goto LAB_0001e904;\n    }\n  }" else (compound_statement "{\n    sVar4 = strlen(*(char **)(iVar1 + 4));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n      goto LAB_0001e904;\n    }\n  }" { (expression_statement "sVar4 = strlen(*(char **)(iVar1 + 4));" (assignment_expression "sVar4 = strlen(*(char **)(iVar1 + 4))" identifier = (call_expression "strlen(*(char **)(iVar1 + 4))" identifier (argument_list "(*(char **)(iVar1 + 4))" ( (pointer_expression "*(char **)(iVar1 + 4)" * (cast_expression "(char **)(iVar1 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) )))) )))) ;) (if_statement "if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n      goto LAB_0001e904;\n    }" if (parenthesized_expression "(pcVar3 == (char *)0x0)" ( (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if (sVar4 != 0) {\n        return -1;\n      }\n      goto LAB_0001e904;\n    }" { (if_statement "if (sVar4 != 0) {\n        return -1;\n      }" if (parenthesized_expression "(sVar4 != 0)" ( (binary_expression "sVar4 != 0" identifier != number_literal) )) (compound_statement "{\n        return -1;\n      }" { (return_statement "return -1;" return number_literal ;) })) (goto_statement "goto LAB_0001e904;" goto statement_identifier ;) })) }))) (expression_statement "uVar5 = strlen(pcVar3);" (assignment_expression "uVar5 = strlen(pcVar3)" identifier = (call_expression "strlen(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier )))) ;) (if_statement "if (uVar5 != sVar4) {\nLAB_0001e88e:\n    return (-(uint)(sVar4 < uVar5) & 2) - 1;\n  }" if (parenthesized_expression "(uVar5 != sVar4)" ( (binary_expression "uVar5 != sVar4" identifier != identifier) )) (compound_statement "{\nLAB_0001e88e:\n    return (-(uint)(sVar4 < uVar5) & 2) - 1;\n  }" { (labeled_statement "LAB_0001e88e:\n    return (-(uint)(sVar4 < uVar5) & 2) - 1;" statement_identifier : (return_statement "return (-(uint)(sVar4 < uVar5) & 2) - 1;" return (binary_expression "(-(uint)(sVar4 < uVar5) & 2) - 1" (parenthesized_expression "(-(uint)(sVar4 < uVar5) & 2)" ( (binary_expression "-(uint)(sVar4 < uVar5) & 2" (unary_expression "-(uint)(sVar4 < uVar5)" - (call_expression "(uint)(sVar4 < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(sVar4 < uVar5)" ( (binary_expression "sVar4 < uVar5" identifier < identifier) )))) & number_literal) )) - number_literal) ;)) })) (labeled_statement "LAB_0001e904:\n  return (uint)(*(int *)(iVar1 + 0x34) < *(int *)(iVar2 + 0x34)) * 2 + -1;" statement_identifier : (return_statement "return (uint)(*(int *)(iVar1 + 0x34) < *(int *)(iVar2 + 0x34)) * 2 + -1;" return (binary_expression "(uint)(*(int *)(iVar1 + 0x34) < *(int *)(iVar2 + 0x34)) * 2 + -1" (binary_expression "(uint)(*(int *)(iVar1 + 0x34) < *(int *)(iVar2 + 0x34)) * 2" (call_expression "(uint)(*(int *)(iVar1 + 0x34) < *(int *)(iVar2 + 0x34))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)(iVar1 + 0x34) < *(int *)(iVar2 + 0x34))" ( (binary_expression "*(int *)(iVar1 + 0x34) < *(int *)(iVar2 + 0x34)" (pointer_expression "*(int *)(iVar1 + 0x34)" * (cast_expression "(int *)(iVar1 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x34)" ( (binary_expression "iVar1 + 0x34" identifier + number_literal) )))) < (pointer_expression "*(int *)(iVar2 + 0x34)" * (cast_expression "(int *)(iVar2 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x34)" ( (binary_expression "iVar2 + 0x34" identifier + number_literal) ))))) ))) * number_literal) + number_literal) ;)) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (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 { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return LIT ;) })) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (goto_statement goto statement_identifier ;)) }))) }))) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (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 { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return LIT ;) })) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (goto_statement goto statement_identifier ;)) }))) }))) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (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 { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return LIT ;) })) (goto_statement goto statement_identifier ;) })) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (labeled_statement statement_identifier : (return_statement return (binary_expression (parenthesized_expression ( (binary_expression (unary_expression - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))) & LIT) )) - LIT) ;)) })) (labeled_statement statement_identifier : (return_statement return (binary_expression (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) * LIT) + LIT) ;)) })))
(function_definition "int __regparm2 FUN_0001e800(undefined4 param_1,undefined4 param_2,int *param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  char *pcVar3;\n  size_t sVar4;\n  uint uVar5;\n  int *unaff_retaddr;\n  \n  entry(param_2,0x1e809);\n  iVar1 = *unaff_retaddr;\n  iVar2 = *param_3;\n  pcVar3 = *(char **)(iVar2 + 0xc);\n  if (*(char **)(iVar1 + 0xc) == (char *)0x0) {\n    sVar4 = 0;\n    if (pcVar3 != (char *)0x0) goto LAB_0001e83e;\n  }\n  else {\n    sVar4 = strlen(*(char **)(iVar1 + 0xc));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }\n    else {\nLAB_0001e83e:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }\n  }\n  pcVar3 = *(char **)(iVar2 + 0x14);\n  if (*(char **)(iVar1 + 0x14) == (char *)0x0) {\n    sVar4 = 0;\n    if (pcVar3 != (char *)0x0) goto LAB_0001e876;\n  }\n  else {\n    sVar4 = strlen(*(char **)(iVar1 + 0x14));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }\n    else {\nLAB_0001e876:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }\n  }\n  pcVar3 = *(char **)(iVar2 + 4);\n  if (*(char **)(iVar1 + 4) == (char *)0x0) {\n    sVar4 = 0;\n    if (pcVar3 == (char *)0x0) goto LAB_0001e904;\n  }\n  else {\n    sVar4 = strlen(*(char **)(iVar1 + 4));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n      goto LAB_0001e904;\n    }\n  }\n  uVar5 = strlen(pcVar3);\n  if (uVar5 != sVar4) {\nLAB_0001e88e:\n    return (-(uint)(sVar4 < uVar5) & 2) - 1;\n  }\nLAB_0001e904:\n  return (uint)(*(int *)(iVar1 + 0x34) < *(int *)(iVar2 + 0x34)) * 2 + -1;\n}" (primitive_type "int") (ERROR "__regparm2" (identifier "__regparm2")) (function_declarator "FUN_0001e800(undefined4 param_1,undefined4 param_2,int *param_3)" (identifier "FUN_0001e800") (parameter_list "(undefined4 param_1,undefined4 param_2,int *param_3)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "int *param_3" (primitive_type "int") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  char *pcVar3;\n  size_t sVar4;\n  uint uVar5;\n  int *unaff_retaddr;\n  \n  entry(param_2,0x1e809);\n  iVar1 = *unaff_retaddr;\n  iVar2 = *param_3;\n  pcVar3 = *(char **)(iVar2 + 0xc);\n  if (*(char **)(iVar1 + 0xc) == (char *)0x0) {\n    sVar4 = 0;\n    if (pcVar3 != (char *)0x0) goto LAB_0001e83e;\n  }\n  else {\n    sVar4 = strlen(*(char **)(iVar1 + 0xc));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }\n    else {\nLAB_0001e83e:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }\n  }\n  pcVar3 = *(char **)(iVar2 + 0x14);\n  if (*(char **)(iVar1 + 0x14) == (char *)0x0) {\n    sVar4 = 0;\n    if (pcVar3 != (char *)0x0) goto LAB_0001e876;\n  }\n  else {\n    sVar4 = strlen(*(char **)(iVar1 + 0x14));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }\n    else {\nLAB_0001e876:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }\n  }\n  pcVar3 = *(char **)(iVar2 + 4);\n  if (*(char **)(iVar1 + 4) == (char *)0x0) {\n    sVar4 = 0;\n    if (pcVar3 == (char *)0x0) goto LAB_0001e904;\n  }\n  else {\n    sVar4 = strlen(*(char **)(iVar1 + 4));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n      goto LAB_0001e904;\n    }\n  }\n  uVar5 = strlen(pcVar3);\n  if (uVar5 != sVar4) {\nLAB_0001e88e:\n    return (-(uint)(sVar4 < uVar5) & 2) - 1;\n  }\nLAB_0001e904:\n  return (uint)(*(int *)(iVar1 + 0x34) < *(int *)(iVar2 + 0x34)) * 2 + -1;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "char *pcVar3;" (primitive_type "char") (pointer_declarator "*pcVar3" (* "*") (identifier "pcVar3")) (; ";")) (declaration "size_t sVar4;" (primitive_type "size_t") (identifier "sVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "int *unaff_retaddr;" (primitive_type "int") (pointer_declarator "*unaff_retaddr" (* "*") (identifier "unaff_retaddr")) (; ";")) (expression_statement "entry(param_2,0x1e809);" (call_expression "entry(param_2,0x1e809)" (identifier "entry") (argument_list "(param_2,0x1e809)" (( "(") (identifier "param_2") (, ",") (number_literal "0x1e809") () ")"))) (; ";")) (expression_statement "iVar1 = *unaff_retaddr;" (assignment_expression "iVar1 = *unaff_retaddr" (identifier "iVar1") (= "=") (pointer_expression "*unaff_retaddr" (* "*") (identifier "unaff_retaddr"))) (; ";")) (expression_statement "iVar2 = *param_3;" (assignment_expression "iVar2 = *param_3" (identifier "iVar2") (= "=") (pointer_expression "*param_3" (* "*") (identifier "param_3"))) (; ";")) (expression_statement "pcVar3 = *(char **)(iVar2 + 0xc);" (assignment_expression "pcVar3 = *(char **)(iVar2 + 0xc)" (identifier "pcVar3") (= "=") (pointer_expression "*(char **)(iVar2 + 0xc)" (* "*") (cast_expression "(char **)(iVar2 + 0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar2 + 0xc)" (( "(") (binary_expression "iVar2 + 0xc" (identifier "iVar2") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (if_statement "if (*(char **)(iVar1 + 0xc) == (char *)0x0) {\n    sVar4 = 0;\n    if (pcVar3 != (char *)0x0) goto LAB_0001e83e;\n  }\n  else {\n    sVar4 = strlen(*(char **)(iVar1 + 0xc));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }\n    else {\nLAB_0001e83e:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }\n  }" (if "if") (parenthesized_expression "(*(char **)(iVar1 + 0xc) == (char *)0x0)" (( "(") (binary_expression "*(char **)(iVar1 + 0xc) == (char *)0x0" (pointer_expression "*(char **)(iVar1 + 0xc)" (* "*") (cast_expression "(char **)(iVar1 + 0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar1 + 0xc)" (( "(") (binary_expression "iVar1 + 0xc" (identifier "iVar1") (+ "+") (number_literal "0xc")) () ")")))) (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    sVar4 = 0;\n    if (pcVar3 != (char *)0x0) goto LAB_0001e83e;\n  }" ({ "{") (expression_statement "sVar4 = 0;" (assignment_expression "sVar4 = 0" (identifier "sVar4") (= "=") (number_literal "0")) (; ";")) (if_statement "if (pcVar3 != (char *)0x0) goto LAB_0001e83e;" (if "if") (parenthesized_expression "(pcVar3 != (char *)0x0)" (( "(") (binary_expression "pcVar3 != (char *)0x0" (identifier "pcVar3") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0001e83e;" (goto "goto") (statement_identifier "LAB_0001e83e") (; ";"))) (} "}")) (else_clause "else {\n    sVar4 = strlen(*(char **)(iVar1 + 0xc));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }\n    else {\nLAB_0001e83e:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }\n  }" (else "else") (compound_statement "{\n    sVar4 = strlen(*(char **)(iVar1 + 0xc));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }\n    else {\nLAB_0001e83e:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }\n  }" ({ "{") (expression_statement "sVar4 = strlen(*(char **)(iVar1 + 0xc));" (assignment_expression "sVar4 = strlen(*(char **)(iVar1 + 0xc))" (identifier "sVar4") (= "=") (call_expression "strlen(*(char **)(iVar1 + 0xc))" (identifier "strlen") (argument_list "(*(char **)(iVar1 + 0xc))" (( "(") (pointer_expression "*(char **)(iVar1 + 0xc)" (* "*") (cast_expression "(char **)(iVar1 + 0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar1 + 0xc)" (( "(") (binary_expression "iVar1 + 0xc" (identifier "iVar1") (+ "+") (number_literal "0xc")) () ")")))) () ")")))) (; ";")) (if_statement "if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }\n    else {\nLAB_0001e83e:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }" (if "if") (parenthesized_expression "(pcVar3 == (char *)0x0)" (( "(") (binary_expression "pcVar3 == (char *)0x0" (identifier "pcVar3") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }" ({ "{") (if_statement "if (sVar4 != 0) {\n        return -1;\n      }" (if "if") (parenthesized_expression "(sVar4 != 0)" (( "(") (binary_expression "sVar4 != 0" (identifier "sVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        return -1;\n      }" ({ "{") (return_statement "return -1;" (return "return") (number_literal "-1") (; ";")) (} "}"))) (} "}")) (else_clause "else {\nLAB_0001e83e:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }" (else "else") (compound_statement "{\nLAB_0001e83e:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }" ({ "{") (labeled_statement "LAB_0001e83e:\n      uVar5 = strlen(pcVar3);" (statement_identifier "LAB_0001e83e") (: ":") (expression_statement "uVar5 = strlen(pcVar3);" (assignment_expression "uVar5 = strlen(pcVar3)" (identifier "uVar5") (= "=") (call_expression "strlen(pcVar3)" (identifier "strlen") (argument_list "(pcVar3)" (( "(") (identifier "pcVar3") () ")")))) (; ";"))) (if_statement "if (uVar5 != sVar4) goto LAB_0001e88e;" (if "if") (parenthesized_expression "(uVar5 != sVar4)" (( "(") (binary_expression "uVar5 != sVar4" (identifier "uVar5") (!= "!=") (identifier "sVar4")) () ")")) (goto_statement "goto LAB_0001e88e;" (goto "goto") (statement_identifier "LAB_0001e88e") (; ";"))) (} "}")))) (} "}")))) (expression_statement "pcVar3 = *(char **)(iVar2 + 0x14);" (assignment_expression "pcVar3 = *(char **)(iVar2 + 0x14)" (identifier "pcVar3") (= "=") (pointer_expression "*(char **)(iVar2 + 0x14)" (* "*") (cast_expression "(char **)(iVar2 + 0x14)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar2 + 0x14)" (( "(") (binary_expression "iVar2 + 0x14" (identifier "iVar2") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (if_statement "if (*(char **)(iVar1 + 0x14) == (char *)0x0) {\n    sVar4 = 0;\n    if (pcVar3 != (char *)0x0) goto LAB_0001e876;\n  }\n  else {\n    sVar4 = strlen(*(char **)(iVar1 + 0x14));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }\n    else {\nLAB_0001e876:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }\n  }" (if "if") (parenthesized_expression "(*(char **)(iVar1 + 0x14) == (char *)0x0)" (( "(") (binary_expression "*(char **)(iVar1 + 0x14) == (char *)0x0" (pointer_expression "*(char **)(iVar1 + 0x14)" (* "*") (cast_expression "(char **)(iVar1 + 0x14)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar1 + 0x14)" (( "(") (binary_expression "iVar1 + 0x14" (identifier "iVar1") (+ "+") (number_literal "0x14")) () ")")))) (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    sVar4 = 0;\n    if (pcVar3 != (char *)0x0) goto LAB_0001e876;\n  }" ({ "{") (expression_statement "sVar4 = 0;" (assignment_expression "sVar4 = 0" (identifier "sVar4") (= "=") (number_literal "0")) (; ";")) (if_statement "if (pcVar3 != (char *)0x0) goto LAB_0001e876;" (if "if") (parenthesized_expression "(pcVar3 != (char *)0x0)" (( "(") (binary_expression "pcVar3 != (char *)0x0" (identifier "pcVar3") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0001e876;" (goto "goto") (statement_identifier "LAB_0001e876") (; ";"))) (} "}")) (else_clause "else {\n    sVar4 = strlen(*(char **)(iVar1 + 0x14));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }\n    else {\nLAB_0001e876:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }\n  }" (else "else") (compound_statement "{\n    sVar4 = strlen(*(char **)(iVar1 + 0x14));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }\n    else {\nLAB_0001e876:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }\n  }" ({ "{") (expression_statement "sVar4 = strlen(*(char **)(iVar1 + 0x14));" (assignment_expression "sVar4 = strlen(*(char **)(iVar1 + 0x14))" (identifier "sVar4") (= "=") (call_expression "strlen(*(char **)(iVar1 + 0x14))" (identifier "strlen") (argument_list "(*(char **)(iVar1 + 0x14))" (( "(") (pointer_expression "*(char **)(iVar1 + 0x14)" (* "*") (cast_expression "(char **)(iVar1 + 0x14)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar1 + 0x14)" (( "(") (binary_expression "iVar1 + 0x14" (identifier "iVar1") (+ "+") (number_literal "0x14")) () ")")))) () ")")))) (; ";")) (if_statement "if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }\n    else {\nLAB_0001e876:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }" (if "if") (parenthesized_expression "(pcVar3 == (char *)0x0)" (( "(") (binary_expression "pcVar3 == (char *)0x0" (identifier "pcVar3") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      if (sVar4 != 0) {\n        return -1;\n      }\n    }" ({ "{") (if_statement "if (sVar4 != 0) {\n        return -1;\n      }" (if "if") (parenthesized_expression "(sVar4 != 0)" (( "(") (binary_expression "sVar4 != 0" (identifier "sVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        return -1;\n      }" ({ "{") (return_statement "return -1;" (return "return") (number_literal "-1") (; ";")) (} "}"))) (} "}")) (else_clause "else {\nLAB_0001e876:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }" (else "else") (compound_statement "{\nLAB_0001e876:\n      uVar5 = strlen(pcVar3);\n      if (uVar5 != sVar4) goto LAB_0001e88e;\n    }" ({ "{") (labeled_statement "LAB_0001e876:\n      uVar5 = strlen(pcVar3);" (statement_identifier "LAB_0001e876") (: ":") (expression_statement "uVar5 = strlen(pcVar3);" (assignment_expression "uVar5 = strlen(pcVar3)" (identifier "uVar5") (= "=") (call_expression "strlen(pcVar3)" (identifier "strlen") (argument_list "(pcVar3)" (( "(") (identifier "pcVar3") () ")")))) (; ";"))) (if_statement "if (uVar5 != sVar4) goto LAB_0001e88e;" (if "if") (parenthesized_expression "(uVar5 != sVar4)" (( "(") (binary_expression "uVar5 != sVar4" (identifier "uVar5") (!= "!=") (identifier "sVar4")) () ")")) (goto_statement "goto LAB_0001e88e;" (goto "goto") (statement_identifier "LAB_0001e88e") (; ";"))) (} "}")))) (} "}")))) (expression_statement "pcVar3 = *(char **)(iVar2 + 4);" (assignment_expression "pcVar3 = *(char **)(iVar2 + 4)" (identifier "pcVar3") (= "=") (pointer_expression "*(char **)(iVar2 + 4)" (* "*") (cast_expression "(char **)(iVar2 + 4)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar2 + 4)" (( "(") (binary_expression "iVar2 + 4" (identifier "iVar2") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if (*(char **)(iVar1 + 4) == (char *)0x0) {\n    sVar4 = 0;\n    if (pcVar3 == (char *)0x0) goto LAB_0001e904;\n  }\n  else {\n    sVar4 = strlen(*(char **)(iVar1 + 4));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n      goto LAB_0001e904;\n    }\n  }" (if "if") (parenthesized_expression "(*(char **)(iVar1 + 4) == (char *)0x0)" (( "(") (binary_expression "*(char **)(iVar1 + 4) == (char *)0x0" (pointer_expression "*(char **)(iVar1 + 4)" (* "*") (cast_expression "(char **)(iVar1 + 4)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar1 + 4)" (( "(") (binary_expression "iVar1 + 4" (identifier "iVar1") (+ "+") (number_literal "4")) () ")")))) (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    sVar4 = 0;\n    if (pcVar3 == (char *)0x0) goto LAB_0001e904;\n  }" ({ "{") (expression_statement "sVar4 = 0;" (assignment_expression "sVar4 = 0" (identifier "sVar4") (= "=") (number_literal "0")) (; ";")) (if_statement "if (pcVar3 == (char *)0x0) goto LAB_0001e904;" (if "if") (parenthesized_expression "(pcVar3 == (char *)0x0)" (( "(") (binary_expression "pcVar3 == (char *)0x0" (identifier "pcVar3") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0001e904;" (goto "goto") (statement_identifier "LAB_0001e904") (; ";"))) (} "}")) (else_clause "else {\n    sVar4 = strlen(*(char **)(iVar1 + 4));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n      goto LAB_0001e904;\n    }\n  }" (else "else") (compound_statement "{\n    sVar4 = strlen(*(char **)(iVar1 + 4));\n    if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n      goto LAB_0001e904;\n    }\n  }" ({ "{") (expression_statement "sVar4 = strlen(*(char **)(iVar1 + 4));" (assignment_expression "sVar4 = strlen(*(char **)(iVar1 + 4))" (identifier "sVar4") (= "=") (call_expression "strlen(*(char **)(iVar1 + 4))" (identifier "strlen") (argument_list "(*(char **)(iVar1 + 4))" (( "(") (pointer_expression "*(char **)(iVar1 + 4)" (* "*") (cast_expression "(char **)(iVar1 + 4)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar1 + 4)" (( "(") (binary_expression "iVar1 + 4" (identifier "iVar1") (+ "+") (number_literal "4")) () ")")))) () ")")))) (; ";")) (if_statement "if (pcVar3 == (char *)0x0) {\n      if (sVar4 != 0) {\n        return -1;\n      }\n      goto LAB_0001e904;\n    }" (if "if") (parenthesized_expression "(pcVar3 == (char *)0x0)" (( "(") (binary_expression "pcVar3 == (char *)0x0" (identifier "pcVar3") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      if (sVar4 != 0) {\n        return -1;\n      }\n      goto LAB_0001e904;\n    }" ({ "{") (if_statement "if (sVar4 != 0) {\n        return -1;\n      }" (if "if") (parenthesized_expression "(sVar4 != 0)" (( "(") (binary_expression "sVar4 != 0" (identifier "sVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        return -1;\n      }" ({ "{") (return_statement "return -1;" (return "return") (number_literal "-1") (; ";")) (} "}"))) (goto_statement "goto LAB_0001e904;" (goto "goto") (statement_identifier "LAB_0001e904") (; ";")) (} "}"))) (} "}")))) (expression_statement "uVar5 = strlen(pcVar3);" (assignment_expression "uVar5 = strlen(pcVar3)" (identifier "uVar5") (= "=") (call_expression "strlen(pcVar3)" (identifier "strlen") (argument_list "(pcVar3)" (( "(") (identifier "pcVar3") () ")")))) (; ";")) (if_statement "if (uVar5 != sVar4) {\nLAB_0001e88e:\n    return (-(uint)(sVar4 < uVar5) & 2) - 1;\n  }" (if "if") (parenthesized_expression "(uVar5 != sVar4)" (( "(") (binary_expression "uVar5 != sVar4" (identifier "uVar5") (!= "!=") (identifier "sVar4")) () ")")) (compound_statement "{\nLAB_0001e88e:\n    return (-(uint)(sVar4 < uVar5) & 2) - 1;\n  }" ({ "{") (labeled_statement "LAB_0001e88e:\n    return (-(uint)(sVar4 < uVar5) & 2) - 1;" (statement_identifier "LAB_0001e88e") (: ":") (return_statement "return (-(uint)(sVar4 < uVar5) & 2) - 1;" (return "return") (binary_expression "(-(uint)(sVar4 < uVar5) & 2) - 1" (parenthesized_expression "(-(uint)(sVar4 < uVar5) & 2)" (( "(") (binary_expression "-(uint)(sVar4 < uVar5) & 2" (unary_expression "-(uint)(sVar4 < uVar5)" (- "-") (call_expression "(uint)(sVar4 < uVar5)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(sVar4 < uVar5)" (( "(") (binary_expression "sVar4 < uVar5" (identifier "sVar4") (< "<") (identifier "uVar5")) () ")")))) (& "&") (number_literal "2")) () ")")) (- "-") (number_literal "1")) (; ";"))) (} "}"))) (labeled_statement "LAB_0001e904:\n  return (uint)(*(int *)(iVar1 + 0x34) < *(int *)(iVar2 + 0x34)) * 2 + -1;" (statement_identifier "LAB_0001e904") (: ":") (return_statement "return (uint)(*(int *)(iVar1 + 0x34) < *(int *)(iVar2 + 0x34)) * 2 + -1;" (return "return") (binary_expression "(uint)(*(int *)(iVar1 + 0x34) < *(int *)(iVar2 + 0x34)) * 2 + -1" (binary_expression "(uint)(*(int *)(iVar1 + 0x34) < *(int *)(iVar2 + 0x34)) * 2" (call_expression "(uint)(*(int *)(iVar1 + 0x34) < *(int *)(iVar2 + 0x34))" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(int *)(iVar1 + 0x34) < *(int *)(iVar2 + 0x34))" (( "(") (binary_expression "*(int *)(iVar1 + 0x34) < *(int *)(iVar2 + 0x34)" (pointer_expression "*(int *)(iVar1 + 0x34)" (* "*") (cast_expression "(int *)(iVar1 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x34)" (( "(") (binary_expression "iVar1 + 0x34" (identifier "iVar1") (+ "+") (number_literal "0x34")) () ")")))) (< "<") (pointer_expression "*(int *)(iVar2 + 0x34)" (* "*") (cast_expression "(int *)(iVar2 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x34)" (( "(") (binary_expression "iVar2 + 0x34" (identifier "iVar2") (+ "+") (number_literal "0x34")) () ")"))))) () ")"))) (* "*") (number_literal "2")) (+ "+") (number_literal "-1")) (; ";"))) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Unknown calling convention */

int function_1(void *p1,void *p2)

{
  int var_2;
  int var_1;
  char *var_3;
  size_t var_5;
  type_1 var_6;
  
                    /* WARNING: Load size is inaccurate */
  var_2 = *p1;
                    /* WARNING: Load size is inaccurate */
  var_1 = *p2;
  var_3 = *(char **)(var_1 + 0xc);
  if (*(char **)(var_2 + 0xc) == (char *)0x0) {
    var_5 = 0;
    if (var_3 != (char *)0x0) goto LAB_0001e83e;
  }
  else {
    var_5 = var_4(*(char **)(var_2 + 0xc));
    if (var_3 == (char *)0x0) {
      if (var_5 != 0) {
        return -1;
      }
    }
    else {
LAB_0001e83e:
      var_6 = var_4(var_3);
      if (var_6 != var_5) goto LAB_0001e88e;
    }
  }
  var_3 = *(char **)(var_1 + 0x14);
  if (*(char **)(var_2 + 0x14) == (char *)0x0) {
    var_5 = 0;
    if (var_3 != (char *)0x0) goto LAB_0001e876;
  }
  else {
    var_5 = var_4(*(char **)(var_2 + 0x14));
    if (var_3 == (char *)0x0) {
      if (var_5 != 0) {
        return -1;
      }
    }
    else {
LAB_0001e876:
      var_6 = var_4(var_3);
      if (var_6 != var_5) goto LAB_0001e88e;
    }
  }
  var_3 = *(char **)(var_1 + 4);
  if (*(char **)(var_2 + 4) == (char *)0x0) {
    var_5 = 0;
    if (var_3 == (char *)0x0) goto LAB_0001e904;
  }
  else {
    var_5 = var_4(*(char **)(var_2 + 4));
    if (var_3 == (char *)0x0) {
      if (var_5 != 0) {
        return -1;
      }
      goto LAB_0001e904;
    }
  }
  var_6 = var_4(var_3);
  if (var_6 != var_5) {
LAB_0001e88e:
    return (-(type_1)(var_5 < var_6) & 2) - 1;
  }
LAB_0001e904:
  return (type_1)(*(int *)(var_2 + 0x34) < *(int *)(var_1 + 0x34)) * 2 + -1;
}


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

int __regparm2 MASKED(undefined4 param_1,undefined4 param_2,int *param_3)

{
  int iVar1;
  int iVar2;
  char *pcVar3;
  size_t sVar4;
  uint uVar5;
  int *unaff_retaddr;
  
  entry(param_2,0x1e809);
  iVar1 = *unaff_retaddr;
  iVar2 = *param_3;
  pcVar3 = *(char **)(iVar2 + 0xc);
  if (*(char **)(iVar1 + 0xc) == (char *)0x0) {
    sVar4 = 0;
    if (pcVar3 != (char *)0x0) goto LAB_0001e83e;
  }
  else {
    sVar4 = strlen(*(char **)(iVar1 + 0xc));
    if (pcVar3 == (char *)0x0) {
      if (sVar4 != 0) {
        return -1;
      }
    }
    else {
LAB_0001e83e:
      uVar5 = strlen(pcVar3);
      if (uVar5 != sVar4) goto LAB_0001e88e;
    }
  }
  pcVar3 = *(char **)(iVar2 + 0x14);
  if (*(char **)(iVar1 + 0x14) == (char *)0x0) {
    sVar4 = 0;
    if (pcVar3 != (char *)0x0) goto LAB_0001e876;
  }
  else {
    sVar4 = strlen(*(char **)(iVar1 + 0x14));
    if (pcVar3 == (char *)0x0) {
      if (sVar4 != 0) {
        return -1;
      }
    }
    else {
LAB_0001e876:
      uVar5 = strlen(pcVar3);
      if (uVar5 != sVar4) goto LAB_0001e88e;
    }
  }
  pcVar3 = *(char **)(iVar2 + 4);
  if (*(char **)(iVar1 + 4) == (char *)0x0) {
    sVar4 = 0;
    if (pcVar3 == (char *)0x0) goto LAB_0001e904;
  }
  else {
    sVar4 = strlen(*(char **)(iVar1 + 4));
    if (pcVar3 == (char *)0x0) {
      if (sVar4 != 0) {
        return -1;
      }
      goto LAB_0001e904;
    }
  }
  uVar5 = strlen(pcVar3);
  if (uVar5 != sVar4) {
LAB_0001e88e:
    return (-(uint)(sVar4 < uVar5) & 2) - 1;
  }
LAB_0001e904:
  return (uint)(*(int *)(iVar1 + 0x34) < *(int *)(iVar2 + 0x34)) * 2 + -1;
}

