
int __regparm3 next_is_type_qual(d_info *di)

{
  char cVar1;
  byte bVar2;
  
  cVar1 = *(char *)&di->s;
  if ((cVar1 != 'r' && cVar1 != 'V') && (cVar1 != 'K')) {
    if (cVar1 != 'D') {
      return 0;
    }
    bVar2 = *(byte *)((int)&di->s + 1);
    return (uint)((byte)(bVar2 + 0x89) < 2 || (bVar2 & 0xdf) == 0x4f);
  }
  return 1;
}



bool __regparm3 FUN_0016e6b0(char *param_1)

{
  char cVar1;
  
  cVar1 = *param_1;
  if ((cVar1 != 'r' && cVar1 != 'V') && (cVar1 != 'K')) {
    if (cVar1 != 'D') {
      return false;
    }
    return (byte)(param_1[1] + 0x89U) < 2 || (param_1[1] & 0xdfU) == 0x4f;
  }
  return true;
}


PUSH EBX
MOVZX EDX,byte ptr [EAX]
CMP DL,0x72
SETZ BL
CMP DL,0x56
SETZ CL
OR BL,CL
JNZ 0x0016e6d8
CMP DL,0x4b
JZ 0x0016e6d8
XOR ECX,ECX
CMP DL,0x44
JZ 0x0016e6e8
MOV EAX,ECX
POP EBX
RET
MOV ECX,0x1
POP EBX
MOV EAX,ECX
RET
MOVZX EAX,byte ptr [EAX + 0x1]
POP EBX
LEA EDX,[EAX + -0x77]
CMP DL,0x1
SETBE CL
AND EAX,0xffffffdf
CMP AL,0x4f
SETZ AL
OR ECX,EAX
MOVZX ECX,CL
MOV EAX,ECX
RET
(translation_unit "bool __regparm3 FUN_0016e6b0(char *param_1)\n\n{\n  char cVar1;\n  \n  cVar1 = *param_1;\n  if ((cVar1 != 'r' && cVar1 != 'V') && (cVar1 != 'K')) {\n    if (cVar1 != 'D') {\n      return false;\n    }\n    return (byte)(param_1[1] + 0x89U) < 2 || (param_1[1] & 0xdfU) == 0x4f;\n  }\n  return true;\n}\n\n" (function_definition "bool __regparm3 FUN_0016e6b0(char *param_1)\n\n{\n  char cVar1;\n  \n  cVar1 = *param_1;\n  if ((cVar1 != 'r' && cVar1 != 'V') && (cVar1 != 'K')) {\n    if (cVar1 != 'D') {\n      return false;\n    }\n    return (byte)(param_1[1] + 0x89U) < 2 || (param_1[1] & 0xdfU) == 0x4f;\n  }\n  return true;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_0016e6b0(char *param_1)" identifier (parameter_list "(char *param_1)" ( (parameter_declaration "char *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  char cVar1;\n  \n  cVar1 = *param_1;\n  if ((cVar1 != 'r' && cVar1 != 'V') && (cVar1 != 'K')) {\n    if (cVar1 != 'D') {\n      return false;\n    }\n    return (byte)(param_1[1] + 0x89U) < 2 || (param_1[1] & 0xdfU) == 0x4f;\n  }\n  return true;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (expression_statement "cVar1 = *param_1;" (assignment_expression "cVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if ((cVar1 != 'r' && cVar1 != 'V') && (cVar1 != 'K')) {\n    if (cVar1 != 'D') {\n      return false;\n    }\n    return (byte)(param_1[1] + 0x89U) < 2 || (param_1[1] & 0xdfU) == 0x4f;\n  }" if (parenthesized_expression "((cVar1 != 'r' && cVar1 != 'V') && (cVar1 != 'K'))" ( (binary_expression "(cVar1 != 'r' && cVar1 != 'V') && (cVar1 != 'K')" (parenthesized_expression "(cVar1 != 'r' && cVar1 != 'V')" ( (binary_expression "cVar1 != 'r' && cVar1 != 'V'" (binary_expression "cVar1 != 'r'" identifier != (char_literal "'r'" ' character ')) && (binary_expression "cVar1 != 'V'" identifier != (char_literal "'V'" ' character '))) )) && (parenthesized_expression "(cVar1 != 'K')" ( (binary_expression "cVar1 != 'K'" identifier != (char_literal "'K'" ' character ')) ))) )) (compound_statement "{\n    if (cVar1 != 'D') {\n      return false;\n    }\n    return (byte)(param_1[1] + 0x89U) < 2 || (param_1[1] & 0xdfU) == 0x4f;\n  }" { (if_statement "if (cVar1 != 'D') {\n      return false;\n    }" if (parenthesized_expression "(cVar1 != 'D')" ( (binary_expression "cVar1 != 'D'" identifier != (char_literal "'D'" ' character ')) )) (compound_statement "{\n      return false;\n    }" { (return_statement "return false;" return false ;) })) (return_statement "return (byte)(param_1[1] + 0x89U) < 2 || (param_1[1] & 0xdfU) == 0x4f;" return (binary_expression "(byte)(param_1[1] + 0x89U) < 2 || (param_1[1] & 0xdfU) == 0x4f" (binary_expression "(byte)(param_1[1] + 0x89U) < 2" (call_expression "(byte)(param_1[1] + 0x89U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(param_1[1] + 0x89U)" ( (binary_expression "param_1[1] + 0x89U" (subscript_expression "param_1[1]" identifier [ number_literal ]) + number_literal) ))) < number_literal) || (binary_expression "(param_1[1] & 0xdfU) == 0x4f" (parenthesized_expression "(param_1[1] & 0xdfU)" ( (binary_expression "param_1[1] & 0xdfU" (subscript_expression "param_1[1]" identifier [ number_literal ]) & number_literal) )) == number_literal)) ;) })) (return_statement "return true;" return true ;) })))
(translation_unit "int __regparm3 next_is_type_qual(d_info *di)\n\n{\n  char cVar1;\n  byte bVar2;\n  \n  cVar1 = *(char *)&di->s;\n  if ((cVar1 != 'r' && cVar1 != 'V') && (cVar1 != 'K')) {\n    if (cVar1 != 'D') {\n      return 0;\n    }\n    bVar2 = *(byte *)((int)&di->s + 1);\n    return (uint)((byte)(bVar2 + 0x89) < 2 || (bVar2 & 0xdf) == 0x4f);\n  }\n  return 1;\n}\n\n" (function_definition "int __regparm3 next_is_type_qual(d_info *di)\n\n{\n  char cVar1;\n  byte bVar2;\n  \n  cVar1 = *(char *)&di->s;\n  if ((cVar1 != 'r' && cVar1 != 'V') && (cVar1 != 'K')) {\n    if (cVar1 != 'D') {\n      return 0;\n    }\n    bVar2 = *(byte *)((int)&di->s + 1);\n    return (uint)((byte)(bVar2 + 0x89) < 2 || (bVar2 & 0xdf) == 0x4f);\n  }\n  return 1;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "next_is_type_qual(d_info *di)" identifier (parameter_list "(d_info *di)" ( (parameter_declaration "d_info *di" type_identifier (pointer_declarator "*di" * identifier)) ))) (compound_statement "{\n  char cVar1;\n  byte bVar2;\n  \n  cVar1 = *(char *)&di->s;\n  if ((cVar1 != 'r' && cVar1 != 'V') && (cVar1 != 'K')) {\n    if (cVar1 != 'D') {\n      return 0;\n    }\n    bVar2 = *(byte *)((int)&di->s + 1);\n    return (uint)((byte)(bVar2 + 0x89) < 2 || (bVar2 & 0xdf) == 0x4f);\n  }\n  return 1;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (expression_statement "cVar1 = *(char *)&di->s;" (assignment_expression "cVar1 = *(char *)&di->s" identifier = (pointer_expression "*(char *)&di->s" * (cast_expression "(char *)&di->s" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&di->s" & (field_expression "di->s" identifier -> field_identifier))))) ;) (if_statement "if ((cVar1 != 'r' && cVar1 != 'V') && (cVar1 != 'K')) {\n    if (cVar1 != 'D') {\n      return 0;\n    }\n    bVar2 = *(byte *)((int)&di->s + 1);\n    return (uint)((byte)(bVar2 + 0x89) < 2 || (bVar2 & 0xdf) == 0x4f);\n  }" if (parenthesized_expression "((cVar1 != 'r' && cVar1 != 'V') && (cVar1 != 'K'))" ( (binary_expression "(cVar1 != 'r' && cVar1 != 'V') && (cVar1 != 'K')" (parenthesized_expression "(cVar1 != 'r' && cVar1 != 'V')" ( (binary_expression "cVar1 != 'r' && cVar1 != 'V'" (binary_expression "cVar1 != 'r'" identifier != (char_literal "'r'" ' character ')) && (binary_expression "cVar1 != 'V'" identifier != (char_literal "'V'" ' character '))) )) && (parenthesized_expression "(cVar1 != 'K')" ( (binary_expression "cVar1 != 'K'" identifier != (char_literal "'K'" ' character ')) ))) )) (compound_statement "{\n    if (cVar1 != 'D') {\n      return 0;\n    }\n    bVar2 = *(byte *)((int)&di->s + 1);\n    return (uint)((byte)(bVar2 + 0x89) < 2 || (bVar2 & 0xdf) == 0x4f);\n  }" { (if_statement "if (cVar1 != 'D') {\n      return 0;\n    }" if (parenthesized_expression "(cVar1 != 'D')" ( (binary_expression "cVar1 != 'D'" identifier != (char_literal "'D'" ' character ')) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "bVar2 = *(byte *)((int)&di->s + 1);" (assignment_expression "bVar2 = *(byte *)((int)&di->s + 1)" identifier = (pointer_expression "*(byte *)((int)&di->s + 1)" * (cast_expression "(byte *)((int)&di->s + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&di->s + 1)" ( (binary_expression "(int)&di->s + 1" (cast_expression "(int)&di->s" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&di->s" & (field_expression "di->s" identifier -> field_identifier))) + number_literal) ))))) ;) (return_statement "return (uint)((byte)(bVar2 + 0x89) < 2 || (bVar2 & 0xdf) == 0x4f);" return (call_expression "(uint)((byte)(bVar2 + 0x89) < 2 || (bVar2 & 0xdf) == 0x4f)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((byte)(bVar2 + 0x89) < 2 || (bVar2 & 0xdf) == 0x4f)" ( (binary_expression "(byte)(bVar2 + 0x89) < 2 || (bVar2 & 0xdf) == 0x4f" (binary_expression "(byte)(bVar2 + 0x89) < 2" (call_expression "(byte)(bVar2 + 0x89)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(bVar2 + 0x89)" ( (binary_expression "bVar2 + 0x89" identifier + number_literal) ))) < number_literal) || (binary_expression "(bVar2 & 0xdf) == 0x4f" (parenthesized_expression "(bVar2 & 0xdf)" ( (binary_expression "bVar2 & 0xdf" identifier & number_literal) )) == number_literal)) ))) ;) })) (return_statement "return 1;" return number_literal ;) })))
(translation_unit "bool __regparm3 FUN_0016e6b0(char *param_1)\n\n{\n  char cVar1;\n  \n  cVar1 = *param_1;\n  if ((cVar1 != 'r' && cVar1 != 'V') && (cVar1 != 'K')) {\n    if (cVar1 != 'D') {\n      return false;\n    }\n    return (byte)(param_1[1] + 0x89U) < 2 || (param_1[1] & 0xdfU) == 0x4f;\n  }\n  return true;\n}\n\n" (function_definition "bool __regparm3 FUN_0016e6b0(char *param_1)\n\n{\n  char cVar1;\n  \n  cVar1 = *param_1;\n  if ((cVar1 != 'r' && cVar1 != 'V') && (cVar1 != 'K')) {\n    if (cVar1 != 'D') {\n      return false;\n    }\n    return (byte)(param_1[1] + 0x89U) < 2 || (param_1[1] & 0xdfU) == 0x4f;\n  }\n  return true;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_0016e6b0(char *param_1)" identifier (parameter_list "(char *param_1)" ( (parameter_declaration "char *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  char cVar1;\n  \n  cVar1 = *param_1;\n  if ((cVar1 != 'r' && cVar1 != 'V') && (cVar1 != 'K')) {\n    if (cVar1 != 'D') {\n      return false;\n    }\n    return (byte)(param_1[1] + 0x89U) < 2 || (param_1[1] & 0xdfU) == 0x4f;\n  }\n  return true;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (expression_statement "cVar1 = *param_1;" (assignment_expression "cVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if ((cVar1 != 'r' && cVar1 != 'V') && (cVar1 != 'K')) {\n    if (cVar1 != 'D') {\n      return false;\n    }\n    return (byte)(param_1[1] + 0x89U) < 2 || (param_1[1] & 0xdfU) == 0x4f;\n  }" if (parenthesized_expression "((cVar1 != 'r' && cVar1 != 'V') && (cVar1 != 'K'))" ( (binary_expression "(cVar1 != 'r' && cVar1 != 'V') && (cVar1 != 'K')" (parenthesized_expression "(cVar1 != 'r' && cVar1 != 'V')" ( (binary_expression "cVar1 != 'r' && cVar1 != 'V'" (binary_expression "cVar1 != 'r'" identifier != (char_literal "'r'" ' character ')) && (binary_expression "cVar1 != 'V'" identifier != (char_literal "'V'" ' character '))) )) && (parenthesized_expression "(cVar1 != 'K')" ( (binary_expression "cVar1 != 'K'" identifier != (char_literal "'K'" ' character ')) ))) )) (compound_statement "{\n    if (cVar1 != 'D') {\n      return false;\n    }\n    return (byte)(param_1[1] + 0x89U) < 2 || (param_1[1] & 0xdfU) == 0x4f;\n  }" { (if_statement "if (cVar1 != 'D') {\n      return false;\n    }" if (parenthesized_expression "(cVar1 != 'D')" ( (binary_expression "cVar1 != 'D'" identifier != (char_literal "'D'" ' character ')) )) (compound_statement "{\n      return false;\n    }" { (return_statement "return false;" return false ;) })) (return_statement "return (byte)(param_1[1] + 0x89U) < 2 || (param_1[1] & 0xdfU) == 0x4f;" return (binary_expression "(byte)(param_1[1] + 0x89U) < 2 || (param_1[1] & 0xdfU) == 0x4f" (binary_expression "(byte)(param_1[1] + 0x89U) < 2" (call_expression "(byte)(param_1[1] + 0x89U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(param_1[1] + 0x89U)" ( (binary_expression "param_1[1] + 0x89U" (subscript_expression "param_1[1]" identifier [ number_literal ]) + number_literal) ))) < number_literal) || (binary_expression "(param_1[1] & 0xdfU) == 0x4f" (parenthesized_expression "(param_1[1] & 0xdfU)" ( (binary_expression "param_1[1] & 0xdfU" (subscript_expression "param_1[1]" identifier [ number_literal ]) & number_literal) )) == number_literal)) ;) })) (return_statement "return true;" return true ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT != (char_literal ' character ')) && (binary_expression IDENT != (char_literal ' character '))) )) && (parenthesized_expression ( (binary_expression IDENT != (char_literal ' character ')) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' character ')) )) (compound_statement { (return_statement return BOOL ;) })) (return_statement return (binary_expression (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))) < LIT) || (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) == LIT)) ;) })) (return_statement return BOOL ;) })))
(function_definition "bool __regparm3 FUN_0016e6b0(char *param_1)\n\n{\n  char cVar1;\n  \n  cVar1 = *param_1;\n  if ((cVar1 != 'r' && cVar1 != 'V') && (cVar1 != 'K')) {\n    if (cVar1 != 'D') {\n      return false;\n    }\n    return (byte)(param_1[1] + 0x89U) < 2 || (param_1[1] & 0xdfU) == 0x4f;\n  }\n  return true;\n}" (primitive_type "bool") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_0016e6b0(char *param_1)" (identifier "FUN_0016e6b0") (parameter_list "(char *param_1)" (( "(") (parameter_declaration "char *param_1" (primitive_type "char") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  char cVar1;\n  \n  cVar1 = *param_1;\n  if ((cVar1 != 'r' && cVar1 != 'V') && (cVar1 != 'K')) {\n    if (cVar1 != 'D') {\n      return false;\n    }\n    return (byte)(param_1[1] + 0x89U) < 2 || (param_1[1] & 0xdfU) == 0x4f;\n  }\n  return true;\n}" ({ "{") (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (expression_statement "cVar1 = *param_1;" (assignment_expression "cVar1 = *param_1" (identifier "cVar1") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (if_statement "if ((cVar1 != 'r' && cVar1 != 'V') && (cVar1 != 'K')) {\n    if (cVar1 != 'D') {\n      return false;\n    }\n    return (byte)(param_1[1] + 0x89U) < 2 || (param_1[1] & 0xdfU) == 0x4f;\n  }" (if "if") (parenthesized_expression "((cVar1 != 'r' && cVar1 != 'V') && (cVar1 != 'K'))" (( "(") (binary_expression "(cVar1 != 'r' && cVar1 != 'V') && (cVar1 != 'K')" (parenthesized_expression "(cVar1 != 'r' && cVar1 != 'V')" (( "(") (binary_expression "cVar1 != 'r' && cVar1 != 'V'" (binary_expression "cVar1 != 'r'" (identifier "cVar1") (!= "!=") (char_literal "'r'" (' "'") (character "r") (' "'"))) (&& "&&") (binary_expression "cVar1 != 'V'" (identifier "cVar1") (!= "!=") (char_literal "'V'" (' "'") (character "V") (' "'")))) () ")")) (&& "&&") (parenthesized_expression "(cVar1 != 'K')" (( "(") (binary_expression "cVar1 != 'K'" (identifier "cVar1") (!= "!=") (char_literal "'K'" (' "'") (character "K") (' "'"))) () ")"))) () ")")) (compound_statement "{\n    if (cVar1 != 'D') {\n      return false;\n    }\n    return (byte)(param_1[1] + 0x89U) < 2 || (param_1[1] & 0xdfU) == 0x4f;\n  }" ({ "{") (if_statement "if (cVar1 != 'D') {\n      return false;\n    }" (if "if") (parenthesized_expression "(cVar1 != 'D')" (( "(") (binary_expression "cVar1 != 'D'" (identifier "cVar1") (!= "!=") (char_literal "'D'" (' "'") (character "D") (' "'"))) () ")")) (compound_statement "{\n      return false;\n    }" ({ "{") (return_statement "return false;" (return "return") (false "false") (; ";")) (} "}"))) (return_statement "return (byte)(param_1[1] + 0x89U) < 2 || (param_1[1] & 0xdfU) == 0x4f;" (return "return") (binary_expression "(byte)(param_1[1] + 0x89U) < 2 || (param_1[1] & 0xdfU) == 0x4f" (binary_expression "(byte)(param_1[1] + 0x89U) < 2" (call_expression "(byte)(param_1[1] + 0x89U)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(param_1[1] + 0x89U)" (( "(") (binary_expression "param_1[1] + 0x89U" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "0x89U")) () ")"))) (< "<") (number_literal "2")) (|| "||") (binary_expression "(param_1[1] & 0xdfU) == 0x4f" (parenthesized_expression "(param_1[1] & 0xdfU)" (( "(") (binary_expression "param_1[1] & 0xdfU" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (& "&") (number_literal "0xdfU")) () ")")) (== "==") (number_literal "0x4f"))) (; ";")) (} "}"))) (return_statement "return true;" (return "return") (true "true") (; ";")) (} "}")))

int __regparm3 function_1(type_1 *di)

{
  char var_1;
  type_2 var_2;
  
  var_1 = *(char *)&di->s;
  if ((var_1 != 'r' && var_1 != 'V') && (var_1 != 'K')) {
    if (var_1 != 'D') {
      return 0;
    }
    var_2 = *(type_2 *)((int)&di->s + 1);
    return (uint)((type_2)(var_2 + 0x89) < 2 || (var_2 & 0xdf) == 0x4f);
  }
  return 1;
}


(translation_unit (function_definition type: (primitive_type) (ERROR (identifier)) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (char_literal (character))) right: (binary_expression left: (identifier) right: (char_literal (character))))) right: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (character)))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (character)))) consequence: (compound_statement (return_statement (false)))) (return_statement (binary_expression left: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) right: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (number_literal)))))) (return_statement (true)))))

bool __regparm3 MASKED(char *param_1)

{
  char cVar1;
  
  cVar1 = *param_1;
  if ((cVar1 != 'r' && cVar1 != 'V') && (cVar1 != 'K')) {
    if (cVar1 != 'D') {
      return false;
    }
    return (byte)(param_1[1] + 0x89U) < 2 || (param_1[1] & 0xdfU) == 0x4f;
  }
  return true;
}

