
/* WARNING: Unknown calling convention */

int three_arguments(void)

{
  char cVar1;
  char *op;
  char **ppcVar2;
  int iVar3;
  uint uVar4;
  int iVar5;
  long lVar6;
  char *format;
  
  iVar5 = pos;
  ppcVar2 = argv;
  lVar6 = (long)pos;
  op = argv[lVar6 + 1];
  iVar3 = test_binop(op);
  if (iVar3 == 0) {
    if ((*op == '-') && (((cVar1 = op[1], cVar1 == 'a' || (cVar1 == 'o')) && (op[2] == '\0')))) {
      if (cVar1 == 'a') {
        uVar4 = 0;
        if (*ppcVar2[lVar6] != '\0') {
          uVar4 = (uint)(*ppcVar2[lVar6 + 2] != '\0');
        }
      }
      else {
        uVar4 = 1;
        if (*ppcVar2[lVar6] == '\0') {
          uVar4 = (uint)(*ppcVar2[lVar6 + 2] != '\0');
        }
      }
      pos = argc;
    }
    else {
      cVar1 = *ppcVar2[lVar6];
      if (cVar1 == '!') {
        if (ppcVar2[lVar6][1] != '\0') goto LAB_00173641;
        pos = iVar5 + 1;
        if (argc <= pos) {
                    /* WARNING: Subroutine does not return */
          beyond();
        }
        iVar5 = two_arguments();
        uVar4 = (uint)(iVar5 == 0);
      }
      else {
        if ((cVar1 != '(') || (*ppcVar2[lVar6 + 2] != ')')) {
LAB_00173641:
          format = (char *)dcgettext(0,"%s: binary operator expected",5);
                    /* WARNING: Subroutine does not return */
          test_syntax_error(format,op);
        }
        uVar4 = (uint)(*op != '\0');
        pos = argc;
      }
    }
  }
  else {
    uVar4 = binary_operator();
    pos = argc;
  }
  return uVar4;
}



ulong FUN_0017351a(void)

{
  long lVar1;
  char cVar2;
  char *pcVar3;
  char *pcVar4;
  long lVar5;
  int iVar6;
  ulong uVar7;
  undefined8 uVar8;
  
  iVar6 = DAT_00215aac;
  lVar5 = DAT_00215aa0;
  lVar1 = ((long)DAT_00215aac + 1) * 8;
  pcVar3 = *(char **)(DAT_00215aa0 + ((long)DAT_00215aac + 1) * 8);
  uVar7 = test_binop(pcVar3);
  if ((int)uVar7 == 0) {
    if ((*pcVar3 != '-') ||
       (((cVar2 = pcVar3[1], cVar2 != 'a' && (cVar2 != 'o')) || (pcVar3[2] != '\0')))) {
      pcVar4 = *(char **)(lVar5 + -8 + lVar1);
      cVar2 = *pcVar4;
      if (cVar2 == '!') {
        if (pcVar4[1] == '\0') {
          DAT_00215aac = iVar6 + 1;
          if (DAT_00215aac < DAT_00215aa8) {
            iVar6 = FUN_0017347d();
            return (ulong)(iVar6 == 0);
          }
          FUN_001727af();
        }
      }
      else if ((cVar2 == '(') && (**(char **)(lVar5 + 8 + lVar1) == ')')) {
        DAT_00215aac = DAT_00215aa8;
        return (ulong)(*pcVar3 != '\0');
      }
      uVar8 = dcgettext(0,"%s: binary operator expected",5);
                    /* WARNING: Subroutine does not return */
      FUN_0017260b(uVar8,pcVar3);
    }
    if (cVar2 == 'a') {
      if (**(char **)(lVar5 + -8 + lVar1) != '\0') {
        uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');
      }
    }
    else {
      uVar7 = 1;
      if (**(char **)(lVar5 + -8 + lVar1) == '\0') {
        uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');
      }
    }
  }
  else {
    uVar7 = FUN_00173274();
  }
  DAT_00215aac = DAT_00215aa8;
  return uVar7;
}


PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x8
MOV RBX,qword ptr [0x00215aa0]
MOV R12D,dword ptr [0x00215aac]
MOVSXD RAX,R12D
ADD RAX,0x1
LEA R13,[RAX*0x8]
MOV RBP,qword ptr [RBX + RAX*0x8]
MOV RDI,RBP
CALL 0x0017317c
TEST EAX,EAX
JNZ 0x0017359f
MOVZX EDX,byte ptr [RBP]
CMP DL,0x2d
JZ 0x001735b2
MOV RCX,qword ptr [RBX + R13*0x1 + -0x8]
MOVZX EAX,byte ptr [RCX]
CMP AL,0x21
JZ 0x00173610
CMP AL,0x28
JNZ 0x00173641
MOV RAX,qword ptr [RBX + R13*0x1 + 0x8]
CMP byte ptr [RAX],0x29
JNZ 0x00173641
TEST DL,DL
SETNZ AL
MOVZX EAX,AL
MOV EDX,dword ptr [0x00215aa8]
MOV dword ptr [0x00215aac],EDX
ADD RSP,0x8
POP RBX
POP RBP
POP R12
POP R13
RET
CALL 0x00173274
MOV EDX,dword ptr [0x00215aa8]
MOV dword ptr [0x00215aac],EDX
JMP 0x00173594
MOVZX ECX,byte ptr [RBP + 0x1]
CMP CL,0x61
JZ 0x001735c0
CMP CL,0x6f
JNZ 0x0017355a
CMP byte ptr [RBP + 0x2],0x0
JNZ 0x0017355a
CMP CL,0x61
JZ 0x001735f6
MOV RDX,qword ptr [RBX + R13*0x1 + -0x8]
MOV EAX,0x1
CMP byte ptr [RDX],0x0
JNZ 0x001735e8
MOV RAX,qword ptr [RBX + R13*0x1 + 0x8]
CMP byte ptr [RAX],0x0
SETNZ AL
MOVZX EAX,AL
MOV EDX,dword ptr [0x00215aa8]
MOV dword ptr [0x00215aac],EDX
JMP 0x00173594
MOV RDX,qword ptr [RBX + R13*0x1 + -0x8]
CMP byte ptr [RDX],0x0
JZ 0x001735e8
MOV RAX,qword ptr [RBX + R13*0x1 + 0x8]
CMP byte ptr [RAX],0x0
SETNZ AL
MOVZX EAX,AL
JMP 0x001735e8
CMP byte ptr [RCX + 0x1],0x0
JNZ 0x00173641
ADD R12D,0x1
MOV dword ptr [0x00215aac],R12D
CMP R12D,dword ptr [0x00215aa8]
JGE 0x0017363c
CALL 0x0017347d
TEST EAX,EAX
SETZ AL
MOVZX EAX,AL
JMP 0x00173594
CALL 0x001727af
MOV EDX,0x5
LEA RSI,[0x1d5c66]
MOV EDI,0x0
CALL 0x0012d350
MOV RSI,RBP
MOV RDI,RAX
CALL 0x0017260b
(translation_unit "ulong FUN_0017351a(void)\n\n{\n  long lVar1;\n  char cVar2;\n  char *pcVar3;\n  char *pcVar4;\n  long lVar5;\n  int iVar6;\n  ulong uVar7;\n  undefined8 uVar8;\n  \n  iVar6 = DAT_00215aac;\n  lVar5 = DAT_00215aa0;\n  lVar1 = ((long)DAT_00215aac + 1) * 8;\n  pcVar3 = *(char **)(DAT_00215aa0 + ((long)DAT_00215aac + 1) * 8);\n  uVar7 = test_binop(pcVar3);\n  if ((int)uVar7 == 0) {\n    if ((*pcVar3 != '-') ||\n       (((cVar2 = pcVar3[1], cVar2 != 'a' && (cVar2 != 'o')) || (pcVar3[2] != '\0')))) {\n      pcVar4 = *(char **)(lVar5 + -8 + lVar1);\n      cVar2 = *pcVar4;\n      if (cVar2 == '!') {\n        if (pcVar4[1] == '\0') {\n          DAT_00215aac = iVar6 + 1;\n          if (DAT_00215aac < DAT_00215aa8) {\n            iVar6 = FUN_0017347d();\n            return (ulong)(iVar6 == 0);\n          }\n          FUN_001727af();\n        }\n      }\n      else if ((cVar2 == '(') && (**(char **)(lVar5 + 8 + lVar1) == ')')) {\n        DAT_00215aac = DAT_00215aa8;\n        return (ulong)(*pcVar3 != '\0');\n      }\n      uVar8 = dcgettext(0,"%s: binary operator expected",5);\n                    /* WARNING: Subroutine does not return */\n      FUN_0017260b(uVar8,pcVar3);\n    }\n    if (cVar2 == 'a') {\n      if (**(char **)(lVar5 + -8 + lVar1) != '\0') {\n        uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');\n      }\n    }\n    else {\n      uVar7 = 1;\n      if (**(char **)(lVar5 + -8 + lVar1) == '\0') {\n        uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');\n      }\n    }\n  }\n  else {\n    uVar7 = FUN_00173274();\n  }\n  DAT_00215aac = DAT_00215aa8;\n  return uVar7;\n}\n\n" (function_definition "ulong FUN_0017351a(void)\n\n{\n  long lVar1;\n  char cVar2;\n  char *pcVar3;\n  char *pcVar4;\n  long lVar5;\n  int iVar6;\n  ulong uVar7;\n  undefined8 uVar8;\n  \n  iVar6 = DAT_00215aac;\n  lVar5 = DAT_00215aa0;\n  lVar1 = ((long)DAT_00215aac + 1) * 8;\n  pcVar3 = *(char **)(DAT_00215aa0 + ((long)DAT_00215aac + 1) * 8);\n  uVar7 = test_binop(pcVar3);\n  if ((int)uVar7 == 0) {\n    if ((*pcVar3 != '-') ||\n       (((cVar2 = pcVar3[1], cVar2 != 'a' && (cVar2 != 'o')) || (pcVar3[2] != '\0')))) {\n      pcVar4 = *(char **)(lVar5 + -8 + lVar1);\n      cVar2 = *pcVar4;\n      if (cVar2 == '!') {\n        if (pcVar4[1] == '\0') {\n          DAT_00215aac = iVar6 + 1;\n          if (DAT_00215aac < DAT_00215aa8) {\n            iVar6 = FUN_0017347d();\n            return (ulong)(iVar6 == 0);\n          }\n          FUN_001727af();\n        }\n      }\n      else if ((cVar2 == '(') && (**(char **)(lVar5 + 8 + lVar1) == ')')) {\n        DAT_00215aac = DAT_00215aa8;\n        return (ulong)(*pcVar3 != '\0');\n      }\n      uVar8 = dcgettext(0,"%s: binary operator expected",5);\n                    /* WARNING: Subroutine does not return */\n      FUN_0017260b(uVar8,pcVar3);\n    }\n    if (cVar2 == 'a') {\n      if (**(char **)(lVar5 + -8 + lVar1) != '\0') {\n        uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');\n      }\n    }\n    else {\n      uVar7 = 1;\n      if (**(char **)(lVar5 + -8 + lVar1) == '\0') {\n        uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');\n      }\n    }\n  }\n  else {\n    uVar7 = FUN_00173274();\n  }\n  DAT_00215aac = DAT_00215aa8;\n  return uVar7;\n}" type_identifier (function_declarator "FUN_0017351a(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  long lVar1;\n  char cVar2;\n  char *pcVar3;\n  char *pcVar4;\n  long lVar5;\n  int iVar6;\n  ulong uVar7;\n  undefined8 uVar8;\n  \n  iVar6 = DAT_00215aac;\n  lVar5 = DAT_00215aa0;\n  lVar1 = ((long)DAT_00215aac + 1) * 8;\n  pcVar3 = *(char **)(DAT_00215aa0 + ((long)DAT_00215aac + 1) * 8);\n  uVar7 = test_binop(pcVar3);\n  if ((int)uVar7 == 0) {\n    if ((*pcVar3 != '-') ||\n       (((cVar2 = pcVar3[1], cVar2 != 'a' && (cVar2 != 'o')) || (pcVar3[2] != '\0')))) {\n      pcVar4 = *(char **)(lVar5 + -8 + lVar1);\n      cVar2 = *pcVar4;\n      if (cVar2 == '!') {\n        if (pcVar4[1] == '\0') {\n          DAT_00215aac = iVar6 + 1;\n          if (DAT_00215aac < DAT_00215aa8) {\n            iVar6 = FUN_0017347d();\n            return (ulong)(iVar6 == 0);\n          }\n          FUN_001727af();\n        }\n      }\n      else if ((cVar2 == '(') && (**(char **)(lVar5 + 8 + lVar1) == ')')) {\n        DAT_00215aac = DAT_00215aa8;\n        return (ulong)(*pcVar3 != '\0');\n      }\n      uVar8 = dcgettext(0,"%s: binary operator expected",5);\n                    /* WARNING: Subroutine does not return */\n      FUN_0017260b(uVar8,pcVar3);\n    }\n    if (cVar2 == 'a') {\n      if (**(char **)(lVar5 + -8 + lVar1) != '\0') {\n        uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');\n      }\n    }\n    else {\n      uVar7 = 1;\n      if (**(char **)(lVar5 + -8 + lVar1) == '\0') {\n        uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');\n      }\n    }\n  }\n  else {\n    uVar7 = FUN_00173274();\n  }\n  DAT_00215aac = DAT_00215aa8;\n  return uVar7;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "undefined8 uVar8;" type_identifier identifier ;) (expression_statement "iVar6 = DAT_00215aac;" (assignment_expression "iVar6 = DAT_00215aac" identifier = identifier) ;) (expression_statement "lVar5 = DAT_00215aa0;" (assignment_expression "lVar5 = DAT_00215aa0" identifier = identifier) ;) (expression_statement "lVar1 = ((long)DAT_00215aac + 1) * 8;" (assignment_expression "lVar1 = ((long)DAT_00215aac + 1) * 8" identifier = (binary_expression "((long)DAT_00215aac + 1) * 8" (parenthesized_expression "((long)DAT_00215aac + 1)" ( (binary_expression "(long)DAT_00215aac + 1" (cast_expression "(long)DAT_00215aac" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )) * number_literal)) ;) (expression_statement "pcVar3 = *(char **)(DAT_00215aa0 + ((long)DAT_00215aac + 1) * 8);" (assignment_expression "pcVar3 = *(char **)(DAT_00215aa0 + ((long)DAT_00215aac + 1) * 8)" identifier = (pointer_expression "*(char **)(DAT_00215aa0 + ((long)DAT_00215aac + 1) * 8)" * (cast_expression "(char **)(DAT_00215aa0 + ((long)DAT_00215aac + 1) * 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(DAT_00215aa0 + ((long)DAT_00215aac + 1) * 8)" ( (binary_expression "DAT_00215aa0 + ((long)DAT_00215aac + 1) * 8" identifier + (binary_expression "((long)DAT_00215aac + 1) * 8" (parenthesized_expression "((long)DAT_00215aac + 1)" ( (binary_expression "(long)DAT_00215aac + 1" (cast_expression "(long)DAT_00215aac" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )) * number_literal)) ))))) ;) (expression_statement "uVar7 = test_binop(pcVar3);" (assignment_expression "uVar7 = test_binop(pcVar3)" identifier = (call_expression "test_binop(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier )))) ;) (if_statement "if ((int)uVar7 == 0) {\n    if ((*pcVar3 != '-') ||\n       (((cVar2 = pcVar3[1], cVar2 != 'a' && (cVar2 != 'o')) || (pcVar3[2] != '\0')))) {\n      pcVar4 = *(char **)(lVar5 + -8 + lVar1);\n      cVar2 = *pcVar4;\n      if (cVar2 == '!') {\n        if (pcVar4[1] == '\0') {\n          DAT_00215aac = iVar6 + 1;\n          if (DAT_00215aac < DAT_00215aa8) {\n            iVar6 = FUN_0017347d();\n            return (ulong)(iVar6 == 0);\n          }\n          FUN_001727af();\n        }\n      }\n      else if ((cVar2 == '(') && (**(char **)(lVar5 + 8 + lVar1) == ')')) {\n        DAT_00215aac = DAT_00215aa8;\n        return (ulong)(*pcVar3 != '\0');\n      }\n      uVar8 = dcgettext(0,"%s: binary operator expected",5);\n                    /* WARNING: Subroutine does not return */\n      FUN_0017260b(uVar8,pcVar3);\n    }\n    if (cVar2 == 'a') {\n      if (**(char **)(lVar5 + -8 + lVar1) != '\0') {\n        uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');\n      }\n    }\n    else {\n      uVar7 = 1;\n      if (**(char **)(lVar5 + -8 + lVar1) == '\0') {\n        uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');\n      }\n    }\n  }\n  else {\n    uVar7 = FUN_00173274();\n  }" if (parenthesized_expression "((int)uVar7 == 0)" ( (binary_expression "(int)uVar7 == 0" (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier) == number_literal) )) (compound_statement "{\n    if ((*pcVar3 != '-') ||\n       (((cVar2 = pcVar3[1], cVar2 != 'a' && (cVar2 != 'o')) || (pcVar3[2] != '\0')))) {\n      pcVar4 = *(char **)(lVar5 + -8 + lVar1);\n      cVar2 = *pcVar4;\n      if (cVar2 == '!') {\n        if (pcVar4[1] == '\0') {\n          DAT_00215aac = iVar6 + 1;\n          if (DAT_00215aac < DAT_00215aa8) {\n            iVar6 = FUN_0017347d();\n            return (ulong)(iVar6 == 0);\n          }\n          FUN_001727af();\n        }\n      }\n      else if ((cVar2 == '(') && (**(char **)(lVar5 + 8 + lVar1) == ')')) {\n        DAT_00215aac = DAT_00215aa8;\n        return (ulong)(*pcVar3 != '\0');\n      }\n      uVar8 = dcgettext(0,"%s: binary operator expected",5);\n                    /* WARNING: Subroutine does not return */\n      FUN_0017260b(uVar8,pcVar3);\n    }\n    if (cVar2 == 'a') {\n      if (**(char **)(lVar5 + -8 + lVar1) != '\0') {\n        uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');\n      }\n    }\n    else {\n      uVar7 = 1;\n      if (**(char **)(lVar5 + -8 + lVar1) == '\0') {\n        uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');\n      }\n    }\n  }" { (if_statement "if ((*pcVar3 != '-') ||\n       (((cVar2 = pcVar3[1], cVar2 != 'a' && (cVar2 != 'o')) || (pcVar3[2] != '\0')))) {\n      pcVar4 = *(char **)(lVar5 + -8 + lVar1);\n      cVar2 = *pcVar4;\n      if (cVar2 == '!') {\n        if (pcVar4[1] == '\0') {\n          DAT_00215aac = iVar6 + 1;\n          if (DAT_00215aac < DAT_00215aa8) {\n            iVar6 = FUN_0017347d();\n            return (ulong)(iVar6 == 0);\n          }\n          FUN_001727af();\n        }\n      }\n      else if ((cVar2 == '(') && (**(char **)(lVar5 + 8 + lVar1) == ')')) {\n        DAT_00215aac = DAT_00215aa8;\n        return (ulong)(*pcVar3 != '\0');\n      }\n      uVar8 = dcgettext(0,"%s: binary operator expected",5);\n                    /* WARNING: Subroutine does not return */\n      FUN_0017260b(uVar8,pcVar3);\n    }" if (parenthesized_expression "((*pcVar3 != '-') ||\n       (((cVar2 = pcVar3[1], cVar2 != 'a' && (cVar2 != 'o')) || (pcVar3[2] != '\0'))))" ( (binary_expression "(*pcVar3 != '-') ||\n       (((cVar2 = pcVar3[1], cVar2 != 'a' && (cVar2 != 'o')) || (pcVar3[2] != '\0')))" (parenthesized_expression "(*pcVar3 != '-')" ( (binary_expression "*pcVar3 != '-'" (pointer_expression "*pcVar3" * identifier) != (char_literal "'-'" ' character ')) )) || (parenthesized_expression "(((cVar2 = pcVar3[1], cVar2 != 'a' && (cVar2 != 'o')) || (pcVar3[2] != '\0')))" ( (parenthesized_expression "((cVar2 = pcVar3[1], cVar2 != 'a' && (cVar2 != 'o')) || (pcVar3[2] != '\0'))" ( (binary_expression "(cVar2 = pcVar3[1], cVar2 != 'a' && (cVar2 != 'o')) || (pcVar3[2] != '\0')" (parenthesized_expression "(cVar2 = pcVar3[1], cVar2 != 'a' && (cVar2 != 'o'))" ( (comma_expression "cVar2 = pcVar3[1], cVar2 != 'a' && (cVar2 != 'o')" (assignment_expression "cVar2 = pcVar3[1]" identifier = (subscript_expression "pcVar3[1]" identifier [ number_literal ])) , (binary_expression "cVar2 != 'a' && (cVar2 != 'o')" (binary_expression "cVar2 != 'a'" identifier != (char_literal "'a'" ' character ')) && (parenthesized_expression "(cVar2 != 'o')" ( (binary_expression "cVar2 != 'o'" identifier != (char_literal "'o'" ' character ')) )))) )) || (parenthesized_expression "(pcVar3[2] != '\0')" ( (binary_expression "pcVar3[2] != '\0'" (subscript_expression "pcVar3[2]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) ))) )) ))) )) (compound_statement "{\n      pcVar4 = *(char **)(lVar5 + -8 + lVar1);\n      cVar2 = *pcVar4;\n      if (cVar2 == '!') {\n        if (pcVar4[1] == '\0') {\n          DAT_00215aac = iVar6 + 1;\n          if (DAT_00215aac < DAT_00215aa8) {\n            iVar6 = FUN_0017347d();\n            return (ulong)(iVar6 == 0);\n          }\n          FUN_001727af();\n        }\n      }\n      else if ((cVar2 == '(') && (**(char **)(lVar5 + 8 + lVar1) == ')')) {\n        DAT_00215aac = DAT_00215aa8;\n        return (ulong)(*pcVar3 != '\0');\n      }\n      uVar8 = dcgettext(0,"%s: binary operator expected",5);\n                    /* WARNING: Subroutine does not return */\n      FUN_0017260b(uVar8,pcVar3);\n    }" { (expression_statement "pcVar4 = *(char **)(lVar5 + -8 + lVar1);" (assignment_expression "pcVar4 = *(char **)(lVar5 + -8 + lVar1)" identifier = (pointer_expression "*(char **)(lVar5 + -8 + lVar1)" * (cast_expression "(char **)(lVar5 + -8 + lVar1)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar5 + -8 + lVar1)" ( (binary_expression "lVar5 + -8 + lVar1" (binary_expression "lVar5 + -8" identifier + number_literal) + identifier) ))))) ;) (expression_statement "cVar2 = *pcVar4;" (assignment_expression "cVar2 = *pcVar4" identifier = (pointer_expression "*pcVar4" * identifier)) ;) (if_statement "if (cVar2 == '!') {\n        if (pcVar4[1] == '\0') {\n          DAT_00215aac = iVar6 + 1;\n          if (DAT_00215aac < DAT_00215aa8) {\n            iVar6 = FUN_0017347d();\n            return (ulong)(iVar6 == 0);\n          }\n          FUN_001727af();\n        }\n      }\n      else if ((cVar2 == '(') && (**(char **)(lVar5 + 8 + lVar1) == ')')) {\n        DAT_00215aac = DAT_00215aa8;\n        return (ulong)(*pcVar3 != '\0');\n      }" if (parenthesized_expression "(cVar2 == '!')" ( (binary_expression "cVar2 == '!'" identifier == (char_literal "'!'" ' character ')) )) (compound_statement "{\n        if (pcVar4[1] == '\0') {\n          DAT_00215aac = iVar6 + 1;\n          if (DAT_00215aac < DAT_00215aa8) {\n            iVar6 = FUN_0017347d();\n            return (ulong)(iVar6 == 0);\n          }\n          FUN_001727af();\n        }\n      }" { (if_statement "if (pcVar4[1] == '\0') {\n          DAT_00215aac = iVar6 + 1;\n          if (DAT_00215aac < DAT_00215aa8) {\n            iVar6 = FUN_0017347d();\n            return (ulong)(iVar6 == 0);\n          }\n          FUN_001727af();\n        }" if (parenthesized_expression "(pcVar4[1] == '\0')" ( (binary_expression "pcVar4[1] == '\0'" (subscript_expression "pcVar4[1]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          DAT_00215aac = iVar6 + 1;\n          if (DAT_00215aac < DAT_00215aa8) {\n            iVar6 = FUN_0017347d();\n            return (ulong)(iVar6 == 0);\n          }\n          FUN_001727af();\n        }" { (expression_statement "DAT_00215aac = iVar6 + 1;" (assignment_expression "DAT_00215aac = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (if_statement "if (DAT_00215aac < DAT_00215aa8) {\n            iVar6 = FUN_0017347d();\n            return (ulong)(iVar6 == 0);\n          }" if (parenthesized_expression "(DAT_00215aac < DAT_00215aa8)" ( (binary_expression "DAT_00215aac < DAT_00215aa8" identifier < identifier) )) (compound_statement "{\n            iVar6 = FUN_0017347d();\n            return (ulong)(iVar6 == 0);\n          }" { (expression_statement "iVar6 = FUN_0017347d();" (assignment_expression "iVar6 = FUN_0017347d()" identifier = (call_expression "FUN_0017347d()" identifier (argument_list "()" ( )))) ;) (return_statement "return (ulong)(iVar6 == 0);" return (call_expression "(ulong)(iVar6 == 0)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) ))) ;) })) (expression_statement "FUN_001727af();" (call_expression "FUN_001727af()" identifier (argument_list "()" ( ))) ;) })) }) (else_clause "else if ((cVar2 == '(') && (**(char **)(lVar5 + 8 + lVar1) == ')')) {\n        DAT_00215aac = DAT_00215aa8;\n        return (ulong)(*pcVar3 != '\0');\n      }" else (if_statement "if ((cVar2 == '(') && (**(char **)(lVar5 + 8 + lVar1) == ')')) {\n        DAT_00215aac = DAT_00215aa8;\n        return (ulong)(*pcVar3 != '\0');\n      }" if (parenthesized_expression "((cVar2 == '(') && (**(char **)(lVar5 + 8 + lVar1) == ')'))" ( (binary_expression "(cVar2 == '(') && (**(char **)(lVar5 + 8 + lVar1) == ')')" (parenthesized_expression "(cVar2 == '(')" ( (binary_expression "cVar2 == '('" identifier == (char_literal "'('" ' character ')) )) && (parenthesized_expression "(**(char **)(lVar5 + 8 + lVar1) == ')')" ( (binary_expression "**(char **)(lVar5 + 8 + lVar1) == ')'" (pointer_expression "**(char **)(lVar5 + 8 + lVar1)" * (pointer_expression "*(char **)(lVar5 + 8 + lVar1)" * (cast_expression "(char **)(lVar5 + 8 + lVar1)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar5 + 8 + lVar1)" ( (binary_expression "lVar5 + 8 + lVar1" (binary_expression "lVar5 + 8" identifier + number_literal) + identifier) ))))) == (char_literal "')'" ' character ')) ))) )) (compound_statement "{\n        DAT_00215aac = DAT_00215aa8;\n        return (ulong)(*pcVar3 != '\0');\n      }" { (expression_statement "DAT_00215aac = DAT_00215aa8;" (assignment_expression "DAT_00215aac = DAT_00215aa8" identifier = identifier) ;) (return_statement "return (ulong)(*pcVar3 != '\0');" return (call_expression "(ulong)(*pcVar3 != '\0')" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(*pcVar3 != '\0')" ( (binary_expression "*pcVar3 != '\0'" (pointer_expression "*pcVar3" * identifier) != (char_literal "'\0'" ' escape_sequence ')) ))) ;) })))) (expression_statement "uVar8 = dcgettext(0,"%s: binary operator expected",5);" (assignment_expression "uVar8 = dcgettext(0,"%s: binary operator expected",5)" identifier = (call_expression "dcgettext(0,"%s: binary operator expected",5)" identifier (argument_list "(0,"%s: binary operator expected",5)" ( number_literal , (string_literal ""%s: binary operator expected"" " string_content ") , number_literal )))) ;) comment (expression_statement "FUN_0017260b(uVar8,pcVar3);" (call_expression "FUN_0017260b(uVar8,pcVar3)" identifier (argument_list "(uVar8,pcVar3)" ( identifier , identifier ))) ;) })) (if_statement "if (cVar2 == 'a') {\n      if (**(char **)(lVar5 + -8 + lVar1) != '\0') {\n        uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');\n      }\n    }\n    else {\n      uVar7 = 1;\n      if (**(char **)(lVar5 + -8 + lVar1) == '\0') {\n        uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');\n      }\n    }" if (parenthesized_expression "(cVar2 == 'a')" ( (binary_expression "cVar2 == 'a'" identifier == (char_literal "'a'" ' character ')) )) (compound_statement "{\n      if (**(char **)(lVar5 + -8 + lVar1) != '\0') {\n        uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');\n      }\n    }" { (if_statement "if (**(char **)(lVar5 + -8 + lVar1) != '\0') {\n        uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');\n      }" if (parenthesized_expression "(**(char **)(lVar5 + -8 + lVar1) != '\0')" ( (binary_expression "**(char **)(lVar5 + -8 + lVar1) != '\0'" (pointer_expression "**(char **)(lVar5 + -8 + lVar1)" * (pointer_expression "*(char **)(lVar5 + -8 + lVar1)" * (cast_expression "(char **)(lVar5 + -8 + lVar1)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar5 + -8 + lVar1)" ( (binary_expression "lVar5 + -8 + lVar1" (binary_expression "lVar5 + -8" identifier + number_literal) + identifier) ))))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');\n      }" { (expression_statement "uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');" (assignment_expression "uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0')" identifier = (call_expression "(ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0')" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(**(char **)(lVar5 + 8 + lVar1) != '\0')" ( (binary_expression "**(char **)(lVar5 + 8 + lVar1) != '\0'" (pointer_expression "**(char **)(lVar5 + 8 + lVar1)" * (pointer_expression "*(char **)(lVar5 + 8 + lVar1)" * (cast_expression "(char **)(lVar5 + 8 + lVar1)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar5 + 8 + lVar1)" ( (binary_expression "lVar5 + 8 + lVar1" (binary_expression "lVar5 + 8" identifier + number_literal) + identifier) ))))) != (char_literal "'\0'" ' escape_sequence ')) )))) ;) })) }) (else_clause "else {\n      uVar7 = 1;\n      if (**(char **)(lVar5 + -8 + lVar1) == '\0') {\n        uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');\n      }\n    }" else (compound_statement "{\n      uVar7 = 1;\n      if (**(char **)(lVar5 + -8 + lVar1) == '\0') {\n        uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');\n      }\n    }" { (expression_statement "uVar7 = 1;" (assignment_expression "uVar7 = 1" identifier = number_literal) ;) (if_statement "if (**(char **)(lVar5 + -8 + lVar1) == '\0') {\n        uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');\n      }" if (parenthesized_expression "(**(char **)(lVar5 + -8 + lVar1) == '\0')" ( (binary_expression "**(char **)(lVar5 + -8 + lVar1) == '\0'" (pointer_expression "**(char **)(lVar5 + -8 + lVar1)" * (pointer_expression "*(char **)(lVar5 + -8 + lVar1)" * (cast_expression "(char **)(lVar5 + -8 + lVar1)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar5 + -8 + lVar1)" ( (binary_expression "lVar5 + -8 + lVar1" (binary_expression "lVar5 + -8" identifier + number_literal) + identifier) ))))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');\n      }" { (expression_statement "uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');" (assignment_expression "uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0')" identifier = (call_expression "(ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0')" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(**(char **)(lVar5 + 8 + lVar1) != '\0')" ( (binary_expression "**(char **)(lVar5 + 8 + lVar1) != '\0'" (pointer_expression "**(char **)(lVar5 + 8 + lVar1)" * (pointer_expression "*(char **)(lVar5 + 8 + lVar1)" * (cast_expression "(char **)(lVar5 + 8 + lVar1)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar5 + 8 + lVar1)" ( (binary_expression "lVar5 + 8 + lVar1" (binary_expression "lVar5 + 8" identifier + number_literal) + identifier) ))))) != (char_literal "'\0'" ' escape_sequence ')) )))) ;) })) }))) }) (else_clause "else {\n    uVar7 = FUN_00173274();\n  }" else (compound_statement "{\n    uVar7 = FUN_00173274();\n  }" { (expression_statement "uVar7 = FUN_00173274();" (assignment_expression "uVar7 = FUN_00173274()" identifier = (call_expression "FUN_00173274()" identifier (argument_list "()" ( )))) ;) }))) (expression_statement "DAT_00215aac = DAT_00215aa8;" (assignment_expression "DAT_00215aac = DAT_00215aa8" identifier = identifier) ;) (return_statement "return uVar7;" return identifier ;) })))
(translation_unit "/* WARNING: Unknown calling convention */\n\nint three_arguments(void)\n\n{\n  char cVar1;\n  char *op;\n  char **ppcVar2;\n  int iVar3;\n  uint uVar4;\n  int iVar5;\n  long lVar6;\n  char *format;\n  \n  iVar5 = pos;\n  ppcVar2 = argv;\n  lVar6 = (long)pos;\n  op = argv[lVar6 + 1];\n  iVar3 = test_binop(op);\n  if (iVar3 == 0) {\n    if ((*op == '-') && (((cVar1 = op[1], cVar1 == 'a' || (cVar1 == 'o')) && (op[2] == '\0')))) {\n      if (cVar1 == 'a') {\n        uVar4 = 0;\n        if (*ppcVar2[lVar6] != '\0') {\n          uVar4 = (uint)(*ppcVar2[lVar6 + 2] != '\0');\n        }\n      }\n      else {\n        uVar4 = 1;\n        if (*ppcVar2[lVar6] == '\0') {\n          uVar4 = (uint)(*ppcVar2[lVar6 + 2] != '\0');\n        }\n      }\n      pos = argc;\n    }\n    else {\n      cVar1 = *ppcVar2[lVar6];\n      if (cVar1 == '!') {\n        if (ppcVar2[lVar6][1] != '\0') goto LAB_00173641;\n        pos = iVar5 + 1;\n        if (argc <= pos) {\n                    /* WARNING: Subroutine does not return */\n          beyond();\n        }\n        iVar5 = two_arguments();\n        uVar4 = (uint)(iVar5 == 0);\n      }\n      else {\n        if ((cVar1 != '(') || (*ppcVar2[lVar6 + 2] != ')')) {\nLAB_00173641:\n          format = (char *)dcgettext(0,"%s: binary operator expected",5);\n                    /* WARNING: Subroutine does not return */\n          test_syntax_error(format,op);\n        }\n        uVar4 = (uint)(*op != '\0');\n        pos = argc;\n      }\n    }\n  }\n  else {\n    uVar4 = binary_operator();\n    pos = argc;\n  }\n  return uVar4;\n}\n\n" comment (function_definition "int three_arguments(void)\n\n{\n  char cVar1;\n  char *op;\n  char **ppcVar2;\n  int iVar3;\n  uint uVar4;\n  int iVar5;\n  long lVar6;\n  char *format;\n  \n  iVar5 = pos;\n  ppcVar2 = argv;\n  lVar6 = (long)pos;\n  op = argv[lVar6 + 1];\n  iVar3 = test_binop(op);\n  if (iVar3 == 0) {\n    if ((*op == '-') && (((cVar1 = op[1], cVar1 == 'a' || (cVar1 == 'o')) && (op[2] == '\0')))) {\n      if (cVar1 == 'a') {\n        uVar4 = 0;\n        if (*ppcVar2[lVar6] != '\0') {\n          uVar4 = (uint)(*ppcVar2[lVar6 + 2] != '\0');\n        }\n      }\n      else {\n        uVar4 = 1;\n        if (*ppcVar2[lVar6] == '\0') {\n          uVar4 = (uint)(*ppcVar2[lVar6 + 2] != '\0');\n        }\n      }\n      pos = argc;\n    }\n    else {\n      cVar1 = *ppcVar2[lVar6];\n      if (cVar1 == '!') {\n        if (ppcVar2[lVar6][1] != '\0') goto LAB_00173641;\n        pos = iVar5 + 1;\n        if (argc <= pos) {\n                    /* WARNING: Subroutine does not return */\n          beyond();\n        }\n        iVar5 = two_arguments();\n        uVar4 = (uint)(iVar5 == 0);\n      }\n      else {\n        if ((cVar1 != '(') || (*ppcVar2[lVar6 + 2] != ')')) {\nLAB_00173641:\n          format = (char *)dcgettext(0,"%s: binary operator expected",5);\n                    /* WARNING: Subroutine does not return */\n          test_syntax_error(format,op);\n        }\n        uVar4 = (uint)(*op != '\0');\n        pos = argc;\n      }\n    }\n  }\n  else {\n    uVar4 = binary_operator();\n    pos = argc;\n  }\n  return uVar4;\n}" primitive_type (function_declarator "three_arguments(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  char cVar1;\n  char *op;\n  char **ppcVar2;\n  int iVar3;\n  uint uVar4;\n  int iVar5;\n  long lVar6;\n  char *format;\n  \n  iVar5 = pos;\n  ppcVar2 = argv;\n  lVar6 = (long)pos;\n  op = argv[lVar6 + 1];\n  iVar3 = test_binop(op);\n  if (iVar3 == 0) {\n    if ((*op == '-') && (((cVar1 = op[1], cVar1 == 'a' || (cVar1 == 'o')) && (op[2] == '\0')))) {\n      if (cVar1 == 'a') {\n        uVar4 = 0;\n        if (*ppcVar2[lVar6] != '\0') {\n          uVar4 = (uint)(*ppcVar2[lVar6 + 2] != '\0');\n        }\n      }\n      else {\n        uVar4 = 1;\n        if (*ppcVar2[lVar6] == '\0') {\n          uVar4 = (uint)(*ppcVar2[lVar6 + 2] != '\0');\n        }\n      }\n      pos = argc;\n    }\n    else {\n      cVar1 = *ppcVar2[lVar6];\n      if (cVar1 == '!') {\n        if (ppcVar2[lVar6][1] != '\0') goto LAB_00173641;\n        pos = iVar5 + 1;\n        if (argc <= pos) {\n                    /* WARNING: Subroutine does not return */\n          beyond();\n        }\n        iVar5 = two_arguments();\n        uVar4 = (uint)(iVar5 == 0);\n      }\n      else {\n        if ((cVar1 != '(') || (*ppcVar2[lVar6 + 2] != ')')) {\nLAB_00173641:\n          format = (char *)dcgettext(0,"%s: binary operator expected",5);\n                    /* WARNING: Subroutine does not return */\n          test_syntax_error(format,op);\n        }\n        uVar4 = (uint)(*op != '\0');\n        pos = argc;\n      }\n    }\n  }\n  else {\n    uVar4 = binary_operator();\n    pos = argc;\n  }\n  return uVar4;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "char *op;" primitive_type (pointer_declarator "*op" * identifier) ;) (declaration "char **ppcVar2;" primitive_type (pointer_declarator "**ppcVar2" * (pointer_declarator "*ppcVar2" * identifier)) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "char *format;" primitive_type (pointer_declarator "*format" * identifier) ;) (expression_statement "iVar5 = pos;" (assignment_expression "iVar5 = pos" identifier = identifier) ;) (expression_statement "ppcVar2 = argv;" (assignment_expression "ppcVar2 = argv" identifier = identifier) ;) (expression_statement "lVar6 = (long)pos;" (assignment_expression "lVar6 = (long)pos" identifier = (cast_expression "(long)pos" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "op = argv[lVar6 + 1];" (assignment_expression "op = argv[lVar6 + 1]" identifier = (subscript_expression "argv[lVar6 + 1]" identifier [ (binary_expression "lVar6 + 1" identifier + number_literal) ])) ;) (expression_statement "iVar3 = test_binop(op);" (assignment_expression "iVar3 = test_binop(op)" identifier = (call_expression "test_binop(op)" identifier (argument_list "(op)" ( identifier )))) ;) (if_statement "if (iVar3 == 0) {\n    if ((*op == '-') && (((cVar1 = op[1], cVar1 == 'a' || (cVar1 == 'o')) && (op[2] == '\0')))) {\n      if (cVar1 == 'a') {\n        uVar4 = 0;\n        if (*ppcVar2[lVar6] != '\0') {\n          uVar4 = (uint)(*ppcVar2[lVar6 + 2] != '\0');\n        }\n      }\n      else {\n        uVar4 = 1;\n        if (*ppcVar2[lVar6] == '\0') {\n          uVar4 = (uint)(*ppcVar2[lVar6 + 2] != '\0');\n        }\n      }\n      pos = argc;\n    }\n    else {\n      cVar1 = *ppcVar2[lVar6];\n      if (cVar1 == '!') {\n        if (ppcVar2[lVar6][1] != '\0') goto LAB_00173641;\n        pos = iVar5 + 1;\n        if (argc <= pos) {\n                    /* WARNING: Subroutine does not return */\n          beyond();\n        }\n        iVar5 = two_arguments();\n        uVar4 = (uint)(iVar5 == 0);\n      }\n      else {\n        if ((cVar1 != '(') || (*ppcVar2[lVar6 + 2] != ')')) {\nLAB_00173641:\n          format = (char *)dcgettext(0,"%s: binary operator expected",5);\n                    /* WARNING: Subroutine does not return */\n          test_syntax_error(format,op);\n        }\n        uVar4 = (uint)(*op != '\0');\n        pos = argc;\n      }\n    }\n  }\n  else {\n    uVar4 = binary_operator();\n    pos = argc;\n  }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n    if ((*op == '-') && (((cVar1 = op[1], cVar1 == 'a' || (cVar1 == 'o')) && (op[2] == '\0')))) {\n      if (cVar1 == 'a') {\n        uVar4 = 0;\n        if (*ppcVar2[lVar6] != '\0') {\n          uVar4 = (uint)(*ppcVar2[lVar6 + 2] != '\0');\n        }\n      }\n      else {\n        uVar4 = 1;\n        if (*ppcVar2[lVar6] == '\0') {\n          uVar4 = (uint)(*ppcVar2[lVar6 + 2] != '\0');\n        }\n      }\n      pos = argc;\n    }\n    else {\n      cVar1 = *ppcVar2[lVar6];\n      if (cVar1 == '!') {\n        if (ppcVar2[lVar6][1] != '\0') goto LAB_00173641;\n        pos = iVar5 + 1;\n        if (argc <= pos) {\n                    /* WARNING: Subroutine does not return */\n          beyond();\n        }\n        iVar5 = two_arguments();\n        uVar4 = (uint)(iVar5 == 0);\n      }\n      else {\n        if ((cVar1 != '(') || (*ppcVar2[lVar6 + 2] != ')')) {\nLAB_00173641:\n          format = (char *)dcgettext(0,"%s: binary operator expected",5);\n                    /* WARNING: Subroutine does not return */\n          test_syntax_error(format,op);\n        }\n        uVar4 = (uint)(*op != '\0');\n        pos = argc;\n      }\n    }\n  }" { (if_statement "if ((*op == '-') && (((cVar1 = op[1], cVar1 == 'a' || (cVar1 == 'o')) && (op[2] == '\0')))) {\n      if (cVar1 == 'a') {\n        uVar4 = 0;\n        if (*ppcVar2[lVar6] != '\0') {\n          uVar4 = (uint)(*ppcVar2[lVar6 + 2] != '\0');\n        }\n      }\n      else {\n        uVar4 = 1;\n        if (*ppcVar2[lVar6] == '\0') {\n          uVar4 = (uint)(*ppcVar2[lVar6 + 2] != '\0');\n        }\n      }\n      pos = argc;\n    }\n    else {\n      cVar1 = *ppcVar2[lVar6];\n      if (cVar1 == '!') {\n        if (ppcVar2[lVar6][1] != '\0') goto LAB_00173641;\n        pos = iVar5 + 1;\n        if (argc <= pos) {\n                    /* WARNING: Subroutine does not return */\n          beyond();\n        }\n        iVar5 = two_arguments();\n        uVar4 = (uint)(iVar5 == 0);\n      }\n      else {\n        if ((cVar1 != '(') || (*ppcVar2[lVar6 + 2] != ')')) {\nLAB_00173641:\n          format = (char *)dcgettext(0,"%s: binary operator expected",5);\n                    /* WARNING: Subroutine does not return */\n          test_syntax_error(format,op);\n        }\n        uVar4 = (uint)(*op != '\0');\n        pos = argc;\n      }\n    }" if (parenthesized_expression "((*op == '-') && (((cVar1 = op[1], cVar1 == 'a' || (cVar1 == 'o')) && (op[2] == '\0'))))" ( (binary_expression "(*op == '-') && (((cVar1 = op[1], cVar1 == 'a' || (cVar1 == 'o')) && (op[2] == '\0')))" (parenthesized_expression "(*op == '-')" ( (binary_expression "*op == '-'" (pointer_expression "*op" * identifier) == (char_literal "'-'" ' character ')) )) && (parenthesized_expression "(((cVar1 = op[1], cVar1 == 'a' || (cVar1 == 'o')) && (op[2] == '\0')))" ( (parenthesized_expression "((cVar1 = op[1], cVar1 == 'a' || (cVar1 == 'o')) && (op[2] == '\0'))" ( (binary_expression "(cVar1 = op[1], cVar1 == 'a' || (cVar1 == 'o')) && (op[2] == '\0')" (parenthesized_expression "(cVar1 = op[1], cVar1 == 'a' || (cVar1 == 'o'))" ( (comma_expression "cVar1 = op[1], cVar1 == 'a' || (cVar1 == 'o')" (assignment_expression "cVar1 = op[1]" identifier = (subscript_expression "op[1]" identifier [ number_literal ])) , (binary_expression "cVar1 == 'a' || (cVar1 == 'o')" (binary_expression "cVar1 == 'a'" identifier == (char_literal "'a'" ' character ')) || (parenthesized_expression "(cVar1 == 'o')" ( (binary_expression "cVar1 == 'o'" identifier == (char_literal "'o'" ' character ')) )))) )) && (parenthesized_expression "(op[2] == '\0')" ( (binary_expression "op[2] == '\0'" (subscript_expression "op[2]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) ))) )) ))) )) (compound_statement "{\n      if (cVar1 == 'a') {\n        uVar4 = 0;\n        if (*ppcVar2[lVar6] != '\0') {\n          uVar4 = (uint)(*ppcVar2[lVar6 + 2] != '\0');\n        }\n      }\n      else {\n        uVar4 = 1;\n        if (*ppcVar2[lVar6] == '\0') {\n          uVar4 = (uint)(*ppcVar2[lVar6 + 2] != '\0');\n        }\n      }\n      pos = argc;\n    }" { (if_statement "if (cVar1 == 'a') {\n        uVar4 = 0;\n        if (*ppcVar2[lVar6] != '\0') {\n          uVar4 = (uint)(*ppcVar2[lVar6 + 2] != '\0');\n        }\n      }\n      else {\n        uVar4 = 1;\n        if (*ppcVar2[lVar6] == '\0') {\n          uVar4 = (uint)(*ppcVar2[lVar6 + 2] != '\0');\n        }\n      }" if (parenthesized_expression "(cVar1 == 'a')" ( (binary_expression "cVar1 == 'a'" identifier == (char_literal "'a'" ' character ')) )) (compound_statement "{\n        uVar4 = 0;\n        if (*ppcVar2[lVar6] != '\0') {\n          uVar4 = (uint)(*ppcVar2[lVar6 + 2] != '\0');\n        }\n      }" { (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (if_statement "if (*ppcVar2[lVar6] != '\0') {\n          uVar4 = (uint)(*ppcVar2[lVar6 + 2] != '\0');\n        }" if (parenthesized_expression "(*ppcVar2[lVar6] != '\0')" ( (binary_expression "*ppcVar2[lVar6] != '\0'" (pointer_expression "*ppcVar2[lVar6]" * (subscript_expression "ppcVar2[lVar6]" identifier [ identifier ])) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          uVar4 = (uint)(*ppcVar2[lVar6 + 2] != '\0');\n        }" { (expression_statement "uVar4 = (uint)(*ppcVar2[lVar6 + 2] != '\0');" (assignment_expression "uVar4 = (uint)(*ppcVar2[lVar6 + 2] != '\0')" identifier = (call_expression "(uint)(*ppcVar2[lVar6 + 2] != '\0')" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*ppcVar2[lVar6 + 2] != '\0')" ( (binary_expression "*ppcVar2[lVar6 + 2] != '\0'" (pointer_expression "*ppcVar2[lVar6 + 2]" * (subscript_expression "ppcVar2[lVar6 + 2]" identifier [ (binary_expression "lVar6 + 2" identifier + number_literal) ])) != (char_literal "'\0'" ' escape_sequence ')) )))) ;) })) }) (else_clause "else {\n        uVar4 = 1;\n        if (*ppcVar2[lVar6] == '\0') {\n          uVar4 = (uint)(*ppcVar2[lVar6 + 2] != '\0');\n        }\n      }" else (compound_statement "{\n        uVar4 = 1;\n        if (*ppcVar2[lVar6] == '\0') {\n          uVar4 = (uint)(*ppcVar2[lVar6 + 2] != '\0');\n        }\n      }" { (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" identifier = number_literal) ;) (if_statement "if (*ppcVar2[lVar6] == '\0') {\n          uVar4 = (uint)(*ppcVar2[lVar6 + 2] != '\0');\n        }" if (parenthesized_expression "(*ppcVar2[lVar6] == '\0')" ( (binary_expression "*ppcVar2[lVar6] == '\0'" (pointer_expression "*ppcVar2[lVar6]" * (subscript_expression "ppcVar2[lVar6]" identifier [ identifier ])) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          uVar4 = (uint)(*ppcVar2[lVar6 + 2] != '\0');\n        }" { (expression_statement "uVar4 = (uint)(*ppcVar2[lVar6 + 2] != '\0');" (assignment_expression "uVar4 = (uint)(*ppcVar2[lVar6 + 2] != '\0')" identifier = (call_expression "(uint)(*ppcVar2[lVar6 + 2] != '\0')" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*ppcVar2[lVar6 + 2] != '\0')" ( (binary_expression "*ppcVar2[lVar6 + 2] != '\0'" (pointer_expression "*ppcVar2[lVar6 + 2]" * (subscript_expression "ppcVar2[lVar6 + 2]" identifier [ (binary_expression "lVar6 + 2" identifier + number_literal) ])) != (char_literal "'\0'" ' escape_sequence ')) )))) ;) })) }))) (expression_statement "pos = argc;" (assignment_expression "pos = argc" identifier = identifier) ;) }) (else_clause "else {\n      cVar1 = *ppcVar2[lVar6];\n      if (cVar1 == '!') {\n        if (ppcVar2[lVar6][1] != '\0') goto LAB_00173641;\n        pos = iVar5 + 1;\n        if (argc <= pos) {\n                    /* WARNING: Subroutine does not return */\n          beyond();\n        }\n        iVar5 = two_arguments();\n        uVar4 = (uint)(iVar5 == 0);\n      }\n      else {\n        if ((cVar1 != '(') || (*ppcVar2[lVar6 + 2] != ')')) {\nLAB_00173641:\n          format = (char *)dcgettext(0,"%s: binary operator expected",5);\n                    /* WARNING: Subroutine does not return */\n          test_syntax_error(format,op);\n        }\n        uVar4 = (uint)(*op != '\0');\n        pos = argc;\n      }\n    }" else (compound_statement "{\n      cVar1 = *ppcVar2[lVar6];\n      if (cVar1 == '!') {\n        if (ppcVar2[lVar6][1] != '\0') goto LAB_00173641;\n        pos = iVar5 + 1;\n        if (argc <= pos) {\n                    /* WARNING: Subroutine does not return */\n          beyond();\n        }\n        iVar5 = two_arguments();\n        uVar4 = (uint)(iVar5 == 0);\n      }\n      else {\n        if ((cVar1 != '(') || (*ppcVar2[lVar6 + 2] != ')')) {\nLAB_00173641:\n          format = (char *)dcgettext(0,"%s: binary operator expected",5);\n                    /* WARNING: Subroutine does not return */\n          test_syntax_error(format,op);\n        }\n        uVar4 = (uint)(*op != '\0');\n        pos = argc;\n      }\n    }" { (expression_statement "cVar1 = *ppcVar2[lVar6];" (assignment_expression "cVar1 = *ppcVar2[lVar6]" identifier = (pointer_expression "*ppcVar2[lVar6]" * (subscript_expression "ppcVar2[lVar6]" identifier [ identifier ]))) ;) (if_statement "if (cVar1 == '!') {\n        if (ppcVar2[lVar6][1] != '\0') goto LAB_00173641;\n        pos = iVar5 + 1;\n        if (argc <= pos) {\n                    /* WARNING: Subroutine does not return */\n          beyond();\n        }\n        iVar5 = two_arguments();\n        uVar4 = (uint)(iVar5 == 0);\n      }\n      else {\n        if ((cVar1 != '(') || (*ppcVar2[lVar6 + 2] != ')')) {\nLAB_00173641:\n          format = (char *)dcgettext(0,"%s: binary operator expected",5);\n                    /* WARNING: Subroutine does not return */\n          test_syntax_error(format,op);\n        }\n        uVar4 = (uint)(*op != '\0');\n        pos = argc;\n      }" if (parenthesized_expression "(cVar1 == '!')" ( (binary_expression "cVar1 == '!'" identifier == (char_literal "'!'" ' character ')) )) (compound_statement "{\n        if (ppcVar2[lVar6][1] != '\0') goto LAB_00173641;\n        pos = iVar5 + 1;\n        if (argc <= pos) {\n                    /* WARNING: Subroutine does not return */\n          beyond();\n        }\n        iVar5 = two_arguments();\n        uVar4 = (uint)(iVar5 == 0);\n      }" { (if_statement "if (ppcVar2[lVar6][1] != '\0') goto LAB_00173641;" if (parenthesized_expression "(ppcVar2[lVar6][1] != '\0')" ( (binary_expression "ppcVar2[lVar6][1] != '\0'" (subscript_expression "ppcVar2[lVar6][1]" (subscript_expression "ppcVar2[lVar6]" identifier [ identifier ]) [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00173641;" goto statement_identifier ;)) (expression_statement "pos = iVar5 + 1;" (assignment_expression "pos = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) (if_statement "if (argc <= pos) {\n                    /* WARNING: Subroutine does not return */\n          beyond();\n        }" if (parenthesized_expression "(argc <= pos)" ( (binary_expression "argc <= pos" identifier <= identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n          beyond();\n        }" { comment (expression_statement "beyond();" (call_expression "beyond()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "iVar5 = two_arguments();" (assignment_expression "iVar5 = two_arguments()" identifier = (call_expression "two_arguments()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar4 = (uint)(iVar5 == 0);" (assignment_expression "uVar4 = (uint)(iVar5 == 0)" identifier = (call_expression "(uint)(iVar5 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )))) ;) }) (else_clause "else {\n        if ((cVar1 != '(') || (*ppcVar2[lVar6 + 2] != ')')) {\nLAB_00173641:\n          format = (char *)dcgettext(0,"%s: binary operator expected",5);\n                    /* WARNING: Subroutine does not return */\n          test_syntax_error(format,op);\n        }\n        uVar4 = (uint)(*op != '\0');\n        pos = argc;\n      }" else (compound_statement "{\n        if ((cVar1 != '(') || (*ppcVar2[lVar6 + 2] != ')')) {\nLAB_00173641:\n          format = (char *)dcgettext(0,"%s: binary operator expected",5);\n                    /* WARNING: Subroutine does not return */\n          test_syntax_error(format,op);\n        }\n        uVar4 = (uint)(*op != '\0');\n        pos = argc;\n      }" { (if_statement "if ((cVar1 != '(') || (*ppcVar2[lVar6 + 2] != ')')) {\nLAB_00173641:\n          format = (char *)dcgettext(0,"%s: binary operator expected",5);\n                    /* WARNING: Subroutine does not return */\n          test_syntax_error(format,op);\n        }" if (parenthesized_expression "((cVar1 != '(') || (*ppcVar2[lVar6 + 2] != ')'))" ( (binary_expression "(cVar1 != '(') || (*ppcVar2[lVar6 + 2] != ')')" (parenthesized_expression "(cVar1 != '(')" ( (binary_expression "cVar1 != '('" identifier != (char_literal "'('" ' character ')) )) || (parenthesized_expression "(*ppcVar2[lVar6 + 2] != ')')" ( (binary_expression "*ppcVar2[lVar6 + 2] != ')'" (pointer_expression "*ppcVar2[lVar6 + 2]" * (subscript_expression "ppcVar2[lVar6 + 2]" identifier [ (binary_expression "lVar6 + 2" identifier + number_literal) ])) != (char_literal "')'" ' character ')) ))) )) (compound_statement "{\nLAB_00173641:\n          format = (char *)dcgettext(0,"%s: binary operator expected",5);\n                    /* WARNING: Subroutine does not return */\n          test_syntax_error(format,op);\n        }" { (labeled_statement "LAB_00173641:\n          format = (char *)dcgettext(0,"%s: binary operator expected",5);" statement_identifier : (expression_statement "format = (char *)dcgettext(0,"%s: binary operator expected",5);" (assignment_expression "format = (char *)dcgettext(0,"%s: binary operator expected",5)" identifier = (cast_expression "(char *)dcgettext(0,"%s: binary operator expected",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"%s: binary operator expected",5)" identifier (argument_list "(0,"%s: binary operator expected",5)" ( number_literal , (string_literal ""%s: binary operator expected"" " string_content ") , number_literal ))))) ;)) comment (expression_statement "test_syntax_error(format,op);" (call_expression "test_syntax_error(format,op)" identifier (argument_list "(format,op)" ( identifier , identifier ))) ;) })) (expression_statement "uVar4 = (uint)(*op != '\0');" (assignment_expression "uVar4 = (uint)(*op != '\0')" identifier = (call_expression "(uint)(*op != '\0')" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*op != '\0')" ( (binary_expression "*op != '\0'" (pointer_expression "*op" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )))) ;) (expression_statement "pos = argc;" (assignment_expression "pos = argc" identifier = identifier) ;) }))) }))) }) (else_clause "else {\n    uVar4 = binary_operator();\n    pos = argc;\n  }" else (compound_statement "{\n    uVar4 = binary_operator();\n    pos = argc;\n  }" { (expression_statement "uVar4 = binary_operator();" (assignment_expression "uVar4 = binary_operator()" identifier = (call_expression "binary_operator()" identifier (argument_list "()" ( )))) ;) (expression_statement "pos = argc;" (assignment_expression "pos = argc" identifier = identifier) ;) }))) (return_statement "return uVar4;" return identifier ;) })))
(translation_unit "ulong FUN_0017351a(void)\n\n{\n  long lVar1;\n  char cVar2;\n  char *pcVar3;\n  char *pcVar4;\n  long lVar5;\n  int iVar6;\n  ulong uVar7;\n  undefined8 uVar8;\n  \n  iVar6 = DAT_00215aac;\n  lVar5 = DAT_00215aa0;\n  lVar1 = ((long)DAT_00215aac + 1) * 8;\n  pcVar3 = *(char **)(DAT_00215aa0 + ((long)DAT_00215aac + 1) * 8);\n  uVar7 = test_binop(pcVar3);\n  if ((int)uVar7 == 0) {\n    if ((*pcVar3 != '-') ||\n       (((cVar2 = pcVar3[1], cVar2 != 'a' && (cVar2 != 'o')) || (pcVar3[2] != '\0')))) {\n      pcVar4 = *(char **)(lVar5 + -8 + lVar1);\n      cVar2 = *pcVar4;\n      if (cVar2 == '!') {\n        if (pcVar4[1] == '\0') {\n          DAT_00215aac = iVar6 + 1;\n          if (DAT_00215aac < DAT_00215aa8) {\n            iVar6 = FUN_0017347d();\n            return (ulong)(iVar6 == 0);\n          }\n          FUN_001727af();\n        }\n      }\n      else if ((cVar2 == '(') && (**(char **)(lVar5 + 8 + lVar1) == ')')) {\n        DAT_00215aac = DAT_00215aa8;\n        return (ulong)(*pcVar3 != '\0');\n      }\n      uVar8 = dcgettext(0,"%s: binary operator expected",5);\n                    \n      FUN_0017260b(uVar8,pcVar3);\n    }\n    if (cVar2 == 'a') {\n      if (**(char **)(lVar5 + -8 + lVar1) != '\0') {\n        uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');\n      }\n    }\n    else {\n      uVar7 = 1;\n      if (**(char **)(lVar5 + -8 + lVar1) == '\0') {\n        uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');\n      }\n    }\n  }\n  else {\n    uVar7 = FUN_00173274();\n  }\n  DAT_00215aac = DAT_00215aa8;\n  return uVar7;\n}\n\n" (function_definition "ulong FUN_0017351a(void)\n\n{\n  long lVar1;\n  char cVar2;\n  char *pcVar3;\n  char *pcVar4;\n  long lVar5;\n  int iVar6;\n  ulong uVar7;\n  undefined8 uVar8;\n  \n  iVar6 = DAT_00215aac;\n  lVar5 = DAT_00215aa0;\n  lVar1 = ((long)DAT_00215aac + 1) * 8;\n  pcVar3 = *(char **)(DAT_00215aa0 + ((long)DAT_00215aac + 1) * 8);\n  uVar7 = test_binop(pcVar3);\n  if ((int)uVar7 == 0) {\n    if ((*pcVar3 != '-') ||\n       (((cVar2 = pcVar3[1], cVar2 != 'a' && (cVar2 != 'o')) || (pcVar3[2] != '\0')))) {\n      pcVar4 = *(char **)(lVar5 + -8 + lVar1);\n      cVar2 = *pcVar4;\n      if (cVar2 == '!') {\n        if (pcVar4[1] == '\0') {\n          DAT_00215aac = iVar6 + 1;\n          if (DAT_00215aac < DAT_00215aa8) {\n            iVar6 = FUN_0017347d();\n            return (ulong)(iVar6 == 0);\n          }\n          FUN_001727af();\n        }\n      }\n      else if ((cVar2 == '(') && (**(char **)(lVar5 + 8 + lVar1) == ')')) {\n        DAT_00215aac = DAT_00215aa8;\n        return (ulong)(*pcVar3 != '\0');\n      }\n      uVar8 = dcgettext(0,"%s: binary operator expected",5);\n                    \n      FUN_0017260b(uVar8,pcVar3);\n    }\n    if (cVar2 == 'a') {\n      if (**(char **)(lVar5 + -8 + lVar1) != '\0') {\n        uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');\n      }\n    }\n    else {\n      uVar7 = 1;\n      if (**(char **)(lVar5 + -8 + lVar1) == '\0') {\n        uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');\n      }\n    }\n  }\n  else {\n    uVar7 = FUN_00173274();\n  }\n  DAT_00215aac = DAT_00215aa8;\n  return uVar7;\n}" type_identifier (function_declarator "FUN_0017351a(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  long lVar1;\n  char cVar2;\n  char *pcVar3;\n  char *pcVar4;\n  long lVar5;\n  int iVar6;\n  ulong uVar7;\n  undefined8 uVar8;\n  \n  iVar6 = DAT_00215aac;\n  lVar5 = DAT_00215aa0;\n  lVar1 = ((long)DAT_00215aac + 1) * 8;\n  pcVar3 = *(char **)(DAT_00215aa0 + ((long)DAT_00215aac + 1) * 8);\n  uVar7 = test_binop(pcVar3);\n  if ((int)uVar7 == 0) {\n    if ((*pcVar3 != '-') ||\n       (((cVar2 = pcVar3[1], cVar2 != 'a' && (cVar2 != 'o')) || (pcVar3[2] != '\0')))) {\n      pcVar4 = *(char **)(lVar5 + -8 + lVar1);\n      cVar2 = *pcVar4;\n      if (cVar2 == '!') {\n        if (pcVar4[1] == '\0') {\n          DAT_00215aac = iVar6 + 1;\n          if (DAT_00215aac < DAT_00215aa8) {\n            iVar6 = FUN_0017347d();\n            return (ulong)(iVar6 == 0);\n          }\n          FUN_001727af();\n        }\n      }\n      else if ((cVar2 == '(') && (**(char **)(lVar5 + 8 + lVar1) == ')')) {\n        DAT_00215aac = DAT_00215aa8;\n        return (ulong)(*pcVar3 != '\0');\n      }\n      uVar8 = dcgettext(0,"%s: binary operator expected",5);\n                    \n      FUN_0017260b(uVar8,pcVar3);\n    }\n    if (cVar2 == 'a') {\n      if (**(char **)(lVar5 + -8 + lVar1) != '\0') {\n        uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');\n      }\n    }\n    else {\n      uVar7 = 1;\n      if (**(char **)(lVar5 + -8 + lVar1) == '\0') {\n        uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');\n      }\n    }\n  }\n  else {\n    uVar7 = FUN_00173274();\n  }\n  DAT_00215aac = DAT_00215aa8;\n  return uVar7;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "undefined8 uVar8;" type_identifier identifier ;) (expression_statement "iVar6 = DAT_00215aac;" (assignment_expression "iVar6 = DAT_00215aac" identifier = identifier) ;) (expression_statement "lVar5 = DAT_00215aa0;" (assignment_expression "lVar5 = DAT_00215aa0" identifier = identifier) ;) (expression_statement "lVar1 = ((long)DAT_00215aac + 1) * 8;" (assignment_expression "lVar1 = ((long)DAT_00215aac + 1) * 8" identifier = (binary_expression "((long)DAT_00215aac + 1) * 8" (parenthesized_expression "((long)DAT_00215aac + 1)" ( (binary_expression "(long)DAT_00215aac + 1" (cast_expression "(long)DAT_00215aac" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )) * number_literal)) ;) (expression_statement "pcVar3 = *(char **)(DAT_00215aa0 + ((long)DAT_00215aac + 1) * 8);" (assignment_expression "pcVar3 = *(char **)(DAT_00215aa0 + ((long)DAT_00215aac + 1) * 8)" identifier = (pointer_expression "*(char **)(DAT_00215aa0 + ((long)DAT_00215aac + 1) * 8)" * (cast_expression "(char **)(DAT_00215aa0 + ((long)DAT_00215aac + 1) * 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(DAT_00215aa0 + ((long)DAT_00215aac + 1) * 8)" ( (binary_expression "DAT_00215aa0 + ((long)DAT_00215aac + 1) * 8" identifier + (binary_expression "((long)DAT_00215aac + 1) * 8" (parenthesized_expression "((long)DAT_00215aac + 1)" ( (binary_expression "(long)DAT_00215aac + 1" (cast_expression "(long)DAT_00215aac" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )) * number_literal)) ))))) ;) (expression_statement "uVar7 = test_binop(pcVar3);" (assignment_expression "uVar7 = test_binop(pcVar3)" identifier = (call_expression "test_binop(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier )))) ;) (if_statement "if ((int)uVar7 == 0) {\n    if ((*pcVar3 != '-') ||\n       (((cVar2 = pcVar3[1], cVar2 != 'a' && (cVar2 != 'o')) || (pcVar3[2] != '\0')))) {\n      pcVar4 = *(char **)(lVar5 + -8 + lVar1);\n      cVar2 = *pcVar4;\n      if (cVar2 == '!') {\n        if (pcVar4[1] == '\0') {\n          DAT_00215aac = iVar6 + 1;\n          if (DAT_00215aac < DAT_00215aa8) {\n            iVar6 = FUN_0017347d();\n            return (ulong)(iVar6 == 0);\n          }\n          FUN_001727af();\n        }\n      }\n      else if ((cVar2 == '(') && (**(char **)(lVar5 + 8 + lVar1) == ')')) {\n        DAT_00215aac = DAT_00215aa8;\n        return (ulong)(*pcVar3 != '\0');\n      }\n      uVar8 = dcgettext(0,"%s: binary operator expected",5);\n                    \n      FUN_0017260b(uVar8,pcVar3);\n    }\n    if (cVar2 == 'a') {\n      if (**(char **)(lVar5 + -8 + lVar1) != '\0') {\n        uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');\n      }\n    }\n    else {\n      uVar7 = 1;\n      if (**(char **)(lVar5 + -8 + lVar1) == '\0') {\n        uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');\n      }\n    }\n  }\n  else {\n    uVar7 = FUN_00173274();\n  }" if (parenthesized_expression "((int)uVar7 == 0)" ( (binary_expression "(int)uVar7 == 0" (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier) == number_literal) )) (compound_statement "{\n    if ((*pcVar3 != '-') ||\n       (((cVar2 = pcVar3[1], cVar2 != 'a' && (cVar2 != 'o')) || (pcVar3[2] != '\0')))) {\n      pcVar4 = *(char **)(lVar5 + -8 + lVar1);\n      cVar2 = *pcVar4;\n      if (cVar2 == '!') {\n        if (pcVar4[1] == '\0') {\n          DAT_00215aac = iVar6 + 1;\n          if (DAT_00215aac < DAT_00215aa8) {\n            iVar6 = FUN_0017347d();\n            return (ulong)(iVar6 == 0);\n          }\n          FUN_001727af();\n        }\n      }\n      else if ((cVar2 == '(') && (**(char **)(lVar5 + 8 + lVar1) == ')')) {\n        DAT_00215aac = DAT_00215aa8;\n        return (ulong)(*pcVar3 != '\0');\n      }\n      uVar8 = dcgettext(0,"%s: binary operator expected",5);\n                    \n      FUN_0017260b(uVar8,pcVar3);\n    }\n    if (cVar2 == 'a') {\n      if (**(char **)(lVar5 + -8 + lVar1) != '\0') {\n        uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');\n      }\n    }\n    else {\n      uVar7 = 1;\n      if (**(char **)(lVar5 + -8 + lVar1) == '\0') {\n        uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');\n      }\n    }\n  }" { (if_statement "if ((*pcVar3 != '-') ||\n       (((cVar2 = pcVar3[1], cVar2 != 'a' && (cVar2 != 'o')) || (pcVar3[2] != '\0')))) {\n      pcVar4 = *(char **)(lVar5 + -8 + lVar1);\n      cVar2 = *pcVar4;\n      if (cVar2 == '!') {\n        if (pcVar4[1] == '\0') {\n          DAT_00215aac = iVar6 + 1;\n          if (DAT_00215aac < DAT_00215aa8) {\n            iVar6 = FUN_0017347d();\n            return (ulong)(iVar6 == 0);\n          }\n          FUN_001727af();\n        }\n      }\n      else if ((cVar2 == '(') && (**(char **)(lVar5 + 8 + lVar1) == ')')) {\n        DAT_00215aac = DAT_00215aa8;\n        return (ulong)(*pcVar3 != '\0');\n      }\n      uVar8 = dcgettext(0,"%s: binary operator expected",5);\n                    \n      FUN_0017260b(uVar8,pcVar3);\n    }" if (parenthesized_expression "((*pcVar3 != '-') ||\n       (((cVar2 = pcVar3[1], cVar2 != 'a' && (cVar2 != 'o')) || (pcVar3[2] != '\0'))))" ( (binary_expression "(*pcVar3 != '-') ||\n       (((cVar2 = pcVar3[1], cVar2 != 'a' && (cVar2 != 'o')) || (pcVar3[2] != '\0')))" (parenthesized_expression "(*pcVar3 != '-')" ( (binary_expression "*pcVar3 != '-'" (pointer_expression "*pcVar3" * identifier) != (char_literal "'-'" ' character ')) )) || (parenthesized_expression "(((cVar2 = pcVar3[1], cVar2 != 'a' && (cVar2 != 'o')) || (pcVar3[2] != '\0')))" ( (parenthesized_expression "((cVar2 = pcVar3[1], cVar2 != 'a' && (cVar2 != 'o')) || (pcVar3[2] != '\0'))" ( (binary_expression "(cVar2 = pcVar3[1], cVar2 != 'a' && (cVar2 != 'o')) || (pcVar3[2] != '\0')" (parenthesized_expression "(cVar2 = pcVar3[1], cVar2 != 'a' && (cVar2 != 'o'))" ( (comma_expression "cVar2 = pcVar3[1], cVar2 != 'a' && (cVar2 != 'o')" (assignment_expression "cVar2 = pcVar3[1]" identifier = (subscript_expression "pcVar3[1]" identifier [ number_literal ])) , (binary_expression "cVar2 != 'a' && (cVar2 != 'o')" (binary_expression "cVar2 != 'a'" identifier != (char_literal "'a'" ' character ')) && (parenthesized_expression "(cVar2 != 'o')" ( (binary_expression "cVar2 != 'o'" identifier != (char_literal "'o'" ' character ')) )))) )) || (parenthesized_expression "(pcVar3[2] != '\0')" ( (binary_expression "pcVar3[2] != '\0'" (subscript_expression "pcVar3[2]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) ))) )) ))) )) (compound_statement "{\n      pcVar4 = *(char **)(lVar5 + -8 + lVar1);\n      cVar2 = *pcVar4;\n      if (cVar2 == '!') {\n        if (pcVar4[1] == '\0') {\n          DAT_00215aac = iVar6 + 1;\n          if (DAT_00215aac < DAT_00215aa8) {\n            iVar6 = FUN_0017347d();\n            return (ulong)(iVar6 == 0);\n          }\n          FUN_001727af();\n        }\n      }\n      else if ((cVar2 == '(') && (**(char **)(lVar5 + 8 + lVar1) == ')')) {\n        DAT_00215aac = DAT_00215aa8;\n        return (ulong)(*pcVar3 != '\0');\n      }\n      uVar8 = dcgettext(0,"%s: binary operator expected",5);\n                    \n      FUN_0017260b(uVar8,pcVar3);\n    }" { (expression_statement "pcVar4 = *(char **)(lVar5 + -8 + lVar1);" (assignment_expression "pcVar4 = *(char **)(lVar5 + -8 + lVar1)" identifier = (pointer_expression "*(char **)(lVar5 + -8 + lVar1)" * (cast_expression "(char **)(lVar5 + -8 + lVar1)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar5 + -8 + lVar1)" ( (binary_expression "lVar5 + -8 + lVar1" (binary_expression "lVar5 + -8" identifier + number_literal) + identifier) ))))) ;) (expression_statement "cVar2 = *pcVar4;" (assignment_expression "cVar2 = *pcVar4" identifier = (pointer_expression "*pcVar4" * identifier)) ;) (if_statement "if (cVar2 == '!') {\n        if (pcVar4[1] == '\0') {\n          DAT_00215aac = iVar6 + 1;\n          if (DAT_00215aac < DAT_00215aa8) {\n            iVar6 = FUN_0017347d();\n            return (ulong)(iVar6 == 0);\n          }\n          FUN_001727af();\n        }\n      }\n      else if ((cVar2 == '(') && (**(char **)(lVar5 + 8 + lVar1) == ')')) {\n        DAT_00215aac = DAT_00215aa8;\n        return (ulong)(*pcVar3 != '\0');\n      }" if (parenthesized_expression "(cVar2 == '!')" ( (binary_expression "cVar2 == '!'" identifier == (char_literal "'!'" ' character ')) )) (compound_statement "{\n        if (pcVar4[1] == '\0') {\n          DAT_00215aac = iVar6 + 1;\n          if (DAT_00215aac < DAT_00215aa8) {\n            iVar6 = FUN_0017347d();\n            return (ulong)(iVar6 == 0);\n          }\n          FUN_001727af();\n        }\n      }" { (if_statement "if (pcVar4[1] == '\0') {\n          DAT_00215aac = iVar6 + 1;\n          if (DAT_00215aac < DAT_00215aa8) {\n            iVar6 = FUN_0017347d();\n            return (ulong)(iVar6 == 0);\n          }\n          FUN_001727af();\n        }" if (parenthesized_expression "(pcVar4[1] == '\0')" ( (binary_expression "pcVar4[1] == '\0'" (subscript_expression "pcVar4[1]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          DAT_00215aac = iVar6 + 1;\n          if (DAT_00215aac < DAT_00215aa8) {\n            iVar6 = FUN_0017347d();\n            return (ulong)(iVar6 == 0);\n          }\n          FUN_001727af();\n        }" { (expression_statement "DAT_00215aac = iVar6 + 1;" (assignment_expression "DAT_00215aac = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (if_statement "if (DAT_00215aac < DAT_00215aa8) {\n            iVar6 = FUN_0017347d();\n            return (ulong)(iVar6 == 0);\n          }" if (parenthesized_expression "(DAT_00215aac < DAT_00215aa8)" ( (binary_expression "DAT_00215aac < DAT_00215aa8" identifier < identifier) )) (compound_statement "{\n            iVar6 = FUN_0017347d();\n            return (ulong)(iVar6 == 0);\n          }" { (expression_statement "iVar6 = FUN_0017347d();" (assignment_expression "iVar6 = FUN_0017347d()" identifier = (call_expression "FUN_0017347d()" identifier (argument_list "()" ( )))) ;) (return_statement "return (ulong)(iVar6 == 0);" return (call_expression "(ulong)(iVar6 == 0)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) ))) ;) })) (expression_statement "FUN_001727af();" (call_expression "FUN_001727af()" identifier (argument_list "()" ( ))) ;) })) }) (else_clause "else if ((cVar2 == '(') && (**(char **)(lVar5 + 8 + lVar1) == ')')) {\n        DAT_00215aac = DAT_00215aa8;\n        return (ulong)(*pcVar3 != '\0');\n      }" else (if_statement "if ((cVar2 == '(') && (**(char **)(lVar5 + 8 + lVar1) == ')')) {\n        DAT_00215aac = DAT_00215aa8;\n        return (ulong)(*pcVar3 != '\0');\n      }" if (parenthesized_expression "((cVar2 == '(') && (**(char **)(lVar5 + 8 + lVar1) == ')'))" ( (binary_expression "(cVar2 == '(') && (**(char **)(lVar5 + 8 + lVar1) == ')')" (parenthesized_expression "(cVar2 == '(')" ( (binary_expression "cVar2 == '('" identifier == (char_literal "'('" ' character ')) )) && (parenthesized_expression "(**(char **)(lVar5 + 8 + lVar1) == ')')" ( (binary_expression "**(char **)(lVar5 + 8 + lVar1) == ')'" (pointer_expression "**(char **)(lVar5 + 8 + lVar1)" * (pointer_expression "*(char **)(lVar5 + 8 + lVar1)" * (cast_expression "(char **)(lVar5 + 8 + lVar1)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar5 + 8 + lVar1)" ( (binary_expression "lVar5 + 8 + lVar1" (binary_expression "lVar5 + 8" identifier + number_literal) + identifier) ))))) == (char_literal "')'" ' character ')) ))) )) (compound_statement "{\n        DAT_00215aac = DAT_00215aa8;\n        return (ulong)(*pcVar3 != '\0');\n      }" { (expression_statement "DAT_00215aac = DAT_00215aa8;" (assignment_expression "DAT_00215aac = DAT_00215aa8" identifier = identifier) ;) (return_statement "return (ulong)(*pcVar3 != '\0');" return (call_expression "(ulong)(*pcVar3 != '\0')" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(*pcVar3 != '\0')" ( (binary_expression "*pcVar3 != '\0'" (pointer_expression "*pcVar3" * identifier) != (char_literal "'\0'" ' escape_sequence ')) ))) ;) })))) (expression_statement "uVar8 = dcgettext(0,"%s: binary operator expected",5);" (assignment_expression "uVar8 = dcgettext(0,"%s: binary operator expected",5)" identifier = (call_expression "dcgettext(0,"%s: binary operator expected",5)" identifier (argument_list "(0,"%s: binary operator expected",5)" ( number_literal , (string_literal ""%s: binary operator expected"" " string_content ") , number_literal )))) ;) (expression_statement "FUN_0017260b(uVar8,pcVar3);" (call_expression "FUN_0017260b(uVar8,pcVar3)" identifier (argument_list "(uVar8,pcVar3)" ( identifier , identifier ))) ;) })) (if_statement "if (cVar2 == 'a') {\n      if (**(char **)(lVar5 + -8 + lVar1) != '\0') {\n        uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');\n      }\n    }\n    else {\n      uVar7 = 1;\n      if (**(char **)(lVar5 + -8 + lVar1) == '\0') {\n        uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');\n      }\n    }" if (parenthesized_expression "(cVar2 == 'a')" ( (binary_expression "cVar2 == 'a'" identifier == (char_literal "'a'" ' character ')) )) (compound_statement "{\n      if (**(char **)(lVar5 + -8 + lVar1) != '\0') {\n        uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');\n      }\n    }" { (if_statement "if (**(char **)(lVar5 + -8 + lVar1) != '\0') {\n        uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');\n      }" if (parenthesized_expression "(**(char **)(lVar5 + -8 + lVar1) != '\0')" ( (binary_expression "**(char **)(lVar5 + -8 + lVar1) != '\0'" (pointer_expression "**(char **)(lVar5 + -8 + lVar1)" * (pointer_expression "*(char **)(lVar5 + -8 + lVar1)" * (cast_expression "(char **)(lVar5 + -8 + lVar1)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar5 + -8 + lVar1)" ( (binary_expression "lVar5 + -8 + lVar1" (binary_expression "lVar5 + -8" identifier + number_literal) + identifier) ))))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');\n      }" { (expression_statement "uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');" (assignment_expression "uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0')" identifier = (call_expression "(ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0')" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(**(char **)(lVar5 + 8 + lVar1) != '\0')" ( (binary_expression "**(char **)(lVar5 + 8 + lVar1) != '\0'" (pointer_expression "**(char **)(lVar5 + 8 + lVar1)" * (pointer_expression "*(char **)(lVar5 + 8 + lVar1)" * (cast_expression "(char **)(lVar5 + 8 + lVar1)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar5 + 8 + lVar1)" ( (binary_expression "lVar5 + 8 + lVar1" (binary_expression "lVar5 + 8" identifier + number_literal) + identifier) ))))) != (char_literal "'\0'" ' escape_sequence ')) )))) ;) })) }) (else_clause "else {\n      uVar7 = 1;\n      if (**(char **)(lVar5 + -8 + lVar1) == '\0') {\n        uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');\n      }\n    }" else (compound_statement "{\n      uVar7 = 1;\n      if (**(char **)(lVar5 + -8 + lVar1) == '\0') {\n        uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');\n      }\n    }" { (expression_statement "uVar7 = 1;" (assignment_expression "uVar7 = 1" identifier = number_literal) ;) (if_statement "if (**(char **)(lVar5 + -8 + lVar1) == '\0') {\n        uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');\n      }" if (parenthesized_expression "(**(char **)(lVar5 + -8 + lVar1) == '\0')" ( (binary_expression "**(char **)(lVar5 + -8 + lVar1) == '\0'" (pointer_expression "**(char **)(lVar5 + -8 + lVar1)" * (pointer_expression "*(char **)(lVar5 + -8 + lVar1)" * (cast_expression "(char **)(lVar5 + -8 + lVar1)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar5 + -8 + lVar1)" ( (binary_expression "lVar5 + -8 + lVar1" (binary_expression "lVar5 + -8" identifier + number_literal) + identifier) ))))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');\n      }" { (expression_statement "uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');" (assignment_expression "uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0')" identifier = (call_expression "(ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0')" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(**(char **)(lVar5 + 8 + lVar1) != '\0')" ( (binary_expression "**(char **)(lVar5 + 8 + lVar1) != '\0'" (pointer_expression "**(char **)(lVar5 + 8 + lVar1)" * (pointer_expression "*(char **)(lVar5 + 8 + lVar1)" * (cast_expression "(char **)(lVar5 + 8 + lVar1)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar5 + 8 + lVar1)" ( (binary_expression "lVar5 + 8 + lVar1" (binary_expression "lVar5 + 8" identifier + number_literal) + identifier) ))))) != (char_literal "'\0'" ' escape_sequence ')) )))) ;) })) }))) }) (else_clause "else {\n    uVar7 = FUN_00173274();\n  }" else (compound_statement "{\n    uVar7 = FUN_00173274();\n  }" { (expression_statement "uVar7 = FUN_00173274();" (assignment_expression "uVar7 = FUN_00173274()" identifier = (call_expression "FUN_00173274()" identifier (argument_list "()" ( )))) ;) }))) (expression_statement "DAT_00215aac = DAT_00215aa8;" (assignment_expression "DAT_00215aac = DAT_00215aa8" identifier = identifier) ;) (return_statement "return uVar7;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE) ))) (compound_statement { (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )) * LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )) * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (char_literal ' character ')) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) , (binary_expression (binary_expression IDENT != (char_literal ' character ')) && (parenthesized_expression ( (binary_expression IDENT != (char_literal ' character ')) )))) )) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (char_literal ' escape_sequence ')) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (return_statement return (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT == LIT) ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) ))))) == (char_literal ' character ')) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (return_statement return (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * IDENT) != (char_literal ' escape_sequence ')) ))) ;) })))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) ))))) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) ))))) != (char_literal ' escape_sequence ')) )))) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) ))))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) ))))) != (char_literal ' escape_sequence ')) )))) ;) })) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (return_statement return IDENT ;) })))
(function_definition "ulong FUN_0017351a(void)\n\n{\n  long lVar1;\n  char cVar2;\n  char *pcVar3;\n  char *pcVar4;\n  long lVar5;\n  int iVar6;\n  ulong uVar7;\n  undefined8 uVar8;\n  \n  iVar6 = DAT_00215aac;\n  lVar5 = DAT_00215aa0;\n  lVar1 = ((long)DAT_00215aac + 1) * 8;\n  pcVar3 = *(char **)(DAT_00215aa0 + ((long)DAT_00215aac + 1) * 8);\n  uVar7 = test_binop(pcVar3);\n  if ((int)uVar7 == 0) {\n    if ((*pcVar3 != '-') ||\n       (((cVar2 = pcVar3[1], cVar2 != 'a' && (cVar2 != 'o')) || (pcVar3[2] != '\0')))) {\n      pcVar4 = *(char **)(lVar5 + -8 + lVar1);\n      cVar2 = *pcVar4;\n      if (cVar2 == '!') {\n        if (pcVar4[1] == '\0') {\n          DAT_00215aac = iVar6 + 1;\n          if (DAT_00215aac < DAT_00215aa8) {\n            iVar6 = FUN_0017347d();\n            return (ulong)(iVar6 == 0);\n          }\n          FUN_001727af();\n        }\n      }\n      else if ((cVar2 == '(') && (**(char **)(lVar5 + 8 + lVar1) == ')')) {\n        DAT_00215aac = DAT_00215aa8;\n        return (ulong)(*pcVar3 != '\0');\n      }\n      uVar8 = dcgettext(0,"%s: binary operator expected",5);\n                    \n      FUN_0017260b(uVar8,pcVar3);\n    }\n    if (cVar2 == 'a') {\n      if (**(char **)(lVar5 + -8 + lVar1) != '\0') {\n        uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');\n      }\n    }\n    else {\n      uVar7 = 1;\n      if (**(char **)(lVar5 + -8 + lVar1) == '\0') {\n        uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');\n      }\n    }\n  }\n  else {\n    uVar7 = FUN_00173274();\n  }\n  DAT_00215aac = DAT_00215aa8;\n  return uVar7;\n}" (type_identifier "ulong") (function_declarator "FUN_0017351a(void)" (identifier "FUN_0017351a") (parameter_list "(void)" (( "(") (parameter_declaration "void" (primitive_type "void")) () ")"))) (compound_statement "{\n  long lVar1;\n  char cVar2;\n  char *pcVar3;\n  char *pcVar4;\n  long lVar5;\n  int iVar6;\n  ulong uVar7;\n  undefined8 uVar8;\n  \n  iVar6 = DAT_00215aac;\n  lVar5 = DAT_00215aa0;\n  lVar1 = ((long)DAT_00215aac + 1) * 8;\n  pcVar3 = *(char **)(DAT_00215aa0 + ((long)DAT_00215aac + 1) * 8);\n  uVar7 = test_binop(pcVar3);\n  if ((int)uVar7 == 0) {\n    if ((*pcVar3 != '-') ||\n       (((cVar2 = pcVar3[1], cVar2 != 'a' && (cVar2 != 'o')) || (pcVar3[2] != '\0')))) {\n      pcVar4 = *(char **)(lVar5 + -8 + lVar1);\n      cVar2 = *pcVar4;\n      if (cVar2 == '!') {\n        if (pcVar4[1] == '\0') {\n          DAT_00215aac = iVar6 + 1;\n          if (DAT_00215aac < DAT_00215aa8) {\n            iVar6 = FUN_0017347d();\n            return (ulong)(iVar6 == 0);\n          }\n          FUN_001727af();\n        }\n      }\n      else if ((cVar2 == '(') && (**(char **)(lVar5 + 8 + lVar1) == ')')) {\n        DAT_00215aac = DAT_00215aa8;\n        return (ulong)(*pcVar3 != '\0');\n      }\n      uVar8 = dcgettext(0,"%s: binary operator expected",5);\n                    \n      FUN_0017260b(uVar8,pcVar3);\n    }\n    if (cVar2 == 'a') {\n      if (**(char **)(lVar5 + -8 + lVar1) != '\0') {\n        uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');\n      }\n    }\n    else {\n      uVar7 = 1;\n      if (**(char **)(lVar5 + -8 + lVar1) == '\0') {\n        uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');\n      }\n    }\n  }\n  else {\n    uVar7 = FUN_00173274();\n  }\n  DAT_00215aac = DAT_00215aa8;\n  return uVar7;\n}" ({ "{") (declaration "long lVar1;" (sized_type_specifier "long" (long "long")) (identifier "lVar1") (; ";")) (declaration "char cVar2;" (primitive_type "char") (identifier "cVar2") (; ";")) (declaration "char *pcVar3;" (primitive_type "char") (pointer_declarator "*pcVar3" (* "*") (identifier "pcVar3")) (; ";")) (declaration "char *pcVar4;" (primitive_type "char") (pointer_declarator "*pcVar4" (* "*") (identifier "pcVar4")) (; ";")) (declaration "long lVar5;" (sized_type_specifier "long" (long "long")) (identifier "lVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "ulong uVar7;" (type_identifier "ulong") (identifier "uVar7") (; ";")) (declaration "undefined8 uVar8;" (type_identifier "undefined8") (identifier "uVar8") (; ";")) (expression_statement "iVar6 = DAT_00215aac;" (assignment_expression "iVar6 = DAT_00215aac" (identifier "iVar6") (= "=") (identifier "DAT_00215aac")) (; ";")) (expression_statement "lVar5 = DAT_00215aa0;" (assignment_expression "lVar5 = DAT_00215aa0" (identifier "lVar5") (= "=") (identifier "DAT_00215aa0")) (; ";")) (expression_statement "lVar1 = ((long)DAT_00215aac + 1) * 8;" (assignment_expression "lVar1 = ((long)DAT_00215aac + 1) * 8" (identifier "lVar1") (= "=") (binary_expression "((long)DAT_00215aac + 1) * 8" (parenthesized_expression "((long)DAT_00215aac + 1)" (( "(") (binary_expression "(long)DAT_00215aac + 1" (cast_expression "(long)DAT_00215aac" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "DAT_00215aac")) (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "8"))) (; ";")) (expression_statement "pcVar3 = *(char **)(DAT_00215aa0 + ((long)DAT_00215aac + 1) * 8);" (assignment_expression "pcVar3 = *(char **)(DAT_00215aa0 + ((long)DAT_00215aac + 1) * 8)" (identifier "pcVar3") (= "=") (pointer_expression "*(char **)(DAT_00215aa0 + ((long)DAT_00215aac + 1) * 8)" (* "*") (cast_expression "(char **)(DAT_00215aa0 + ((long)DAT_00215aac + 1) * 8)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(DAT_00215aa0 + ((long)DAT_00215aac + 1) * 8)" (( "(") (binary_expression "DAT_00215aa0 + ((long)DAT_00215aac + 1) * 8" (identifier "DAT_00215aa0") (+ "+") (binary_expression "((long)DAT_00215aac + 1) * 8" (parenthesized_expression "((long)DAT_00215aac + 1)" (( "(") (binary_expression "(long)DAT_00215aac + 1" (cast_expression "(long)DAT_00215aac" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "DAT_00215aac")) (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "8"))) () ")"))))) (; ";")) (expression_statement "uVar7 = test_binop(pcVar3);" (assignment_expression "uVar7 = test_binop(pcVar3)" (identifier "uVar7") (= "=") (call_expression "test_binop(pcVar3)" (identifier "test_binop") (argument_list "(pcVar3)" (( "(") (identifier "pcVar3") () ")")))) (; ";")) (if_statement "if ((int)uVar7 == 0) {\n    if ((*pcVar3 != '-') ||\n       (((cVar2 = pcVar3[1], cVar2 != 'a' && (cVar2 != 'o')) || (pcVar3[2] != '\0')))) {\n      pcVar4 = *(char **)(lVar5 + -8 + lVar1);\n      cVar2 = *pcVar4;\n      if (cVar2 == '!') {\n        if (pcVar4[1] == '\0') {\n          DAT_00215aac = iVar6 + 1;\n          if (DAT_00215aac < DAT_00215aa8) {\n            iVar6 = FUN_0017347d();\n            return (ulong)(iVar6 == 0);\n          }\n          FUN_001727af();\n        }\n      }\n      else if ((cVar2 == '(') && (**(char **)(lVar5 + 8 + lVar1) == ')')) {\n        DAT_00215aac = DAT_00215aa8;\n        return (ulong)(*pcVar3 != '\0');\n      }\n      uVar8 = dcgettext(0,"%s: binary operator expected",5);\n                    \n      FUN_0017260b(uVar8,pcVar3);\n    }\n    if (cVar2 == 'a') {\n      if (**(char **)(lVar5 + -8 + lVar1) != '\0') {\n        uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');\n      }\n    }\n    else {\n      uVar7 = 1;\n      if (**(char **)(lVar5 + -8 + lVar1) == '\0') {\n        uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');\n      }\n    }\n  }\n  else {\n    uVar7 = FUN_00173274();\n  }" (if "if") (parenthesized_expression "((int)uVar7 == 0)" (( "(") (binary_expression "(int)uVar7 == 0" (cast_expression "(int)uVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar7")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if ((*pcVar3 != '-') ||\n       (((cVar2 = pcVar3[1], cVar2 != 'a' && (cVar2 != 'o')) || (pcVar3[2] != '\0')))) {\n      pcVar4 = *(char **)(lVar5 + -8 + lVar1);\n      cVar2 = *pcVar4;\n      if (cVar2 == '!') {\n        if (pcVar4[1] == '\0') {\n          DAT_00215aac = iVar6 + 1;\n          if (DAT_00215aac < DAT_00215aa8) {\n            iVar6 = FUN_0017347d();\n            return (ulong)(iVar6 == 0);\n          }\n          FUN_001727af();\n        }\n      }\n      else if ((cVar2 == '(') && (**(char **)(lVar5 + 8 + lVar1) == ')')) {\n        DAT_00215aac = DAT_00215aa8;\n        return (ulong)(*pcVar3 != '\0');\n      }\n      uVar8 = dcgettext(0,"%s: binary operator expected",5);\n                    \n      FUN_0017260b(uVar8,pcVar3);\n    }\n    if (cVar2 == 'a') {\n      if (**(char **)(lVar5 + -8 + lVar1) != '\0') {\n        uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');\n      }\n    }\n    else {\n      uVar7 = 1;\n      if (**(char **)(lVar5 + -8 + lVar1) == '\0') {\n        uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');\n      }\n    }\n  }" ({ "{") (if_statement "if ((*pcVar3 != '-') ||\n       (((cVar2 = pcVar3[1], cVar2 != 'a' && (cVar2 != 'o')) || (pcVar3[2] != '\0')))) {\n      pcVar4 = *(char **)(lVar5 + -8 + lVar1);\n      cVar2 = *pcVar4;\n      if (cVar2 == '!') {\n        if (pcVar4[1] == '\0') {\n          DAT_00215aac = iVar6 + 1;\n          if (DAT_00215aac < DAT_00215aa8) {\n            iVar6 = FUN_0017347d();\n            return (ulong)(iVar6 == 0);\n          }\n          FUN_001727af();\n        }\n      }\n      else if ((cVar2 == '(') && (**(char **)(lVar5 + 8 + lVar1) == ')')) {\n        DAT_00215aac = DAT_00215aa8;\n        return (ulong)(*pcVar3 != '\0');\n      }\n      uVar8 = dcgettext(0,"%s: binary operator expected",5);\n                    \n      FUN_0017260b(uVar8,pcVar3);\n    }" (if "if") (parenthesized_expression "((*pcVar3 != '-') ||\n       (((cVar2 = pcVar3[1], cVar2 != 'a' && (cVar2 != 'o')) || (pcVar3[2] != '\0'))))" (( "(") (binary_expression "(*pcVar3 != '-') ||\n       (((cVar2 = pcVar3[1], cVar2 != 'a' && (cVar2 != 'o')) || (pcVar3[2] != '\0')))" (parenthesized_expression "(*pcVar3 != '-')" (( "(") (binary_expression "*pcVar3 != '-'" (pointer_expression "*pcVar3" (* "*") (identifier "pcVar3")) (!= "!=") (char_literal "'-'" (' "'") (character "-") (' "'"))) () ")")) (|| "||") (parenthesized_expression "(((cVar2 = pcVar3[1], cVar2 != 'a' && (cVar2 != 'o')) || (pcVar3[2] != '\0')))" (( "(") (parenthesized_expression "((cVar2 = pcVar3[1], cVar2 != 'a' && (cVar2 != 'o')) || (pcVar3[2] != '\0'))" (( "(") (binary_expression "(cVar2 = pcVar3[1], cVar2 != 'a' && (cVar2 != 'o')) || (pcVar3[2] != '\0')" (parenthesized_expression "(cVar2 = pcVar3[1], cVar2 != 'a' && (cVar2 != 'o'))" (( "(") (comma_expression "cVar2 = pcVar3[1], cVar2 != 'a' && (cVar2 != 'o')" (assignment_expression "cVar2 = pcVar3[1]" (identifier "cVar2") (= "=") (subscript_expression "pcVar3[1]" (identifier "pcVar3") ([ "[") (number_literal "1") (] "]"))) (, ",") (binary_expression "cVar2 != 'a' && (cVar2 != 'o')" (binary_expression "cVar2 != 'a'" (identifier "cVar2") (!= "!=") (char_literal "'a'" (' "'") (character "a") (' "'"))) (&& "&&") (parenthesized_expression "(cVar2 != 'o')" (( "(") (binary_expression "cVar2 != 'o'" (identifier "cVar2") (!= "!=") (char_literal "'o'" (' "'") (character "o") (' "'"))) () ")")))) () ")")) (|| "||") (parenthesized_expression "(pcVar3[2] != '\0')" (( "(") (binary_expression "pcVar3[2] != '\0'" (subscript_expression "pcVar3[2]" (identifier "pcVar3") ([ "[") (number_literal "2") (] "]")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n      pcVar4 = *(char **)(lVar5 + -8 + lVar1);\n      cVar2 = *pcVar4;\n      if (cVar2 == '!') {\n        if (pcVar4[1] == '\0') {\n          DAT_00215aac = iVar6 + 1;\n          if (DAT_00215aac < DAT_00215aa8) {\n            iVar6 = FUN_0017347d();\n            return (ulong)(iVar6 == 0);\n          }\n          FUN_001727af();\n        }\n      }\n      else if ((cVar2 == '(') && (**(char **)(lVar5 + 8 + lVar1) == ')')) {\n        DAT_00215aac = DAT_00215aa8;\n        return (ulong)(*pcVar3 != '\0');\n      }\n      uVar8 = dcgettext(0,"%s: binary operator expected",5);\n                    \n      FUN_0017260b(uVar8,pcVar3);\n    }" ({ "{") (expression_statement "pcVar4 = *(char **)(lVar5 + -8 + lVar1);" (assignment_expression "pcVar4 = *(char **)(lVar5 + -8 + lVar1)" (identifier "pcVar4") (= "=") (pointer_expression "*(char **)(lVar5 + -8 + lVar1)" (* "*") (cast_expression "(char **)(lVar5 + -8 + lVar1)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar5 + -8 + lVar1)" (( "(") (binary_expression "lVar5 + -8 + lVar1" (binary_expression "lVar5 + -8" (identifier "lVar5") (+ "+") (number_literal "-8")) (+ "+") (identifier "lVar1")) () ")"))))) (; ";")) (expression_statement "cVar2 = *pcVar4;" (assignment_expression "cVar2 = *pcVar4" (identifier "cVar2") (= "=") (pointer_expression "*pcVar4" (* "*") (identifier "pcVar4"))) (; ";")) (if_statement "if (cVar2 == '!') {\n        if (pcVar4[1] == '\0') {\n          DAT_00215aac = iVar6 + 1;\n          if (DAT_00215aac < DAT_00215aa8) {\n            iVar6 = FUN_0017347d();\n            return (ulong)(iVar6 == 0);\n          }\n          FUN_001727af();\n        }\n      }\n      else if ((cVar2 == '(') && (**(char **)(lVar5 + 8 + lVar1) == ')')) {\n        DAT_00215aac = DAT_00215aa8;\n        return (ulong)(*pcVar3 != '\0');\n      }" (if "if") (parenthesized_expression "(cVar2 == '!')" (( "(") (binary_expression "cVar2 == '!'" (identifier "cVar2") (== "==") (char_literal "'!'" (' "'") (character "!") (' "'"))) () ")")) (compound_statement "{\n        if (pcVar4[1] == '\0') {\n          DAT_00215aac = iVar6 + 1;\n          if (DAT_00215aac < DAT_00215aa8) {\n            iVar6 = FUN_0017347d();\n            return (ulong)(iVar6 == 0);\n          }\n          FUN_001727af();\n        }\n      }" ({ "{") (if_statement "if (pcVar4[1] == '\0') {\n          DAT_00215aac = iVar6 + 1;\n          if (DAT_00215aac < DAT_00215aa8) {\n            iVar6 = FUN_0017347d();\n            return (ulong)(iVar6 == 0);\n          }\n          FUN_001727af();\n        }" (if "if") (parenthesized_expression "(pcVar4[1] == '\0')" (( "(") (binary_expression "pcVar4[1] == '\0'" (subscript_expression "pcVar4[1]" (identifier "pcVar4") ([ "[") (number_literal "1") (] "]")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          DAT_00215aac = iVar6 + 1;\n          if (DAT_00215aac < DAT_00215aa8) {\n            iVar6 = FUN_0017347d();\n            return (ulong)(iVar6 == 0);\n          }\n          FUN_001727af();\n        }" ({ "{") (expression_statement "DAT_00215aac = iVar6 + 1;" (assignment_expression "DAT_00215aac = iVar6 + 1" (identifier "DAT_00215aac") (= "=") (binary_expression "iVar6 + 1" (identifier "iVar6") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (DAT_00215aac < DAT_00215aa8) {\n            iVar6 = FUN_0017347d();\n            return (ulong)(iVar6 == 0);\n          }" (if "if") (parenthesized_expression "(DAT_00215aac < DAT_00215aa8)" (( "(") (binary_expression "DAT_00215aac < DAT_00215aa8" (identifier "DAT_00215aac") (< "<") (identifier "DAT_00215aa8")) () ")")) (compound_statement "{\n            iVar6 = FUN_0017347d();\n            return (ulong)(iVar6 == 0);\n          }" ({ "{") (expression_statement "iVar6 = FUN_0017347d();" (assignment_expression "iVar6 = FUN_0017347d()" (identifier "iVar6") (= "=") (call_expression "FUN_0017347d()" (identifier "FUN_0017347d") (argument_list "()" (( "(") () ")")))) (; ";")) (return_statement "return (ulong)(iVar6 == 0);" (return "return") (call_expression "(ulong)(iVar6 == 0)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(iVar6 == 0)" (( "(") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0")) () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_001727af();" (call_expression "FUN_001727af()" (identifier "FUN_001727af") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (} "}")) (else_clause "else if ((cVar2 == '(') && (**(char **)(lVar5 + 8 + lVar1) == ')')) {\n        DAT_00215aac = DAT_00215aa8;\n        return (ulong)(*pcVar3 != '\0');\n      }" (else "else") (if_statement "if ((cVar2 == '(') && (**(char **)(lVar5 + 8 + lVar1) == ')')) {\n        DAT_00215aac = DAT_00215aa8;\n        return (ulong)(*pcVar3 != '\0');\n      }" (if "if") (parenthesized_expression "((cVar2 == '(') && (**(char **)(lVar5 + 8 + lVar1) == ')'))" (( "(") (binary_expression "(cVar2 == '(') && (**(char **)(lVar5 + 8 + lVar1) == ')')" (parenthesized_expression "(cVar2 == '(')" (( "(") (binary_expression "cVar2 == '('" (identifier "cVar2") (== "==") (char_literal "'('" (' "'") (character "(") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(**(char **)(lVar5 + 8 + lVar1) == ')')" (( "(") (binary_expression "**(char **)(lVar5 + 8 + lVar1) == ')'" (pointer_expression "**(char **)(lVar5 + 8 + lVar1)" (* "*") (pointer_expression "*(char **)(lVar5 + 8 + lVar1)" (* "*") (cast_expression "(char **)(lVar5 + 8 + lVar1)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar5 + 8 + lVar1)" (( "(") (binary_expression "lVar5 + 8 + lVar1" (binary_expression "lVar5 + 8" (identifier "lVar5") (+ "+") (number_literal "8")) (+ "+") (identifier "lVar1")) () ")"))))) (== "==") (char_literal "')'" (' "'") (character ")") (' "'"))) () ")"))) () ")")) (compound_statement "{\n        DAT_00215aac = DAT_00215aa8;\n        return (ulong)(*pcVar3 != '\0');\n      }" ({ "{") (expression_statement "DAT_00215aac = DAT_00215aa8;" (assignment_expression "DAT_00215aac = DAT_00215aa8" (identifier "DAT_00215aac") (= "=") (identifier "DAT_00215aa8")) (; ";")) (return_statement "return (ulong)(*pcVar3 != '\0');" (return "return") (call_expression "(ulong)(*pcVar3 != '\0')" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(*pcVar3 != '\0')" (( "(") (binary_expression "*pcVar3 != '\0'" (pointer_expression "*pcVar3" (* "*") (identifier "pcVar3")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) (; ";")) (} "}"))))) (expression_statement "uVar8 = dcgettext(0,"%s: binary operator expected",5);" (assignment_expression "uVar8 = dcgettext(0,"%s: binary operator expected",5)" (identifier "uVar8") (= "=") (call_expression "dcgettext(0,"%s: binary operator expected",5)" (identifier "dcgettext") (argument_list "(0,"%s: binary operator expected",5)" (( "(") (number_literal "0") (, ",") (string_literal ""%s: binary operator expected"" (" """) (string_content "%s: binary operator expected") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "FUN_0017260b(uVar8,pcVar3);" (call_expression "FUN_0017260b(uVar8,pcVar3)" (identifier "FUN_0017260b") (argument_list "(uVar8,pcVar3)" (( "(") (identifier "uVar8") (, ",") (identifier "pcVar3") () ")"))) (; ";")) (} "}"))) (if_statement "if (cVar2 == 'a') {\n      if (**(char **)(lVar5 + -8 + lVar1) != '\0') {\n        uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');\n      }\n    }\n    else {\n      uVar7 = 1;\n      if (**(char **)(lVar5 + -8 + lVar1) == '\0') {\n        uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');\n      }\n    }" (if "if") (parenthesized_expression "(cVar2 == 'a')" (( "(") (binary_expression "cVar2 == 'a'" (identifier "cVar2") (== "==") (char_literal "'a'" (' "'") (character "a") (' "'"))) () ")")) (compound_statement "{\n      if (**(char **)(lVar5 + -8 + lVar1) != '\0') {\n        uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');\n      }\n    }" ({ "{") (if_statement "if (**(char **)(lVar5 + -8 + lVar1) != '\0') {\n        uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');\n      }" (if "if") (parenthesized_expression "(**(char **)(lVar5 + -8 + lVar1) != '\0')" (( "(") (binary_expression "**(char **)(lVar5 + -8 + lVar1) != '\0'" (pointer_expression "**(char **)(lVar5 + -8 + lVar1)" (* "*") (pointer_expression "*(char **)(lVar5 + -8 + lVar1)" (* "*") (cast_expression "(char **)(lVar5 + -8 + lVar1)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar5 + -8 + lVar1)" (( "(") (binary_expression "lVar5 + -8 + lVar1" (binary_expression "lVar5 + -8" (identifier "lVar5") (+ "+") (number_literal "-8")) (+ "+") (identifier "lVar1")) () ")"))))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');\n      }" ({ "{") (expression_statement "uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');" (assignment_expression "uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0')" (identifier "uVar7") (= "=") (call_expression "(ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0')" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(**(char **)(lVar5 + 8 + lVar1) != '\0')" (( "(") (binary_expression "**(char **)(lVar5 + 8 + lVar1) != '\0'" (pointer_expression "**(char **)(lVar5 + 8 + lVar1)" (* "*") (pointer_expression "*(char **)(lVar5 + 8 + lVar1)" (* "*") (cast_expression "(char **)(lVar5 + 8 + lVar1)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar5 + 8 + lVar1)" (( "(") (binary_expression "lVar5 + 8 + lVar1" (binary_expression "lVar5 + 8" (identifier "lVar5") (+ "+") (number_literal "8")) (+ "+") (identifier "lVar1")) () ")"))))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      uVar7 = 1;\n      if (**(char **)(lVar5 + -8 + lVar1) == '\0') {\n        uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');\n      }\n    }" (else "else") (compound_statement "{\n      uVar7 = 1;\n      if (**(char **)(lVar5 + -8 + lVar1) == '\0') {\n        uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');\n      }\n    }" ({ "{") (expression_statement "uVar7 = 1;" (assignment_expression "uVar7 = 1" (identifier "uVar7") (= "=") (number_literal "1")) (; ";")) (if_statement "if (**(char **)(lVar5 + -8 + lVar1) == '\0') {\n        uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');\n      }" (if "if") (parenthesized_expression "(**(char **)(lVar5 + -8 + lVar1) == '\0')" (( "(") (binary_expression "**(char **)(lVar5 + -8 + lVar1) == '\0'" (pointer_expression "**(char **)(lVar5 + -8 + lVar1)" (* "*") (pointer_expression "*(char **)(lVar5 + -8 + lVar1)" (* "*") (cast_expression "(char **)(lVar5 + -8 + lVar1)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar5 + -8 + lVar1)" (( "(") (binary_expression "lVar5 + -8 + lVar1" (binary_expression "lVar5 + -8" (identifier "lVar5") (+ "+") (number_literal "-8")) (+ "+") (identifier "lVar1")) () ")"))))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');\n      }" ({ "{") (expression_statement "uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');" (assignment_expression "uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0')" (identifier "uVar7") (= "=") (call_expression "(ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0')" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(**(char **)(lVar5 + 8 + lVar1) != '\0')" (( "(") (binary_expression "**(char **)(lVar5 + 8 + lVar1) != '\0'" (pointer_expression "**(char **)(lVar5 + 8 + lVar1)" (* "*") (pointer_expression "*(char **)(lVar5 + 8 + lVar1)" (* "*") (cast_expression "(char **)(lVar5 + 8 + lVar1)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar5 + 8 + lVar1)" (( "(") (binary_expression "lVar5 + 8 + lVar1" (binary_expression "lVar5 + 8" (identifier "lVar5") (+ "+") (number_literal "8")) (+ "+") (identifier "lVar1")) () ")"))))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")))) (; ";")) (} "}"))) (} "}")))) (} "}")) (else_clause "else {\n    uVar7 = FUN_00173274();\n  }" (else "else") (compound_statement "{\n    uVar7 = FUN_00173274();\n  }" ({ "{") (expression_statement "uVar7 = FUN_00173274();" (assignment_expression "uVar7 = FUN_00173274()" (identifier "uVar7") (= "=") (call_expression "FUN_00173274()" (identifier "FUN_00173274") (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")))) (expression_statement "DAT_00215aac = DAT_00215aa8;" (assignment_expression "DAT_00215aac = DAT_00215aa8" (identifier "DAT_00215aac") (= "=") (identifier "DAT_00215aa8")) (; ";")) (return_statement "return uVar7;" (return "return") (identifier "uVar7") (; ";")) (} "}")))

/* WARNING: Unknown calling convention */

int function_1(void)

{
  char var_4;
  char *op;
  char **ppcVar2;
  int var_3;
  type_1 uVar4;
  int var_5;
  long var_1;
  char *format;
  
  var_5 = var_7;
  ppcVar2 = argv;
  var_1 = (long)var_7;
  op = argv[var_1 + 1];
  var_3 = var_2(op);
  if (var_3 == 0) {
    if ((*op == '-') && (((var_4 = op[1], var_4 == 'a' || (var_4 == 'o')) && (op[2] == '\0')))) {
      if (var_4 == 'a') {
        uVar4 = 0;
        if (*ppcVar2[var_1] != '\0') {
          uVar4 = (type_1)(*ppcVar2[var_1 + 2] != '\0');
        }
      }
      else {
        uVar4 = 1;
        if (*ppcVar2[var_1] == '\0') {
          uVar4 = (type_1)(*ppcVar2[var_1 + 2] != '\0');
        }
      }
      var_7 = var_6;
    }
    else {
      var_4 = *ppcVar2[var_1];
      if (var_4 == '!') {
        if (ppcVar2[var_1][1] != '\0') goto LAB_00173641;
        var_7 = var_5 + 1;
        if (var_6 <= var_7) {
                    /* WARNING: Subroutine does not return */
          var_8();
        }
        var_5 = var_9();
        uVar4 = (type_1)(var_5 == 0);
      }
      else {
        if ((var_4 != '(') || (*ppcVar2[var_1 + 2] != ')')) {
LAB_00173641:
          format = (char *)var_10(0,"%s: binary operator expected",5);
                    /* WARNING: Subroutine does not return */
          var_11(format,op);
        }
        uVar4 = (type_1)(*op != '\0');
        var_7 = var_6;
      }
    }
  }
  else {
    uVar4 = var_12();
    var_7 = var_6;
  }
  return uVar4;
}


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

ulong MASKED(void)

{
  long lVar1;
  char cVar2;
  char *pcVar3;
  char *pcVar4;
  long lVar5;
  int iVar6;
  ulong uVar7;
  undefined8 uVar8;
  
  iVar6 = DAT_00215aac;
  lVar5 = DAT_00215aa0;
  lVar1 = ((long)DAT_00215aac + 1) * 8;
  pcVar3 = *(char **)(DAT_00215aa0 + ((long)DAT_00215aac + 1) * 8);
  uVar7 = test_binop(pcVar3);
  if ((int)uVar7 == 0) {
    if ((*pcVar3 != '-') ||
       (((cVar2 = pcVar3[1], cVar2 != 'a' && (cVar2 != 'o')) || (pcVar3[2] != '\0')))) {
      pcVar4 = *(char **)(lVar5 + -8 + lVar1);
      cVar2 = *pcVar4;
      if (cVar2 == '!') {
        if (pcVar4[1] == '\0') {
          DAT_00215aac = iVar6 + 1;
          if (DAT_00215aac < DAT_00215aa8) {
            iVar6 = FUN_0017347d();
            return (ulong)(iVar6 == 0);
          }
          FUN_001727af();
        }
      }
      else if ((cVar2 == '(') && (**(char **)(lVar5 + 8 + lVar1) == ')')) {
        DAT_00215aac = DAT_00215aa8;
        return (ulong)(*pcVar3 != '\0');
      }
      uVar8 = dcgettext(0,"%s: binary operator expected",5);
                    /* WARNING: Subroutine does not return */
      FUN_0017260b(uVar8,pcVar3);
    }
    if (cVar2 == 'a') {
      if (**(char **)(lVar5 + -8 + lVar1) != '\0') {
        uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');
      }
    }
    else {
      uVar7 = 1;
      if (**(char **)(lVar5 + -8 + lVar1) == '\0') {
        uVar7 = (ulong)(**(char **)(lVar5 + 8 + lVar1) != '\0');
      }
    }
  }
  else {
    uVar7 = FUN_00173274();
  }
  DAT_00215aac = DAT_00215aa8;
  return uVar7;
}

