
int impliesNotNullRow(Walker *pWalker,Expr *pExpr)

{
  byte bVar1;
  int iVar2;
  
  iVar2 = 1;
  if ((pExpr->flags & 1) == 0) {
    bVar1 = pExpr->op;
    if (bVar1 < 0x3a) {
      if (bVar1 < 0x34) {
        if (bVar1 != 0x2d) {
          if (0x2d < bVar1) {
            return (uint)(0x30 < bVar1);
          }
          if (bVar1 != 0x13) {
            return (uint)(bVar1 == 0x2b);
          }
        }
      }
      else {
        if ((pExpr->pLeft->op == 0x9e) && (((pExpr->pLeft->y).pTab)->nModuleArg != 0)) {
          return iVar2;
        }
        iVar2 = 0;
        if (pExpr->pRight->op == 0x9e) {
          return (uint)(((pExpr->pRight->y).pTab)->nModuleArg != 0);
        }
      }
    }
    else if (bVar1 < 0x9e) {
      if (bVar1 < 0x9c) {
        return (uint)(bVar1 == 0x91);
      }
    }
    else {
      if (bVar1 != 0x9e) {
        return 0;
      }
      if ((pWalker->u).pNC == (NameContext *)pExpr->iTable) {
        pWalker->eCode = '\x01';
        return 2;
      }
    }
  }
  return iVar2;
}



bool FUN_0002f520(int param_1,byte *param_2)

{
  byte bVar1;
  bool bVar2;
  
  bVar2 = true;
  if ((param_2[4] & 1) == 0) {
    bVar1 = *param_2;
    if (bVar1 < 0x3a) {
      if (bVar1 < 0x34) {
        if (bVar1 != 0x2d) {
          if (0x2d < bVar1) {
            return 0x30 < bVar1;
          }
          if (bVar1 != 0x13) {
            return bVar1 == 0x2b;
          }
        }
      }
      else {
        if ((**(char **)(param_2 + 0xc) == -0x62) &&
           (*(int *)(*(int *)(*(char **)(param_2 + 0xc) + 0x30) + 0x38) != 0)) {
          return bVar2;
        }
        bVar2 = false;
        if (**(char **)(param_2 + 0x10) == -0x62) {
          return *(int *)(*(int *)(*(char **)(param_2 + 0x10) + 0x30) + 0x38) != 0;
        }
      }
    }
    else if (bVar1 < 0x9e) {
      if (bVar1 < 0x9c) {
        return bVar1 == 0x91;
      }
    }
    else {
      if (bVar1 != 0x9e) {
        return false;
      }
      if (*(int *)(param_1 + 0x18) == *(int *)(param_2 + 0x1c)) {
        *(undefined1 *)(param_1 + 0x14) = 1;
        return (bool)2;
      }
    }
  }
  return bVar2;
}


MOV ECX,dword ptr [ESP + 0x8]
MOV EAX,0x1
TEST byte ptr [ECX + 0x4],0x1
JNZ 0x0002f56e
MOVZX EDX,byte ptr [ECX]
CMP DL,0x39
JA 0x0002f558
CMP DL,0x34
JNC 0x0002f590
CMP DL,0x2d
JZ 0x0002f56e
JA 0x0002f570
CMP DL,0x13
JZ 0x0002f56e
XOR EAX,EAX
CMP DL,0x2b
SETZ AL
RET
CMP DL,0x9d
JBE 0x0002f580
CMP DL,0x9e
JNZ 0x0002f5b8
MOV EDX,dword ptr [ESP + 0x4]
MOV ECX,dword ptr [ECX + 0x1c]
CMP dword ptr [EDX + 0x18],ECX
JZ 0x0002f5d0
RET
XOR EAX,EAX
CMP DL,0x30
SETA AL
RET
CMP DL,0x9c
JNC 0x0002f56e
XOR EAX,EAX
CMP DL,0x91
SETZ AL
RET
MOV EDX,dword ptr [ECX + 0xc]
CMP byte ptr [EDX],0x9e
JZ 0x0002f5c0
MOV EDX,dword ptr [ECX + 0x10]
XOR EAX,EAX
CMP byte ptr [EDX],0x9e
JNZ 0x0002f56e
MOV EAX,dword ptr [EDX + 0x30]
MOV EAX,dword ptr [EAX + 0x38]
TEST EAX,EAX
SETNZ AL
MOVZX EAX,AL
RET
XOR EAX,EAX
RET
MOV EDX,dword ptr [EDX + 0x30]
MOV EDX,dword ptr [EDX + 0x38]
TEST EDX,EDX
JZ 0x0002f598
RET
MOV byte ptr [EDX + 0x14],0x1
MOV EAX,0x2
RET
(translation_unit "bool FUN_0002f520(int param_1,byte *param_2)\n\n{\n  byte bVar1;\n  bool bVar2;\n  \n  bVar2 = true;\n  if ((param_2[4] & 1) == 0) {\n    bVar1 = *param_2;\n    if (bVar1 < 0x3a) {\n      if (bVar1 < 0x34) {\n        if (bVar1 != 0x2d) {\n          if (0x2d < bVar1) {\n            return 0x30 < bVar1;\n          }\n          if (bVar1 != 0x13) {\n            return bVar1 == 0x2b;\n          }\n        }\n      }\n      else {\n        if ((**(char **)(param_2 + 0xc) == -0x62) &&\n           (*(int *)(*(int *)(*(char **)(param_2 + 0xc) + 0x30) + 0x38) != 0)) {\n          return bVar2;\n        }\n        bVar2 = false;\n        if (**(char **)(param_2 + 0x10) == -0x62) {\n          return *(int *)(*(int *)(*(char **)(param_2 + 0x10) + 0x30) + 0x38) != 0;\n        }\n      }\n    }\n    else if (bVar1 < 0x9e) {\n      if (bVar1 < 0x9c) {\n        return bVar1 == 0x91;\n      }\n    }\n    else {\n      if (bVar1 != 0x9e) {\n        return false;\n      }\n      if (*(int *)(param_1 + 0x18) == *(int *)(param_2 + 0x1c)) {\n        *(undefined1 *)(param_1 + 0x14) = 1;\n        return (bool)2;\n      }\n    }\n  }\n  return bVar2;\n}\n\n" (function_definition "bool FUN_0002f520(int param_1,byte *param_2)\n\n{\n  byte bVar1;\n  bool bVar2;\n  \n  bVar2 = true;\n  if ((param_2[4] & 1) == 0) {\n    bVar1 = *param_2;\n    if (bVar1 < 0x3a) {\n      if (bVar1 < 0x34) {\n        if (bVar1 != 0x2d) {\n          if (0x2d < bVar1) {\n            return 0x30 < bVar1;\n          }\n          if (bVar1 != 0x13) {\n            return bVar1 == 0x2b;\n          }\n        }\n      }\n      else {\n        if ((**(char **)(param_2 + 0xc) == -0x62) &&\n           (*(int *)(*(int *)(*(char **)(param_2 + 0xc) + 0x30) + 0x38) != 0)) {\n          return bVar2;\n        }\n        bVar2 = false;\n        if (**(char **)(param_2 + 0x10) == -0x62) {\n          return *(int *)(*(int *)(*(char **)(param_2 + 0x10) + 0x30) + 0x38) != 0;\n        }\n      }\n    }\n    else if (bVar1 < 0x9e) {\n      if (bVar1 < 0x9c) {\n        return bVar1 == 0x91;\n      }\n    }\n    else {\n      if (bVar1 != 0x9e) {\n        return false;\n      }\n      if (*(int *)(param_1 + 0x18) == *(int *)(param_2 + 0x1c)) {\n        *(undefined1 *)(param_1 + 0x14) = 1;\n        return (bool)2;\n      }\n    }\n  }\n  return bVar2;\n}" primitive_type (function_declarator "FUN_0002f520(int param_1,byte *param_2)" identifier (parameter_list "(int param_1,byte *param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  bool bVar2;\n  \n  bVar2 = true;\n  if ((param_2[4] & 1) == 0) {\n    bVar1 = *param_2;\n    if (bVar1 < 0x3a) {\n      if (bVar1 < 0x34) {\n        if (bVar1 != 0x2d) {\n          if (0x2d < bVar1) {\n            return 0x30 < bVar1;\n          }\n          if (bVar1 != 0x13) {\n            return bVar1 == 0x2b;\n          }\n        }\n      }\n      else {\n        if ((**(char **)(param_2 + 0xc) == -0x62) &&\n           (*(int *)(*(int *)(*(char **)(param_2 + 0xc) + 0x30) + 0x38) != 0)) {\n          return bVar2;\n        }\n        bVar2 = false;\n        if (**(char **)(param_2 + 0x10) == -0x62) {\n          return *(int *)(*(int *)(*(char **)(param_2 + 0x10) + 0x30) + 0x38) != 0;\n        }\n      }\n    }\n    else if (bVar1 < 0x9e) {\n      if (bVar1 < 0x9c) {\n        return bVar1 == 0x91;\n      }\n    }\n    else {\n      if (bVar1 != 0x9e) {\n        return false;\n      }\n      if (*(int *)(param_1 + 0x18) == *(int *)(param_2 + 0x1c)) {\n        *(undefined1 *)(param_1 + 0x14) = 1;\n        return (bool)2;\n      }\n    }\n  }\n  return bVar2;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) (if_statement "if ((param_2[4] & 1) == 0) {\n    bVar1 = *param_2;\n    if (bVar1 < 0x3a) {\n      if (bVar1 < 0x34) {\n        if (bVar1 != 0x2d) {\n          if (0x2d < bVar1) {\n            return 0x30 < bVar1;\n          }\n          if (bVar1 != 0x13) {\n            return bVar1 == 0x2b;\n          }\n        }\n      }\n      else {\n        if ((**(char **)(param_2 + 0xc) == -0x62) &&\n           (*(int *)(*(int *)(*(char **)(param_2 + 0xc) + 0x30) + 0x38) != 0)) {\n          return bVar2;\n        }\n        bVar2 = false;\n        if (**(char **)(param_2 + 0x10) == -0x62) {\n          return *(int *)(*(int *)(*(char **)(param_2 + 0x10) + 0x30) + 0x38) != 0;\n        }\n      }\n    }\n    else if (bVar1 < 0x9e) {\n      if (bVar1 < 0x9c) {\n        return bVar1 == 0x91;\n      }\n    }\n    else {\n      if (bVar1 != 0x9e) {\n        return false;\n      }\n      if (*(int *)(param_1 + 0x18) == *(int *)(param_2 + 0x1c)) {\n        *(undefined1 *)(param_1 + 0x14) = 1;\n        return (bool)2;\n      }\n    }\n  }" if (parenthesized_expression "((param_2[4] & 1) == 0)" ( (binary_expression "(param_2[4] & 1) == 0" (parenthesized_expression "(param_2[4] & 1)" ( (binary_expression "param_2[4] & 1" (subscript_expression "param_2[4]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) (compound_statement "{\n    bVar1 = *param_2;\n    if (bVar1 < 0x3a) {\n      if (bVar1 < 0x34) {\n        if (bVar1 != 0x2d) {\n          if (0x2d < bVar1) {\n            return 0x30 < bVar1;\n          }\n          if (bVar1 != 0x13) {\n            return bVar1 == 0x2b;\n          }\n        }\n      }\n      else {\n        if ((**(char **)(param_2 + 0xc) == -0x62) &&\n           (*(int *)(*(int *)(*(char **)(param_2 + 0xc) + 0x30) + 0x38) != 0)) {\n          return bVar2;\n        }\n        bVar2 = false;\n        if (**(char **)(param_2 + 0x10) == -0x62) {\n          return *(int *)(*(int *)(*(char **)(param_2 + 0x10) + 0x30) + 0x38) != 0;\n        }\n      }\n    }\n    else if (bVar1 < 0x9e) {\n      if (bVar1 < 0x9c) {\n        return bVar1 == 0x91;\n      }\n    }\n    else {\n      if (bVar1 != 0x9e) {\n        return false;\n      }\n      if (*(int *)(param_1 + 0x18) == *(int *)(param_2 + 0x1c)) {\n        *(undefined1 *)(param_1 + 0x14) = 1;\n        return (bool)2;\n      }\n    }\n  }" { (expression_statement "bVar1 = *param_2;" (assignment_expression "bVar1 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if (bVar1 < 0x3a) {\n      if (bVar1 < 0x34) {\n        if (bVar1 != 0x2d) {\n          if (0x2d < bVar1) {\n            return 0x30 < bVar1;\n          }\n          if (bVar1 != 0x13) {\n            return bVar1 == 0x2b;\n          }\n        }\n      }\n      else {\n        if ((**(char **)(param_2 + 0xc) == -0x62) &&\n           (*(int *)(*(int *)(*(char **)(param_2 + 0xc) + 0x30) + 0x38) != 0)) {\n          return bVar2;\n        }\n        bVar2 = false;\n        if (**(char **)(param_2 + 0x10) == -0x62) {\n          return *(int *)(*(int *)(*(char **)(param_2 + 0x10) + 0x30) + 0x38) != 0;\n        }\n      }\n    }\n    else if (bVar1 < 0x9e) {\n      if (bVar1 < 0x9c) {\n        return bVar1 == 0x91;\n      }\n    }\n    else {\n      if (bVar1 != 0x9e) {\n        return false;\n      }\n      if (*(int *)(param_1 + 0x18) == *(int *)(param_2 + 0x1c)) {\n        *(undefined1 *)(param_1 + 0x14) = 1;\n        return (bool)2;\n      }\n    }" if (parenthesized_expression "(bVar1 < 0x3a)" ( (binary_expression "bVar1 < 0x3a" identifier < number_literal) )) (compound_statement "{\n      if (bVar1 < 0x34) {\n        if (bVar1 != 0x2d) {\n          if (0x2d < bVar1) {\n            return 0x30 < bVar1;\n          }\n          if (bVar1 != 0x13) {\n            return bVar1 == 0x2b;\n          }\n        }\n      }\n      else {\n        if ((**(char **)(param_2 + 0xc) == -0x62) &&\n           (*(int *)(*(int *)(*(char **)(param_2 + 0xc) + 0x30) + 0x38) != 0)) {\n          return bVar2;\n        }\n        bVar2 = false;\n        if (**(char **)(param_2 + 0x10) == -0x62) {\n          return *(int *)(*(int *)(*(char **)(param_2 + 0x10) + 0x30) + 0x38) != 0;\n        }\n      }\n    }" { (if_statement "if (bVar1 < 0x34) {\n        if (bVar1 != 0x2d) {\n          if (0x2d < bVar1) {\n            return 0x30 < bVar1;\n          }\n          if (bVar1 != 0x13) {\n            return bVar1 == 0x2b;\n          }\n        }\n      }\n      else {\n        if ((**(char **)(param_2 + 0xc) == -0x62) &&\n           (*(int *)(*(int *)(*(char **)(param_2 + 0xc) + 0x30) + 0x38) != 0)) {\n          return bVar2;\n        }\n        bVar2 = false;\n        if (**(char **)(param_2 + 0x10) == -0x62) {\n          return *(int *)(*(int *)(*(char **)(param_2 + 0x10) + 0x30) + 0x38) != 0;\n        }\n      }" if (parenthesized_expression "(bVar1 < 0x34)" ( (binary_expression "bVar1 < 0x34" identifier < number_literal) )) (compound_statement "{\n        if (bVar1 != 0x2d) {\n          if (0x2d < bVar1) {\n            return 0x30 < bVar1;\n          }\n          if (bVar1 != 0x13) {\n            return bVar1 == 0x2b;\n          }\n        }\n      }" { (if_statement "if (bVar1 != 0x2d) {\n          if (0x2d < bVar1) {\n            return 0x30 < bVar1;\n          }\n          if (bVar1 != 0x13) {\n            return bVar1 == 0x2b;\n          }\n        }" if (parenthesized_expression "(bVar1 != 0x2d)" ( (binary_expression "bVar1 != 0x2d" identifier != number_literal) )) (compound_statement "{\n          if (0x2d < bVar1) {\n            return 0x30 < bVar1;\n          }\n          if (bVar1 != 0x13) {\n            return bVar1 == 0x2b;\n          }\n        }" { (if_statement "if (0x2d < bVar1) {\n            return 0x30 < bVar1;\n          }" if (parenthesized_expression "(0x2d < bVar1)" ( (binary_expression "0x2d < bVar1" number_literal < identifier) )) (compound_statement "{\n            return 0x30 < bVar1;\n          }" { (return_statement "return 0x30 < bVar1;" return (binary_expression "0x30 < bVar1" number_literal < identifier) ;) })) (if_statement "if (bVar1 != 0x13) {\n            return bVar1 == 0x2b;\n          }" if (parenthesized_expression "(bVar1 != 0x13)" ( (binary_expression "bVar1 != 0x13" identifier != number_literal) )) (compound_statement "{\n            return bVar1 == 0x2b;\n          }" { (return_statement "return bVar1 == 0x2b;" return (binary_expression "bVar1 == 0x2b" identifier == number_literal) ;) })) })) }) (else_clause "else {\n        if ((**(char **)(param_2 + 0xc) == -0x62) &&\n           (*(int *)(*(int *)(*(char **)(param_2 + 0xc) + 0x30) + 0x38) != 0)) {\n          return bVar2;\n        }\n        bVar2 = false;\n        if (**(char **)(param_2 + 0x10) == -0x62) {\n          return *(int *)(*(int *)(*(char **)(param_2 + 0x10) + 0x30) + 0x38) != 0;\n        }\n      }" else (compound_statement "{\n        if ((**(char **)(param_2 + 0xc) == -0x62) &&\n           (*(int *)(*(int *)(*(char **)(param_2 + 0xc) + 0x30) + 0x38) != 0)) {\n          return bVar2;\n        }\n        bVar2 = false;\n        if (**(char **)(param_2 + 0x10) == -0x62) {\n          return *(int *)(*(int *)(*(char **)(param_2 + 0x10) + 0x30) + 0x38) != 0;\n        }\n      }" { (if_statement "if ((**(char **)(param_2 + 0xc) == -0x62) &&\n           (*(int *)(*(int *)(*(char **)(param_2 + 0xc) + 0x30) + 0x38) != 0)) {\n          return bVar2;\n        }" if (parenthesized_expression "((**(char **)(param_2 + 0xc) == -0x62) &&\n           (*(int *)(*(int *)(*(char **)(param_2 + 0xc) + 0x30) + 0x38) != 0))" ( (binary_expression "(**(char **)(param_2 + 0xc) == -0x62) &&\n           (*(int *)(*(int *)(*(char **)(param_2 + 0xc) + 0x30) + 0x38) != 0)" (parenthesized_expression "(**(char **)(param_2 + 0xc) == -0x62)" ( (binary_expression "**(char **)(param_2 + 0xc) == -0x62" (pointer_expression "**(char **)(param_2 + 0xc)" * (pointer_expression "*(char **)(param_2 + 0xc)" * (cast_expression "(char **)(param_2 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0xc)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) ))))) == number_literal) )) && (parenthesized_expression "(*(int *)(*(int *)(*(char **)(param_2 + 0xc) + 0x30) + 0x38) != 0)" ( (binary_expression "*(int *)(*(int *)(*(char **)(param_2 + 0xc) + 0x30) + 0x38) != 0" (pointer_expression "*(int *)(*(int *)(*(char **)(param_2 + 0xc) + 0x30) + 0x38)" * (cast_expression "(int *)(*(int *)(*(char **)(param_2 + 0xc) + 0x30) + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(char **)(param_2 + 0xc) + 0x30) + 0x38)" ( (binary_expression "*(int *)(*(char **)(param_2 + 0xc) + 0x30) + 0x38" (pointer_expression "*(int *)(*(char **)(param_2 + 0xc) + 0x30)" * (cast_expression "(int *)(*(char **)(param_2 + 0xc) + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(char **)(param_2 + 0xc) + 0x30)" ( (binary_expression "*(char **)(param_2 + 0xc) + 0x30" (pointer_expression "*(char **)(param_2 + 0xc)" * (cast_expression "(char **)(param_2 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0xc)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) )))) + number_literal) )))) + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n          return bVar2;\n        }" { (return_statement "return bVar2;" return identifier ;) })) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (if_statement "if (**(char **)(param_2 + 0x10) == -0x62) {\n          return *(int *)(*(int *)(*(char **)(param_2 + 0x10) + 0x30) + 0x38) != 0;\n        }" if (parenthesized_expression "(**(char **)(param_2 + 0x10) == -0x62)" ( (binary_expression "**(char **)(param_2 + 0x10) == -0x62" (pointer_expression "**(char **)(param_2 + 0x10)" * (pointer_expression "*(char **)(param_2 + 0x10)" * (cast_expression "(char **)(param_2 + 0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) ))))) == number_literal) )) (compound_statement "{\n          return *(int *)(*(int *)(*(char **)(param_2 + 0x10) + 0x30) + 0x38) != 0;\n        }" { (return_statement "return *(int *)(*(int *)(*(char **)(param_2 + 0x10) + 0x30) + 0x38) != 0;" return (binary_expression "*(int *)(*(int *)(*(char **)(param_2 + 0x10) + 0x30) + 0x38) != 0" (pointer_expression "*(int *)(*(int *)(*(char **)(param_2 + 0x10) + 0x30) + 0x38)" * (cast_expression "(int *)(*(int *)(*(char **)(param_2 + 0x10) + 0x30) + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(char **)(param_2 + 0x10) + 0x30) + 0x38)" ( (binary_expression "*(int *)(*(char **)(param_2 + 0x10) + 0x30) + 0x38" (pointer_expression "*(int *)(*(char **)(param_2 + 0x10) + 0x30)" * (cast_expression "(int *)(*(char **)(param_2 + 0x10) + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(char **)(param_2 + 0x10) + 0x30)" ( (binary_expression "*(char **)(param_2 + 0x10) + 0x30" (pointer_expression "*(char **)(param_2 + 0x10)" * (cast_expression "(char **)(param_2 + 0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) )))) + number_literal) )))) + number_literal) )))) != number_literal) ;) })) }))) }) (else_clause "else if (bVar1 < 0x9e) {\n      if (bVar1 < 0x9c) {\n        return bVar1 == 0x91;\n      }\n    }\n    else {\n      if (bVar1 != 0x9e) {\n        return false;\n      }\n      if (*(int *)(param_1 + 0x18) == *(int *)(param_2 + 0x1c)) {\n        *(undefined1 *)(param_1 + 0x14) = 1;\n        return (bool)2;\n      }\n    }" else (if_statement "if (bVar1 < 0x9e) {\n      if (bVar1 < 0x9c) {\n        return bVar1 == 0x91;\n      }\n    }\n    else {\n      if (bVar1 != 0x9e) {\n        return false;\n      }\n      if (*(int *)(param_1 + 0x18) == *(int *)(param_2 + 0x1c)) {\n        *(undefined1 *)(param_1 + 0x14) = 1;\n        return (bool)2;\n      }\n    }" if (parenthesized_expression "(bVar1 < 0x9e)" ( (binary_expression "bVar1 < 0x9e" identifier < number_literal) )) (compound_statement "{\n      if (bVar1 < 0x9c) {\n        return bVar1 == 0x91;\n      }\n    }" { (if_statement "if (bVar1 < 0x9c) {\n        return bVar1 == 0x91;\n      }" if (parenthesized_expression "(bVar1 < 0x9c)" ( (binary_expression "bVar1 < 0x9c" identifier < number_literal) )) (compound_statement "{\n        return bVar1 == 0x91;\n      }" { (return_statement "return bVar1 == 0x91;" return (binary_expression "bVar1 == 0x91" identifier == number_literal) ;) })) }) (else_clause "else {\n      if (bVar1 != 0x9e) {\n        return false;\n      }\n      if (*(int *)(param_1 + 0x18) == *(int *)(param_2 + 0x1c)) {\n        *(undefined1 *)(param_1 + 0x14) = 1;\n        return (bool)2;\n      }\n    }" else (compound_statement "{\n      if (bVar1 != 0x9e) {\n        return false;\n      }\n      if (*(int *)(param_1 + 0x18) == *(int *)(param_2 + 0x1c)) {\n        *(undefined1 *)(param_1 + 0x14) = 1;\n        return (bool)2;\n      }\n    }" { (if_statement "if (bVar1 != 0x9e) {\n        return false;\n      }" if (parenthesized_expression "(bVar1 != 0x9e)" ( (binary_expression "bVar1 != 0x9e" identifier != number_literal) )) (compound_statement "{\n        return false;\n      }" { (return_statement "return false;" return false ;) })) (if_statement "if (*(int *)(param_1 + 0x18) == *(int *)(param_2 + 0x1c)) {\n        *(undefined1 *)(param_1 + 0x14) = 1;\n        return (bool)2;\n      }" if (parenthesized_expression "(*(int *)(param_1 + 0x18) == *(int *)(param_2 + 0x1c))" ( (binary_expression "*(int *)(param_1 + 0x18) == *(int *)(param_2 + 0x1c)" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) == (pointer_expression "*(int *)(param_2 + 0x1c)" * (cast_expression "(int *)(param_2 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x1c)" ( (binary_expression "param_2 + 0x1c" identifier + number_literal) ))))) )) (compound_statement "{\n        *(undefined1 *)(param_1 + 0x14) = 1;\n        return (bool)2;\n      }" { (expression_statement "*(undefined1 *)(param_1 + 0x14) = 1;" (assignment_expression "*(undefined1 *)(param_1 + 0x14) = 1" (pointer_expression "*(undefined1 *)(param_1 + 0x14)" * (cast_expression "(undefined1 *)(param_1 + 0x14)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) = number_literal) ;) (return_statement "return (bool)2;" return (cast_expression "(bool)2" ( (type_descriptor "bool" primitive_type) ) number_literal) ;) })) }))))) })) (return_statement "return bVar2;" return identifier ;) })))
(translation_unit "int impliesNotNullRow(Walker *pWalker,Expr *pExpr)\n\n{\n  byte bVar1;\n  int iVar2;\n  \n  iVar2 = 1;\n  if ((pExpr->flags & 1) == 0) {\n    bVar1 = pExpr->op;\n    if (bVar1 < 0x3a) {\n      if (bVar1 < 0x34) {\n        if (bVar1 != 0x2d) {\n          if (0x2d < bVar1) {\n            return (uint)(0x30 < bVar1);\n          }\n          if (bVar1 != 0x13) {\n            return (uint)(bVar1 == 0x2b);\n          }\n        }\n      }\n      else {\n        if ((pExpr->pLeft->op == 0x9e) && (((pExpr->pLeft->y).pTab)->nModuleArg != 0)) {\n          return iVar2;\n        }\n        iVar2 = 0;\n        if (pExpr->pRight->op == 0x9e) {\n          return (uint)(((pExpr->pRight->y).pTab)->nModuleArg != 0);\n        }\n      }\n    }\n    else if (bVar1 < 0x9e) {\n      if (bVar1 < 0x9c) {\n        return (uint)(bVar1 == 0x91);\n      }\n    }\n    else {\n      if (bVar1 != 0x9e) {\n        return 0;\n      }\n      if ((pWalker->u).pNC == (NameContext *)pExpr->iTable) {\n        pWalker->eCode = '\x01';\n        return 2;\n      }\n    }\n  }\n  return iVar2;\n}\n\n" (function_definition "int impliesNotNullRow(Walker *pWalker,Expr *pExpr)\n\n{\n  byte bVar1;\n  int iVar2;\n  \n  iVar2 = 1;\n  if ((pExpr->flags & 1) == 0) {\n    bVar1 = pExpr->op;\n    if (bVar1 < 0x3a) {\n      if (bVar1 < 0x34) {\n        if (bVar1 != 0x2d) {\n          if (0x2d < bVar1) {\n            return (uint)(0x30 < bVar1);\n          }\n          if (bVar1 != 0x13) {\n            return (uint)(bVar1 == 0x2b);\n          }\n        }\n      }\n      else {\n        if ((pExpr->pLeft->op == 0x9e) && (((pExpr->pLeft->y).pTab)->nModuleArg != 0)) {\n          return iVar2;\n        }\n        iVar2 = 0;\n        if (pExpr->pRight->op == 0x9e) {\n          return (uint)(((pExpr->pRight->y).pTab)->nModuleArg != 0);\n        }\n      }\n    }\n    else if (bVar1 < 0x9e) {\n      if (bVar1 < 0x9c) {\n        return (uint)(bVar1 == 0x91);\n      }\n    }\n    else {\n      if (bVar1 != 0x9e) {\n        return 0;\n      }\n      if ((pWalker->u).pNC == (NameContext *)pExpr->iTable) {\n        pWalker->eCode = '\x01';\n        return 2;\n      }\n    }\n  }\n  return iVar2;\n}" primitive_type (function_declarator "impliesNotNullRow(Walker *pWalker,Expr *pExpr)" identifier (parameter_list "(Walker *pWalker,Expr *pExpr)" ( (parameter_declaration "Walker *pWalker" type_identifier (pointer_declarator "*pWalker" * identifier)) , (parameter_declaration "Expr *pExpr" type_identifier (pointer_declarator "*pExpr" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  \n  iVar2 = 1;\n  if ((pExpr->flags & 1) == 0) {\n    bVar1 = pExpr->op;\n    if (bVar1 < 0x3a) {\n      if (bVar1 < 0x34) {\n        if (bVar1 != 0x2d) {\n          if (0x2d < bVar1) {\n            return (uint)(0x30 < bVar1);\n          }\n          if (bVar1 != 0x13) {\n            return (uint)(bVar1 == 0x2b);\n          }\n        }\n      }\n      else {\n        if ((pExpr->pLeft->op == 0x9e) && (((pExpr->pLeft->y).pTab)->nModuleArg != 0)) {\n          return iVar2;\n        }\n        iVar2 = 0;\n        if (pExpr->pRight->op == 0x9e) {\n          return (uint)(((pExpr->pRight->y).pTab)->nModuleArg != 0);\n        }\n      }\n    }\n    else if (bVar1 < 0x9e) {\n      if (bVar1 < 0x9c) {\n        return (uint)(bVar1 == 0x91);\n      }\n    }\n    else {\n      if (bVar1 != 0x9e) {\n        return 0;\n      }\n      if ((pWalker->u).pNC == (NameContext *)pExpr->iTable) {\n        pWalker->eCode = '\x01';\n        return 2;\n      }\n    }\n  }\n  return iVar2;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (expression_statement "iVar2 = 1;" (assignment_expression "iVar2 = 1" identifier = number_literal) ;) (if_statement "if ((pExpr->flags & 1) == 0) {\n    bVar1 = pExpr->op;\n    if (bVar1 < 0x3a) {\n      if (bVar1 < 0x34) {\n        if (bVar1 != 0x2d) {\n          if (0x2d < bVar1) {\n            return (uint)(0x30 < bVar1);\n          }\n          if (bVar1 != 0x13) {\n            return (uint)(bVar1 == 0x2b);\n          }\n        }\n      }\n      else {\n        if ((pExpr->pLeft->op == 0x9e) && (((pExpr->pLeft->y).pTab)->nModuleArg != 0)) {\n          return iVar2;\n        }\n        iVar2 = 0;\n        if (pExpr->pRight->op == 0x9e) {\n          return (uint)(((pExpr->pRight->y).pTab)->nModuleArg != 0);\n        }\n      }\n    }\n    else if (bVar1 < 0x9e) {\n      if (bVar1 < 0x9c) {\n        return (uint)(bVar1 == 0x91);\n      }\n    }\n    else {\n      if (bVar1 != 0x9e) {\n        return 0;\n      }\n      if ((pWalker->u).pNC == (NameContext *)pExpr->iTable) {\n        pWalker->eCode = '\x01';\n        return 2;\n      }\n    }\n  }" if (parenthesized_expression "((pExpr->flags & 1) == 0)" ( (binary_expression "(pExpr->flags & 1) == 0" (parenthesized_expression "(pExpr->flags & 1)" ( (binary_expression "pExpr->flags & 1" (field_expression "pExpr->flags" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n    bVar1 = pExpr->op;\n    if (bVar1 < 0x3a) {\n      if (bVar1 < 0x34) {\n        if (bVar1 != 0x2d) {\n          if (0x2d < bVar1) {\n            return (uint)(0x30 < bVar1);\n          }\n          if (bVar1 != 0x13) {\n            return (uint)(bVar1 == 0x2b);\n          }\n        }\n      }\n      else {\n        if ((pExpr->pLeft->op == 0x9e) && (((pExpr->pLeft->y).pTab)->nModuleArg != 0)) {\n          return iVar2;\n        }\n        iVar2 = 0;\n        if (pExpr->pRight->op == 0x9e) {\n          return (uint)(((pExpr->pRight->y).pTab)->nModuleArg != 0);\n        }\n      }\n    }\n    else if (bVar1 < 0x9e) {\n      if (bVar1 < 0x9c) {\n        return (uint)(bVar1 == 0x91);\n      }\n    }\n    else {\n      if (bVar1 != 0x9e) {\n        return 0;\n      }\n      if ((pWalker->u).pNC == (NameContext *)pExpr->iTable) {\n        pWalker->eCode = '\x01';\n        return 2;\n      }\n    }\n  }" { (expression_statement "bVar1 = pExpr->op;" (assignment_expression "bVar1 = pExpr->op" identifier = (field_expression "pExpr->op" identifier -> field_identifier)) ;) (if_statement "if (bVar1 < 0x3a) {\n      if (bVar1 < 0x34) {\n        if (bVar1 != 0x2d) {\n          if (0x2d < bVar1) {\n            return (uint)(0x30 < bVar1);\n          }\n          if (bVar1 != 0x13) {\n            return (uint)(bVar1 == 0x2b);\n          }\n        }\n      }\n      else {\n        if ((pExpr->pLeft->op == 0x9e) && (((pExpr->pLeft->y).pTab)->nModuleArg != 0)) {\n          return iVar2;\n        }\n        iVar2 = 0;\n        if (pExpr->pRight->op == 0x9e) {\n          return (uint)(((pExpr->pRight->y).pTab)->nModuleArg != 0);\n        }\n      }\n    }\n    else if (bVar1 < 0x9e) {\n      if (bVar1 < 0x9c) {\n        return (uint)(bVar1 == 0x91);\n      }\n    }\n    else {\n      if (bVar1 != 0x9e) {\n        return 0;\n      }\n      if ((pWalker->u).pNC == (NameContext *)pExpr->iTable) {\n        pWalker->eCode = '\x01';\n        return 2;\n      }\n    }" if (parenthesized_expression "(bVar1 < 0x3a)" ( (binary_expression "bVar1 < 0x3a" identifier < number_literal) )) (compound_statement "{\n      if (bVar1 < 0x34) {\n        if (bVar1 != 0x2d) {\n          if (0x2d < bVar1) {\n            return (uint)(0x30 < bVar1);\n          }\n          if (bVar1 != 0x13) {\n            return (uint)(bVar1 == 0x2b);\n          }\n        }\n      }\n      else {\n        if ((pExpr->pLeft->op == 0x9e) && (((pExpr->pLeft->y).pTab)->nModuleArg != 0)) {\n          return iVar2;\n        }\n        iVar2 = 0;\n        if (pExpr->pRight->op == 0x9e) {\n          return (uint)(((pExpr->pRight->y).pTab)->nModuleArg != 0);\n        }\n      }\n    }" { (if_statement "if (bVar1 < 0x34) {\n        if (bVar1 != 0x2d) {\n          if (0x2d < bVar1) {\n            return (uint)(0x30 < bVar1);\n          }\n          if (bVar1 != 0x13) {\n            return (uint)(bVar1 == 0x2b);\n          }\n        }\n      }\n      else {\n        if ((pExpr->pLeft->op == 0x9e) && (((pExpr->pLeft->y).pTab)->nModuleArg != 0)) {\n          return iVar2;\n        }\n        iVar2 = 0;\n        if (pExpr->pRight->op == 0x9e) {\n          return (uint)(((pExpr->pRight->y).pTab)->nModuleArg != 0);\n        }\n      }" if (parenthesized_expression "(bVar1 < 0x34)" ( (binary_expression "bVar1 < 0x34" identifier < number_literal) )) (compound_statement "{\n        if (bVar1 != 0x2d) {\n          if (0x2d < bVar1) {\n            return (uint)(0x30 < bVar1);\n          }\n          if (bVar1 != 0x13) {\n            return (uint)(bVar1 == 0x2b);\n          }\n        }\n      }" { (if_statement "if (bVar1 != 0x2d) {\n          if (0x2d < bVar1) {\n            return (uint)(0x30 < bVar1);\n          }\n          if (bVar1 != 0x13) {\n            return (uint)(bVar1 == 0x2b);\n          }\n        }" if (parenthesized_expression "(bVar1 != 0x2d)" ( (binary_expression "bVar1 != 0x2d" identifier != number_literal) )) (compound_statement "{\n          if (0x2d < bVar1) {\n            return (uint)(0x30 < bVar1);\n          }\n          if (bVar1 != 0x13) {\n            return (uint)(bVar1 == 0x2b);\n          }\n        }" { (if_statement "if (0x2d < bVar1) {\n            return (uint)(0x30 < bVar1);\n          }" if (parenthesized_expression "(0x2d < bVar1)" ( (binary_expression "0x2d < bVar1" number_literal < identifier) )) (compound_statement "{\n            return (uint)(0x30 < bVar1);\n          }" { (return_statement "return (uint)(0x30 < bVar1);" return (call_expression "(uint)(0x30 < bVar1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0x30 < bVar1)" ( (binary_expression "0x30 < bVar1" number_literal < identifier) ))) ;) })) (if_statement "if (bVar1 != 0x13) {\n            return (uint)(bVar1 == 0x2b);\n          }" if (parenthesized_expression "(bVar1 != 0x13)" ( (binary_expression "bVar1 != 0x13" identifier != number_literal) )) (compound_statement "{\n            return (uint)(bVar1 == 0x2b);\n          }" { (return_statement "return (uint)(bVar1 == 0x2b);" return (call_expression "(uint)(bVar1 == 0x2b)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar1 == 0x2b)" ( (binary_expression "bVar1 == 0x2b" identifier == number_literal) ))) ;) })) })) }) (else_clause "else {\n        if ((pExpr->pLeft->op == 0x9e) && (((pExpr->pLeft->y).pTab)->nModuleArg != 0)) {\n          return iVar2;\n        }\n        iVar2 = 0;\n        if (pExpr->pRight->op == 0x9e) {\n          return (uint)(((pExpr->pRight->y).pTab)->nModuleArg != 0);\n        }\n      }" else (compound_statement "{\n        if ((pExpr->pLeft->op == 0x9e) && (((pExpr->pLeft->y).pTab)->nModuleArg != 0)) {\n          return iVar2;\n        }\n        iVar2 = 0;\n        if (pExpr->pRight->op == 0x9e) {\n          return (uint)(((pExpr->pRight->y).pTab)->nModuleArg != 0);\n        }\n      }" { (if_statement "if ((pExpr->pLeft->op == 0x9e) && (((pExpr->pLeft->y).pTab)->nModuleArg != 0)) {\n          return iVar2;\n        }" if (parenthesized_expression "((pExpr->pLeft->op == 0x9e) && (((pExpr->pLeft->y).pTab)->nModuleArg != 0))" ( (binary_expression "(pExpr->pLeft->op == 0x9e) && (((pExpr->pLeft->y).pTab)->nModuleArg != 0)" (parenthesized_expression "(pExpr->pLeft->op == 0x9e)" ( (binary_expression "pExpr->pLeft->op == 0x9e" (field_expression "pExpr->pLeft->op" (field_expression "pExpr->pLeft" identifier -> field_identifier) -> field_identifier) == number_literal) )) && (parenthesized_expression "(((pExpr->pLeft->y).pTab)->nModuleArg != 0)" ( (binary_expression "((pExpr->pLeft->y).pTab)->nModuleArg != 0" (field_expression "((pExpr->pLeft->y).pTab)->nModuleArg" (parenthesized_expression "((pExpr->pLeft->y).pTab)" ( (field_expression "(pExpr->pLeft->y).pTab" (parenthesized_expression "(pExpr->pLeft->y)" ( (field_expression "pExpr->pLeft->y" (field_expression "pExpr->pLeft" identifier -> field_identifier) -> field_identifier) )) . field_identifier) )) -> field_identifier) != number_literal) ))) )) (compound_statement "{\n          return iVar2;\n        }" { (return_statement "return iVar2;" return identifier ;) })) (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (if_statement "if (pExpr->pRight->op == 0x9e) {\n          return (uint)(((pExpr->pRight->y).pTab)->nModuleArg != 0);\n        }" if (parenthesized_expression "(pExpr->pRight->op == 0x9e)" ( (binary_expression "pExpr->pRight->op == 0x9e" (field_expression "pExpr->pRight->op" (field_expression "pExpr->pRight" identifier -> field_identifier) -> field_identifier) == number_literal) )) (compound_statement "{\n          return (uint)(((pExpr->pRight->y).pTab)->nModuleArg != 0);\n        }" { (return_statement "return (uint)(((pExpr->pRight->y).pTab)->nModuleArg != 0);" return (call_expression "(uint)(((pExpr->pRight->y).pTab)->nModuleArg != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(((pExpr->pRight->y).pTab)->nModuleArg != 0)" ( (binary_expression "((pExpr->pRight->y).pTab)->nModuleArg != 0" (field_expression "((pExpr->pRight->y).pTab)->nModuleArg" (parenthesized_expression "((pExpr->pRight->y).pTab)" ( (field_expression "(pExpr->pRight->y).pTab" (parenthesized_expression "(pExpr->pRight->y)" ( (field_expression "pExpr->pRight->y" (field_expression "pExpr->pRight" identifier -> field_identifier) -> field_identifier) )) . field_identifier) )) -> field_identifier) != number_literal) ))) ;) })) }))) }) (else_clause "else if (bVar1 < 0x9e) {\n      if (bVar1 < 0x9c) {\n        return (uint)(bVar1 == 0x91);\n      }\n    }\n    else {\n      if (bVar1 != 0x9e) {\n        return 0;\n      }\n      if ((pWalker->u).pNC == (NameContext *)pExpr->iTable) {\n        pWalker->eCode = '\x01';\n        return 2;\n      }\n    }" else (if_statement "if (bVar1 < 0x9e) {\n      if (bVar1 < 0x9c) {\n        return (uint)(bVar1 == 0x91);\n      }\n    }\n    else {\n      if (bVar1 != 0x9e) {\n        return 0;\n      }\n      if ((pWalker->u).pNC == (NameContext *)pExpr->iTable) {\n        pWalker->eCode = '\x01';\n        return 2;\n      }\n    }" if (parenthesized_expression "(bVar1 < 0x9e)" ( (binary_expression "bVar1 < 0x9e" identifier < number_literal) )) (compound_statement "{\n      if (bVar1 < 0x9c) {\n        return (uint)(bVar1 == 0x91);\n      }\n    }" { (if_statement "if (bVar1 < 0x9c) {\n        return (uint)(bVar1 == 0x91);\n      }" if (parenthesized_expression "(bVar1 < 0x9c)" ( (binary_expression "bVar1 < 0x9c" identifier < number_literal) )) (compound_statement "{\n        return (uint)(bVar1 == 0x91);\n      }" { (return_statement "return (uint)(bVar1 == 0x91);" return (call_expression "(uint)(bVar1 == 0x91)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar1 == 0x91)" ( (binary_expression "bVar1 == 0x91" identifier == number_literal) ))) ;) })) }) (else_clause "else {\n      if (bVar1 != 0x9e) {\n        return 0;\n      }\n      if ((pWalker->u).pNC == (NameContext *)pExpr->iTable) {\n        pWalker->eCode = '\x01';\n        return 2;\n      }\n    }" else (compound_statement "{\n      if (bVar1 != 0x9e) {\n        return 0;\n      }\n      if ((pWalker->u).pNC == (NameContext *)pExpr->iTable) {\n        pWalker->eCode = '\x01';\n        return 2;\n      }\n    }" { (if_statement "if (bVar1 != 0x9e) {\n        return 0;\n      }" if (parenthesized_expression "(bVar1 != 0x9e)" ( (binary_expression "bVar1 != 0x9e" identifier != number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if ((pWalker->u).pNC == (NameContext *)pExpr->iTable) {\n        pWalker->eCode = '\x01';\n        return 2;\n      }" if (parenthesized_expression "((pWalker->u).pNC == (NameContext *)pExpr->iTable)" ( (binary_expression "(pWalker->u).pNC == (NameContext *)pExpr->iTable" (field_expression "(pWalker->u).pNC" (parenthesized_expression "(pWalker->u)" ( (field_expression "pWalker->u" identifier -> field_identifier) )) . field_identifier) == (cast_expression "(NameContext *)pExpr->iTable" ( (type_descriptor "NameContext *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pExpr->iTable" identifier -> field_identifier))) )) (compound_statement "{\n        pWalker->eCode = '\x01';\n        return 2;\n      }" { (expression_statement "pWalker->eCode = '\x01';" (assignment_expression "pWalker->eCode = '\x01'" (field_expression "pWalker->eCode" identifier -> field_identifier) = (char_literal "'\x01'" ' escape_sequence ')) ;) (return_statement "return 2;" return number_literal ;) })) }))))) })) (return_statement "return iVar2;" return identifier ;) })))
(translation_unit "bool FUN_0002f520(int param_1,byte *param_2)\n\n{\n  byte bVar1;\n  bool bVar2;\n  \n  bVar2 = true;\n  if ((param_2[4] & 1) == 0) {\n    bVar1 = *param_2;\n    if (bVar1 < 0x3a) {\n      if (bVar1 < 0x34) {\n        if (bVar1 != 0x2d) {\n          if (0x2d < bVar1) {\n            return 0x30 < bVar1;\n          }\n          if (bVar1 != 0x13) {\n            return bVar1 == 0x2b;\n          }\n        }\n      }\n      else {\n        if ((**(char **)(param_2 + 0xc) == -0x62) &&\n           (*(int *)(*(int *)(*(char **)(param_2 + 0xc) + 0x30) + 0x38) != 0)) {\n          return bVar2;\n        }\n        bVar2 = false;\n        if (**(char **)(param_2 + 0x10) == -0x62) {\n          return *(int *)(*(int *)(*(char **)(param_2 + 0x10) + 0x30) + 0x38) != 0;\n        }\n      }\n    }\n    else if (bVar1 < 0x9e) {\n      if (bVar1 < 0x9c) {\n        return bVar1 == 0x91;\n      }\n    }\n    else {\n      if (bVar1 != 0x9e) {\n        return false;\n      }\n      if (*(int *)(param_1 + 0x18) == *(int *)(param_2 + 0x1c)) {\n        *(undefined1 *)(param_1 + 0x14) = 1;\n        return (bool)2;\n      }\n    }\n  }\n  return bVar2;\n}\n\n" (function_definition "bool FUN_0002f520(int param_1,byte *param_2)\n\n{\n  byte bVar1;\n  bool bVar2;\n  \n  bVar2 = true;\n  if ((param_2[4] & 1) == 0) {\n    bVar1 = *param_2;\n    if (bVar1 < 0x3a) {\n      if (bVar1 < 0x34) {\n        if (bVar1 != 0x2d) {\n          if (0x2d < bVar1) {\n            return 0x30 < bVar1;\n          }\n          if (bVar1 != 0x13) {\n            return bVar1 == 0x2b;\n          }\n        }\n      }\n      else {\n        if ((**(char **)(param_2 + 0xc) == -0x62) &&\n           (*(int *)(*(int *)(*(char **)(param_2 + 0xc) + 0x30) + 0x38) != 0)) {\n          return bVar2;\n        }\n        bVar2 = false;\n        if (**(char **)(param_2 + 0x10) == -0x62) {\n          return *(int *)(*(int *)(*(char **)(param_2 + 0x10) + 0x30) + 0x38) != 0;\n        }\n      }\n    }\n    else if (bVar1 < 0x9e) {\n      if (bVar1 < 0x9c) {\n        return bVar1 == 0x91;\n      }\n    }\n    else {\n      if (bVar1 != 0x9e) {\n        return false;\n      }\n      if (*(int *)(param_1 + 0x18) == *(int *)(param_2 + 0x1c)) {\n        *(undefined1 *)(param_1 + 0x14) = 1;\n        return (bool)2;\n      }\n    }\n  }\n  return bVar2;\n}" primitive_type (function_declarator "FUN_0002f520(int param_1,byte *param_2)" identifier (parameter_list "(int param_1,byte *param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  bool bVar2;\n  \n  bVar2 = true;\n  if ((param_2[4] & 1) == 0) {\n    bVar1 = *param_2;\n    if (bVar1 < 0x3a) {\n      if (bVar1 < 0x34) {\n        if (bVar1 != 0x2d) {\n          if (0x2d < bVar1) {\n            return 0x30 < bVar1;\n          }\n          if (bVar1 != 0x13) {\n            return bVar1 == 0x2b;\n          }\n        }\n      }\n      else {\n        if ((**(char **)(param_2 + 0xc) == -0x62) &&\n           (*(int *)(*(int *)(*(char **)(param_2 + 0xc) + 0x30) + 0x38) != 0)) {\n          return bVar2;\n        }\n        bVar2 = false;\n        if (**(char **)(param_2 + 0x10) == -0x62) {\n          return *(int *)(*(int *)(*(char **)(param_2 + 0x10) + 0x30) + 0x38) != 0;\n        }\n      }\n    }\n    else if (bVar1 < 0x9e) {\n      if (bVar1 < 0x9c) {\n        return bVar1 == 0x91;\n      }\n    }\n    else {\n      if (bVar1 != 0x9e) {\n        return false;\n      }\n      if (*(int *)(param_1 + 0x18) == *(int *)(param_2 + 0x1c)) {\n        *(undefined1 *)(param_1 + 0x14) = 1;\n        return (bool)2;\n      }\n    }\n  }\n  return bVar2;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) (if_statement "if ((param_2[4] & 1) == 0) {\n    bVar1 = *param_2;\n    if (bVar1 < 0x3a) {\n      if (bVar1 < 0x34) {\n        if (bVar1 != 0x2d) {\n          if (0x2d < bVar1) {\n            return 0x30 < bVar1;\n          }\n          if (bVar1 != 0x13) {\n            return bVar1 == 0x2b;\n          }\n        }\n      }\n      else {\n        if ((**(char **)(param_2 + 0xc) == -0x62) &&\n           (*(int *)(*(int *)(*(char **)(param_2 + 0xc) + 0x30) + 0x38) != 0)) {\n          return bVar2;\n        }\n        bVar2 = false;\n        if (**(char **)(param_2 + 0x10) == -0x62) {\n          return *(int *)(*(int *)(*(char **)(param_2 + 0x10) + 0x30) + 0x38) != 0;\n        }\n      }\n    }\n    else if (bVar1 < 0x9e) {\n      if (bVar1 < 0x9c) {\n        return bVar1 == 0x91;\n      }\n    }\n    else {\n      if (bVar1 != 0x9e) {\n        return false;\n      }\n      if (*(int *)(param_1 + 0x18) == *(int *)(param_2 + 0x1c)) {\n        *(undefined1 *)(param_1 + 0x14) = 1;\n        return (bool)2;\n      }\n    }\n  }" if (parenthesized_expression "((param_2[4] & 1) == 0)" ( (binary_expression "(param_2[4] & 1) == 0" (parenthesized_expression "(param_2[4] & 1)" ( (binary_expression "param_2[4] & 1" (subscript_expression "param_2[4]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) (compound_statement "{\n    bVar1 = *param_2;\n    if (bVar1 < 0x3a) {\n      if (bVar1 < 0x34) {\n        if (bVar1 != 0x2d) {\n          if (0x2d < bVar1) {\n            return 0x30 < bVar1;\n          }\n          if (bVar1 != 0x13) {\n            return bVar1 == 0x2b;\n          }\n        }\n      }\n      else {\n        if ((**(char **)(param_2 + 0xc) == -0x62) &&\n           (*(int *)(*(int *)(*(char **)(param_2 + 0xc) + 0x30) + 0x38) != 0)) {\n          return bVar2;\n        }\n        bVar2 = false;\n        if (**(char **)(param_2 + 0x10) == -0x62) {\n          return *(int *)(*(int *)(*(char **)(param_2 + 0x10) + 0x30) + 0x38) != 0;\n        }\n      }\n    }\n    else if (bVar1 < 0x9e) {\n      if (bVar1 < 0x9c) {\n        return bVar1 == 0x91;\n      }\n    }\n    else {\n      if (bVar1 != 0x9e) {\n        return false;\n      }\n      if (*(int *)(param_1 + 0x18) == *(int *)(param_2 + 0x1c)) {\n        *(undefined1 *)(param_1 + 0x14) = 1;\n        return (bool)2;\n      }\n    }\n  }" { (expression_statement "bVar1 = *param_2;" (assignment_expression "bVar1 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if (bVar1 < 0x3a) {\n      if (bVar1 < 0x34) {\n        if (bVar1 != 0x2d) {\n          if (0x2d < bVar1) {\n            return 0x30 < bVar1;\n          }\n          if (bVar1 != 0x13) {\n            return bVar1 == 0x2b;\n          }\n        }\n      }\n      else {\n        if ((**(char **)(param_2 + 0xc) == -0x62) &&\n           (*(int *)(*(int *)(*(char **)(param_2 + 0xc) + 0x30) + 0x38) != 0)) {\n          return bVar2;\n        }\n        bVar2 = false;\n        if (**(char **)(param_2 + 0x10) == -0x62) {\n          return *(int *)(*(int *)(*(char **)(param_2 + 0x10) + 0x30) + 0x38) != 0;\n        }\n      }\n    }\n    else if (bVar1 < 0x9e) {\n      if (bVar1 < 0x9c) {\n        return bVar1 == 0x91;\n      }\n    }\n    else {\n      if (bVar1 != 0x9e) {\n        return false;\n      }\n      if (*(int *)(param_1 + 0x18) == *(int *)(param_2 + 0x1c)) {\n        *(undefined1 *)(param_1 + 0x14) = 1;\n        return (bool)2;\n      }\n    }" if (parenthesized_expression "(bVar1 < 0x3a)" ( (binary_expression "bVar1 < 0x3a" identifier < number_literal) )) (compound_statement "{\n      if (bVar1 < 0x34) {\n        if (bVar1 != 0x2d) {\n          if (0x2d < bVar1) {\n            return 0x30 < bVar1;\n          }\n          if (bVar1 != 0x13) {\n            return bVar1 == 0x2b;\n          }\n        }\n      }\n      else {\n        if ((**(char **)(param_2 + 0xc) == -0x62) &&\n           (*(int *)(*(int *)(*(char **)(param_2 + 0xc) + 0x30) + 0x38) != 0)) {\n          return bVar2;\n        }\n        bVar2 = false;\n        if (**(char **)(param_2 + 0x10) == -0x62) {\n          return *(int *)(*(int *)(*(char **)(param_2 + 0x10) + 0x30) + 0x38) != 0;\n        }\n      }\n    }" { (if_statement "if (bVar1 < 0x34) {\n        if (bVar1 != 0x2d) {\n          if (0x2d < bVar1) {\n            return 0x30 < bVar1;\n          }\n          if (bVar1 != 0x13) {\n            return bVar1 == 0x2b;\n          }\n        }\n      }\n      else {\n        if ((**(char **)(param_2 + 0xc) == -0x62) &&\n           (*(int *)(*(int *)(*(char **)(param_2 + 0xc) + 0x30) + 0x38) != 0)) {\n          return bVar2;\n        }\n        bVar2 = false;\n        if (**(char **)(param_2 + 0x10) == -0x62) {\n          return *(int *)(*(int *)(*(char **)(param_2 + 0x10) + 0x30) + 0x38) != 0;\n        }\n      }" if (parenthesized_expression "(bVar1 < 0x34)" ( (binary_expression "bVar1 < 0x34" identifier < number_literal) )) (compound_statement "{\n        if (bVar1 != 0x2d) {\n          if (0x2d < bVar1) {\n            return 0x30 < bVar1;\n          }\n          if (bVar1 != 0x13) {\n            return bVar1 == 0x2b;\n          }\n        }\n      }" { (if_statement "if (bVar1 != 0x2d) {\n          if (0x2d < bVar1) {\n            return 0x30 < bVar1;\n          }\n          if (bVar1 != 0x13) {\n            return bVar1 == 0x2b;\n          }\n        }" if (parenthesized_expression "(bVar1 != 0x2d)" ( (binary_expression "bVar1 != 0x2d" identifier != number_literal) )) (compound_statement "{\n          if (0x2d < bVar1) {\n            return 0x30 < bVar1;\n          }\n          if (bVar1 != 0x13) {\n            return bVar1 == 0x2b;\n          }\n        }" { (if_statement "if (0x2d < bVar1) {\n            return 0x30 < bVar1;\n          }" if (parenthesized_expression "(0x2d < bVar1)" ( (binary_expression "0x2d < bVar1" number_literal < identifier) )) (compound_statement "{\n            return 0x30 < bVar1;\n          }" { (return_statement "return 0x30 < bVar1;" return (binary_expression "0x30 < bVar1" number_literal < identifier) ;) })) (if_statement "if (bVar1 != 0x13) {\n            return bVar1 == 0x2b;\n          }" if (parenthesized_expression "(bVar1 != 0x13)" ( (binary_expression "bVar1 != 0x13" identifier != number_literal) )) (compound_statement "{\n            return bVar1 == 0x2b;\n          }" { (return_statement "return bVar1 == 0x2b;" return (binary_expression "bVar1 == 0x2b" identifier == number_literal) ;) })) })) }) (else_clause "else {\n        if ((**(char **)(param_2 + 0xc) == -0x62) &&\n           (*(int *)(*(int *)(*(char **)(param_2 + 0xc) + 0x30) + 0x38) != 0)) {\n          return bVar2;\n        }\n        bVar2 = false;\n        if (**(char **)(param_2 + 0x10) == -0x62) {\n          return *(int *)(*(int *)(*(char **)(param_2 + 0x10) + 0x30) + 0x38) != 0;\n        }\n      }" else (compound_statement "{\n        if ((**(char **)(param_2 + 0xc) == -0x62) &&\n           (*(int *)(*(int *)(*(char **)(param_2 + 0xc) + 0x30) + 0x38) != 0)) {\n          return bVar2;\n        }\n        bVar2 = false;\n        if (**(char **)(param_2 + 0x10) == -0x62) {\n          return *(int *)(*(int *)(*(char **)(param_2 + 0x10) + 0x30) + 0x38) != 0;\n        }\n      }" { (if_statement "if ((**(char **)(param_2 + 0xc) == -0x62) &&\n           (*(int *)(*(int *)(*(char **)(param_2 + 0xc) + 0x30) + 0x38) != 0)) {\n          return bVar2;\n        }" if (parenthesized_expression "((**(char **)(param_2 + 0xc) == -0x62) &&\n           (*(int *)(*(int *)(*(char **)(param_2 + 0xc) + 0x30) + 0x38) != 0))" ( (binary_expression "(**(char **)(param_2 + 0xc) == -0x62) &&\n           (*(int *)(*(int *)(*(char **)(param_2 + 0xc) + 0x30) + 0x38) != 0)" (parenthesized_expression "(**(char **)(param_2 + 0xc) == -0x62)" ( (binary_expression "**(char **)(param_2 + 0xc) == -0x62" (pointer_expression "**(char **)(param_2 + 0xc)" * (pointer_expression "*(char **)(param_2 + 0xc)" * (cast_expression "(char **)(param_2 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0xc)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) ))))) == number_literal) )) && (parenthesized_expression "(*(int *)(*(int *)(*(char **)(param_2 + 0xc) + 0x30) + 0x38) != 0)" ( (binary_expression "*(int *)(*(int *)(*(char **)(param_2 + 0xc) + 0x30) + 0x38) != 0" (pointer_expression "*(int *)(*(int *)(*(char **)(param_2 + 0xc) + 0x30) + 0x38)" * (cast_expression "(int *)(*(int *)(*(char **)(param_2 + 0xc) + 0x30) + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(char **)(param_2 + 0xc) + 0x30) + 0x38)" ( (binary_expression "*(int *)(*(char **)(param_2 + 0xc) + 0x30) + 0x38" (pointer_expression "*(int *)(*(char **)(param_2 + 0xc) + 0x30)" * (cast_expression "(int *)(*(char **)(param_2 + 0xc) + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(char **)(param_2 + 0xc) + 0x30)" ( (binary_expression "*(char **)(param_2 + 0xc) + 0x30" (pointer_expression "*(char **)(param_2 + 0xc)" * (cast_expression "(char **)(param_2 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0xc)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) )))) + number_literal) )))) + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n          return bVar2;\n        }" { (return_statement "return bVar2;" return identifier ;) })) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (if_statement "if (**(char **)(param_2 + 0x10) == -0x62) {\n          return *(int *)(*(int *)(*(char **)(param_2 + 0x10) + 0x30) + 0x38) != 0;\n        }" if (parenthesized_expression "(**(char **)(param_2 + 0x10) == -0x62)" ( (binary_expression "**(char **)(param_2 + 0x10) == -0x62" (pointer_expression "**(char **)(param_2 + 0x10)" * (pointer_expression "*(char **)(param_2 + 0x10)" * (cast_expression "(char **)(param_2 + 0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) ))))) == number_literal) )) (compound_statement "{\n          return *(int *)(*(int *)(*(char **)(param_2 + 0x10) + 0x30) + 0x38) != 0;\n        }" { (return_statement "return *(int *)(*(int *)(*(char **)(param_2 + 0x10) + 0x30) + 0x38) != 0;" return (binary_expression "*(int *)(*(int *)(*(char **)(param_2 + 0x10) + 0x30) + 0x38) != 0" (pointer_expression "*(int *)(*(int *)(*(char **)(param_2 + 0x10) + 0x30) + 0x38)" * (cast_expression "(int *)(*(int *)(*(char **)(param_2 + 0x10) + 0x30) + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(char **)(param_2 + 0x10) + 0x30) + 0x38)" ( (binary_expression "*(int *)(*(char **)(param_2 + 0x10) + 0x30) + 0x38" (pointer_expression "*(int *)(*(char **)(param_2 + 0x10) + 0x30)" * (cast_expression "(int *)(*(char **)(param_2 + 0x10) + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(char **)(param_2 + 0x10) + 0x30)" ( (binary_expression "*(char **)(param_2 + 0x10) + 0x30" (pointer_expression "*(char **)(param_2 + 0x10)" * (cast_expression "(char **)(param_2 + 0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) )))) + number_literal) )))) + number_literal) )))) != number_literal) ;) })) }))) }) (else_clause "else if (bVar1 < 0x9e) {\n      if (bVar1 < 0x9c) {\n        return bVar1 == 0x91;\n      }\n    }\n    else {\n      if (bVar1 != 0x9e) {\n        return false;\n      }\n      if (*(int *)(param_1 + 0x18) == *(int *)(param_2 + 0x1c)) {\n        *(undefined1 *)(param_1 + 0x14) = 1;\n        return (bool)2;\n      }\n    }" else (if_statement "if (bVar1 < 0x9e) {\n      if (bVar1 < 0x9c) {\n        return bVar1 == 0x91;\n      }\n    }\n    else {\n      if (bVar1 != 0x9e) {\n        return false;\n      }\n      if (*(int *)(param_1 + 0x18) == *(int *)(param_2 + 0x1c)) {\n        *(undefined1 *)(param_1 + 0x14) = 1;\n        return (bool)2;\n      }\n    }" if (parenthesized_expression "(bVar1 < 0x9e)" ( (binary_expression "bVar1 < 0x9e" identifier < number_literal) )) (compound_statement "{\n      if (bVar1 < 0x9c) {\n        return bVar1 == 0x91;\n      }\n    }" { (if_statement "if (bVar1 < 0x9c) {\n        return bVar1 == 0x91;\n      }" if (parenthesized_expression "(bVar1 < 0x9c)" ( (binary_expression "bVar1 < 0x9c" identifier < number_literal) )) (compound_statement "{\n        return bVar1 == 0x91;\n      }" { (return_statement "return bVar1 == 0x91;" return (binary_expression "bVar1 == 0x91" identifier == number_literal) ;) })) }) (else_clause "else {\n      if (bVar1 != 0x9e) {\n        return false;\n      }\n      if (*(int *)(param_1 + 0x18) == *(int *)(param_2 + 0x1c)) {\n        *(undefined1 *)(param_1 + 0x14) = 1;\n        return (bool)2;\n      }\n    }" else (compound_statement "{\n      if (bVar1 != 0x9e) {\n        return false;\n      }\n      if (*(int *)(param_1 + 0x18) == *(int *)(param_2 + 0x1c)) {\n        *(undefined1 *)(param_1 + 0x14) = 1;\n        return (bool)2;\n      }\n    }" { (if_statement "if (bVar1 != 0x9e) {\n        return false;\n      }" if (parenthesized_expression "(bVar1 != 0x9e)" ( (binary_expression "bVar1 != 0x9e" identifier != number_literal) )) (compound_statement "{\n        return false;\n      }" { (return_statement "return false;" return false ;) })) (if_statement "if (*(int *)(param_1 + 0x18) == *(int *)(param_2 + 0x1c)) {\n        *(undefined1 *)(param_1 + 0x14) = 1;\n        return (bool)2;\n      }" if (parenthesized_expression "(*(int *)(param_1 + 0x18) == *(int *)(param_2 + 0x1c))" ( (binary_expression "*(int *)(param_1 + 0x18) == *(int *)(param_2 + 0x1c)" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) == (pointer_expression "*(int *)(param_2 + 0x1c)" * (cast_expression "(int *)(param_2 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x1c)" ( (binary_expression "param_2 + 0x1c" identifier + number_literal) ))))) )) (compound_statement "{\n        *(undefined1 *)(param_1 + 0x14) = 1;\n        return (bool)2;\n      }" { (expression_statement "*(undefined1 *)(param_1 + 0x14) = 1;" (assignment_expression "*(undefined1 *)(param_1 + 0x14) = 1" (pointer_expression "*(undefined1 *)(param_1 + 0x14)" * (cast_expression "(undefined1 *)(param_1 + 0x14)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) = number_literal) ;) (return_statement "return (bool)2;" return (cast_expression "(bool)2" ( (type_descriptor "bool" primitive_type) ) number_literal) ;) })) }))))) })) (return_statement "return bVar2;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (return_statement return (binary_expression LIT < IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return (binary_expression IDENT == LIT) ;) })) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) == LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) + LIT) )))) != LIT) ))) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = BOOL) ;) (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 IDENT + LIT) ))))) == LIT) )) (compound_statement { (return_statement return (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) + LIT) )))) != LIT) ;) })) }))) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (return_statement return (binary_expression IDENT == LIT) ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return BOOL ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (return_statement return (cast_expression ( (type_descriptor TYPE) ) LIT) ;) })) }))))) })) (return_statement return IDENT ;) })))
(function_definition "bool FUN_0002f520(int param_1,byte *param_2)\n\n{\n  byte bVar1;\n  bool bVar2;\n  \n  bVar2 = true;\n  if ((param_2[4] & 1) == 0) {\n    bVar1 = *param_2;\n    if (bVar1 < 0x3a) {\n      if (bVar1 < 0x34) {\n        if (bVar1 != 0x2d) {\n          if (0x2d < bVar1) {\n            return 0x30 < bVar1;\n          }\n          if (bVar1 != 0x13) {\n            return bVar1 == 0x2b;\n          }\n        }\n      }\n      else {\n        if ((**(char **)(param_2 + 0xc) == -0x62) &&\n           (*(int *)(*(int *)(*(char **)(param_2 + 0xc) + 0x30) + 0x38) != 0)) {\n          return bVar2;\n        }\n        bVar2 = false;\n        if (**(char **)(param_2 + 0x10) == -0x62) {\n          return *(int *)(*(int *)(*(char **)(param_2 + 0x10) + 0x30) + 0x38) != 0;\n        }\n      }\n    }\n    else if (bVar1 < 0x9e) {\n      if (bVar1 < 0x9c) {\n        return bVar1 == 0x91;\n      }\n    }\n    else {\n      if (bVar1 != 0x9e) {\n        return false;\n      }\n      if (*(int *)(param_1 + 0x18) == *(int *)(param_2 + 0x1c)) {\n        *(undefined1 *)(param_1 + 0x14) = 1;\n        return (bool)2;\n      }\n    }\n  }\n  return bVar2;\n}" (primitive_type "bool") (function_declarator "FUN_0002f520(int param_1,byte *param_2)" (identifier "FUN_0002f520") (parameter_list "(int param_1,byte *param_2)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "byte *param_2" (type_identifier "byte") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  byte bVar1;\n  bool bVar2;\n  \n  bVar2 = true;\n  if ((param_2[4] & 1) == 0) {\n    bVar1 = *param_2;\n    if (bVar1 < 0x3a) {\n      if (bVar1 < 0x34) {\n        if (bVar1 != 0x2d) {\n          if (0x2d < bVar1) {\n            return 0x30 < bVar1;\n          }\n          if (bVar1 != 0x13) {\n            return bVar1 == 0x2b;\n          }\n        }\n      }\n      else {\n        if ((**(char **)(param_2 + 0xc) == -0x62) &&\n           (*(int *)(*(int *)(*(char **)(param_2 + 0xc) + 0x30) + 0x38) != 0)) {\n          return bVar2;\n        }\n        bVar2 = false;\n        if (**(char **)(param_2 + 0x10) == -0x62) {\n          return *(int *)(*(int *)(*(char **)(param_2 + 0x10) + 0x30) + 0x38) != 0;\n        }\n      }\n    }\n    else if (bVar1 < 0x9e) {\n      if (bVar1 < 0x9c) {\n        return bVar1 == 0x91;\n      }\n    }\n    else {\n      if (bVar1 != 0x9e) {\n        return false;\n      }\n      if (*(int *)(param_1 + 0x18) == *(int *)(param_2 + 0x1c)) {\n        *(undefined1 *)(param_1 + 0x14) = 1;\n        return (bool)2;\n      }\n    }\n  }\n  return bVar2;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "bool bVar2;" (primitive_type "bool") (identifier "bVar2") (; ";")) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" (identifier "bVar2") (= "=") (true "true")) (; ";")) (if_statement "if ((param_2[4] & 1) == 0) {\n    bVar1 = *param_2;\n    if (bVar1 < 0x3a) {\n      if (bVar1 < 0x34) {\n        if (bVar1 != 0x2d) {\n          if (0x2d < bVar1) {\n            return 0x30 < bVar1;\n          }\n          if (bVar1 != 0x13) {\n            return bVar1 == 0x2b;\n          }\n        }\n      }\n      else {\n        if ((**(char **)(param_2 + 0xc) == -0x62) &&\n           (*(int *)(*(int *)(*(char **)(param_2 + 0xc) + 0x30) + 0x38) != 0)) {\n          return bVar2;\n        }\n        bVar2 = false;\n        if (**(char **)(param_2 + 0x10) == -0x62) {\n          return *(int *)(*(int *)(*(char **)(param_2 + 0x10) + 0x30) + 0x38) != 0;\n        }\n      }\n    }\n    else if (bVar1 < 0x9e) {\n      if (bVar1 < 0x9c) {\n        return bVar1 == 0x91;\n      }\n    }\n    else {\n      if (bVar1 != 0x9e) {\n        return false;\n      }\n      if (*(int *)(param_1 + 0x18) == *(int *)(param_2 + 0x1c)) {\n        *(undefined1 *)(param_1 + 0x14) = 1;\n        return (bool)2;\n      }\n    }\n  }" (if "if") (parenthesized_expression "((param_2[4] & 1) == 0)" (( "(") (binary_expression "(param_2[4] & 1) == 0" (parenthesized_expression "(param_2[4] & 1)" (( "(") (binary_expression "param_2[4] & 1" (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]")) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    bVar1 = *param_2;\n    if (bVar1 < 0x3a) {\n      if (bVar1 < 0x34) {\n        if (bVar1 != 0x2d) {\n          if (0x2d < bVar1) {\n            return 0x30 < bVar1;\n          }\n          if (bVar1 != 0x13) {\n            return bVar1 == 0x2b;\n          }\n        }\n      }\n      else {\n        if ((**(char **)(param_2 + 0xc) == -0x62) &&\n           (*(int *)(*(int *)(*(char **)(param_2 + 0xc) + 0x30) + 0x38) != 0)) {\n          return bVar2;\n        }\n        bVar2 = false;\n        if (**(char **)(param_2 + 0x10) == -0x62) {\n          return *(int *)(*(int *)(*(char **)(param_2 + 0x10) + 0x30) + 0x38) != 0;\n        }\n      }\n    }\n    else if (bVar1 < 0x9e) {\n      if (bVar1 < 0x9c) {\n        return bVar1 == 0x91;\n      }\n    }\n    else {\n      if (bVar1 != 0x9e) {\n        return false;\n      }\n      if (*(int *)(param_1 + 0x18) == *(int *)(param_2 + 0x1c)) {\n        *(undefined1 *)(param_1 + 0x14) = 1;\n        return (bool)2;\n      }\n    }\n  }" ({ "{") (expression_statement "bVar1 = *param_2;" (assignment_expression "bVar1 = *param_2" (identifier "bVar1") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (if_statement "if (bVar1 < 0x3a) {\n      if (bVar1 < 0x34) {\n        if (bVar1 != 0x2d) {\n          if (0x2d < bVar1) {\n            return 0x30 < bVar1;\n          }\n          if (bVar1 != 0x13) {\n            return bVar1 == 0x2b;\n          }\n        }\n      }\n      else {\n        if ((**(char **)(param_2 + 0xc) == -0x62) &&\n           (*(int *)(*(int *)(*(char **)(param_2 + 0xc) + 0x30) + 0x38) != 0)) {\n          return bVar2;\n        }\n        bVar2 = false;\n        if (**(char **)(param_2 + 0x10) == -0x62) {\n          return *(int *)(*(int *)(*(char **)(param_2 + 0x10) + 0x30) + 0x38) != 0;\n        }\n      }\n    }\n    else if (bVar1 < 0x9e) {\n      if (bVar1 < 0x9c) {\n        return bVar1 == 0x91;\n      }\n    }\n    else {\n      if (bVar1 != 0x9e) {\n        return false;\n      }\n      if (*(int *)(param_1 + 0x18) == *(int *)(param_2 + 0x1c)) {\n        *(undefined1 *)(param_1 + 0x14) = 1;\n        return (bool)2;\n      }\n    }" (if "if") (parenthesized_expression "(bVar1 < 0x3a)" (( "(") (binary_expression "bVar1 < 0x3a" (identifier "bVar1") (< "<") (number_literal "0x3a")) () ")")) (compound_statement "{\n      if (bVar1 < 0x34) {\n        if (bVar1 != 0x2d) {\n          if (0x2d < bVar1) {\n            return 0x30 < bVar1;\n          }\n          if (bVar1 != 0x13) {\n            return bVar1 == 0x2b;\n          }\n        }\n      }\n      else {\n        if ((**(char **)(param_2 + 0xc) == -0x62) &&\n           (*(int *)(*(int *)(*(char **)(param_2 + 0xc) + 0x30) + 0x38) != 0)) {\n          return bVar2;\n        }\n        bVar2 = false;\n        if (**(char **)(param_2 + 0x10) == -0x62) {\n          return *(int *)(*(int *)(*(char **)(param_2 + 0x10) + 0x30) + 0x38) != 0;\n        }\n      }\n    }" ({ "{") (if_statement "if (bVar1 < 0x34) {\n        if (bVar1 != 0x2d) {\n          if (0x2d < bVar1) {\n            return 0x30 < bVar1;\n          }\n          if (bVar1 != 0x13) {\n            return bVar1 == 0x2b;\n          }\n        }\n      }\n      else {\n        if ((**(char **)(param_2 + 0xc) == -0x62) &&\n           (*(int *)(*(int *)(*(char **)(param_2 + 0xc) + 0x30) + 0x38) != 0)) {\n          return bVar2;\n        }\n        bVar2 = false;\n        if (**(char **)(param_2 + 0x10) == -0x62) {\n          return *(int *)(*(int *)(*(char **)(param_2 + 0x10) + 0x30) + 0x38) != 0;\n        }\n      }" (if "if") (parenthesized_expression "(bVar1 < 0x34)" (( "(") (binary_expression "bVar1 < 0x34" (identifier "bVar1") (< "<") (number_literal "0x34")) () ")")) (compound_statement "{\n        if (bVar1 != 0x2d) {\n          if (0x2d < bVar1) {\n            return 0x30 < bVar1;\n          }\n          if (bVar1 != 0x13) {\n            return bVar1 == 0x2b;\n          }\n        }\n      }" ({ "{") (if_statement "if (bVar1 != 0x2d) {\n          if (0x2d < bVar1) {\n            return 0x30 < bVar1;\n          }\n          if (bVar1 != 0x13) {\n            return bVar1 == 0x2b;\n          }\n        }" (if "if") (parenthesized_expression "(bVar1 != 0x2d)" (( "(") (binary_expression "bVar1 != 0x2d" (identifier "bVar1") (!= "!=") (number_literal "0x2d")) () ")")) (compound_statement "{\n          if (0x2d < bVar1) {\n            return 0x30 < bVar1;\n          }\n          if (bVar1 != 0x13) {\n            return bVar1 == 0x2b;\n          }\n        }" ({ "{") (if_statement "if (0x2d < bVar1) {\n            return 0x30 < bVar1;\n          }" (if "if") (parenthesized_expression "(0x2d < bVar1)" (( "(") (binary_expression "0x2d < bVar1" (number_literal "0x2d") (< "<") (identifier "bVar1")) () ")")) (compound_statement "{\n            return 0x30 < bVar1;\n          }" ({ "{") (return_statement "return 0x30 < bVar1;" (return "return") (binary_expression "0x30 < bVar1" (number_literal "0x30") (< "<") (identifier "bVar1")) (; ";")) (} "}"))) (if_statement "if (bVar1 != 0x13) {\n            return bVar1 == 0x2b;\n          }" (if "if") (parenthesized_expression "(bVar1 != 0x13)" (( "(") (binary_expression "bVar1 != 0x13" (identifier "bVar1") (!= "!=") (number_literal "0x13")) () ")")) (compound_statement "{\n            return bVar1 == 0x2b;\n          }" ({ "{") (return_statement "return bVar1 == 0x2b;" (return "return") (binary_expression "bVar1 == 0x2b" (identifier "bVar1") (== "==") (number_literal "0x2b")) (; ";")) (} "}"))) (} "}"))) (} "}")) (else_clause "else {\n        if ((**(char **)(param_2 + 0xc) == -0x62) &&\n           (*(int *)(*(int *)(*(char **)(param_2 + 0xc) + 0x30) + 0x38) != 0)) {\n          return bVar2;\n        }\n        bVar2 = false;\n        if (**(char **)(param_2 + 0x10) == -0x62) {\n          return *(int *)(*(int *)(*(char **)(param_2 + 0x10) + 0x30) + 0x38) != 0;\n        }\n      }" (else "else") (compound_statement "{\n        if ((**(char **)(param_2 + 0xc) == -0x62) &&\n           (*(int *)(*(int *)(*(char **)(param_2 + 0xc) + 0x30) + 0x38) != 0)) {\n          return bVar2;\n        }\n        bVar2 = false;\n        if (**(char **)(param_2 + 0x10) == -0x62) {\n          return *(int *)(*(int *)(*(char **)(param_2 + 0x10) + 0x30) + 0x38) != 0;\n        }\n      }" ({ "{") (if_statement "if ((**(char **)(param_2 + 0xc) == -0x62) &&\n           (*(int *)(*(int *)(*(char **)(param_2 + 0xc) + 0x30) + 0x38) != 0)) {\n          return bVar2;\n        }" (if "if") (parenthesized_expression "((**(char **)(param_2 + 0xc) == -0x62) &&\n           (*(int *)(*(int *)(*(char **)(param_2 + 0xc) + 0x30) + 0x38) != 0))" (( "(") (binary_expression "(**(char **)(param_2 + 0xc) == -0x62) &&\n           (*(int *)(*(int *)(*(char **)(param_2 + 0xc) + 0x30) + 0x38) != 0)" (parenthesized_expression "(**(char **)(param_2 + 0xc) == -0x62)" (( "(") (binary_expression "**(char **)(param_2 + 0xc) == -0x62" (pointer_expression "**(char **)(param_2 + 0xc)" (* "*") (pointer_expression "*(char **)(param_2 + 0xc)" (* "*") (cast_expression "(char **)(param_2 + 0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0xc)" (( "(") (binary_expression "param_2 + 0xc" (identifier "param_2") (+ "+") (number_literal "0xc")) () ")"))))) (== "==") (number_literal "-0x62")) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(*(int *)(*(char **)(param_2 + 0xc) + 0x30) + 0x38) != 0)" (( "(") (binary_expression "*(int *)(*(int *)(*(char **)(param_2 + 0xc) + 0x30) + 0x38) != 0" (pointer_expression "*(int *)(*(int *)(*(char **)(param_2 + 0xc) + 0x30) + 0x38)" (* "*") (cast_expression "(int *)(*(int *)(*(char **)(param_2 + 0xc) + 0x30) + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(*(char **)(param_2 + 0xc) + 0x30) + 0x38)" (( "(") (binary_expression "*(int *)(*(char **)(param_2 + 0xc) + 0x30) + 0x38" (pointer_expression "*(int *)(*(char **)(param_2 + 0xc) + 0x30)" (* "*") (cast_expression "(int *)(*(char **)(param_2 + 0xc) + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(char **)(param_2 + 0xc) + 0x30)" (( "(") (binary_expression "*(char **)(param_2 + 0xc) + 0x30" (pointer_expression "*(char **)(param_2 + 0xc)" (* "*") (cast_expression "(char **)(param_2 + 0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0xc)" (( "(") (binary_expression "param_2 + 0xc" (identifier "param_2") (+ "+") (number_literal "0xc")) () ")")))) (+ "+") (number_literal "0x30")) () ")")))) (+ "+") (number_literal "0x38")) () ")")))) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n          return bVar2;\n        }" ({ "{") (return_statement "return bVar2;" (return "return") (identifier "bVar2") (; ";")) (} "}"))) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" (identifier "bVar2") (= "=") (false "false")) (; ";")) (if_statement "if (**(char **)(param_2 + 0x10) == -0x62) {\n          return *(int *)(*(int *)(*(char **)(param_2 + 0x10) + 0x30) + 0x38) != 0;\n        }" (if "if") (parenthesized_expression "(**(char **)(param_2 + 0x10) == -0x62)" (( "(") (binary_expression "**(char **)(param_2 + 0x10) == -0x62" (pointer_expression "**(char **)(param_2 + 0x10)" (* "*") (pointer_expression "*(char **)(param_2 + 0x10)" (* "*") (cast_expression "(char **)(param_2 + 0x10)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x10)" (( "(") (binary_expression "param_2 + 0x10" (identifier "param_2") (+ "+") (number_literal "0x10")) () ")"))))) (== "==") (number_literal "-0x62")) () ")")) (compound_statement "{\n          return *(int *)(*(int *)(*(char **)(param_2 + 0x10) + 0x30) + 0x38) != 0;\n        }" ({ "{") (return_statement "return *(int *)(*(int *)(*(char **)(param_2 + 0x10) + 0x30) + 0x38) != 0;" (return "return") (binary_expression "*(int *)(*(int *)(*(char **)(param_2 + 0x10) + 0x30) + 0x38) != 0" (pointer_expression "*(int *)(*(int *)(*(char **)(param_2 + 0x10) + 0x30) + 0x38)" (* "*") (cast_expression "(int *)(*(int *)(*(char **)(param_2 + 0x10) + 0x30) + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(*(char **)(param_2 + 0x10) + 0x30) + 0x38)" (( "(") (binary_expression "*(int *)(*(char **)(param_2 + 0x10) + 0x30) + 0x38" (pointer_expression "*(int *)(*(char **)(param_2 + 0x10) + 0x30)" (* "*") (cast_expression "(int *)(*(char **)(param_2 + 0x10) + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(char **)(param_2 + 0x10) + 0x30)" (( "(") (binary_expression "*(char **)(param_2 + 0x10) + 0x30" (pointer_expression "*(char **)(param_2 + 0x10)" (* "*") (cast_expression "(char **)(param_2 + 0x10)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x10)" (( "(") (binary_expression "param_2 + 0x10" (identifier "param_2") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (number_literal "0x30")) () ")")))) (+ "+") (number_literal "0x38")) () ")")))) (!= "!=") (number_literal "0")) (; ";")) (} "}"))) (} "}")))) (} "}")) (else_clause "else if (bVar1 < 0x9e) {\n      if (bVar1 < 0x9c) {\n        return bVar1 == 0x91;\n      }\n    }\n    else {\n      if (bVar1 != 0x9e) {\n        return false;\n      }\n      if (*(int *)(param_1 + 0x18) == *(int *)(param_2 + 0x1c)) {\n        *(undefined1 *)(param_1 + 0x14) = 1;\n        return (bool)2;\n      }\n    }" (else "else") (if_statement "if (bVar1 < 0x9e) {\n      if (bVar1 < 0x9c) {\n        return bVar1 == 0x91;\n      }\n    }\n    else {\n      if (bVar1 != 0x9e) {\n        return false;\n      }\n      if (*(int *)(param_1 + 0x18) == *(int *)(param_2 + 0x1c)) {\n        *(undefined1 *)(param_1 + 0x14) = 1;\n        return (bool)2;\n      }\n    }" (if "if") (parenthesized_expression "(bVar1 < 0x9e)" (( "(") (binary_expression "bVar1 < 0x9e" (identifier "bVar1") (< "<") (number_literal "0x9e")) () ")")) (compound_statement "{\n      if (bVar1 < 0x9c) {\n        return bVar1 == 0x91;\n      }\n    }" ({ "{") (if_statement "if (bVar1 < 0x9c) {\n        return bVar1 == 0x91;\n      }" (if "if") (parenthesized_expression "(bVar1 < 0x9c)" (( "(") (binary_expression "bVar1 < 0x9c" (identifier "bVar1") (< "<") (number_literal "0x9c")) () ")")) (compound_statement "{\n        return bVar1 == 0x91;\n      }" ({ "{") (return_statement "return bVar1 == 0x91;" (return "return") (binary_expression "bVar1 == 0x91" (identifier "bVar1") (== "==") (number_literal "0x91")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      if (bVar1 != 0x9e) {\n        return false;\n      }\n      if (*(int *)(param_1 + 0x18) == *(int *)(param_2 + 0x1c)) {\n        *(undefined1 *)(param_1 + 0x14) = 1;\n        return (bool)2;\n      }\n    }" (else "else") (compound_statement "{\n      if (bVar1 != 0x9e) {\n        return false;\n      }\n      if (*(int *)(param_1 + 0x18) == *(int *)(param_2 + 0x1c)) {\n        *(undefined1 *)(param_1 + 0x14) = 1;\n        return (bool)2;\n      }\n    }" ({ "{") (if_statement "if (bVar1 != 0x9e) {\n        return false;\n      }" (if "if") (parenthesized_expression "(bVar1 != 0x9e)" (( "(") (binary_expression "bVar1 != 0x9e" (identifier "bVar1") (!= "!=") (number_literal "0x9e")) () ")")) (compound_statement "{\n        return false;\n      }" ({ "{") (return_statement "return false;" (return "return") (false "false") (; ";")) (} "}"))) (if_statement "if (*(int *)(param_1 + 0x18) == *(int *)(param_2 + 0x1c)) {\n        *(undefined1 *)(param_1 + 0x14) = 1;\n        return (bool)2;\n      }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x18) == *(int *)(param_2 + 0x1c))" (( "(") (binary_expression "*(int *)(param_1 + 0x18) == *(int *)(param_2 + 0x1c)" (pointer_expression "*(int *)(param_1 + 0x18)" (* "*") (cast_expression "(int *)(param_1 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (== "==") (pointer_expression "*(int *)(param_2 + 0x1c)" (* "*") (cast_expression "(int *)(param_2 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x1c)" (( "(") (binary_expression "param_2 + 0x1c" (identifier "param_2") (+ "+") (number_literal "0x1c")) () ")"))))) () ")")) (compound_statement "{\n        *(undefined1 *)(param_1 + 0x14) = 1;\n        return (bool)2;\n      }" ({ "{") (expression_statement "*(undefined1 *)(param_1 + 0x14) = 1;" (assignment_expression "*(undefined1 *)(param_1 + 0x14) = 1" (pointer_expression "*(undefined1 *)(param_1 + 0x14)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0x14)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (number_literal "1")) (; ";")) (return_statement "return (bool)2;" (return "return") (cast_expression "(bool)2" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (number_literal "2")) (; ";")) (} "}"))) (} "}")))))) (} "}"))) (return_statement "return bVar2;" (return "return") (identifier "bVar2") (; ";")) (} "}")))

int function_1(type_1 *pWalker,type_2 *pExpr)

{
  type_3 var_1;
  int iVar2;
  
  iVar2 = 1;
  if ((pExpr->flags & 1) == 0) {
    var_1 = pExpr->op;
    if (var_1 < 0x3a) {
      if (var_1 < 0x34) {
        if (var_1 != 0x2d) {
          if (0x2d < var_1) {
            return (uint)(0x30 < var_1);
          }
          if (var_1 != 0x13) {
            return (uint)(var_1 == 0x2b);
          }
        }
      }
      else {
        if ((pExpr->pLeft->op == 0x9e) && (((pExpr->pLeft->y).pTab)->nModuleArg != 0)) {
          return iVar2;
        }
        iVar2 = 0;
        if (pExpr->pRight->op == 0x9e) {
          return (uint)(((pExpr->pRight->y).pTab)->nModuleArg != 0);
        }
      }
    }
    else if (var_1 < 0x9e) {
      if (var_1 < 0x9c) {
        return (uint)(var_1 == 0x91);
      }
    }
    else {
      if (var_1 != 0x9e) {
        return 0;
      }
      if ((pWalker->u).pNC == (type_4 *)pExpr->iTable) {
        pWalker->eCode = '\x01';
        return 2;
      }
    }
  }
  return iVar2;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (true))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (return_statement (binary_expression left: (number_literal) right: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (binary_expression left: (identifier) right: (number_literal)))))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (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: (identifier) right: (number_literal)))))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) right: (number_literal))))) right: (number_literal))))) consequence: (compound_statement (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (false))) (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: (identifier) right: (number_literal)))))) right: (number_literal))) consequence: (compound_statement (return_statement (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) right: (number_literal))))) right: (number_literal))))))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (binary_expression left: (identifier) right: (number_literal)))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (false)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (return_statement (cast_expression type: (type_descriptor type: (primitive_type)) value: (number_literal)))))))))))) (return_statement (identifier)))))

bool MASKED(int param_1,byte *param_2)

{
  byte bVar1;
  bool bVar2;
  
  bVar2 = true;
  if ((param_2[4] & 1) == 0) {
    bVar1 = *param_2;
    if (bVar1 < 0x3a) {
      if (bVar1 < 0x34) {
        if (bVar1 != 0x2d) {
          if (0x2d < bVar1) {
            return 0x30 < bVar1;
          }
          if (bVar1 != 0x13) {
            return bVar1 == 0x2b;
          }
        }
      }
      else {
        if ((**(char **)(param_2 + 0xc) == -0x62) &&
           (*(int *)(*(int *)(*(char **)(param_2 + 0xc) + 0x30) + 0x38) != 0)) {
          return bVar2;
        }
        bVar2 = false;
        if (**(char **)(param_2 + 0x10) == -0x62) {
          return *(int *)(*(int *)(*(char **)(param_2 + 0x10) + 0x30) + 0x38) != 0;
        }
      }
    }
    else if (bVar1 < 0x9e) {
      if (bVar1 < 0x9c) {
        return bVar1 == 0x91;
      }
    }
    else {
      if (bVar1 != 0x9e) {
        return false;
      }
      if (*(int *)(param_1 + 0x18) == *(int *)(param_2 + 0x1c)) {
        *(undefined1 *)(param_1 + 0x14) = 1;
        return (bool)2;
      }
    }
  }
  return bVar2;
}

