
/* WARNING: Function: __x86.get_pc_thunk.cx replaced with injection: get_pc_thunk_cx */

int __regparm3 intel_float_operand(char *mnemonic)

{
  int iVar1;
  
  switch(mnemonic[1]) {
  case 'i':
    iVar1 = 2;
    break;
  default:
    return 1;
  case 'l':
    iVar1 = 1;
    if (mnemonic[2] == 'd') {
      iVar1 = (-(uint)((mnemonic[3] + 0x9dU & 0xfd) == 0) & 2) + 1;
    }
    break;
  case 'n':
    return (uint)(mnemonic[2] != 'o') * 2 + 1;
  case 'r':
    return (uint)(mnemonic[2] == 's') * 2 + 1;
  case 's':
    if (mnemonic[2] == 'a') {
      iVar1 = 3;
    }
    else {
      iVar1 = 1;
      if ((mnemonic[2] == 't') && ((byte)(mnemonic[3] + 0x9dU) < 0x11)) {
        iVar1 = (-(uint)((1 << (mnemonic[3] + 0x9dU & 0x1f) & 0x10007U) == 0) & 0xfffffffe) + 3;
      }
    }
    break;
  case 'x':
    return (uint)(1 < (byte)(mnemonic[2] + 0x8eU));
  }
  return iVar1;
}



/* WARNING: Function: __i686.get_pc_thunk.cx replaced with injection: get_pc_thunk_cx */

uint __regparm3 FUN_00045bd0(int param_1)

{
  byte bVar1;
  uint uVar2;
  
  switch(*(undefined1 *)(param_1 + 1)) {
  case 0x69:
    uVar2 = 2;
    break;
  default:
    return 1;
  case 0x6c:
    uVar2 = 1;
    if (*(char *)(param_1 + 2) == 'd') {
      uVar2 = (-(uint)((*(char *)(param_1 + 3) + 0x9dU & 0xfd) == 0) & 2) + 1;
    }
    break;
  case 0x6e:
    return (uint)(*(char *)(param_1 + 2) != 'o') * 2 + 1;
  case 0x72:
    return (uint)(*(char *)(param_1 + 2) == 's') * 2 + 1;
  case 0x73:
    if (*(char *)(param_1 + 2) == 'a') {
      uVar2 = 3;
    }
    else {
      uVar2 = 1;
      if ((*(char *)(param_1 + 2) == 't') && (bVar1 = *(char *)(param_1 + 3) + 0x9d, bVar1 < 0x11))
      {
        uVar2 = (-(uint)((1 << (bVar1 & 0x1f) & 0x10007U) == 0) & 0xfffffffe) + 3;
      }
    }
    break;
  case 0x78:
    return (uint)(1 < (byte)(*(char *)(param_1 + 2) + 0x8eU));
  }
  return uVar2;
}


CALL 0x00019a25
ADD ECX,0x3a42b
MOVZX EDX,byte ptr [EAX + 0x1]
SUB EDX,0x69
CMP DL,0xf
JA 0x00045cb8
MOVZX EDX,DL
ADD ECX,dword ptr [ECX + EDX*0x4 + 0xfffe4a3c]
JMP ECX
MOV EDX,0x1
MOV EAX,EDX
RET
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.cx replaced with injection: get_pc_thunk_cx */\n\nuint __regparm3 FUN_00045bd0(int param_1)\n\n{\n  byte bVar1;\n  uint uVar2;\n  \n  switch(*(undefined1 *)(param_1 + 1)) {\n  case 0x69:\n    uVar2 = 2;\n    break;\n  default:\n    return 1;\n  case 0x6c:\n    uVar2 = 1;\n    if (*(char *)(param_1 + 2) == 'd') {\n      uVar2 = (-(uint)((*(char *)(param_1 + 3) + 0x9dU & 0xfd) == 0) & 2) + 1;\n    }\n    break;\n  case 0x6e:\n    return (uint)(*(char *)(param_1 + 2) != 'o') * 2 + 1;\n  case 0x72:\n    return (uint)(*(char *)(param_1 + 2) == 's') * 2 + 1;\n  case 0x73:\n    if (*(char *)(param_1 + 2) == 'a') {\n      uVar2 = 3;\n    }\n    else {\n      uVar2 = 1;\n      if ((*(char *)(param_1 + 2) == 't') && (bVar1 = *(char *)(param_1 + 3) + 0x9d, bVar1 < 0x11))\n      {\n        uVar2 = (-(uint)((1 << (bVar1 & 0x1f) & 0x10007U) == 0) & 0xfffffffe) + 3;\n      }\n    }\n    break;\n  case 0x78:\n    return (uint)(1 < (byte)(*(char *)(param_1 + 2) + 0x8eU));\n  }\n  return uVar2;\n}\n\n" comment (function_definition "uint __regparm3 FUN_00045bd0(int param_1)\n\n{\n  byte bVar1;\n  uint uVar2;\n  \n  switch(*(undefined1 *)(param_1 + 1)) {\n  case 0x69:\n    uVar2 = 2;\n    break;\n  default:\n    return 1;\n  case 0x6c:\n    uVar2 = 1;\n    if (*(char *)(param_1 + 2) == 'd') {\n      uVar2 = (-(uint)((*(char *)(param_1 + 3) + 0x9dU & 0xfd) == 0) & 2) + 1;\n    }\n    break;\n  case 0x6e:\n    return (uint)(*(char *)(param_1 + 2) != 'o') * 2 + 1;\n  case 0x72:\n    return (uint)(*(char *)(param_1 + 2) == 's') * 2 + 1;\n  case 0x73:\n    if (*(char *)(param_1 + 2) == 'a') {\n      uVar2 = 3;\n    }\n    else {\n      uVar2 = 1;\n      if ((*(char *)(param_1 + 2) == 't') && (bVar1 = *(char *)(param_1 + 3) + 0x9d, bVar1 < 0x11))\n      {\n        uVar2 = (-(uint)((1 << (bVar1 & 0x1f) & 0x10007U) == 0) & 0xfffffffe) + 3;\n      }\n    }\n    break;\n  case 0x78:\n    return (uint)(1 < (byte)(*(char *)(param_1 + 2) + 0x8eU));\n  }\n  return uVar2;\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "FUN_00045bd0(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  byte bVar1;\n  uint uVar2;\n  \n  switch(*(undefined1 *)(param_1 + 1)) {\n  case 0x69:\n    uVar2 = 2;\n    break;\n  default:\n    return 1;\n  case 0x6c:\n    uVar2 = 1;\n    if (*(char *)(param_1 + 2) == 'd') {\n      uVar2 = (-(uint)((*(char *)(param_1 + 3) + 0x9dU & 0xfd) == 0) & 2) + 1;\n    }\n    break;\n  case 0x6e:\n    return (uint)(*(char *)(param_1 + 2) != 'o') * 2 + 1;\n  case 0x72:\n    return (uint)(*(char *)(param_1 + 2) == 's') * 2 + 1;\n  case 0x73:\n    if (*(char *)(param_1 + 2) == 'a') {\n      uVar2 = 3;\n    }\n    else {\n      uVar2 = 1;\n      if ((*(char *)(param_1 + 2) == 't') && (bVar1 = *(char *)(param_1 + 3) + 0x9d, bVar1 < 0x11))\n      {\n        uVar2 = (-(uint)((1 << (bVar1 & 0x1f) & 0x10007U) == 0) & 0xfffffffe) + 3;\n      }\n    }\n    break;\n  case 0x78:\n    return (uint)(1 < (byte)(*(char *)(param_1 + 2) + 0x8eU));\n  }\n  return uVar2;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (switch_statement "switch(*(undefined1 *)(param_1 + 1)) {\n  case 0x69:\n    uVar2 = 2;\n    break;\n  default:\n    return 1;\n  case 0x6c:\n    uVar2 = 1;\n    if (*(char *)(param_1 + 2) == 'd') {\n      uVar2 = (-(uint)((*(char *)(param_1 + 3) + 0x9dU & 0xfd) == 0) & 2) + 1;\n    }\n    break;\n  case 0x6e:\n    return (uint)(*(char *)(param_1 + 2) != 'o') * 2 + 1;\n  case 0x72:\n    return (uint)(*(char *)(param_1 + 2) == 's') * 2 + 1;\n  case 0x73:\n    if (*(char *)(param_1 + 2) == 'a') {\n      uVar2 = 3;\n    }\n    else {\n      uVar2 = 1;\n      if ((*(char *)(param_1 + 2) == 't') && (bVar1 = *(char *)(param_1 + 3) + 0x9d, bVar1 < 0x11))\n      {\n        uVar2 = (-(uint)((1 << (bVar1 & 0x1f) & 0x10007U) == 0) & 0xfffffffe) + 3;\n      }\n    }\n    break;\n  case 0x78:\n    return (uint)(1 < (byte)(*(char *)(param_1 + 2) + 0x8eU));\n  }" switch (parenthesized_expression "(*(undefined1 *)(param_1 + 1))" ( (pointer_expression "*(undefined1 *)(param_1 + 1)" * (cast_expression "(undefined1 *)(param_1 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) )))) )) (compound_statement "{\n  case 0x69:\n    uVar2 = 2;\n    break;\n  default:\n    return 1;\n  case 0x6c:\n    uVar2 = 1;\n    if (*(char *)(param_1 + 2) == 'd') {\n      uVar2 = (-(uint)((*(char *)(param_1 + 3) + 0x9dU & 0xfd) == 0) & 2) + 1;\n    }\n    break;\n  case 0x6e:\n    return (uint)(*(char *)(param_1 + 2) != 'o') * 2 + 1;\n  case 0x72:\n    return (uint)(*(char *)(param_1 + 2) == 's') * 2 + 1;\n  case 0x73:\n    if (*(char *)(param_1 + 2) == 'a') {\n      uVar2 = 3;\n    }\n    else {\n      uVar2 = 1;\n      if ((*(char *)(param_1 + 2) == 't') && (bVar1 = *(char *)(param_1 + 3) + 0x9d, bVar1 < 0x11))\n      {\n        uVar2 = (-(uint)((1 << (bVar1 & 0x1f) & 0x10007U) == 0) & 0xfffffffe) + 3;\n      }\n    }\n    break;\n  case 0x78:\n    return (uint)(1 < (byte)(*(char *)(param_1 + 2) + 0x8eU));\n  }" { (case_statement "case 0x69:\n    uVar2 = 2;\n    break;" case number_literal : (expression_statement "uVar2 = 2;" (assignment_expression "uVar2 = 2" identifier = number_literal) ;) (break_statement "break;" break ;)) (case_statement "default:\n    return 1;" default : (return_statement "return 1;" return number_literal ;)) (case_statement "case 0x6c:\n    uVar2 = 1;\n    if (*(char *)(param_1 + 2) == 'd') {\n      uVar2 = (-(uint)((*(char *)(param_1 + 3) + 0x9dU & 0xfd) == 0) & 2) + 1;\n    }\n    break;" case number_literal : (expression_statement "uVar2 = 1;" (assignment_expression "uVar2 = 1" identifier = number_literal) ;) (if_statement "if (*(char *)(param_1 + 2) == 'd') {\n      uVar2 = (-(uint)((*(char *)(param_1 + 3) + 0x9dU & 0xfd) == 0) & 2) + 1;\n    }" if (parenthesized_expression "(*(char *)(param_1 + 2) == 'd')" ( (binary_expression "*(char *)(param_1 + 2) == 'd'" (pointer_expression "*(char *)(param_1 + 2)" * (cast_expression "(char *)(param_1 + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) == (char_literal "'d'" ' character ')) )) (compound_statement "{\n      uVar2 = (-(uint)((*(char *)(param_1 + 3) + 0x9dU & 0xfd) == 0) & 2) + 1;\n    }" { (expression_statement "uVar2 = (-(uint)((*(char *)(param_1 + 3) + 0x9dU & 0xfd) == 0) & 2) + 1;" (assignment_expression "uVar2 = (-(uint)((*(char *)(param_1 + 3) + 0x9dU & 0xfd) == 0) & 2) + 1" identifier = (binary_expression "(-(uint)((*(char *)(param_1 + 3) + 0x9dU & 0xfd) == 0) & 2) + 1" (parenthesized_expression "(-(uint)((*(char *)(param_1 + 3) + 0x9dU & 0xfd) == 0) & 2)" ( (binary_expression "-(uint)((*(char *)(param_1 + 3) + 0x9dU & 0xfd) == 0) & 2" (unary_expression "-(uint)((*(char *)(param_1 + 3) + 0x9dU & 0xfd) == 0)" - (call_expression "(uint)((*(char *)(param_1 + 3) + 0x9dU & 0xfd) == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((*(char *)(param_1 + 3) + 0x9dU & 0xfd) == 0)" ( (binary_expression "(*(char *)(param_1 + 3) + 0x9dU & 0xfd) == 0" (parenthesized_expression "(*(char *)(param_1 + 3) + 0x9dU & 0xfd)" ( (binary_expression "*(char *)(param_1 + 3) + 0x9dU & 0xfd" (binary_expression "*(char *)(param_1 + 3) + 0x9dU" (pointer_expression "*(char *)(param_1 + 3)" * (cast_expression "(char *)(param_1 + 3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 3)" ( (binary_expression "param_1 + 3" identifier + number_literal) )))) + number_literal) & number_literal) )) == number_literal) )))) & number_literal) )) + number_literal)) ;) })) (break_statement "break;" break ;)) (case_statement "case 0x6e:\n    return (uint)(*(char *)(param_1 + 2) != 'o') * 2 + 1;" case number_literal : (return_statement "return (uint)(*(char *)(param_1 + 2) != 'o') * 2 + 1;" return (binary_expression "(uint)(*(char *)(param_1 + 2) != 'o') * 2 + 1" (binary_expression "(uint)(*(char *)(param_1 + 2) != 'o') * 2" (call_expression "(uint)(*(char *)(param_1 + 2) != 'o')" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(char *)(param_1 + 2) != 'o')" ( (binary_expression "*(char *)(param_1 + 2) != 'o'" (pointer_expression "*(char *)(param_1 + 2)" * (cast_expression "(char *)(param_1 + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) != (char_literal "'o'" ' character ')) ))) * number_literal) + number_literal) ;)) (case_statement "case 0x72:\n    return (uint)(*(char *)(param_1 + 2) == 's') * 2 + 1;" case number_literal : (return_statement "return (uint)(*(char *)(param_1 + 2) == 's') * 2 + 1;" return (binary_expression "(uint)(*(char *)(param_1 + 2) == 's') * 2 + 1" (binary_expression "(uint)(*(char *)(param_1 + 2) == 's') * 2" (call_expression "(uint)(*(char *)(param_1 + 2) == 's')" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(char *)(param_1 + 2) == 's')" ( (binary_expression "*(char *)(param_1 + 2) == 's'" (pointer_expression "*(char *)(param_1 + 2)" * (cast_expression "(char *)(param_1 + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) == (char_literal "'s'" ' character ')) ))) * number_literal) + number_literal) ;)) (case_statement "case 0x73:\n    if (*(char *)(param_1 + 2) == 'a') {\n      uVar2 = 3;\n    }\n    else {\n      uVar2 = 1;\n      if ((*(char *)(param_1 + 2) == 't') && (bVar1 = *(char *)(param_1 + 3) + 0x9d, bVar1 < 0x11))\n      {\n        uVar2 = (-(uint)((1 << (bVar1 & 0x1f) & 0x10007U) == 0) & 0xfffffffe) + 3;\n      }\n    }\n    break;" case number_literal : (if_statement "if (*(char *)(param_1 + 2) == 'a') {\n      uVar2 = 3;\n    }\n    else {\n      uVar2 = 1;\n      if ((*(char *)(param_1 + 2) == 't') && (bVar1 = *(char *)(param_1 + 3) + 0x9d, bVar1 < 0x11))\n      {\n        uVar2 = (-(uint)((1 << (bVar1 & 0x1f) & 0x10007U) == 0) & 0xfffffffe) + 3;\n      }\n    }" if (parenthesized_expression "(*(char *)(param_1 + 2) == 'a')" ( (binary_expression "*(char *)(param_1 + 2) == 'a'" (pointer_expression "*(char *)(param_1 + 2)" * (cast_expression "(char *)(param_1 + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) == (char_literal "'a'" ' character ')) )) (compound_statement "{\n      uVar2 = 3;\n    }" { (expression_statement "uVar2 = 3;" (assignment_expression "uVar2 = 3" identifier = number_literal) ;) }) (else_clause "else {\n      uVar2 = 1;\n      if ((*(char *)(param_1 + 2) == 't') && (bVar1 = *(char *)(param_1 + 3) + 0x9d, bVar1 < 0x11))\n      {\n        uVar2 = (-(uint)((1 << (bVar1 & 0x1f) & 0x10007U) == 0) & 0xfffffffe) + 3;\n      }\n    }" else (compound_statement "{\n      uVar2 = 1;\n      if ((*(char *)(param_1 + 2) == 't') && (bVar1 = *(char *)(param_1 + 3) + 0x9d, bVar1 < 0x11))\n      {\n        uVar2 = (-(uint)((1 << (bVar1 & 0x1f) & 0x10007U) == 0) & 0xfffffffe) + 3;\n      }\n    }" { (expression_statement "uVar2 = 1;" (assignment_expression "uVar2 = 1" identifier = number_literal) ;) (if_statement "if ((*(char *)(param_1 + 2) == 't') && (bVar1 = *(char *)(param_1 + 3) + 0x9d, bVar1 < 0x11))\n      {\n        uVar2 = (-(uint)((1 << (bVar1 & 0x1f) & 0x10007U) == 0) & 0xfffffffe) + 3;\n      }" if (parenthesized_expression "((*(char *)(param_1 + 2) == 't') && (bVar1 = *(char *)(param_1 + 3) + 0x9d, bVar1 < 0x11))" ( (binary_expression "(*(char *)(param_1 + 2) == 't') && (bVar1 = *(char *)(param_1 + 3) + 0x9d, bVar1 < 0x11)" (parenthesized_expression "(*(char *)(param_1 + 2) == 't')" ( (binary_expression "*(char *)(param_1 + 2) == 't'" (pointer_expression "*(char *)(param_1 + 2)" * (cast_expression "(char *)(param_1 + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) == (char_literal "'t'" ' character ')) )) && (parenthesized_expression "(bVar1 = *(char *)(param_1 + 3) + 0x9d, bVar1 < 0x11)" ( (comma_expression "bVar1 = *(char *)(param_1 + 3) + 0x9d, bVar1 < 0x11" (assignment_expression "bVar1 = *(char *)(param_1 + 3) + 0x9d" identifier = (binary_expression "*(char *)(param_1 + 3) + 0x9d" (pointer_expression "*(char *)(param_1 + 3)" * (cast_expression "(char *)(param_1 + 3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 3)" ( (binary_expression "param_1 + 3" identifier + number_literal) )))) + number_literal)) , (binary_expression "bVar1 < 0x11" identifier < number_literal)) ))) )) (compound_statement "{\n        uVar2 = (-(uint)((1 << (bVar1 & 0x1f) & 0x10007U) == 0) & 0xfffffffe) + 3;\n      }" { (expression_statement "uVar2 = (-(uint)((1 << (bVar1 & 0x1f) & 0x10007U) == 0) & 0xfffffffe) + 3;" (assignment_expression "uVar2 = (-(uint)((1 << (bVar1 & 0x1f) & 0x10007U) == 0) & 0xfffffffe) + 3" identifier = (binary_expression "(-(uint)((1 << (bVar1 & 0x1f) & 0x10007U) == 0) & 0xfffffffe) + 3" (parenthesized_expression "(-(uint)((1 << (bVar1 & 0x1f) & 0x10007U) == 0) & 0xfffffffe)" ( (binary_expression "-(uint)((1 << (bVar1 & 0x1f) & 0x10007U) == 0) & 0xfffffffe" (unary_expression "-(uint)((1 << (bVar1 & 0x1f) & 0x10007U) == 0)" - (call_expression "(uint)((1 << (bVar1 & 0x1f) & 0x10007U) == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((1 << (bVar1 & 0x1f) & 0x10007U) == 0)" ( (binary_expression "(1 << (bVar1 & 0x1f) & 0x10007U) == 0" (parenthesized_expression "(1 << (bVar1 & 0x1f) & 0x10007U)" ( (binary_expression "1 << (bVar1 & 0x1f) & 0x10007U" (binary_expression "1 << (bVar1 & 0x1f)" number_literal << (parenthesized_expression "(bVar1 & 0x1f)" ( (binary_expression "bVar1 & 0x1f" identifier & number_literal) ))) & number_literal) )) == number_literal) )))) & number_literal) )) + number_literal)) ;) })) }))) (break_statement "break;" break ;)) (case_statement "case 0x78:\n    return (uint)(1 < (byte)(*(char *)(param_1 + 2) + 0x8eU));" case number_literal : (return_statement "return (uint)(1 < (byte)(*(char *)(param_1 + 2) + 0x8eU));" return (call_expression "(uint)(1 < (byte)(*(char *)(param_1 + 2) + 0x8eU))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(1 < (byte)(*(char *)(param_1 + 2) + 0x8eU))" ( (binary_expression "1 < (byte)(*(char *)(param_1 + 2) + 0x8eU)" number_literal < (call_expression "(byte)(*(char *)(param_1 + 2) + 0x8eU)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(*(char *)(param_1 + 2) + 0x8eU)" ( (binary_expression "*(char *)(param_1 + 2) + 0x8eU" (pointer_expression "*(char *)(param_1 + 2)" * (cast_expression "(char *)(param_1 + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) + number_literal) )))) ))) ;)) })) (return_statement "return uVar2;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.cx replaced with injection: get_pc_thunk_cx */\n\nint __regparm3 intel_float_operand(char *mnemonic)\n\n{\n  int iVar1;\n  \n  switch(mnemonic[1]) {\n  case 'i':\n    iVar1 = 2;\n    break;\n  default:\n    return 1;\n  case 'l':\n    iVar1 = 1;\n    if (mnemonic[2] == 'd') {\n      iVar1 = (-(uint)((mnemonic[3] + 0x9dU & 0xfd) == 0) & 2) + 1;\n    }\n    break;\n  case 'n':\n    return (uint)(mnemonic[2] != 'o') * 2 + 1;\n  case 'r':\n    return (uint)(mnemonic[2] == 's') * 2 + 1;\n  case 's':\n    if (mnemonic[2] == 'a') {\n      iVar1 = 3;\n    }\n    else {\n      iVar1 = 1;\n      if ((mnemonic[2] == 't') && ((byte)(mnemonic[3] + 0x9dU) < 0x11)) {\n        iVar1 = (-(uint)((1 << (mnemonic[3] + 0x9dU & 0x1f) & 0x10007U) == 0) & 0xfffffffe) + 3;\n      }\n    }\n    break;\n  case 'x':\n    return (uint)(1 < (byte)(mnemonic[2] + 0x8eU));\n  }\n  return iVar1;\n}\n\n" comment (function_definition "int __regparm3 intel_float_operand(char *mnemonic)\n\n{\n  int iVar1;\n  \n  switch(mnemonic[1]) {\n  case 'i':\n    iVar1 = 2;\n    break;\n  default:\n    return 1;\n  case 'l':\n    iVar1 = 1;\n    if (mnemonic[2] == 'd') {\n      iVar1 = (-(uint)((mnemonic[3] + 0x9dU & 0xfd) == 0) & 2) + 1;\n    }\n    break;\n  case 'n':\n    return (uint)(mnemonic[2] != 'o') * 2 + 1;\n  case 'r':\n    return (uint)(mnemonic[2] == 's') * 2 + 1;\n  case 's':\n    if (mnemonic[2] == 'a') {\n      iVar1 = 3;\n    }\n    else {\n      iVar1 = 1;\n      if ((mnemonic[2] == 't') && ((byte)(mnemonic[3] + 0x9dU) < 0x11)) {\n        iVar1 = (-(uint)((1 << (mnemonic[3] + 0x9dU & 0x1f) & 0x10007U) == 0) & 0xfffffffe) + 3;\n      }\n    }\n    break;\n  case 'x':\n    return (uint)(1 < (byte)(mnemonic[2] + 0x8eU));\n  }\n  return iVar1;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "intel_float_operand(char *mnemonic)" identifier (parameter_list "(char *mnemonic)" ( (parameter_declaration "char *mnemonic" primitive_type (pointer_declarator "*mnemonic" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  \n  switch(mnemonic[1]) {\n  case 'i':\n    iVar1 = 2;\n    break;\n  default:\n    return 1;\n  case 'l':\n    iVar1 = 1;\n    if (mnemonic[2] == 'd') {\n      iVar1 = (-(uint)((mnemonic[3] + 0x9dU & 0xfd) == 0) & 2) + 1;\n    }\n    break;\n  case 'n':\n    return (uint)(mnemonic[2] != 'o') * 2 + 1;\n  case 'r':\n    return (uint)(mnemonic[2] == 's') * 2 + 1;\n  case 's':\n    if (mnemonic[2] == 'a') {\n      iVar1 = 3;\n    }\n    else {\n      iVar1 = 1;\n      if ((mnemonic[2] == 't') && ((byte)(mnemonic[3] + 0x9dU) < 0x11)) {\n        iVar1 = (-(uint)((1 << (mnemonic[3] + 0x9dU & 0x1f) & 0x10007U) == 0) & 0xfffffffe) + 3;\n      }\n    }\n    break;\n  case 'x':\n    return (uint)(1 < (byte)(mnemonic[2] + 0x8eU));\n  }\n  return iVar1;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (switch_statement "switch(mnemonic[1]) {\n  case 'i':\n    iVar1 = 2;\n    break;\n  default:\n    return 1;\n  case 'l':\n    iVar1 = 1;\n    if (mnemonic[2] == 'd') {\n      iVar1 = (-(uint)((mnemonic[3] + 0x9dU & 0xfd) == 0) & 2) + 1;\n    }\n    break;\n  case 'n':\n    return (uint)(mnemonic[2] != 'o') * 2 + 1;\n  case 'r':\n    return (uint)(mnemonic[2] == 's') * 2 + 1;\n  case 's':\n    if (mnemonic[2] == 'a') {\n      iVar1 = 3;\n    }\n    else {\n      iVar1 = 1;\n      if ((mnemonic[2] == 't') && ((byte)(mnemonic[3] + 0x9dU) < 0x11)) {\n        iVar1 = (-(uint)((1 << (mnemonic[3] + 0x9dU & 0x1f) & 0x10007U) == 0) & 0xfffffffe) + 3;\n      }\n    }\n    break;\n  case 'x':\n    return (uint)(1 < (byte)(mnemonic[2] + 0x8eU));\n  }" switch (parenthesized_expression "(mnemonic[1])" ( (subscript_expression "mnemonic[1]" identifier [ number_literal ]) )) (compound_statement "{\n  case 'i':\n    iVar1 = 2;\n    break;\n  default:\n    return 1;\n  case 'l':\n    iVar1 = 1;\n    if (mnemonic[2] == 'd') {\n      iVar1 = (-(uint)((mnemonic[3] + 0x9dU & 0xfd) == 0) & 2) + 1;\n    }\n    break;\n  case 'n':\n    return (uint)(mnemonic[2] != 'o') * 2 + 1;\n  case 'r':\n    return (uint)(mnemonic[2] == 's') * 2 + 1;\n  case 's':\n    if (mnemonic[2] == 'a') {\n      iVar1 = 3;\n    }\n    else {\n      iVar1 = 1;\n      if ((mnemonic[2] == 't') && ((byte)(mnemonic[3] + 0x9dU) < 0x11)) {\n        iVar1 = (-(uint)((1 << (mnemonic[3] + 0x9dU & 0x1f) & 0x10007U) == 0) & 0xfffffffe) + 3;\n      }\n    }\n    break;\n  case 'x':\n    return (uint)(1 < (byte)(mnemonic[2] + 0x8eU));\n  }" { (case_statement "case 'i':\n    iVar1 = 2;\n    break;" case (char_literal "'i'" ' character ') : (expression_statement "iVar1 = 2;" (assignment_expression "iVar1 = 2" identifier = number_literal) ;) (break_statement "break;" break ;)) (case_statement "default:\n    return 1;" default : (return_statement "return 1;" return number_literal ;)) (case_statement "case 'l':\n    iVar1 = 1;\n    if (mnemonic[2] == 'd') {\n      iVar1 = (-(uint)((mnemonic[3] + 0x9dU & 0xfd) == 0) & 2) + 1;\n    }\n    break;" case (char_literal "'l'" ' character ') : (expression_statement "iVar1 = 1;" (assignment_expression "iVar1 = 1" identifier = number_literal) ;) (if_statement "if (mnemonic[2] == 'd') {\n      iVar1 = (-(uint)((mnemonic[3] + 0x9dU & 0xfd) == 0) & 2) + 1;\n    }" if (parenthesized_expression "(mnemonic[2] == 'd')" ( (binary_expression "mnemonic[2] == 'd'" (subscript_expression "mnemonic[2]" identifier [ number_literal ]) == (char_literal "'d'" ' character ')) )) (compound_statement "{\n      iVar1 = (-(uint)((mnemonic[3] + 0x9dU & 0xfd) == 0) & 2) + 1;\n    }" { (expression_statement "iVar1 = (-(uint)((mnemonic[3] + 0x9dU & 0xfd) == 0) & 2) + 1;" (assignment_expression "iVar1 = (-(uint)((mnemonic[3] + 0x9dU & 0xfd) == 0) & 2) + 1" identifier = (binary_expression "(-(uint)((mnemonic[3] + 0x9dU & 0xfd) == 0) & 2) + 1" (parenthesized_expression "(-(uint)((mnemonic[3] + 0x9dU & 0xfd) == 0) & 2)" ( (binary_expression "-(uint)((mnemonic[3] + 0x9dU & 0xfd) == 0) & 2" (unary_expression "-(uint)((mnemonic[3] + 0x9dU & 0xfd) == 0)" - (call_expression "(uint)((mnemonic[3] + 0x9dU & 0xfd) == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((mnemonic[3] + 0x9dU & 0xfd) == 0)" ( (binary_expression "(mnemonic[3] + 0x9dU & 0xfd) == 0" (parenthesized_expression "(mnemonic[3] + 0x9dU & 0xfd)" ( (binary_expression "mnemonic[3] + 0x9dU & 0xfd" (binary_expression "mnemonic[3] + 0x9dU" (subscript_expression "mnemonic[3]" identifier [ number_literal ]) + number_literal) & number_literal) )) == number_literal) )))) & number_literal) )) + number_literal)) ;) })) (break_statement "break;" break ;)) (case_statement "case 'n':\n    return (uint)(mnemonic[2] != 'o') * 2 + 1;" case (char_literal "'n'" ' character ') : (return_statement "return (uint)(mnemonic[2] != 'o') * 2 + 1;" return (binary_expression "(uint)(mnemonic[2] != 'o') * 2 + 1" (binary_expression "(uint)(mnemonic[2] != 'o') * 2" (call_expression "(uint)(mnemonic[2] != 'o')" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(mnemonic[2] != 'o')" ( (binary_expression "mnemonic[2] != 'o'" (subscript_expression "mnemonic[2]" identifier [ number_literal ]) != (char_literal "'o'" ' character ')) ))) * number_literal) + number_literal) ;)) (case_statement "case 'r':\n    return (uint)(mnemonic[2] == 's') * 2 + 1;" case (char_literal "'r'" ' character ') : (return_statement "return (uint)(mnemonic[2] == 's') * 2 + 1;" return (binary_expression "(uint)(mnemonic[2] == 's') * 2 + 1" (binary_expression "(uint)(mnemonic[2] == 's') * 2" (call_expression "(uint)(mnemonic[2] == 's')" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(mnemonic[2] == 's')" ( (binary_expression "mnemonic[2] == 's'" (subscript_expression "mnemonic[2]" identifier [ number_literal ]) == (char_literal "'s'" ' character ')) ))) * number_literal) + number_literal) ;)) (case_statement "case 's':\n    if (mnemonic[2] == 'a') {\n      iVar1 = 3;\n    }\n    else {\n      iVar1 = 1;\n      if ((mnemonic[2] == 't') && ((byte)(mnemonic[3] + 0x9dU) < 0x11)) {\n        iVar1 = (-(uint)((1 << (mnemonic[3] + 0x9dU & 0x1f) & 0x10007U) == 0) & 0xfffffffe) + 3;\n      }\n    }\n    break;" case (char_literal "'s'" ' character ') : (if_statement "if (mnemonic[2] == 'a') {\n      iVar1 = 3;\n    }\n    else {\n      iVar1 = 1;\n      if ((mnemonic[2] == 't') && ((byte)(mnemonic[3] + 0x9dU) < 0x11)) {\n        iVar1 = (-(uint)((1 << (mnemonic[3] + 0x9dU & 0x1f) & 0x10007U) == 0) & 0xfffffffe) + 3;\n      }\n    }" if (parenthesized_expression "(mnemonic[2] == 'a')" ( (binary_expression "mnemonic[2] == 'a'" (subscript_expression "mnemonic[2]" identifier [ number_literal ]) == (char_literal "'a'" ' character ')) )) (compound_statement "{\n      iVar1 = 3;\n    }" { (expression_statement "iVar1 = 3;" (assignment_expression "iVar1 = 3" identifier = number_literal) ;) }) (else_clause "else {\n      iVar1 = 1;\n      if ((mnemonic[2] == 't') && ((byte)(mnemonic[3] + 0x9dU) < 0x11)) {\n        iVar1 = (-(uint)((1 << (mnemonic[3] + 0x9dU & 0x1f) & 0x10007U) == 0) & 0xfffffffe) + 3;\n      }\n    }" else (compound_statement "{\n      iVar1 = 1;\n      if ((mnemonic[2] == 't') && ((byte)(mnemonic[3] + 0x9dU) < 0x11)) {\n        iVar1 = (-(uint)((1 << (mnemonic[3] + 0x9dU & 0x1f) & 0x10007U) == 0) & 0xfffffffe) + 3;\n      }\n    }" { (expression_statement "iVar1 = 1;" (assignment_expression "iVar1 = 1" identifier = number_literal) ;) (if_statement "if ((mnemonic[2] == 't') && ((byte)(mnemonic[3] + 0x9dU) < 0x11)) {\n        iVar1 = (-(uint)((1 << (mnemonic[3] + 0x9dU & 0x1f) & 0x10007U) == 0) & 0xfffffffe) + 3;\n      }" if (parenthesized_expression "((mnemonic[2] == 't') && ((byte)(mnemonic[3] + 0x9dU) < 0x11))" ( (binary_expression "(mnemonic[2] == 't') && ((byte)(mnemonic[3] + 0x9dU) < 0x11)" (parenthesized_expression "(mnemonic[2] == 't')" ( (binary_expression "mnemonic[2] == 't'" (subscript_expression "mnemonic[2]" identifier [ number_literal ]) == (char_literal "'t'" ' character ')) )) && (parenthesized_expression "((byte)(mnemonic[3] + 0x9dU) < 0x11)" ( (binary_expression "(byte)(mnemonic[3] + 0x9dU) < 0x11" (call_expression "(byte)(mnemonic[3] + 0x9dU)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(mnemonic[3] + 0x9dU)" ( (binary_expression "mnemonic[3] + 0x9dU" (subscript_expression "mnemonic[3]" identifier [ number_literal ]) + number_literal) ))) < number_literal) ))) )) (compound_statement "{\n        iVar1 = (-(uint)((1 << (mnemonic[3] + 0x9dU & 0x1f) & 0x10007U) == 0) & 0xfffffffe) + 3;\n      }" { (expression_statement "iVar1 = (-(uint)((1 << (mnemonic[3] + 0x9dU & 0x1f) & 0x10007U) == 0) & 0xfffffffe) + 3;" (assignment_expression "iVar1 = (-(uint)((1 << (mnemonic[3] + 0x9dU & 0x1f) & 0x10007U) == 0) & 0xfffffffe) + 3" identifier = (binary_expression "(-(uint)((1 << (mnemonic[3] + 0x9dU & 0x1f) & 0x10007U) == 0) & 0xfffffffe) + 3" (parenthesized_expression "(-(uint)((1 << (mnemonic[3] + 0x9dU & 0x1f) & 0x10007U) == 0) & 0xfffffffe)" ( (binary_expression "-(uint)((1 << (mnemonic[3] + 0x9dU & 0x1f) & 0x10007U) == 0) & 0xfffffffe" (unary_expression "-(uint)((1 << (mnemonic[3] + 0x9dU & 0x1f) & 0x10007U) == 0)" - (call_expression "(uint)((1 << (mnemonic[3] + 0x9dU & 0x1f) & 0x10007U) == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((1 << (mnemonic[3] + 0x9dU & 0x1f) & 0x10007U) == 0)" ( (binary_expression "(1 << (mnemonic[3] + 0x9dU & 0x1f) & 0x10007U) == 0" (parenthesized_expression "(1 << (mnemonic[3] + 0x9dU & 0x1f) & 0x10007U)" ( (binary_expression "1 << (mnemonic[3] + 0x9dU & 0x1f) & 0x10007U" (binary_expression "1 << (mnemonic[3] + 0x9dU & 0x1f)" number_literal << (parenthesized_expression "(mnemonic[3] + 0x9dU & 0x1f)" ( (binary_expression "mnemonic[3] + 0x9dU & 0x1f" (binary_expression "mnemonic[3] + 0x9dU" (subscript_expression "mnemonic[3]" identifier [ number_literal ]) + number_literal) & number_literal) ))) & number_literal) )) == number_literal) )))) & number_literal) )) + number_literal)) ;) })) }))) (break_statement "break;" break ;)) (case_statement "case 'x':\n    return (uint)(1 < (byte)(mnemonic[2] + 0x8eU));" case (char_literal "'x'" ' character ') : (return_statement "return (uint)(1 < (byte)(mnemonic[2] + 0x8eU));" return (call_expression "(uint)(1 < (byte)(mnemonic[2] + 0x8eU))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(1 < (byte)(mnemonic[2] + 0x8eU))" ( (binary_expression "1 < (byte)(mnemonic[2] + 0x8eU)" number_literal < (call_expression "(byte)(mnemonic[2] + 0x8eU)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(mnemonic[2] + 0x8eU)" ( (binary_expression "mnemonic[2] + 0x8eU" (subscript_expression "mnemonic[2]" identifier [ number_literal ]) + number_literal) )))) ))) ;)) })) (return_statement "return iVar1;" return identifier ;) })))
(translation_unit "uint __regparm3 FUN_00045bd0(int param_1)\n\n{\n  byte bVar1;\n  uint uVar2;\n  \n  switch(*(undefined1 *)(param_1 + 1)) {\n  case 0x69:\n    uVar2 = 2;\n    break;\n  default:\n    return 1;\n  case 0x6c:\n    uVar2 = 1;\n    if (*(char *)(param_1 + 2) == 'd') {\n      uVar2 = (-(uint)((*(char *)(param_1 + 3) + 0x9dU & 0xfd) == 0) & 2) + 1;\n    }\n    break;\n  case 0x6e:\n    return (uint)(*(char *)(param_1 + 2) != 'o') * 2 + 1;\n  case 0x72:\n    return (uint)(*(char *)(param_1 + 2) == 's') * 2 + 1;\n  case 0x73:\n    if (*(char *)(param_1 + 2) == 'a') {\n      uVar2 = 3;\n    }\n    else {\n      uVar2 = 1;\n      if ((*(char *)(param_1 + 2) == 't') && (bVar1 = *(char *)(param_1 + 3) + 0x9d, bVar1 < 0x11))\n      {\n        uVar2 = (-(uint)((1 << (bVar1 & 0x1f) & 0x10007U) == 0) & 0xfffffffe) + 3;\n      }\n    }\n    break;\n  case 0x78:\n    return (uint)(1 < (byte)(*(char *)(param_1 + 2) + 0x8eU));\n  }\n  return uVar2;\n}\n\n" (function_definition "uint __regparm3 FUN_00045bd0(int param_1)\n\n{\n  byte bVar1;\n  uint uVar2;\n  \n  switch(*(undefined1 *)(param_1 + 1)) {\n  case 0x69:\n    uVar2 = 2;\n    break;\n  default:\n    return 1;\n  case 0x6c:\n    uVar2 = 1;\n    if (*(char *)(param_1 + 2) == 'd') {\n      uVar2 = (-(uint)((*(char *)(param_1 + 3) + 0x9dU & 0xfd) == 0) & 2) + 1;\n    }\n    break;\n  case 0x6e:\n    return (uint)(*(char *)(param_1 + 2) != 'o') * 2 + 1;\n  case 0x72:\n    return (uint)(*(char *)(param_1 + 2) == 's') * 2 + 1;\n  case 0x73:\n    if (*(char *)(param_1 + 2) == 'a') {\n      uVar2 = 3;\n    }\n    else {\n      uVar2 = 1;\n      if ((*(char *)(param_1 + 2) == 't') && (bVar1 = *(char *)(param_1 + 3) + 0x9d, bVar1 < 0x11))\n      {\n        uVar2 = (-(uint)((1 << (bVar1 & 0x1f) & 0x10007U) == 0) & 0xfffffffe) + 3;\n      }\n    }\n    break;\n  case 0x78:\n    return (uint)(1 < (byte)(*(char *)(param_1 + 2) + 0x8eU));\n  }\n  return uVar2;\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "FUN_00045bd0(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  byte bVar1;\n  uint uVar2;\n  \n  switch(*(undefined1 *)(param_1 + 1)) {\n  case 0x69:\n    uVar2 = 2;\n    break;\n  default:\n    return 1;\n  case 0x6c:\n    uVar2 = 1;\n    if (*(char *)(param_1 + 2) == 'd') {\n      uVar2 = (-(uint)((*(char *)(param_1 + 3) + 0x9dU & 0xfd) == 0) & 2) + 1;\n    }\n    break;\n  case 0x6e:\n    return (uint)(*(char *)(param_1 + 2) != 'o') * 2 + 1;\n  case 0x72:\n    return (uint)(*(char *)(param_1 + 2) == 's') * 2 + 1;\n  case 0x73:\n    if (*(char *)(param_1 + 2) == 'a') {\n      uVar2 = 3;\n    }\n    else {\n      uVar2 = 1;\n      if ((*(char *)(param_1 + 2) == 't') && (bVar1 = *(char *)(param_1 + 3) + 0x9d, bVar1 < 0x11))\n      {\n        uVar2 = (-(uint)((1 << (bVar1 & 0x1f) & 0x10007U) == 0) & 0xfffffffe) + 3;\n      }\n    }\n    break;\n  case 0x78:\n    return (uint)(1 < (byte)(*(char *)(param_1 + 2) + 0x8eU));\n  }\n  return uVar2;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (switch_statement "switch(*(undefined1 *)(param_1 + 1)) {\n  case 0x69:\n    uVar2 = 2;\n    break;\n  default:\n    return 1;\n  case 0x6c:\n    uVar2 = 1;\n    if (*(char *)(param_1 + 2) == 'd') {\n      uVar2 = (-(uint)((*(char *)(param_1 + 3) + 0x9dU & 0xfd) == 0) & 2) + 1;\n    }\n    break;\n  case 0x6e:\n    return (uint)(*(char *)(param_1 + 2) != 'o') * 2 + 1;\n  case 0x72:\n    return (uint)(*(char *)(param_1 + 2) == 's') * 2 + 1;\n  case 0x73:\n    if (*(char *)(param_1 + 2) == 'a') {\n      uVar2 = 3;\n    }\n    else {\n      uVar2 = 1;\n      if ((*(char *)(param_1 + 2) == 't') && (bVar1 = *(char *)(param_1 + 3) + 0x9d, bVar1 < 0x11))\n      {\n        uVar2 = (-(uint)((1 << (bVar1 & 0x1f) & 0x10007U) == 0) & 0xfffffffe) + 3;\n      }\n    }\n    break;\n  case 0x78:\n    return (uint)(1 < (byte)(*(char *)(param_1 + 2) + 0x8eU));\n  }" switch (parenthesized_expression "(*(undefined1 *)(param_1 + 1))" ( (pointer_expression "*(undefined1 *)(param_1 + 1)" * (cast_expression "(undefined1 *)(param_1 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) )))) )) (compound_statement "{\n  case 0x69:\n    uVar2 = 2;\n    break;\n  default:\n    return 1;\n  case 0x6c:\n    uVar2 = 1;\n    if (*(char *)(param_1 + 2) == 'd') {\n      uVar2 = (-(uint)((*(char *)(param_1 + 3) + 0x9dU & 0xfd) == 0) & 2) + 1;\n    }\n    break;\n  case 0x6e:\n    return (uint)(*(char *)(param_1 + 2) != 'o') * 2 + 1;\n  case 0x72:\n    return (uint)(*(char *)(param_1 + 2) == 's') * 2 + 1;\n  case 0x73:\n    if (*(char *)(param_1 + 2) == 'a') {\n      uVar2 = 3;\n    }\n    else {\n      uVar2 = 1;\n      if ((*(char *)(param_1 + 2) == 't') && (bVar1 = *(char *)(param_1 + 3) + 0x9d, bVar1 < 0x11))\n      {\n        uVar2 = (-(uint)((1 << (bVar1 & 0x1f) & 0x10007U) == 0) & 0xfffffffe) + 3;\n      }\n    }\n    break;\n  case 0x78:\n    return (uint)(1 < (byte)(*(char *)(param_1 + 2) + 0x8eU));\n  }" { (case_statement "case 0x69:\n    uVar2 = 2;\n    break;" case number_literal : (expression_statement "uVar2 = 2;" (assignment_expression "uVar2 = 2" identifier = number_literal) ;) (break_statement "break;" break ;)) (case_statement "default:\n    return 1;" default : (return_statement "return 1;" return number_literal ;)) (case_statement "case 0x6c:\n    uVar2 = 1;\n    if (*(char *)(param_1 + 2) == 'd') {\n      uVar2 = (-(uint)((*(char *)(param_1 + 3) + 0x9dU & 0xfd) == 0) & 2) + 1;\n    }\n    break;" case number_literal : (expression_statement "uVar2 = 1;" (assignment_expression "uVar2 = 1" identifier = number_literal) ;) (if_statement "if (*(char *)(param_1 + 2) == 'd') {\n      uVar2 = (-(uint)((*(char *)(param_1 + 3) + 0x9dU & 0xfd) == 0) & 2) + 1;\n    }" if (parenthesized_expression "(*(char *)(param_1 + 2) == 'd')" ( (binary_expression "*(char *)(param_1 + 2) == 'd'" (pointer_expression "*(char *)(param_1 + 2)" * (cast_expression "(char *)(param_1 + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) == (char_literal "'d'" ' character ')) )) (compound_statement "{\n      uVar2 = (-(uint)((*(char *)(param_1 + 3) + 0x9dU & 0xfd) == 0) & 2) + 1;\n    }" { (expression_statement "uVar2 = (-(uint)((*(char *)(param_1 + 3) + 0x9dU & 0xfd) == 0) & 2) + 1;" (assignment_expression "uVar2 = (-(uint)((*(char *)(param_1 + 3) + 0x9dU & 0xfd) == 0) & 2) + 1" identifier = (binary_expression "(-(uint)((*(char *)(param_1 + 3) + 0x9dU & 0xfd) == 0) & 2) + 1" (parenthesized_expression "(-(uint)((*(char *)(param_1 + 3) + 0x9dU & 0xfd) == 0) & 2)" ( (binary_expression "-(uint)((*(char *)(param_1 + 3) + 0x9dU & 0xfd) == 0) & 2" (unary_expression "-(uint)((*(char *)(param_1 + 3) + 0x9dU & 0xfd) == 0)" - (call_expression "(uint)((*(char *)(param_1 + 3) + 0x9dU & 0xfd) == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((*(char *)(param_1 + 3) + 0x9dU & 0xfd) == 0)" ( (binary_expression "(*(char *)(param_1 + 3) + 0x9dU & 0xfd) == 0" (parenthesized_expression "(*(char *)(param_1 + 3) + 0x9dU & 0xfd)" ( (binary_expression "*(char *)(param_1 + 3) + 0x9dU & 0xfd" (binary_expression "*(char *)(param_1 + 3) + 0x9dU" (pointer_expression "*(char *)(param_1 + 3)" * (cast_expression "(char *)(param_1 + 3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 3)" ( (binary_expression "param_1 + 3" identifier + number_literal) )))) + number_literal) & number_literal) )) == number_literal) )))) & number_literal) )) + number_literal)) ;) })) (break_statement "break;" break ;)) (case_statement "case 0x6e:\n    return (uint)(*(char *)(param_1 + 2) != 'o') * 2 + 1;" case number_literal : (return_statement "return (uint)(*(char *)(param_1 + 2) != 'o') * 2 + 1;" return (binary_expression "(uint)(*(char *)(param_1 + 2) != 'o') * 2 + 1" (binary_expression "(uint)(*(char *)(param_1 + 2) != 'o') * 2" (call_expression "(uint)(*(char *)(param_1 + 2) != 'o')" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(char *)(param_1 + 2) != 'o')" ( (binary_expression "*(char *)(param_1 + 2) != 'o'" (pointer_expression "*(char *)(param_1 + 2)" * (cast_expression "(char *)(param_1 + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) != (char_literal "'o'" ' character ')) ))) * number_literal) + number_literal) ;)) (case_statement "case 0x72:\n    return (uint)(*(char *)(param_1 + 2) == 's') * 2 + 1;" case number_literal : (return_statement "return (uint)(*(char *)(param_1 + 2) == 's') * 2 + 1;" return (binary_expression "(uint)(*(char *)(param_1 + 2) == 's') * 2 + 1" (binary_expression "(uint)(*(char *)(param_1 + 2) == 's') * 2" (call_expression "(uint)(*(char *)(param_1 + 2) == 's')" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(char *)(param_1 + 2) == 's')" ( (binary_expression "*(char *)(param_1 + 2) == 's'" (pointer_expression "*(char *)(param_1 + 2)" * (cast_expression "(char *)(param_1 + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) == (char_literal "'s'" ' character ')) ))) * number_literal) + number_literal) ;)) (case_statement "case 0x73:\n    if (*(char *)(param_1 + 2) == 'a') {\n      uVar2 = 3;\n    }\n    else {\n      uVar2 = 1;\n      if ((*(char *)(param_1 + 2) == 't') && (bVar1 = *(char *)(param_1 + 3) + 0x9d, bVar1 < 0x11))\n      {\n        uVar2 = (-(uint)((1 << (bVar1 & 0x1f) & 0x10007U) == 0) & 0xfffffffe) + 3;\n      }\n    }\n    break;" case number_literal : (if_statement "if (*(char *)(param_1 + 2) == 'a') {\n      uVar2 = 3;\n    }\n    else {\n      uVar2 = 1;\n      if ((*(char *)(param_1 + 2) == 't') && (bVar1 = *(char *)(param_1 + 3) + 0x9d, bVar1 < 0x11))\n      {\n        uVar2 = (-(uint)((1 << (bVar1 & 0x1f) & 0x10007U) == 0) & 0xfffffffe) + 3;\n      }\n    }" if (parenthesized_expression "(*(char *)(param_1 + 2) == 'a')" ( (binary_expression "*(char *)(param_1 + 2) == 'a'" (pointer_expression "*(char *)(param_1 + 2)" * (cast_expression "(char *)(param_1 + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) == (char_literal "'a'" ' character ')) )) (compound_statement "{\n      uVar2 = 3;\n    }" { (expression_statement "uVar2 = 3;" (assignment_expression "uVar2 = 3" identifier = number_literal) ;) }) (else_clause "else {\n      uVar2 = 1;\n      if ((*(char *)(param_1 + 2) == 't') && (bVar1 = *(char *)(param_1 + 3) + 0x9d, bVar1 < 0x11))\n      {\n        uVar2 = (-(uint)((1 << (bVar1 & 0x1f) & 0x10007U) == 0) & 0xfffffffe) + 3;\n      }\n    }" else (compound_statement "{\n      uVar2 = 1;\n      if ((*(char *)(param_1 + 2) == 't') && (bVar1 = *(char *)(param_1 + 3) + 0x9d, bVar1 < 0x11))\n      {\n        uVar2 = (-(uint)((1 << (bVar1 & 0x1f) & 0x10007U) == 0) & 0xfffffffe) + 3;\n      }\n    }" { (expression_statement "uVar2 = 1;" (assignment_expression "uVar2 = 1" identifier = number_literal) ;) (if_statement "if ((*(char *)(param_1 + 2) == 't') && (bVar1 = *(char *)(param_1 + 3) + 0x9d, bVar1 < 0x11))\n      {\n        uVar2 = (-(uint)((1 << (bVar1 & 0x1f) & 0x10007U) == 0) & 0xfffffffe) + 3;\n      }" if (parenthesized_expression "((*(char *)(param_1 + 2) == 't') && (bVar1 = *(char *)(param_1 + 3) + 0x9d, bVar1 < 0x11))" ( (binary_expression "(*(char *)(param_1 + 2) == 't') && (bVar1 = *(char *)(param_1 + 3) + 0x9d, bVar1 < 0x11)" (parenthesized_expression "(*(char *)(param_1 + 2) == 't')" ( (binary_expression "*(char *)(param_1 + 2) == 't'" (pointer_expression "*(char *)(param_1 + 2)" * (cast_expression "(char *)(param_1 + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) == (char_literal "'t'" ' character ')) )) && (parenthesized_expression "(bVar1 = *(char *)(param_1 + 3) + 0x9d, bVar1 < 0x11)" ( (comma_expression "bVar1 = *(char *)(param_1 + 3) + 0x9d, bVar1 < 0x11" (assignment_expression "bVar1 = *(char *)(param_1 + 3) + 0x9d" identifier = (binary_expression "*(char *)(param_1 + 3) + 0x9d" (pointer_expression "*(char *)(param_1 + 3)" * (cast_expression "(char *)(param_1 + 3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 3)" ( (binary_expression "param_1 + 3" identifier + number_literal) )))) + number_literal)) , (binary_expression "bVar1 < 0x11" identifier < number_literal)) ))) )) (compound_statement "{\n        uVar2 = (-(uint)((1 << (bVar1 & 0x1f) & 0x10007U) == 0) & 0xfffffffe) + 3;\n      }" { (expression_statement "uVar2 = (-(uint)((1 << (bVar1 & 0x1f) & 0x10007U) == 0) & 0xfffffffe) + 3;" (assignment_expression "uVar2 = (-(uint)((1 << (bVar1 & 0x1f) & 0x10007U) == 0) & 0xfffffffe) + 3" identifier = (binary_expression "(-(uint)((1 << (bVar1 & 0x1f) & 0x10007U) == 0) & 0xfffffffe) + 3" (parenthesized_expression "(-(uint)((1 << (bVar1 & 0x1f) & 0x10007U) == 0) & 0xfffffffe)" ( (binary_expression "-(uint)((1 << (bVar1 & 0x1f) & 0x10007U) == 0) & 0xfffffffe" (unary_expression "-(uint)((1 << (bVar1 & 0x1f) & 0x10007U) == 0)" - (call_expression "(uint)((1 << (bVar1 & 0x1f) & 0x10007U) == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((1 << (bVar1 & 0x1f) & 0x10007U) == 0)" ( (binary_expression "(1 << (bVar1 & 0x1f) & 0x10007U) == 0" (parenthesized_expression "(1 << (bVar1 & 0x1f) & 0x10007U)" ( (binary_expression "1 << (bVar1 & 0x1f) & 0x10007U" (binary_expression "1 << (bVar1 & 0x1f)" number_literal << (parenthesized_expression "(bVar1 & 0x1f)" ( (binary_expression "bVar1 & 0x1f" identifier & number_literal) ))) & number_literal) )) == number_literal) )))) & number_literal) )) + number_literal)) ;) })) }))) (break_statement "break;" break ;)) (case_statement "case 0x78:\n    return (uint)(1 < (byte)(*(char *)(param_1 + 2) + 0x8eU));" case number_literal : (return_statement "return (uint)(1 < (byte)(*(char *)(param_1 + 2) + 0x8eU));" return (call_expression "(uint)(1 < (byte)(*(char *)(param_1 + 2) + 0x8eU))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(1 < (byte)(*(char *)(param_1 + 2) + 0x8eU))" ( (binary_expression "1 < (byte)(*(char *)(param_1 + 2) + 0x8eU)" number_literal < (call_expression "(byte)(*(char *)(param_1 + 2) + 0x8eU)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(*(char *)(param_1 + 2) + 0x8eU)" ( (binary_expression "*(char *)(param_1 + 2) + 0x8eU" (pointer_expression "*(char *)(param_1 + 2)" * (cast_expression "(char *)(param_1 + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) + number_literal) )))) ))) ;)) })) (return_statement "return uVar2;" return identifier ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (switch_statement switch (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (compound_statement { (case_statement case LIT : (expression_statement (assignment_expression IDENT = LIT) ;) (break_statement break ;)) (case_statement default : (return_statement return LIT ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (unary_expression - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) & LIT) )) == LIT) )))) & LIT) )) + LIT)) ;) })) (break_statement break ;)) (case_statement case LIT : (return_statement return (binary_expression (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' character ')) ))) * LIT) + LIT) ;)) (case_statement case LIT : (return_statement return (binary_expression (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' character ')) ))) * LIT) + LIT) ;)) (case_statement case LIT : (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' character ')) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) , (binary_expression IDENT < LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (unary_expression - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression LIT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) & LIT) )) == LIT) )))) & LIT) )) + LIT)) ;) })) }))) (break_statement break ;)) (case_statement case LIT : (return_statement return (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression LIT < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ))) ;)) })) (return_statement return IDENT ;) })))
(function_definition "uint __regparm3 FUN_00045bd0(int param_1)\n\n{\n  byte bVar1;\n  uint uVar2;\n  \n  switch(*(undefined1 *)(param_1 + 1)) {\n  case 0x69:\n    uVar2 = 2;\n    break;\n  default:\n    return 1;\n  case 0x6c:\n    uVar2 = 1;\n    if (*(char *)(param_1 + 2) == 'd') {\n      uVar2 = (-(uint)((*(char *)(param_1 + 3) + 0x9dU & 0xfd) == 0) & 2) + 1;\n    }\n    break;\n  case 0x6e:\n    return (uint)(*(char *)(param_1 + 2) != 'o') * 2 + 1;\n  case 0x72:\n    return (uint)(*(char *)(param_1 + 2) == 's') * 2 + 1;\n  case 0x73:\n    if (*(char *)(param_1 + 2) == 'a') {\n      uVar2 = 3;\n    }\n    else {\n      uVar2 = 1;\n      if ((*(char *)(param_1 + 2) == 't') && (bVar1 = *(char *)(param_1 + 3) + 0x9d, bVar1 < 0x11))\n      {\n        uVar2 = (-(uint)((1 << (bVar1 & 0x1f) & 0x10007U) == 0) & 0xfffffffe) + 3;\n      }\n    }\n    break;\n  case 0x78:\n    return (uint)(1 < (byte)(*(char *)(param_1 + 2) + 0x8eU));\n  }\n  return uVar2;\n}" (type_identifier "uint") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_00045bd0(int param_1)" (identifier "FUN_00045bd0") (parameter_list "(int param_1)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) () ")"))) (compound_statement "{\n  byte bVar1;\n  uint uVar2;\n  \n  switch(*(undefined1 *)(param_1 + 1)) {\n  case 0x69:\n    uVar2 = 2;\n    break;\n  default:\n    return 1;\n  case 0x6c:\n    uVar2 = 1;\n    if (*(char *)(param_1 + 2) == 'd') {\n      uVar2 = (-(uint)((*(char *)(param_1 + 3) + 0x9dU & 0xfd) == 0) & 2) + 1;\n    }\n    break;\n  case 0x6e:\n    return (uint)(*(char *)(param_1 + 2) != 'o') * 2 + 1;\n  case 0x72:\n    return (uint)(*(char *)(param_1 + 2) == 's') * 2 + 1;\n  case 0x73:\n    if (*(char *)(param_1 + 2) == 'a') {\n      uVar2 = 3;\n    }\n    else {\n      uVar2 = 1;\n      if ((*(char *)(param_1 + 2) == 't') && (bVar1 = *(char *)(param_1 + 3) + 0x9d, bVar1 < 0x11))\n      {\n        uVar2 = (-(uint)((1 << (bVar1 & 0x1f) & 0x10007U) == 0) & 0xfffffffe) + 3;\n      }\n    }\n    break;\n  case 0x78:\n    return (uint)(1 < (byte)(*(char *)(param_1 + 2) + 0x8eU));\n  }\n  return uVar2;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (switch_statement "switch(*(undefined1 *)(param_1 + 1)) {\n  case 0x69:\n    uVar2 = 2;\n    break;\n  default:\n    return 1;\n  case 0x6c:\n    uVar2 = 1;\n    if (*(char *)(param_1 + 2) == 'd') {\n      uVar2 = (-(uint)((*(char *)(param_1 + 3) + 0x9dU & 0xfd) == 0) & 2) + 1;\n    }\n    break;\n  case 0x6e:\n    return (uint)(*(char *)(param_1 + 2) != 'o') * 2 + 1;\n  case 0x72:\n    return (uint)(*(char *)(param_1 + 2) == 's') * 2 + 1;\n  case 0x73:\n    if (*(char *)(param_1 + 2) == 'a') {\n      uVar2 = 3;\n    }\n    else {\n      uVar2 = 1;\n      if ((*(char *)(param_1 + 2) == 't') && (bVar1 = *(char *)(param_1 + 3) + 0x9d, bVar1 < 0x11))\n      {\n        uVar2 = (-(uint)((1 << (bVar1 & 0x1f) & 0x10007U) == 0) & 0xfffffffe) + 3;\n      }\n    }\n    break;\n  case 0x78:\n    return (uint)(1 < (byte)(*(char *)(param_1 + 2) + 0x8eU));\n  }" (switch "switch") (parenthesized_expression "(*(undefined1 *)(param_1 + 1))" (( "(") (pointer_expression "*(undefined1 *)(param_1 + 1)" (* "*") (cast_expression "(undefined1 *)(param_1 + 1)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 1)" (( "(") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1")) () ")")))) () ")")) (compound_statement "{\n  case 0x69:\n    uVar2 = 2;\n    break;\n  default:\n    return 1;\n  case 0x6c:\n    uVar2 = 1;\n    if (*(char *)(param_1 + 2) == 'd') {\n      uVar2 = (-(uint)((*(char *)(param_1 + 3) + 0x9dU & 0xfd) == 0) & 2) + 1;\n    }\n    break;\n  case 0x6e:\n    return (uint)(*(char *)(param_1 + 2) != 'o') * 2 + 1;\n  case 0x72:\n    return (uint)(*(char *)(param_1 + 2) == 's') * 2 + 1;\n  case 0x73:\n    if (*(char *)(param_1 + 2) == 'a') {\n      uVar2 = 3;\n    }\n    else {\n      uVar2 = 1;\n      if ((*(char *)(param_1 + 2) == 't') && (bVar1 = *(char *)(param_1 + 3) + 0x9d, bVar1 < 0x11))\n      {\n        uVar2 = (-(uint)((1 << (bVar1 & 0x1f) & 0x10007U) == 0) & 0xfffffffe) + 3;\n      }\n    }\n    break;\n  case 0x78:\n    return (uint)(1 < (byte)(*(char *)(param_1 + 2) + 0x8eU));\n  }" ({ "{") (case_statement "case 0x69:\n    uVar2 = 2;\n    break;" (case "case") (number_literal "0x69") (: ":") (expression_statement "uVar2 = 2;" (assignment_expression "uVar2 = 2" (identifier "uVar2") (= "=") (number_literal "2")) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "default:\n    return 1;" (default "default") (: ":") (return_statement "return 1;" (return "return") (number_literal "1") (; ";"))) (case_statement "case 0x6c:\n    uVar2 = 1;\n    if (*(char *)(param_1 + 2) == 'd') {\n      uVar2 = (-(uint)((*(char *)(param_1 + 3) + 0x9dU & 0xfd) == 0) & 2) + 1;\n    }\n    break;" (case "case") (number_literal "0x6c") (: ":") (expression_statement "uVar2 = 1;" (assignment_expression "uVar2 = 1" (identifier "uVar2") (= "=") (number_literal "1")) (; ";")) (if_statement "if (*(char *)(param_1 + 2) == 'd') {\n      uVar2 = (-(uint)((*(char *)(param_1 + 3) + 0x9dU & 0xfd) == 0) & 2) + 1;\n    }" (if "if") (parenthesized_expression "(*(char *)(param_1 + 2) == 'd')" (( "(") (binary_expression "*(char *)(param_1 + 2) == 'd'" (pointer_expression "*(char *)(param_1 + 2)" (* "*") (cast_expression "(char *)(param_1 + 2)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")")))) (== "==") (char_literal "'d'" (' "'") (character "d") (' "'"))) () ")")) (compound_statement "{\n      uVar2 = (-(uint)((*(char *)(param_1 + 3) + 0x9dU & 0xfd) == 0) & 2) + 1;\n    }" ({ "{") (expression_statement "uVar2 = (-(uint)((*(char *)(param_1 + 3) + 0x9dU & 0xfd) == 0) & 2) + 1;" (assignment_expression "uVar2 = (-(uint)((*(char *)(param_1 + 3) + 0x9dU & 0xfd) == 0) & 2) + 1" (identifier "uVar2") (= "=") (binary_expression "(-(uint)((*(char *)(param_1 + 3) + 0x9dU & 0xfd) == 0) & 2) + 1" (parenthesized_expression "(-(uint)((*(char *)(param_1 + 3) + 0x9dU & 0xfd) == 0) & 2)" (( "(") (binary_expression "-(uint)((*(char *)(param_1 + 3) + 0x9dU & 0xfd) == 0) & 2" (unary_expression "-(uint)((*(char *)(param_1 + 3) + 0x9dU & 0xfd) == 0)" (- "-") (call_expression "(uint)((*(char *)(param_1 + 3) + 0x9dU & 0xfd) == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((*(char *)(param_1 + 3) + 0x9dU & 0xfd) == 0)" (( "(") (binary_expression "(*(char *)(param_1 + 3) + 0x9dU & 0xfd) == 0" (parenthesized_expression "(*(char *)(param_1 + 3) + 0x9dU & 0xfd)" (( "(") (binary_expression "*(char *)(param_1 + 3) + 0x9dU & 0xfd" (binary_expression "*(char *)(param_1 + 3) + 0x9dU" (pointer_expression "*(char *)(param_1 + 3)" (* "*") (cast_expression "(char *)(param_1 + 3)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 3)" (( "(") (binary_expression "param_1 + 3" (identifier "param_1") (+ "+") (number_literal "3")) () ")")))) (+ "+") (number_literal "0x9dU")) (& "&") (number_literal "0xfd")) () ")")) (== "==") (number_literal "0")) () ")")))) (& "&") (number_literal "2")) () ")")) (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x6e:\n    return (uint)(*(char *)(param_1 + 2) != 'o') * 2 + 1;" (case "case") (number_literal "0x6e") (: ":") (return_statement "return (uint)(*(char *)(param_1 + 2) != 'o') * 2 + 1;" (return "return") (binary_expression "(uint)(*(char *)(param_1 + 2) != 'o') * 2 + 1" (binary_expression "(uint)(*(char *)(param_1 + 2) != 'o') * 2" (call_expression "(uint)(*(char *)(param_1 + 2) != 'o')" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(char *)(param_1 + 2) != 'o')" (( "(") (binary_expression "*(char *)(param_1 + 2) != 'o'" (pointer_expression "*(char *)(param_1 + 2)" (* "*") (cast_expression "(char *)(param_1 + 2)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")")))) (!= "!=") (char_literal "'o'" (' "'") (character "o") (' "'"))) () ")"))) (* "*") (number_literal "2")) (+ "+") (number_literal "1")) (; ";"))) (case_statement "case 0x72:\n    return (uint)(*(char *)(param_1 + 2) == 's') * 2 + 1;" (case "case") (number_literal "0x72") (: ":") (return_statement "return (uint)(*(char *)(param_1 + 2) == 's') * 2 + 1;" (return "return") (binary_expression "(uint)(*(char *)(param_1 + 2) == 's') * 2 + 1" (binary_expression "(uint)(*(char *)(param_1 + 2) == 's') * 2" (call_expression "(uint)(*(char *)(param_1 + 2) == 's')" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(char *)(param_1 + 2) == 's')" (( "(") (binary_expression "*(char *)(param_1 + 2) == 's'" (pointer_expression "*(char *)(param_1 + 2)" (* "*") (cast_expression "(char *)(param_1 + 2)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")")))) (== "==") (char_literal "'s'" (' "'") (character "s") (' "'"))) () ")"))) (* "*") (number_literal "2")) (+ "+") (number_literal "1")) (; ";"))) (case_statement "case 0x73:\n    if (*(char *)(param_1 + 2) == 'a') {\n      uVar2 = 3;\n    }\n    else {\n      uVar2 = 1;\n      if ((*(char *)(param_1 + 2) == 't') && (bVar1 = *(char *)(param_1 + 3) + 0x9d, bVar1 < 0x11))\n      {\n        uVar2 = (-(uint)((1 << (bVar1 & 0x1f) & 0x10007U) == 0) & 0xfffffffe) + 3;\n      }\n    }\n    break;" (case "case") (number_literal "0x73") (: ":") (if_statement "if (*(char *)(param_1 + 2) == 'a') {\n      uVar2 = 3;\n    }\n    else {\n      uVar2 = 1;\n      if ((*(char *)(param_1 + 2) == 't') && (bVar1 = *(char *)(param_1 + 3) + 0x9d, bVar1 < 0x11))\n      {\n        uVar2 = (-(uint)((1 << (bVar1 & 0x1f) & 0x10007U) == 0) & 0xfffffffe) + 3;\n      }\n    }" (if "if") (parenthesized_expression "(*(char *)(param_1 + 2) == 'a')" (( "(") (binary_expression "*(char *)(param_1 + 2) == 'a'" (pointer_expression "*(char *)(param_1 + 2)" (* "*") (cast_expression "(char *)(param_1 + 2)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")")))) (== "==") (char_literal "'a'" (' "'") (character "a") (' "'"))) () ")")) (compound_statement "{\n      uVar2 = 3;\n    }" ({ "{") (expression_statement "uVar2 = 3;" (assignment_expression "uVar2 = 3" (identifier "uVar2") (= "=") (number_literal "3")) (; ";")) (} "}")) (else_clause "else {\n      uVar2 = 1;\n      if ((*(char *)(param_1 + 2) == 't') && (bVar1 = *(char *)(param_1 + 3) + 0x9d, bVar1 < 0x11))\n      {\n        uVar2 = (-(uint)((1 << (bVar1 & 0x1f) & 0x10007U) == 0) & 0xfffffffe) + 3;\n      }\n    }" (else "else") (compound_statement "{\n      uVar2 = 1;\n      if ((*(char *)(param_1 + 2) == 't') && (bVar1 = *(char *)(param_1 + 3) + 0x9d, bVar1 < 0x11))\n      {\n        uVar2 = (-(uint)((1 << (bVar1 & 0x1f) & 0x10007U) == 0) & 0xfffffffe) + 3;\n      }\n    }" ({ "{") (expression_statement "uVar2 = 1;" (assignment_expression "uVar2 = 1" (identifier "uVar2") (= "=") (number_literal "1")) (; ";")) (if_statement "if ((*(char *)(param_1 + 2) == 't') && (bVar1 = *(char *)(param_1 + 3) + 0x9d, bVar1 < 0x11))\n      {\n        uVar2 = (-(uint)((1 << (bVar1 & 0x1f) & 0x10007U) == 0) & 0xfffffffe) + 3;\n      }" (if "if") (parenthesized_expression "((*(char *)(param_1 + 2) == 't') && (bVar1 = *(char *)(param_1 + 3) + 0x9d, bVar1 < 0x11))" (( "(") (binary_expression "(*(char *)(param_1 + 2) == 't') && (bVar1 = *(char *)(param_1 + 3) + 0x9d, bVar1 < 0x11)" (parenthesized_expression "(*(char *)(param_1 + 2) == 't')" (( "(") (binary_expression "*(char *)(param_1 + 2) == 't'" (pointer_expression "*(char *)(param_1 + 2)" (* "*") (cast_expression "(char *)(param_1 + 2)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")")))) (== "==") (char_literal "'t'" (' "'") (character "t") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(bVar1 = *(char *)(param_1 + 3) + 0x9d, bVar1 < 0x11)" (( "(") (comma_expression "bVar1 = *(char *)(param_1 + 3) + 0x9d, bVar1 < 0x11" (assignment_expression "bVar1 = *(char *)(param_1 + 3) + 0x9d" (identifier "bVar1") (= "=") (binary_expression "*(char *)(param_1 + 3) + 0x9d" (pointer_expression "*(char *)(param_1 + 3)" (* "*") (cast_expression "(char *)(param_1 + 3)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 3)" (( "(") (binary_expression "param_1 + 3" (identifier "param_1") (+ "+") (number_literal "3")) () ")")))) (+ "+") (number_literal "0x9d"))) (, ",") (binary_expression "bVar1 < 0x11" (identifier "bVar1") (< "<") (number_literal "0x11"))) () ")"))) () ")")) (compound_statement "{\n        uVar2 = (-(uint)((1 << (bVar1 & 0x1f) & 0x10007U) == 0) & 0xfffffffe) + 3;\n      }" ({ "{") (expression_statement "uVar2 = (-(uint)((1 << (bVar1 & 0x1f) & 0x10007U) == 0) & 0xfffffffe) + 3;" (assignment_expression "uVar2 = (-(uint)((1 << (bVar1 & 0x1f) & 0x10007U) == 0) & 0xfffffffe) + 3" (identifier "uVar2") (= "=") (binary_expression "(-(uint)((1 << (bVar1 & 0x1f) & 0x10007U) == 0) & 0xfffffffe) + 3" (parenthesized_expression "(-(uint)((1 << (bVar1 & 0x1f) & 0x10007U) == 0) & 0xfffffffe)" (( "(") (binary_expression "-(uint)((1 << (bVar1 & 0x1f) & 0x10007U) == 0) & 0xfffffffe" (unary_expression "-(uint)((1 << (bVar1 & 0x1f) & 0x10007U) == 0)" (- "-") (call_expression "(uint)((1 << (bVar1 & 0x1f) & 0x10007U) == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((1 << (bVar1 & 0x1f) & 0x10007U) == 0)" (( "(") (binary_expression "(1 << (bVar1 & 0x1f) & 0x10007U) == 0" (parenthesized_expression "(1 << (bVar1 & 0x1f) & 0x10007U)" (( "(") (binary_expression "1 << (bVar1 & 0x1f) & 0x10007U" (binary_expression "1 << (bVar1 & 0x1f)" (number_literal "1") (<< "<<") (parenthesized_expression "(bVar1 & 0x1f)" (( "(") (binary_expression "bVar1 & 0x1f" (identifier "bVar1") (& "&") (number_literal "0x1f")) () ")"))) (& "&") (number_literal "0x10007U")) () ")")) (== "==") (number_literal "0")) () ")")))) (& "&") (number_literal "0xfffffffe")) () ")")) (+ "+") (number_literal "3"))) (; ";")) (} "}"))) (} "}")))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x78:\n    return (uint)(1 < (byte)(*(char *)(param_1 + 2) + 0x8eU));" (case "case") (number_literal "0x78") (: ":") (return_statement "return (uint)(1 < (byte)(*(char *)(param_1 + 2) + 0x8eU));" (return "return") (call_expression "(uint)(1 < (byte)(*(char *)(param_1 + 2) + 0x8eU))" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(1 < (byte)(*(char *)(param_1 + 2) + 0x8eU))" (( "(") (binary_expression "1 < (byte)(*(char *)(param_1 + 2) + 0x8eU)" (number_literal "1") (< "<") (call_expression "(byte)(*(char *)(param_1 + 2) + 0x8eU)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(*(char *)(param_1 + 2) + 0x8eU)" (( "(") (binary_expression "*(char *)(param_1 + 2) + 0x8eU" (pointer_expression "*(char *)(param_1 + 2)" (* "*") (cast_expression "(char *)(param_1 + 2)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")")))) (+ "+") (number_literal "0x8eU")) () ")")))) () ")"))) (; ";"))) (} "}"))) (return_statement "return uVar2;" (return "return") (identifier "uVar2") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.cx replaced with injection: get_pc_thunk_cx */

int __regparm3 function_1(char *mnemonic)

{
  int iVar1;
  
  switch(mnemonic[1]) {
  case 'i':
    iVar1 = 2;
    break;
  default:
    return 1;
  case 'l':
    iVar1 = 1;
    if (mnemonic[2] == 'd') {
      iVar1 = (-(uint)((mnemonic[3] + 0x9dU & 0xfd) == 0) & 2) + 1;
    }
    break;
  case 'n':
    return (uint)(mnemonic[2] != 'o') * 2 + 1;
  case 'r':
    return (uint)(mnemonic[2] == 's') * 2 + 1;
  case 's':
    if (mnemonic[2] == 'a') {
      iVar1 = 3;
    }
    else {
      iVar1 = 1;
      if ((mnemonic[2] == 't') && ((byte)(mnemonic[3] + 0x9dU) < 0x11)) {
        iVar1 = (-(uint)((1 << (mnemonic[3] + 0x9dU & 0x1f) & 0x10007U) == 0) & 0xfffffffe) + 3;
      }
    }
    break;
  case 'x':
    return (uint)(1 < (byte)(mnemonic[2] + 0x8eU));
  }
  return iVar1;
}


(translation_unit (function_definition type: (type_identifier) (ERROR (identifier)) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (switch_statement condition: (parenthesized_expression (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)))))) body: (compound_statement (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (break_statement)) (case_statement (return_statement (number_literal))) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (character)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (unary_expression argument: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (parenthesized_expression (binary_expression left: (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: (number_literal)) right: (number_literal))) right: (number_literal))))) right: (number_literal))) right: (number_literal)))))) (break_statement)) (case_statement value: (number_literal) (return_statement (binary_expression left: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (character))))) right: (number_literal)) right: (number_literal)))) (case_statement value: (number_literal) (return_statement (binary_expression left: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (character))))) right: (number_literal)) right: (number_literal)))) (case_statement value: (number_literal) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (character)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (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: (char_literal (character)))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (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: (number_literal))) right: (binary_expression left: (identifier) right: (number_literal)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (unary_expression argument: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal))) right: (number_literal))))) right: (number_literal))) right: (number_literal))))))))) (break_statement)) (case_statement value: (number_literal) (return_statement (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (number_literal) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))))))))) (return_statement (identifier)))))

/* WARNING: Function: __i686.get_pc_thunk.cx replaced with injection: get_pc_thunk_cx */

uint __regparm3 MASKED(int param_1)

{
  byte bVar1;
  uint uVar2;
  
  switch(*(undefined1 *)(param_1 + 1)) {
  case 0x69:
    uVar2 = 2;
    break;
  default:
    return 1;
  case 0x6c:
    uVar2 = 1;
    if (*(char *)(param_1 + 2) == 'd') {
      uVar2 = (-(uint)((*(char *)(param_1 + 3) + 0x9dU & 0xfd) == 0) & 2) + 1;
    }
    break;
  case 0x6e:
    return (uint)(*(char *)(param_1 + 2) != 'o') * 2 + 1;
  case 0x72:
    return (uint)(*(char *)(param_1 + 2) == 's') * 2 + 1;
  case 0x73:
    if (*(char *)(param_1 + 2) == 'a') {
      uVar2 = 3;
    }
    else {
      uVar2 = 1;
      if ((*(char *)(param_1 + 2) == 't') && (bVar1 = *(char *)(param_1 + 3) + 0x9d, bVar1 < 0x11))
      {
        uVar2 = (-(uint)((1 << (bVar1 & 0x1f) & 0x10007U) == 0) & 0xfffffffe) + 3;
      }
    }
    break;
  case 0x78:
    return (uint)(1 < (byte)(*(char *)(param_1 + 2) + 0x8eU));
  }
  return uVar2;
}

