
undefined8 size_of_encoded_value(byte param_1)

{
  if (param_1 == 0xff) {
    return 0;
  }
  param_1 = param_1 & 7;
  if (param_1 == 2) {
    return 2;
  }
  if (param_1 < 3) {
    if (param_1 != 0) goto LAB_00368e95;
  }
  else {
    if (param_1 == 3) {
      return 4;
    }
    if (param_1 != 4) {
LAB_00368e95:
                    /* WARNING: Subroutine does not return */
      abort();
    }
  }
  return 8;
}



undefined8 FUN_00368e60(byte param_1)

{
  if (param_1 == 0xff) {
    return 0;
  }
  param_1 = param_1 & 7;
  if (param_1 == 2) {
    return 2;
  }
  if (param_1 < 3) {
    if (param_1 != 0) goto LAB_00368e95;
  }
  else {
    if (param_1 == 3) {
      return 4;
    }
    if (param_1 != 4) {
LAB_00368e95:
                    /* WARNING: Subroutine does not return */
      abort();
    }
  }
  return 8;
}


CMP DIL,0xff
JZ 0x00368eb0
AND EDI,0x7
CMP DIL,0x2
JZ 0x00368ea0
JBE 0x00368e90
MOV EAX,0x4
CMP DIL,0x3
JNZ 0x00368e80
RET
CMP DIL,0x4
JNZ 0x00368e95
MOV EAX,0x8
RET
TEST DIL,DIL
JZ 0x00368e86
PUSH RAX
CALL 0x001471a0
MOV EAX,0x2
RET
XOR EAX,EAX
RET
(translation_unit "undefined8 FUN_00368e60(byte param_1)\n\n{\n  if (param_1 == 0xff) {\n    return 0;\n  }\n  param_1 = param_1 & 7;\n  if (param_1 == 2) {\n    return 2;\n  }\n  if (param_1 < 3) {\n    if (param_1 != 0) goto LAB_00368e95;\n  }\n  else {\n    if (param_1 == 3) {\n      return 4;\n    }\n    if (param_1 != 4) {\nLAB_00368e95:\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }\n  }\n  return 8;\n}\n\n" (function_definition "undefined8 FUN_00368e60(byte param_1)\n\n{\n  if (param_1 == 0xff) {\n    return 0;\n  }\n  param_1 = param_1 & 7;\n  if (param_1 == 2) {\n    return 2;\n  }\n  if (param_1 < 3) {\n    if (param_1 != 0) goto LAB_00368e95;\n  }\n  else {\n    if (param_1 == 3) {\n      return 4;\n    }\n    if (param_1 != 4) {\nLAB_00368e95:\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }\n  }\n  return 8;\n}" type_identifier (function_declarator "FUN_00368e60(byte param_1)" identifier (parameter_list "(byte param_1)" ( (parameter_declaration "byte param_1" type_identifier identifier) ))) (compound_statement "{\n  if (param_1 == 0xff) {\n    return 0;\n  }\n  param_1 = param_1 & 7;\n  if (param_1 == 2) {\n    return 2;\n  }\n  if (param_1 < 3) {\n    if (param_1 != 0) goto LAB_00368e95;\n  }\n  else {\n    if (param_1 == 3) {\n      return 4;\n    }\n    if (param_1 != 4) {\nLAB_00368e95:\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }\n  }\n  return 8;\n}" { (if_statement "if (param_1 == 0xff) {\n    return 0;\n  }" if (parenthesized_expression "(param_1 == 0xff)" ( (binary_expression "param_1 == 0xff" identifier == number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "param_1 = param_1 & 7;" (assignment_expression "param_1 = param_1 & 7" identifier = (binary_expression "param_1 & 7" identifier & number_literal)) ;) (if_statement "if (param_1 == 2) {\n    return 2;\n  }" if (parenthesized_expression "(param_1 == 2)" ( (binary_expression "param_1 == 2" identifier == number_literal) )) (compound_statement "{\n    return 2;\n  }" { (return_statement "return 2;" return number_literal ;) })) (if_statement "if (param_1 < 3) {\n    if (param_1 != 0) goto LAB_00368e95;\n  }\n  else {\n    if (param_1 == 3) {\n      return 4;\n    }\n    if (param_1 != 4) {\nLAB_00368e95:\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }\n  }" if (parenthesized_expression "(param_1 < 3)" ( (binary_expression "param_1 < 3" identifier < number_literal) )) (compound_statement "{\n    if (param_1 != 0) goto LAB_00368e95;\n  }" { (if_statement "if (param_1 != 0) goto LAB_00368e95;" if (parenthesized_expression "(param_1 != 0)" ( (binary_expression "param_1 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00368e95;" goto statement_identifier ;)) }) (else_clause "else {\n    if (param_1 == 3) {\n      return 4;\n    }\n    if (param_1 != 4) {\nLAB_00368e95:\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }\n  }" else (compound_statement "{\n    if (param_1 == 3) {\n      return 4;\n    }\n    if (param_1 != 4) {\nLAB_00368e95:\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }\n  }" { (if_statement "if (param_1 == 3) {\n      return 4;\n    }" if (parenthesized_expression "(param_1 == 3)" ( (binary_expression "param_1 == 3" identifier == number_literal) )) (compound_statement "{\n      return 4;\n    }" { (return_statement "return 4;" return number_literal ;) })) (if_statement "if (param_1 != 4) {\nLAB_00368e95:\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }" if (parenthesized_expression "(param_1 != 4)" ( (binary_expression "param_1 != 4" identifier != number_literal) )) (compound_statement "{\nLAB_00368e95:\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }" { (labeled_statement "LAB_00368e95:\n                    /* WARNING: Subroutine does not return */\n      abort();" statement_identifier : comment (expression_statement "abort();" (call_expression "abort()" identifier (argument_list "()" ( ))) ;)) })) }))) (return_statement "return 8;" return number_literal ;) })))
(translation_unit "undefined8 size_of_encoded_value(byte param_1)\n\n{\n  if (param_1 == 0xff) {\n    return 0;\n  }\n  param_1 = param_1 & 7;\n  if (param_1 == 2) {\n    return 2;\n  }\n  if (param_1 < 3) {\n    if (param_1 != 0) goto LAB_00368e95;\n  }\n  else {\n    if (param_1 == 3) {\n      return 4;\n    }\n    if (param_1 != 4) {\nLAB_00368e95:\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }\n  }\n  return 8;\n}\n\n" (function_definition "undefined8 size_of_encoded_value(byte param_1)\n\n{\n  if (param_1 == 0xff) {\n    return 0;\n  }\n  param_1 = param_1 & 7;\n  if (param_1 == 2) {\n    return 2;\n  }\n  if (param_1 < 3) {\n    if (param_1 != 0) goto LAB_00368e95;\n  }\n  else {\n    if (param_1 == 3) {\n      return 4;\n    }\n    if (param_1 != 4) {\nLAB_00368e95:\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }\n  }\n  return 8;\n}" type_identifier (function_declarator "size_of_encoded_value(byte param_1)" identifier (parameter_list "(byte param_1)" ( (parameter_declaration "byte param_1" type_identifier identifier) ))) (compound_statement "{\n  if (param_1 == 0xff) {\n    return 0;\n  }\n  param_1 = param_1 & 7;\n  if (param_1 == 2) {\n    return 2;\n  }\n  if (param_1 < 3) {\n    if (param_1 != 0) goto LAB_00368e95;\n  }\n  else {\n    if (param_1 == 3) {\n      return 4;\n    }\n    if (param_1 != 4) {\nLAB_00368e95:\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }\n  }\n  return 8;\n}" { (if_statement "if (param_1 == 0xff) {\n    return 0;\n  }" if (parenthesized_expression "(param_1 == 0xff)" ( (binary_expression "param_1 == 0xff" identifier == number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "param_1 = param_1 & 7;" (assignment_expression "param_1 = param_1 & 7" identifier = (binary_expression "param_1 & 7" identifier & number_literal)) ;) (if_statement "if (param_1 == 2) {\n    return 2;\n  }" if (parenthesized_expression "(param_1 == 2)" ( (binary_expression "param_1 == 2" identifier == number_literal) )) (compound_statement "{\n    return 2;\n  }" { (return_statement "return 2;" return number_literal ;) })) (if_statement "if (param_1 < 3) {\n    if (param_1 != 0) goto LAB_00368e95;\n  }\n  else {\n    if (param_1 == 3) {\n      return 4;\n    }\n    if (param_1 != 4) {\nLAB_00368e95:\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }\n  }" if (parenthesized_expression "(param_1 < 3)" ( (binary_expression "param_1 < 3" identifier < number_literal) )) (compound_statement "{\n    if (param_1 != 0) goto LAB_00368e95;\n  }" { (if_statement "if (param_1 != 0) goto LAB_00368e95;" if (parenthesized_expression "(param_1 != 0)" ( (binary_expression "param_1 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00368e95;" goto statement_identifier ;)) }) (else_clause "else {\n    if (param_1 == 3) {\n      return 4;\n    }\n    if (param_1 != 4) {\nLAB_00368e95:\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }\n  }" else (compound_statement "{\n    if (param_1 == 3) {\n      return 4;\n    }\n    if (param_1 != 4) {\nLAB_00368e95:\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }\n  }" { (if_statement "if (param_1 == 3) {\n      return 4;\n    }" if (parenthesized_expression "(param_1 == 3)" ( (binary_expression "param_1 == 3" identifier == number_literal) )) (compound_statement "{\n      return 4;\n    }" { (return_statement "return 4;" return number_literal ;) })) (if_statement "if (param_1 != 4) {\nLAB_00368e95:\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }" if (parenthesized_expression "(param_1 != 4)" ( (binary_expression "param_1 != 4" identifier != number_literal) )) (compound_statement "{\nLAB_00368e95:\n                    /* WARNING: Subroutine does not return */\n      abort();\n    }" { (labeled_statement "LAB_00368e95:\n                    /* WARNING: Subroutine does not return */\n      abort();" statement_identifier : comment (expression_statement "abort();" (call_expression "abort()" identifier (argument_list "()" ( ))) ;)) })) }))) (return_statement "return 8;" return number_literal ;) })))
(translation_unit "undefined8 FUN_00368e60(byte param_1)\n\n{\n  if (param_1 == 0xff) {\n    return 0;\n  }\n  param_1 = param_1 & 7;\n  if (param_1 == 2) {\n    return 2;\n  }\n  if (param_1 < 3) {\n    if (param_1 != 0) goto LAB_00368e95;\n  }\n  else {\n    if (param_1 == 3) {\n      return 4;\n    }\n    if (param_1 != 4) {\nLAB_00368e95:\n                    \n      abort();\n    }\n  }\n  return 8;\n}\n\n" (function_definition "undefined8 FUN_00368e60(byte param_1)\n\n{\n  if (param_1 == 0xff) {\n    return 0;\n  }\n  param_1 = param_1 & 7;\n  if (param_1 == 2) {\n    return 2;\n  }\n  if (param_1 < 3) {\n    if (param_1 != 0) goto LAB_00368e95;\n  }\n  else {\n    if (param_1 == 3) {\n      return 4;\n    }\n    if (param_1 != 4) {\nLAB_00368e95:\n                    \n      abort();\n    }\n  }\n  return 8;\n}" type_identifier (function_declarator "FUN_00368e60(byte param_1)" identifier (parameter_list "(byte param_1)" ( (parameter_declaration "byte param_1" type_identifier identifier) ))) (compound_statement "{\n  if (param_1 == 0xff) {\n    return 0;\n  }\n  param_1 = param_1 & 7;\n  if (param_1 == 2) {\n    return 2;\n  }\n  if (param_1 < 3) {\n    if (param_1 != 0) goto LAB_00368e95;\n  }\n  else {\n    if (param_1 == 3) {\n      return 4;\n    }\n    if (param_1 != 4) {\nLAB_00368e95:\n                    \n      abort();\n    }\n  }\n  return 8;\n}" { (if_statement "if (param_1 == 0xff) {\n    return 0;\n  }" if (parenthesized_expression "(param_1 == 0xff)" ( (binary_expression "param_1 == 0xff" identifier == number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "param_1 = param_1 & 7;" (assignment_expression "param_1 = param_1 & 7" identifier = (binary_expression "param_1 & 7" identifier & number_literal)) ;) (if_statement "if (param_1 == 2) {\n    return 2;\n  }" if (parenthesized_expression "(param_1 == 2)" ( (binary_expression "param_1 == 2" identifier == number_literal) )) (compound_statement "{\n    return 2;\n  }" { (return_statement "return 2;" return number_literal ;) })) (if_statement "if (param_1 < 3) {\n    if (param_1 != 0) goto LAB_00368e95;\n  }\n  else {\n    if (param_1 == 3) {\n      return 4;\n    }\n    if (param_1 != 4) {\nLAB_00368e95:\n                    \n      abort();\n    }\n  }" if (parenthesized_expression "(param_1 < 3)" ( (binary_expression "param_1 < 3" identifier < number_literal) )) (compound_statement "{\n    if (param_1 != 0) goto LAB_00368e95;\n  }" { (if_statement "if (param_1 != 0) goto LAB_00368e95;" if (parenthesized_expression "(param_1 != 0)" ( (binary_expression "param_1 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00368e95;" goto statement_identifier ;)) }) (else_clause "else {\n    if (param_1 == 3) {\n      return 4;\n    }\n    if (param_1 != 4) {\nLAB_00368e95:\n                    \n      abort();\n    }\n  }" else (compound_statement "{\n    if (param_1 == 3) {\n      return 4;\n    }\n    if (param_1 != 4) {\nLAB_00368e95:\n                    \n      abort();\n    }\n  }" { (if_statement "if (param_1 == 3) {\n      return 4;\n    }" if (parenthesized_expression "(param_1 == 3)" ( (binary_expression "param_1 == 3" identifier == number_literal) )) (compound_statement "{\n      return 4;\n    }" { (return_statement "return 4;" return number_literal ;) })) (if_statement "if (param_1 != 4) {\nLAB_00368e95:\n                    \n      abort();\n    }" if (parenthesized_expression "(param_1 != 4)" ( (binary_expression "param_1 != 4" identifier != number_literal) )) (compound_statement "{\nLAB_00368e95:\n                    \n      abort();\n    }" { (labeled_statement "LAB_00368e95:\n                    \n      abort();" statement_identifier : (expression_statement "abort();" (call_expression "abort()" identifier (argument_list "()" ( ))) ;)) })) }))) (return_statement "return 8;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) ))) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) })) }))) (return_statement return LIT ;) })))
(function_definition "undefined8 FUN_00368e60(byte param_1)\n\n{\n  if (param_1 == 0xff) {\n    return 0;\n  }\n  param_1 = param_1 & 7;\n  if (param_1 == 2) {\n    return 2;\n  }\n  if (param_1 < 3) {\n    if (param_1 != 0) goto LAB_00368e95;\n  }\n  else {\n    if (param_1 == 3) {\n      return 4;\n    }\n    if (param_1 != 4) {\nLAB_00368e95:\n                    \n      abort();\n    }\n  }\n  return 8;\n}" (type_identifier "undefined8") (function_declarator "FUN_00368e60(byte param_1)" (identifier "FUN_00368e60") (parameter_list "(byte param_1)" (( "(") (parameter_declaration "byte param_1" (type_identifier "byte") (identifier "param_1")) () ")"))) (compound_statement "{\n  if (param_1 == 0xff) {\n    return 0;\n  }\n  param_1 = param_1 & 7;\n  if (param_1 == 2) {\n    return 2;\n  }\n  if (param_1 < 3) {\n    if (param_1 != 0) goto LAB_00368e95;\n  }\n  else {\n    if (param_1 == 3) {\n      return 4;\n    }\n    if (param_1 != 4) {\nLAB_00368e95:\n                    \n      abort();\n    }\n  }\n  return 8;\n}" ({ "{") (if_statement "if (param_1 == 0xff) {\n    return 0;\n  }" (if "if") (parenthesized_expression "(param_1 == 0xff)" (( "(") (binary_expression "param_1 == 0xff" (identifier "param_1") (== "==") (number_literal "0xff")) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "param_1 = param_1 & 7;" (assignment_expression "param_1 = param_1 & 7" (identifier "param_1") (= "=") (binary_expression "param_1 & 7" (identifier "param_1") (& "&") (number_literal "7"))) (; ";")) (if_statement "if (param_1 == 2) {\n    return 2;\n  }" (if "if") (parenthesized_expression "(param_1 == 2)" (( "(") (binary_expression "param_1 == 2" (identifier "param_1") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n    return 2;\n  }" ({ "{") (return_statement "return 2;" (return "return") (number_literal "2") (; ";")) (} "}"))) (if_statement "if (param_1 < 3) {\n    if (param_1 != 0) goto LAB_00368e95;\n  }\n  else {\n    if (param_1 == 3) {\n      return 4;\n    }\n    if (param_1 != 4) {\nLAB_00368e95:\n                    \n      abort();\n    }\n  }" (if "if") (parenthesized_expression "(param_1 < 3)" (( "(") (binary_expression "param_1 < 3" (identifier "param_1") (< "<") (number_literal "3")) () ")")) (compound_statement "{\n    if (param_1 != 0) goto LAB_00368e95;\n  }" ({ "{") (if_statement "if (param_1 != 0) goto LAB_00368e95;" (if "if") (parenthesized_expression "(param_1 != 0)" (( "(") (binary_expression "param_1 != 0" (identifier "param_1") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00368e95;" (goto "goto") (statement_identifier "LAB_00368e95") (; ";"))) (} "}")) (else_clause "else {\n    if (param_1 == 3) {\n      return 4;\n    }\n    if (param_1 != 4) {\nLAB_00368e95:\n                    \n      abort();\n    }\n  }" (else "else") (compound_statement "{\n    if (param_1 == 3) {\n      return 4;\n    }\n    if (param_1 != 4) {\nLAB_00368e95:\n                    \n      abort();\n    }\n  }" ({ "{") (if_statement "if (param_1 == 3) {\n      return 4;\n    }" (if "if") (parenthesized_expression "(param_1 == 3)" (( "(") (binary_expression "param_1 == 3" (identifier "param_1") (== "==") (number_literal "3")) () ")")) (compound_statement "{\n      return 4;\n    }" ({ "{") (return_statement "return 4;" (return "return") (number_literal "4") (; ";")) (} "}"))) (if_statement "if (param_1 != 4) {\nLAB_00368e95:\n                    \n      abort();\n    }" (if "if") (parenthesized_expression "(param_1 != 4)" (( "(") (binary_expression "param_1 != 4" (identifier "param_1") (!= "!=") (number_literal "4")) () ")")) (compound_statement "{\nLAB_00368e95:\n                    \n      abort();\n    }" ({ "{") (labeled_statement "LAB_00368e95:\n                    \n      abort();" (statement_identifier "LAB_00368e95") (: ":") (expression_statement "abort();" (call_expression "abort()" (identifier "abort") (argument_list "()" (( "(") () ")"))) (; ";"))) (} "}"))) (} "}")))) (return_statement "return 8;" (return "return") (number_literal "8") (; ";")) (} "}")))

type_1 function_1(type_2 var_1)

{
  if (var_1 == 0xff) {
    return 0;
  }
  var_1 = var_1 & 7;
  if (var_1 == 2) {
    return 2;
  }
  if (var_1 < 3) {
    if (var_1 != 0) goto LAB_00368e95;
  }
  else {
    if (var_1 == 3) {
      return 4;
    }
    if (var_1 != 4) {
LAB_00368e95:
                    /* WARNING: Subroutine does not return */
      var_2();
    }
  }
  return 8;
}


(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier)))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list))))))))) (return_statement (number_literal)))))

undefined8 MASKED(byte param_1)

{
  if (param_1 == 0xff) {
    return 0;
  }
  param_1 = param_1 & 7;
  if (param_1 == 2) {
    return 2;
  }
  if (param_1 < 3) {
    if (param_1 != 0) goto LAB_00368e95;
  }
  else {
    if (param_1 == 3) {
      return 4;
    }
    if (param_1 != 4) {
LAB_00368e95:
                    /* WARNING: Subroutine does not return */
      abort();
    }
  }
  return 8;
}

