
/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */

char __regparm3 get_type_indicator(_Bool stat_ok,mode_t mode,filetype type)

{
  uint uVar1;
  char c;
  byte bVar2;
  bool bVar3;
  
  if (stat_ok) {
    if ((mode & 0xf000) == 0x8000) {
      if (indicator_style != classify) {
        return '\0';
      }
      return ~-((mode & 0x49) == 0) & 0x2a;
    }
    bVar3 = (mode & 0xf000) == 0x4000;
  }
  else {
    if (type == normal) {
      return '\0';
    }
    bVar3 = type == arg_directory || type == directory;
  }
  bVar2 = 0x2f;
  if ((!bVar3) && (bVar2 = 0, indicator_style != slash)) {
    if (stat_ok) {
      uVar1 = mode & 0xf000;
      if (uVar1 == 0xa000) {
        return '@';
      }
      if (uVar1 == 0x1000) {
        return '|';
      }
      bVar3 = uVar1 == 0xc000;
    }
    else {
      if (type == symbolic_link) {
        return '@';
      }
      if (type == fifo) {
        return '|';
      }
      bVar3 = type == sock;
    }
    bVar2 = -bVar3 & 0x3d;
  }
  return bVar2;
}



/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */

byte __regparm3 FUN_00015650(char param_1,uint param_2,int param_3)

{
  byte bVar1;
  bool bVar2;
  
  if (param_1 == '\0') {
    if (param_3 == 5) {
      return 0;
    }
    bVar2 = param_3 == 9 || param_3 == 3;
  }
  else {
    if ((param_2 & 0xf000) == 0x8000) {
      if (DAT_0003c2e4 != 3) {
        return 0;
      }
      return ~-((param_2 & 0x49) == 0) & 0x2a;
    }
    bVar2 = (param_2 & 0xf000) == 0x4000;
  }
  bVar1 = 0x2f;
  if ((!bVar2) && (bVar1 = 0, DAT_0003c2e4 != 1)) {
    if (param_1 == '\0') {
      if (param_3 == 6) {
        return 0x40;
      }
      if (param_3 == 1) {
        return 0x7c;
      }
      bVar2 = param_3 == 7;
    }
    else {
      param_2 = param_2 & 0xf000;
      if (param_2 == 0xa000) {
        return 0x40;
      }
      if (param_2 == 0x1000) {
        return 0x7c;
      }
      bVar2 = param_2 == 0xc000;
    }
    bVar1 = -bVar2 & 0x3d;
  }
  return bVar1;
}


PUSH EBP
MOV EBP,EDX
PUSH EDI
PUSH ESI
CALL 0x0001b266
ADD ESI,0x259a6
PUSH EBX
TEST AL,AL
JZ 0x000156f8
MOV EBX,EDX
AND EBX,0xf000
CMP EBX,0x8000
JZ 0x000156d8
CMP EBX,0x4000
SETZ DL
MOV EDI,EDX
MOV EDX,EDI
MOV EBX,0x2f
TEST DL,DL
JNZ 0x000156ce
XOR EBX,EBX
CMP dword ptr [ESI + 0x12e4],0x1
JZ 0x000156ce
TEST AL,AL
JZ 0x00015718
MOV EDX,EBP
MOV EBX,0x40
AND EDX,0xf000
CMP EDX,0xa000
JZ 0x000156ce
MOV EBX,0x7c
CMP EDX,0x1000
JZ 0x000156ce
CMP EDX,0xc000
SETZ BL
NEG EBX
AND EBX,0x3d
MOV EAX,EBX
POP EBX
POP ESI
POP EDI
POP EBP
RET
XOR EBX,EBX
CMP dword ptr [ESI + 0x12e4],0x3
JNZ 0x000156ce
AND EDX,0x49
CMP EDX,0x1
SBB EBX,EBX
NOT EBX
AND EBX,0x2a
JMP 0x000156ce
XOR EBX,EBX
CMP ECX,0x5
JZ 0x000156ce
CMP ECX,0x3
SETZ BL
CMP ECX,0x9
SETZ DL
MOV EDI,EDX
OR EDI,EBX
JMP 0x00015684
MOV EBX,0x40
CMP ECX,0x6
JZ 0x000156ce
MOV EBX,0x7c
CMP ECX,0x1
JZ 0x000156ce
CMP ECX,0x7
SETZ BL
JMP 0x000156c9
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */\n\nbyte __regparm3 FUN_00015650(char param_1,uint param_2,int param_3)\n\n{\n  byte bVar1;\n  bool bVar2;\n  \n  if (param_1 == '\0') {\n    if (param_3 == 5) {\n      return 0;\n    }\n    bVar2 = param_3 == 9 || param_3 == 3;\n  }\n  else {\n    if ((param_2 & 0xf000) == 0x8000) {\n      if (DAT_0003c2e4 != 3) {\n        return 0;\n      }\n      return ~-((param_2 & 0x49) == 0) & 0x2a;\n    }\n    bVar2 = (param_2 & 0xf000) == 0x4000;\n  }\n  bVar1 = 0x2f;\n  if ((!bVar2) && (bVar1 = 0, DAT_0003c2e4 != 1)) {\n    if (param_1 == '\0') {\n      if (param_3 == 6) {\n        return 0x40;\n      }\n      if (param_3 == 1) {\n        return 0x7c;\n      }\n      bVar2 = param_3 == 7;\n    }\n    else {\n      param_2 = param_2 & 0xf000;\n      if (param_2 == 0xa000) {\n        return 0x40;\n      }\n      if (param_2 == 0x1000) {\n        return 0x7c;\n      }\n      bVar2 = param_2 == 0xc000;\n    }\n    bVar1 = -bVar2 & 0x3d;\n  }\n  return bVar1;\n}\n\n" comment (function_definition "byte __regparm3 FUN_00015650(char param_1,uint param_2,int param_3)\n\n{\n  byte bVar1;\n  bool bVar2;\n  \n  if (param_1 == '\0') {\n    if (param_3 == 5) {\n      return 0;\n    }\n    bVar2 = param_3 == 9 || param_3 == 3;\n  }\n  else {\n    if ((param_2 & 0xf000) == 0x8000) {\n      if (DAT_0003c2e4 != 3) {\n        return 0;\n      }\n      return ~-((param_2 & 0x49) == 0) & 0x2a;\n    }\n    bVar2 = (param_2 & 0xf000) == 0x4000;\n  }\n  bVar1 = 0x2f;\n  if ((!bVar2) && (bVar1 = 0, DAT_0003c2e4 != 1)) {\n    if (param_1 == '\0') {\n      if (param_3 == 6) {\n        return 0x40;\n      }\n      if (param_3 == 1) {\n        return 0x7c;\n      }\n      bVar2 = param_3 == 7;\n    }\n    else {\n      param_2 = param_2 & 0xf000;\n      if (param_2 == 0xa000) {\n        return 0x40;\n      }\n      if (param_2 == 0x1000) {\n        return 0x7c;\n      }\n      bVar2 = param_2 == 0xc000;\n    }\n    bVar1 = -bVar2 & 0x3d;\n  }\n  return bVar1;\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "FUN_00015650(char param_1,uint param_2,int param_3)" identifier (parameter_list "(char param_1,uint param_2,int param_3)" ( (parameter_declaration "char param_1" primitive_type identifier) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  byte bVar1;\n  bool bVar2;\n  \n  if (param_1 == '\0') {\n    if (param_3 == 5) {\n      return 0;\n    }\n    bVar2 = param_3 == 9 || param_3 == 3;\n  }\n  else {\n    if ((param_2 & 0xf000) == 0x8000) {\n      if (DAT_0003c2e4 != 3) {\n        return 0;\n      }\n      return ~-((param_2 & 0x49) == 0) & 0x2a;\n    }\n    bVar2 = (param_2 & 0xf000) == 0x4000;\n  }\n  bVar1 = 0x2f;\n  if ((!bVar2) && (bVar1 = 0, DAT_0003c2e4 != 1)) {\n    if (param_1 == '\0') {\n      if (param_3 == 6) {\n        return 0x40;\n      }\n      if (param_3 == 1) {\n        return 0x7c;\n      }\n      bVar2 = param_3 == 7;\n    }\n    else {\n      param_2 = param_2 & 0xf000;\n      if (param_2 == 0xa000) {\n        return 0x40;\n      }\n      if (param_2 == 0x1000) {\n        return 0x7c;\n      }\n      bVar2 = param_2 == 0xc000;\n    }\n    bVar1 = -bVar2 & 0x3d;\n  }\n  return bVar1;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (if_statement "if (param_1 == '\0') {\n    if (param_3 == 5) {\n      return 0;\n    }\n    bVar2 = param_3 == 9 || param_3 == 3;\n  }\n  else {\n    if ((param_2 & 0xf000) == 0x8000) {\n      if (DAT_0003c2e4 != 3) {\n        return 0;\n      }\n      return ~-((param_2 & 0x49) == 0) & 0x2a;\n    }\n    bVar2 = (param_2 & 0xf000) == 0x4000;\n  }" if (parenthesized_expression "(param_1 == '\0')" ( (binary_expression "param_1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    if (param_3 == 5) {\n      return 0;\n    }\n    bVar2 = param_3 == 9 || param_3 == 3;\n  }" { (if_statement "if (param_3 == 5) {\n      return 0;\n    }" if (parenthesized_expression "(param_3 == 5)" ( (binary_expression "param_3 == 5" identifier == number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "bVar2 = param_3 == 9 || param_3 == 3;" (assignment_expression "bVar2 = param_3 == 9 || param_3 == 3" identifier = (binary_expression "param_3 == 9 || param_3 == 3" (binary_expression "param_3 == 9" identifier == number_literal) || (binary_expression "param_3 == 3" identifier == number_literal))) ;) }) (else_clause "else {\n    if ((param_2 & 0xf000) == 0x8000) {\n      if (DAT_0003c2e4 != 3) {\n        return 0;\n      }\n      return ~-((param_2 & 0x49) == 0) & 0x2a;\n    }\n    bVar2 = (param_2 & 0xf000) == 0x4000;\n  }" else (compound_statement "{\n    if ((param_2 & 0xf000) == 0x8000) {\n      if (DAT_0003c2e4 != 3) {\n        return 0;\n      }\n      return ~-((param_2 & 0x49) == 0) & 0x2a;\n    }\n    bVar2 = (param_2 & 0xf000) == 0x4000;\n  }" { (if_statement "if ((param_2 & 0xf000) == 0x8000) {\n      if (DAT_0003c2e4 != 3) {\n        return 0;\n      }\n      return ~-((param_2 & 0x49) == 0) & 0x2a;\n    }" if (parenthesized_expression "((param_2 & 0xf000) == 0x8000)" ( (binary_expression "(param_2 & 0xf000) == 0x8000" (parenthesized_expression "(param_2 & 0xf000)" ( (binary_expression "param_2 & 0xf000" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      if (DAT_0003c2e4 != 3) {\n        return 0;\n      }\n      return ~-((param_2 & 0x49) == 0) & 0x2a;\n    }" { (if_statement "if (DAT_0003c2e4 != 3) {\n        return 0;\n      }" if (parenthesized_expression "(DAT_0003c2e4 != 3)" ( (binary_expression "DAT_0003c2e4 != 3" identifier != number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (return_statement "return ~-((param_2 & 0x49) == 0) & 0x2a;" return (binary_expression "~-((param_2 & 0x49) == 0) & 0x2a" (unary_expression "~-((param_2 & 0x49) == 0)" ~ (unary_expression "-((param_2 & 0x49) == 0)" - (parenthesized_expression "((param_2 & 0x49) == 0)" ( (binary_expression "(param_2 & 0x49) == 0" (parenthesized_expression "(param_2 & 0x49)" ( (binary_expression "param_2 & 0x49" identifier & number_literal) )) == number_literal) )))) & number_literal) ;) })) (expression_statement "bVar2 = (param_2 & 0xf000) == 0x4000;" (assignment_expression "bVar2 = (param_2 & 0xf000) == 0x4000" identifier = (binary_expression "(param_2 & 0xf000) == 0x4000" (parenthesized_expression "(param_2 & 0xf000)" ( (binary_expression "param_2 & 0xf000" identifier & number_literal) )) == number_literal)) ;) }))) (expression_statement "bVar1 = 0x2f;" (assignment_expression "bVar1 = 0x2f" identifier = number_literal) ;) (if_statement "if ((!bVar2) && (bVar1 = 0, DAT_0003c2e4 != 1)) {\n    if (param_1 == '\0') {\n      if (param_3 == 6) {\n        return 0x40;\n      }\n      if (param_3 == 1) {\n        return 0x7c;\n      }\n      bVar2 = param_3 == 7;\n    }\n    else {\n      param_2 = param_2 & 0xf000;\n      if (param_2 == 0xa000) {\n        return 0x40;\n      }\n      if (param_2 == 0x1000) {\n        return 0x7c;\n      }\n      bVar2 = param_2 == 0xc000;\n    }\n    bVar1 = -bVar2 & 0x3d;\n  }" if (parenthesized_expression "((!bVar2) && (bVar1 = 0, DAT_0003c2e4 != 1))" ( (binary_expression "(!bVar2) && (bVar1 = 0, DAT_0003c2e4 != 1)" (parenthesized_expression "(!bVar2)" ( (unary_expression "!bVar2" ! identifier) )) && (parenthesized_expression "(bVar1 = 0, DAT_0003c2e4 != 1)" ( (comma_expression "bVar1 = 0, DAT_0003c2e4 != 1" (assignment_expression "bVar1 = 0" identifier = number_literal) , (binary_expression "DAT_0003c2e4 != 1" identifier != number_literal)) ))) )) (compound_statement "{\n    if (param_1 == '\0') {\n      if (param_3 == 6) {\n        return 0x40;\n      }\n      if (param_3 == 1) {\n        return 0x7c;\n      }\n      bVar2 = param_3 == 7;\n    }\n    else {\n      param_2 = param_2 & 0xf000;\n      if (param_2 == 0xa000) {\n        return 0x40;\n      }\n      if (param_2 == 0x1000) {\n        return 0x7c;\n      }\n      bVar2 = param_2 == 0xc000;\n    }\n    bVar1 = -bVar2 & 0x3d;\n  }" { (if_statement "if (param_1 == '\0') {\n      if (param_3 == 6) {\n        return 0x40;\n      }\n      if (param_3 == 1) {\n        return 0x7c;\n      }\n      bVar2 = param_3 == 7;\n    }\n    else {\n      param_2 = param_2 & 0xf000;\n      if (param_2 == 0xa000) {\n        return 0x40;\n      }\n      if (param_2 == 0x1000) {\n        return 0x7c;\n      }\n      bVar2 = param_2 == 0xc000;\n    }" if (parenthesized_expression "(param_1 == '\0')" ( (binary_expression "param_1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      if (param_3 == 6) {\n        return 0x40;\n      }\n      if (param_3 == 1) {\n        return 0x7c;\n      }\n      bVar2 = param_3 == 7;\n    }" { (if_statement "if (param_3 == 6) {\n        return 0x40;\n      }" if (parenthesized_expression "(param_3 == 6)" ( (binary_expression "param_3 == 6" identifier == number_literal) )) (compound_statement "{\n        return 0x40;\n      }" { (return_statement "return 0x40;" return number_literal ;) })) (if_statement "if (param_3 == 1) {\n        return 0x7c;\n      }" if (parenthesized_expression "(param_3 == 1)" ( (binary_expression "param_3 == 1" identifier == number_literal) )) (compound_statement "{\n        return 0x7c;\n      }" { (return_statement "return 0x7c;" return number_literal ;) })) (expression_statement "bVar2 = param_3 == 7;" (assignment_expression "bVar2 = param_3 == 7" identifier = (binary_expression "param_3 == 7" identifier == number_literal)) ;) }) (else_clause "else {\n      param_2 = param_2 & 0xf000;\n      if (param_2 == 0xa000) {\n        return 0x40;\n      }\n      if (param_2 == 0x1000) {\n        return 0x7c;\n      }\n      bVar2 = param_2 == 0xc000;\n    }" else (compound_statement "{\n      param_2 = param_2 & 0xf000;\n      if (param_2 == 0xa000) {\n        return 0x40;\n      }\n      if (param_2 == 0x1000) {\n        return 0x7c;\n      }\n      bVar2 = param_2 == 0xc000;\n    }" { (expression_statement "param_2 = param_2 & 0xf000;" (assignment_expression "param_2 = param_2 & 0xf000" identifier = (binary_expression "param_2 & 0xf000" identifier & number_literal)) ;) (if_statement "if (param_2 == 0xa000) {\n        return 0x40;\n      }" if (parenthesized_expression "(param_2 == 0xa000)" ( (binary_expression "param_2 == 0xa000" identifier == number_literal) )) (compound_statement "{\n        return 0x40;\n      }" { (return_statement "return 0x40;" return number_literal ;) })) (if_statement "if (param_2 == 0x1000) {\n        return 0x7c;\n      }" if (parenthesized_expression "(param_2 == 0x1000)" ( (binary_expression "param_2 == 0x1000" identifier == number_literal) )) (compound_statement "{\n        return 0x7c;\n      }" { (return_statement "return 0x7c;" return number_literal ;) })) (expression_statement "bVar2 = param_2 == 0xc000;" (assignment_expression "bVar2 = param_2 == 0xc000" identifier = (binary_expression "param_2 == 0xc000" identifier == number_literal)) ;) }))) (expression_statement "bVar1 = -bVar2 & 0x3d;" (assignment_expression "bVar1 = -bVar2 & 0x3d" identifier = (binary_expression "-bVar2 & 0x3d" (unary_expression "-bVar2" - identifier) & number_literal)) ;) })) (return_statement "return bVar1;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */\n\nchar __regparm3 get_type_indicator(_Bool stat_ok,mode_t mode,filetype type)\n\n{\n  uint uVar1;\n  char c;\n  byte bVar2;\n  bool bVar3;\n  \n  if (stat_ok) {\n    if ((mode & 0xf000) == 0x8000) {\n      if (indicator_style != classify) {\n        return '\0';\n      }\n      return ~-((mode & 0x49) == 0) & 0x2a;\n    }\n    bVar3 = (mode & 0xf000) == 0x4000;\n  }\n  else {\n    if (type == normal) {\n      return '\0';\n    }\n    bVar3 = type == arg_directory || type == directory;\n  }\n  bVar2 = 0x2f;\n  if ((!bVar3) && (bVar2 = 0, indicator_style != slash)) {\n    if (stat_ok) {\n      uVar1 = mode & 0xf000;\n      if (uVar1 == 0xa000) {\n        return '@';\n      }\n      if (uVar1 == 0x1000) {\n        return '|';\n      }\n      bVar3 = uVar1 == 0xc000;\n    }\n    else {\n      if (type == symbolic_link) {\n        return '@';\n      }\n      if (type == fifo) {\n        return '|';\n      }\n      bVar3 = type == sock;\n    }\n    bVar2 = -bVar3 & 0x3d;\n  }\n  return bVar2;\n}\n\n" comment (function_definition "char __regparm3 get_type_indicator(_Bool stat_ok,mode_t mode,filetype type)\n\n{\n  uint uVar1;\n  char c;\n  byte bVar2;\n  bool bVar3;\n  \n  if (stat_ok) {\n    if ((mode & 0xf000) == 0x8000) {\n      if (indicator_style != classify) {\n        return '\0';\n      }\n      return ~-((mode & 0x49) == 0) & 0x2a;\n    }\n    bVar3 = (mode & 0xf000) == 0x4000;\n  }\n  else {\n    if (type == normal) {\n      return '\0';\n    }\n    bVar3 = type == arg_directory || type == directory;\n  }\n  bVar2 = 0x2f;\n  if ((!bVar3) && (bVar2 = 0, indicator_style != slash)) {\n    if (stat_ok) {\n      uVar1 = mode & 0xf000;\n      if (uVar1 == 0xa000) {\n        return '@';\n      }\n      if (uVar1 == 0x1000) {\n        return '|';\n      }\n      bVar3 = uVar1 == 0xc000;\n    }\n    else {\n      if (type == symbolic_link) {\n        return '@';\n      }\n      if (type == fifo) {\n        return '|';\n      }\n      bVar3 = type == sock;\n    }\n    bVar2 = -bVar3 & 0x3d;\n  }\n  return bVar2;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "get_type_indicator(_Bool stat_ok,mode_t mode,filetype type)" identifier (parameter_list "(_Bool stat_ok,mode_t mode,filetype type)" ( (parameter_declaration "_Bool stat_ok" type_identifier identifier) , (parameter_declaration "mode_t mode" type_identifier identifier) , (parameter_declaration "filetype type" type_identifier identifier) ))) (compound_statement "{\n  uint uVar1;\n  char c;\n  byte bVar2;\n  bool bVar3;\n  \n  if (stat_ok) {\n    if ((mode & 0xf000) == 0x8000) {\n      if (indicator_style != classify) {\n        return '\0';\n      }\n      return ~-((mode & 0x49) == 0) & 0x2a;\n    }\n    bVar3 = (mode & 0xf000) == 0x4000;\n  }\n  else {\n    if (type == normal) {\n      return '\0';\n    }\n    bVar3 = type == arg_directory || type == directory;\n  }\n  bVar2 = 0x2f;\n  if ((!bVar3) && (bVar2 = 0, indicator_style != slash)) {\n    if (stat_ok) {\n      uVar1 = mode & 0xf000;\n      if (uVar1 == 0xa000) {\n        return '@';\n      }\n      if (uVar1 == 0x1000) {\n        return '|';\n      }\n      bVar3 = uVar1 == 0xc000;\n    }\n    else {\n      if (type == symbolic_link) {\n        return '@';\n      }\n      if (type == fifo) {\n        return '|';\n      }\n      bVar3 = type == sock;\n    }\n    bVar2 = -bVar3 & 0x3d;\n  }\n  return bVar2;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "char c;" primitive_type identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "bool bVar3;" primitive_type identifier ;) (if_statement "if (stat_ok) {\n    if ((mode & 0xf000) == 0x8000) {\n      if (indicator_style != classify) {\n        return '\0';\n      }\n      return ~-((mode & 0x49) == 0) & 0x2a;\n    }\n    bVar3 = (mode & 0xf000) == 0x4000;\n  }\n  else {\n    if (type == normal) {\n      return '\0';\n    }\n    bVar3 = type == arg_directory || type == directory;\n  }" if (parenthesized_expression "(stat_ok)" ( identifier )) (compound_statement "{\n    if ((mode & 0xf000) == 0x8000) {\n      if (indicator_style != classify) {\n        return '\0';\n      }\n      return ~-((mode & 0x49) == 0) & 0x2a;\n    }\n    bVar3 = (mode & 0xf000) == 0x4000;\n  }" { (if_statement "if ((mode & 0xf000) == 0x8000) {\n      if (indicator_style != classify) {\n        return '\0';\n      }\n      return ~-((mode & 0x49) == 0) & 0x2a;\n    }" if (parenthesized_expression "((mode & 0xf000) == 0x8000)" ( (binary_expression "(mode & 0xf000) == 0x8000" (parenthesized_expression "(mode & 0xf000)" ( (binary_expression "mode & 0xf000" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      if (indicator_style != classify) {\n        return '\0';\n      }\n      return ~-((mode & 0x49) == 0) & 0x2a;\n    }" { (if_statement "if (indicator_style != classify) {\n        return '\0';\n      }" if (parenthesized_expression "(indicator_style != classify)" ( (binary_expression "indicator_style != classify" identifier != identifier) )) (compound_statement "{\n        return '\0';\n      }" { (return_statement "return '\0';" return (char_literal "'\0'" ' escape_sequence ') ;) })) (return_statement "return ~-((mode & 0x49) == 0) & 0x2a;" return (binary_expression "~-((mode & 0x49) == 0) & 0x2a" (unary_expression "~-((mode & 0x49) == 0)" ~ (unary_expression "-((mode & 0x49) == 0)" - (parenthesized_expression "((mode & 0x49) == 0)" ( (binary_expression "(mode & 0x49) == 0" (parenthesized_expression "(mode & 0x49)" ( (binary_expression "mode & 0x49" identifier & number_literal) )) == number_literal) )))) & number_literal) ;) })) (expression_statement "bVar3 = (mode & 0xf000) == 0x4000;" (assignment_expression "bVar3 = (mode & 0xf000) == 0x4000" identifier = (binary_expression "(mode & 0xf000) == 0x4000" (parenthesized_expression "(mode & 0xf000)" ( (binary_expression "mode & 0xf000" identifier & number_literal) )) == number_literal)) ;) }) (else_clause "else {\n    if (type == normal) {\n      return '\0';\n    }\n    bVar3 = type == arg_directory || type == directory;\n  }" else (compound_statement "{\n    if (type == normal) {\n      return '\0';\n    }\n    bVar3 = type == arg_directory || type == directory;\n  }" { (if_statement "if (type == normal) {\n      return '\0';\n    }" if (parenthesized_expression "(type == normal)" ( (binary_expression "type == normal" identifier == identifier) )) (compound_statement "{\n      return '\0';\n    }" { (return_statement "return '\0';" return (char_literal "'\0'" ' escape_sequence ') ;) })) (expression_statement "bVar3 = type == arg_directory || type == directory;" (assignment_expression "bVar3 = type == arg_directory || type == directory" identifier = (binary_expression "type == arg_directory || type == directory" (binary_expression "type == arg_directory" identifier == identifier) || (binary_expression "type == directory" identifier == identifier))) ;) }))) (expression_statement "bVar2 = 0x2f;" (assignment_expression "bVar2 = 0x2f" identifier = number_literal) ;) (if_statement "if ((!bVar3) && (bVar2 = 0, indicator_style != slash)) {\n    if (stat_ok) {\n      uVar1 = mode & 0xf000;\n      if (uVar1 == 0xa000) {\n        return '@';\n      }\n      if (uVar1 == 0x1000) {\n        return '|';\n      }\n      bVar3 = uVar1 == 0xc000;\n    }\n    else {\n      if (type == symbolic_link) {\n        return '@';\n      }\n      if (type == fifo) {\n        return '|';\n      }\n      bVar3 = type == sock;\n    }\n    bVar2 = -bVar3 & 0x3d;\n  }" if (parenthesized_expression "((!bVar3) && (bVar2 = 0, indicator_style != slash))" ( (binary_expression "(!bVar3) && (bVar2 = 0, indicator_style != slash)" (parenthesized_expression "(!bVar3)" ( (unary_expression "!bVar3" ! identifier) )) && (parenthesized_expression "(bVar2 = 0, indicator_style != slash)" ( (comma_expression "bVar2 = 0, indicator_style != slash" (assignment_expression "bVar2 = 0" identifier = number_literal) , (binary_expression "indicator_style != slash" identifier != identifier)) ))) )) (compound_statement "{\n    if (stat_ok) {\n      uVar1 = mode & 0xf000;\n      if (uVar1 == 0xa000) {\n        return '@';\n      }\n      if (uVar1 == 0x1000) {\n        return '|';\n      }\n      bVar3 = uVar1 == 0xc000;\n    }\n    else {\n      if (type == symbolic_link) {\n        return '@';\n      }\n      if (type == fifo) {\n        return '|';\n      }\n      bVar3 = type == sock;\n    }\n    bVar2 = -bVar3 & 0x3d;\n  }" { (if_statement "if (stat_ok) {\n      uVar1 = mode & 0xf000;\n      if (uVar1 == 0xa000) {\n        return '@';\n      }\n      if (uVar1 == 0x1000) {\n        return '|';\n      }\n      bVar3 = uVar1 == 0xc000;\n    }\n    else {\n      if (type == symbolic_link) {\n        return '@';\n      }\n      if (type == fifo) {\n        return '|';\n      }\n      bVar3 = type == sock;\n    }" if (parenthesized_expression "(stat_ok)" ( identifier )) (compound_statement "{\n      uVar1 = mode & 0xf000;\n      if (uVar1 == 0xa000) {\n        return '@';\n      }\n      if (uVar1 == 0x1000) {\n        return '|';\n      }\n      bVar3 = uVar1 == 0xc000;\n    }" { (expression_statement "uVar1 = mode & 0xf000;" (assignment_expression "uVar1 = mode & 0xf000" identifier = (binary_expression "mode & 0xf000" identifier & number_literal)) ;) (if_statement "if (uVar1 == 0xa000) {\n        return '@';\n      }" if (parenthesized_expression "(uVar1 == 0xa000)" ( (binary_expression "uVar1 == 0xa000" identifier == number_literal) )) (compound_statement "{\n        return '@';\n      }" { (return_statement "return '@';" return (char_literal "'@'" ' character ') ;) })) (if_statement "if (uVar1 == 0x1000) {\n        return '|';\n      }" if (parenthesized_expression "(uVar1 == 0x1000)" ( (binary_expression "uVar1 == 0x1000" identifier == number_literal) )) (compound_statement "{\n        return '|';\n      }" { (return_statement "return '|';" return (char_literal "'|'" ' character ') ;) })) (expression_statement "bVar3 = uVar1 == 0xc000;" (assignment_expression "bVar3 = uVar1 == 0xc000" identifier = (binary_expression "uVar1 == 0xc000" identifier == number_literal)) ;) }) (else_clause "else {\n      if (type == symbolic_link) {\n        return '@';\n      }\n      if (type == fifo) {\n        return '|';\n      }\n      bVar3 = type == sock;\n    }" else (compound_statement "{\n      if (type == symbolic_link) {\n        return '@';\n      }\n      if (type == fifo) {\n        return '|';\n      }\n      bVar3 = type == sock;\n    }" { (if_statement "if (type == symbolic_link) {\n        return '@';\n      }" if (parenthesized_expression "(type == symbolic_link)" ( (binary_expression "type == symbolic_link" identifier == identifier) )) (compound_statement "{\n        return '@';\n      }" { (return_statement "return '@';" return (char_literal "'@'" ' character ') ;) })) (if_statement "if (type == fifo) {\n        return '|';\n      }" if (parenthesized_expression "(type == fifo)" ( (binary_expression "type == fifo" identifier == identifier) )) (compound_statement "{\n        return '|';\n      }" { (return_statement "return '|';" return (char_literal "'|'" ' character ') ;) })) (expression_statement "bVar3 = type == sock;" (assignment_expression "bVar3 = type == sock" identifier = (binary_expression "type == sock" identifier == identifier)) ;) }))) (expression_statement "bVar2 = -bVar3 & 0x3d;" (assignment_expression "bVar2 = -bVar3 & 0x3d" identifier = (binary_expression "-bVar3 & 0x3d" (unary_expression "-bVar3" - identifier) & number_literal)) ;) })) (return_statement "return bVar2;" return identifier ;) })))
(translation_unit "byte __regparm3 FUN_00015650(char param_1,uint param_2,int param_3)\n\n{\n  byte bVar1;\n  bool bVar2;\n  \n  if (param_1 == '\0') {\n    if (param_3 == 5) {\n      return 0;\n    }\n    bVar2 = param_3 == 9 || param_3 == 3;\n  }\n  else {\n    if ((param_2 & 0xf000) == 0x8000) {\n      if (DAT_0003c2e4 != 3) {\n        return 0;\n      }\n      return ~-((param_2 & 0x49) == 0) & 0x2a;\n    }\n    bVar2 = (param_2 & 0xf000) == 0x4000;\n  }\n  bVar1 = 0x2f;\n  if ((!bVar2) && (bVar1 = 0, DAT_0003c2e4 != 1)) {\n    if (param_1 == '\0') {\n      if (param_3 == 6) {\n        return 0x40;\n      }\n      if (param_3 == 1) {\n        return 0x7c;\n      }\n      bVar2 = param_3 == 7;\n    }\n    else {\n      param_2 = param_2 & 0xf000;\n      if (param_2 == 0xa000) {\n        return 0x40;\n      }\n      if (param_2 == 0x1000) {\n        return 0x7c;\n      }\n      bVar2 = param_2 == 0xc000;\n    }\n    bVar1 = -bVar2 & 0x3d;\n  }\n  return bVar1;\n}\n\n" (function_definition "byte __regparm3 FUN_00015650(char param_1,uint param_2,int param_3)\n\n{\n  byte bVar1;\n  bool bVar2;\n  \n  if (param_1 == '\0') {\n    if (param_3 == 5) {\n      return 0;\n    }\n    bVar2 = param_3 == 9 || param_3 == 3;\n  }\n  else {\n    if ((param_2 & 0xf000) == 0x8000) {\n      if (DAT_0003c2e4 != 3) {\n        return 0;\n      }\n      return ~-((param_2 & 0x49) == 0) & 0x2a;\n    }\n    bVar2 = (param_2 & 0xf000) == 0x4000;\n  }\n  bVar1 = 0x2f;\n  if ((!bVar2) && (bVar1 = 0, DAT_0003c2e4 != 1)) {\n    if (param_1 == '\0') {\n      if (param_3 == 6) {\n        return 0x40;\n      }\n      if (param_3 == 1) {\n        return 0x7c;\n      }\n      bVar2 = param_3 == 7;\n    }\n    else {\n      param_2 = param_2 & 0xf000;\n      if (param_2 == 0xa000) {\n        return 0x40;\n      }\n      if (param_2 == 0x1000) {\n        return 0x7c;\n      }\n      bVar2 = param_2 == 0xc000;\n    }\n    bVar1 = -bVar2 & 0x3d;\n  }\n  return bVar1;\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "FUN_00015650(char param_1,uint param_2,int param_3)" identifier (parameter_list "(char param_1,uint param_2,int param_3)" ( (parameter_declaration "char param_1" primitive_type identifier) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  byte bVar1;\n  bool bVar2;\n  \n  if (param_1 == '\0') {\n    if (param_3 == 5) {\n      return 0;\n    }\n    bVar2 = param_3 == 9 || param_3 == 3;\n  }\n  else {\n    if ((param_2 & 0xf000) == 0x8000) {\n      if (DAT_0003c2e4 != 3) {\n        return 0;\n      }\n      return ~-((param_2 & 0x49) == 0) & 0x2a;\n    }\n    bVar2 = (param_2 & 0xf000) == 0x4000;\n  }\n  bVar1 = 0x2f;\n  if ((!bVar2) && (bVar1 = 0, DAT_0003c2e4 != 1)) {\n    if (param_1 == '\0') {\n      if (param_3 == 6) {\n        return 0x40;\n      }\n      if (param_3 == 1) {\n        return 0x7c;\n      }\n      bVar2 = param_3 == 7;\n    }\n    else {\n      param_2 = param_2 & 0xf000;\n      if (param_2 == 0xa000) {\n        return 0x40;\n      }\n      if (param_2 == 0x1000) {\n        return 0x7c;\n      }\n      bVar2 = param_2 == 0xc000;\n    }\n    bVar1 = -bVar2 & 0x3d;\n  }\n  return bVar1;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (if_statement "if (param_1 == '\0') {\n    if (param_3 == 5) {\n      return 0;\n    }\n    bVar2 = param_3 == 9 || param_3 == 3;\n  }\n  else {\n    if ((param_2 & 0xf000) == 0x8000) {\n      if (DAT_0003c2e4 != 3) {\n        return 0;\n      }\n      return ~-((param_2 & 0x49) == 0) & 0x2a;\n    }\n    bVar2 = (param_2 & 0xf000) == 0x4000;\n  }" if (parenthesized_expression "(param_1 == '\0')" ( (binary_expression "param_1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    if (param_3 == 5) {\n      return 0;\n    }\n    bVar2 = param_3 == 9 || param_3 == 3;\n  }" { (if_statement "if (param_3 == 5) {\n      return 0;\n    }" if (parenthesized_expression "(param_3 == 5)" ( (binary_expression "param_3 == 5" identifier == number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "bVar2 = param_3 == 9 || param_3 == 3;" (assignment_expression "bVar2 = param_3 == 9 || param_3 == 3" identifier = (binary_expression "param_3 == 9 || param_3 == 3" (binary_expression "param_3 == 9" identifier == number_literal) || (binary_expression "param_3 == 3" identifier == number_literal))) ;) }) (else_clause "else {\n    if ((param_2 & 0xf000) == 0x8000) {\n      if (DAT_0003c2e4 != 3) {\n        return 0;\n      }\n      return ~-((param_2 & 0x49) == 0) & 0x2a;\n    }\n    bVar2 = (param_2 & 0xf000) == 0x4000;\n  }" else (compound_statement "{\n    if ((param_2 & 0xf000) == 0x8000) {\n      if (DAT_0003c2e4 != 3) {\n        return 0;\n      }\n      return ~-((param_2 & 0x49) == 0) & 0x2a;\n    }\n    bVar2 = (param_2 & 0xf000) == 0x4000;\n  }" { (if_statement "if ((param_2 & 0xf000) == 0x8000) {\n      if (DAT_0003c2e4 != 3) {\n        return 0;\n      }\n      return ~-((param_2 & 0x49) == 0) & 0x2a;\n    }" if (parenthesized_expression "((param_2 & 0xf000) == 0x8000)" ( (binary_expression "(param_2 & 0xf000) == 0x8000" (parenthesized_expression "(param_2 & 0xf000)" ( (binary_expression "param_2 & 0xf000" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      if (DAT_0003c2e4 != 3) {\n        return 0;\n      }\n      return ~-((param_2 & 0x49) == 0) & 0x2a;\n    }" { (if_statement "if (DAT_0003c2e4 != 3) {\n        return 0;\n      }" if (parenthesized_expression "(DAT_0003c2e4 != 3)" ( (binary_expression "DAT_0003c2e4 != 3" identifier != number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (return_statement "return ~-((param_2 & 0x49) == 0) & 0x2a;" return (binary_expression "~-((param_2 & 0x49) == 0) & 0x2a" (unary_expression "~-((param_2 & 0x49) == 0)" ~ (unary_expression "-((param_2 & 0x49) == 0)" - (parenthesized_expression "((param_2 & 0x49) == 0)" ( (binary_expression "(param_2 & 0x49) == 0" (parenthesized_expression "(param_2 & 0x49)" ( (binary_expression "param_2 & 0x49" identifier & number_literal) )) == number_literal) )))) & number_literal) ;) })) (expression_statement "bVar2 = (param_2 & 0xf000) == 0x4000;" (assignment_expression "bVar2 = (param_2 & 0xf000) == 0x4000" identifier = (binary_expression "(param_2 & 0xf000) == 0x4000" (parenthesized_expression "(param_2 & 0xf000)" ( (binary_expression "param_2 & 0xf000" identifier & number_literal) )) == number_literal)) ;) }))) (expression_statement "bVar1 = 0x2f;" (assignment_expression "bVar1 = 0x2f" identifier = number_literal) ;) (if_statement "if ((!bVar2) && (bVar1 = 0, DAT_0003c2e4 != 1)) {\n    if (param_1 == '\0') {\n      if (param_3 == 6) {\n        return 0x40;\n      }\n      if (param_3 == 1) {\n        return 0x7c;\n      }\n      bVar2 = param_3 == 7;\n    }\n    else {\n      param_2 = param_2 & 0xf000;\n      if (param_2 == 0xa000) {\n        return 0x40;\n      }\n      if (param_2 == 0x1000) {\n        return 0x7c;\n      }\n      bVar2 = param_2 == 0xc000;\n    }\n    bVar1 = -bVar2 & 0x3d;\n  }" if (parenthesized_expression "((!bVar2) && (bVar1 = 0, DAT_0003c2e4 != 1))" ( (binary_expression "(!bVar2) && (bVar1 = 0, DAT_0003c2e4 != 1)" (parenthesized_expression "(!bVar2)" ( (unary_expression "!bVar2" ! identifier) )) && (parenthesized_expression "(bVar1 = 0, DAT_0003c2e4 != 1)" ( (comma_expression "bVar1 = 0, DAT_0003c2e4 != 1" (assignment_expression "bVar1 = 0" identifier = number_literal) , (binary_expression "DAT_0003c2e4 != 1" identifier != number_literal)) ))) )) (compound_statement "{\n    if (param_1 == '\0') {\n      if (param_3 == 6) {\n        return 0x40;\n      }\n      if (param_3 == 1) {\n        return 0x7c;\n      }\n      bVar2 = param_3 == 7;\n    }\n    else {\n      param_2 = param_2 & 0xf000;\n      if (param_2 == 0xa000) {\n        return 0x40;\n      }\n      if (param_2 == 0x1000) {\n        return 0x7c;\n      }\n      bVar2 = param_2 == 0xc000;\n    }\n    bVar1 = -bVar2 & 0x3d;\n  }" { (if_statement "if (param_1 == '\0') {\n      if (param_3 == 6) {\n        return 0x40;\n      }\n      if (param_3 == 1) {\n        return 0x7c;\n      }\n      bVar2 = param_3 == 7;\n    }\n    else {\n      param_2 = param_2 & 0xf000;\n      if (param_2 == 0xa000) {\n        return 0x40;\n      }\n      if (param_2 == 0x1000) {\n        return 0x7c;\n      }\n      bVar2 = param_2 == 0xc000;\n    }" if (parenthesized_expression "(param_1 == '\0')" ( (binary_expression "param_1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      if (param_3 == 6) {\n        return 0x40;\n      }\n      if (param_3 == 1) {\n        return 0x7c;\n      }\n      bVar2 = param_3 == 7;\n    }" { (if_statement "if (param_3 == 6) {\n        return 0x40;\n      }" if (parenthesized_expression "(param_3 == 6)" ( (binary_expression "param_3 == 6" identifier == number_literal) )) (compound_statement "{\n        return 0x40;\n      }" { (return_statement "return 0x40;" return number_literal ;) })) (if_statement "if (param_3 == 1) {\n        return 0x7c;\n      }" if (parenthesized_expression "(param_3 == 1)" ( (binary_expression "param_3 == 1" identifier == number_literal) )) (compound_statement "{\n        return 0x7c;\n      }" { (return_statement "return 0x7c;" return number_literal ;) })) (expression_statement "bVar2 = param_3 == 7;" (assignment_expression "bVar2 = param_3 == 7" identifier = (binary_expression "param_3 == 7" identifier == number_literal)) ;) }) (else_clause "else {\n      param_2 = param_2 & 0xf000;\n      if (param_2 == 0xa000) {\n        return 0x40;\n      }\n      if (param_2 == 0x1000) {\n        return 0x7c;\n      }\n      bVar2 = param_2 == 0xc000;\n    }" else (compound_statement "{\n      param_2 = param_2 & 0xf000;\n      if (param_2 == 0xa000) {\n        return 0x40;\n      }\n      if (param_2 == 0x1000) {\n        return 0x7c;\n      }\n      bVar2 = param_2 == 0xc000;\n    }" { (expression_statement "param_2 = param_2 & 0xf000;" (assignment_expression "param_2 = param_2 & 0xf000" identifier = (binary_expression "param_2 & 0xf000" identifier & number_literal)) ;) (if_statement "if (param_2 == 0xa000) {\n        return 0x40;\n      }" if (parenthesized_expression "(param_2 == 0xa000)" ( (binary_expression "param_2 == 0xa000" identifier == number_literal) )) (compound_statement "{\n        return 0x40;\n      }" { (return_statement "return 0x40;" return number_literal ;) })) (if_statement "if (param_2 == 0x1000) {\n        return 0x7c;\n      }" if (parenthesized_expression "(param_2 == 0x1000)" ( (binary_expression "param_2 == 0x1000" identifier == number_literal) )) (compound_statement "{\n        return 0x7c;\n      }" { (return_statement "return 0x7c;" return number_literal ;) })) (expression_statement "bVar2 = param_2 == 0xc000;" (assignment_expression "bVar2 = param_2 == 0xc000" identifier = (binary_expression "param_2 == 0xc000" identifier == number_literal)) ;) }))) (expression_statement "bVar1 = -bVar2 & 0x3d;" (assignment_expression "bVar1 = -bVar2 & 0x3d" identifier = (binary_expression "-bVar2 & 0x3d" (unary_expression "-bVar2" - identifier) & number_literal)) ;) })) (return_statement "return bVar1;" return identifier ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT == LIT) || (binary_expression IDENT == LIT))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return LIT ;) })) (return_statement return (binary_expression (unary_expression ~ (unary_expression - (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )))) & LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT)) ;) }))) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (unary_expression ! IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = LIT) , (binary_expression IDENT != LIT)) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (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 { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) }) (else_clause else (compound_statement { (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 { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression (unary_expression - IDENT) & LIT)) ;) })) (return_statement return IDENT ;) })))
(function_definition "byte __regparm3 FUN_00015650(char param_1,uint param_2,int param_3)\n\n{\n  byte bVar1;\n  bool bVar2;\n  \n  if (param_1 == '\0') {\n    if (param_3 == 5) {\n      return 0;\n    }\n    bVar2 = param_3 == 9 || param_3 == 3;\n  }\n  else {\n    if ((param_2 & 0xf000) == 0x8000) {\n      if (DAT_0003c2e4 != 3) {\n        return 0;\n      }\n      return ~-((param_2 & 0x49) == 0) & 0x2a;\n    }\n    bVar2 = (param_2 & 0xf000) == 0x4000;\n  }\n  bVar1 = 0x2f;\n  if ((!bVar2) && (bVar1 = 0, DAT_0003c2e4 != 1)) {\n    if (param_1 == '\0') {\n      if (param_3 == 6) {\n        return 0x40;\n      }\n      if (param_3 == 1) {\n        return 0x7c;\n      }\n      bVar2 = param_3 == 7;\n    }\n    else {\n      param_2 = param_2 & 0xf000;\n      if (param_2 == 0xa000) {\n        return 0x40;\n      }\n      if (param_2 == 0x1000) {\n        return 0x7c;\n      }\n      bVar2 = param_2 == 0xc000;\n    }\n    bVar1 = -bVar2 & 0x3d;\n  }\n  return bVar1;\n}" (type_identifier "byte") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_00015650(char param_1,uint param_2,int param_3)" (identifier "FUN_00015650") (parameter_list "(char param_1,uint param_2,int param_3)" (( "(") (parameter_declaration "char param_1" (primitive_type "char") (identifier "param_1")) (, ",") (parameter_declaration "uint param_2" (type_identifier "uint") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) () ")"))) (compound_statement "{\n  byte bVar1;\n  bool bVar2;\n  \n  if (param_1 == '\0') {\n    if (param_3 == 5) {\n      return 0;\n    }\n    bVar2 = param_3 == 9 || param_3 == 3;\n  }\n  else {\n    if ((param_2 & 0xf000) == 0x8000) {\n      if (DAT_0003c2e4 != 3) {\n        return 0;\n      }\n      return ~-((param_2 & 0x49) == 0) & 0x2a;\n    }\n    bVar2 = (param_2 & 0xf000) == 0x4000;\n  }\n  bVar1 = 0x2f;\n  if ((!bVar2) && (bVar1 = 0, DAT_0003c2e4 != 1)) {\n    if (param_1 == '\0') {\n      if (param_3 == 6) {\n        return 0x40;\n      }\n      if (param_3 == 1) {\n        return 0x7c;\n      }\n      bVar2 = param_3 == 7;\n    }\n    else {\n      param_2 = param_2 & 0xf000;\n      if (param_2 == 0xa000) {\n        return 0x40;\n      }\n      if (param_2 == 0x1000) {\n        return 0x7c;\n      }\n      bVar2 = param_2 == 0xc000;\n    }\n    bVar1 = -bVar2 & 0x3d;\n  }\n  return bVar1;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "bool bVar2;" (primitive_type "bool") (identifier "bVar2") (; ";")) (if_statement "if (param_1 == '\0') {\n    if (param_3 == 5) {\n      return 0;\n    }\n    bVar2 = param_3 == 9 || param_3 == 3;\n  }\n  else {\n    if ((param_2 & 0xf000) == 0x8000) {\n      if (DAT_0003c2e4 != 3) {\n        return 0;\n      }\n      return ~-((param_2 & 0x49) == 0) & 0x2a;\n    }\n    bVar2 = (param_2 & 0xf000) == 0x4000;\n  }" (if "if") (parenthesized_expression "(param_1 == '\0')" (( "(") (binary_expression "param_1 == '\0'" (identifier "param_1") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    if (param_3 == 5) {\n      return 0;\n    }\n    bVar2 = param_3 == 9 || param_3 == 3;\n  }" ({ "{") (if_statement "if (param_3 == 5) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(param_3 == 5)" (( "(") (binary_expression "param_3 == 5" (identifier "param_3") (== "==") (number_literal "5")) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "bVar2 = param_3 == 9 || param_3 == 3;" (assignment_expression "bVar2 = param_3 == 9 || param_3 == 3" (identifier "bVar2") (= "=") (binary_expression "param_3 == 9 || param_3 == 3" (binary_expression "param_3 == 9" (identifier "param_3") (== "==") (number_literal "9")) (|| "||") (binary_expression "param_3 == 3" (identifier "param_3") (== "==") (number_literal "3")))) (; ";")) (} "}")) (else_clause "else {\n    if ((param_2 & 0xf000) == 0x8000) {\n      if (DAT_0003c2e4 != 3) {\n        return 0;\n      }\n      return ~-((param_2 & 0x49) == 0) & 0x2a;\n    }\n    bVar2 = (param_2 & 0xf000) == 0x4000;\n  }" (else "else") (compound_statement "{\n    if ((param_2 & 0xf000) == 0x8000) {\n      if (DAT_0003c2e4 != 3) {\n        return 0;\n      }\n      return ~-((param_2 & 0x49) == 0) & 0x2a;\n    }\n    bVar2 = (param_2 & 0xf000) == 0x4000;\n  }" ({ "{") (if_statement "if ((param_2 & 0xf000) == 0x8000) {\n      if (DAT_0003c2e4 != 3) {\n        return 0;\n      }\n      return ~-((param_2 & 0x49) == 0) & 0x2a;\n    }" (if "if") (parenthesized_expression "((param_2 & 0xf000) == 0x8000)" (( "(") (binary_expression "(param_2 & 0xf000) == 0x8000" (parenthesized_expression "(param_2 & 0xf000)" (( "(") (binary_expression "param_2 & 0xf000" (identifier "param_2") (& "&") (number_literal "0xf000")) () ")")) (== "==") (number_literal "0x8000")) () ")")) (compound_statement "{\n      if (DAT_0003c2e4 != 3) {\n        return 0;\n      }\n      return ~-((param_2 & 0x49) == 0) & 0x2a;\n    }" ({ "{") (if_statement "if (DAT_0003c2e4 != 3) {\n        return 0;\n      }" (if "if") (parenthesized_expression "(DAT_0003c2e4 != 3)" (( "(") (binary_expression "DAT_0003c2e4 != 3" (identifier "DAT_0003c2e4") (!= "!=") (number_literal "3")) () ")")) (compound_statement "{\n        return 0;\n      }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (return_statement "return ~-((param_2 & 0x49) == 0) & 0x2a;" (return "return") (binary_expression "~-((param_2 & 0x49) == 0) & 0x2a" (unary_expression "~-((param_2 & 0x49) == 0)" (~ "~") (unary_expression "-((param_2 & 0x49) == 0)" (- "-") (parenthesized_expression "((param_2 & 0x49) == 0)" (( "(") (binary_expression "(param_2 & 0x49) == 0" (parenthesized_expression "(param_2 & 0x49)" (( "(") (binary_expression "param_2 & 0x49" (identifier "param_2") (& "&") (number_literal "0x49")) () ")")) (== "==") (number_literal "0")) () ")")))) (& "&") (number_literal "0x2a")) (; ";")) (} "}"))) (expression_statement "bVar2 = (param_2 & 0xf000) == 0x4000;" (assignment_expression "bVar2 = (param_2 & 0xf000) == 0x4000" (identifier "bVar2") (= "=") (binary_expression "(param_2 & 0xf000) == 0x4000" (parenthesized_expression "(param_2 & 0xf000)" (( "(") (binary_expression "param_2 & 0xf000" (identifier "param_2") (& "&") (number_literal "0xf000")) () ")")) (== "==") (number_literal "0x4000"))) (; ";")) (} "}")))) (expression_statement "bVar1 = 0x2f;" (assignment_expression "bVar1 = 0x2f" (identifier "bVar1") (= "=") (number_literal "0x2f")) (; ";")) (if_statement "if ((!bVar2) && (bVar1 = 0, DAT_0003c2e4 != 1)) {\n    if (param_1 == '\0') {\n      if (param_3 == 6) {\n        return 0x40;\n      }\n      if (param_3 == 1) {\n        return 0x7c;\n      }\n      bVar2 = param_3 == 7;\n    }\n    else {\n      param_2 = param_2 & 0xf000;\n      if (param_2 == 0xa000) {\n        return 0x40;\n      }\n      if (param_2 == 0x1000) {\n        return 0x7c;\n      }\n      bVar2 = param_2 == 0xc000;\n    }\n    bVar1 = -bVar2 & 0x3d;\n  }" (if "if") (parenthesized_expression "((!bVar2) && (bVar1 = 0, DAT_0003c2e4 != 1))" (( "(") (binary_expression "(!bVar2) && (bVar1 = 0, DAT_0003c2e4 != 1)" (parenthesized_expression "(!bVar2)" (( "(") (unary_expression "!bVar2" (! "!") (identifier "bVar2")) () ")")) (&& "&&") (parenthesized_expression "(bVar1 = 0, DAT_0003c2e4 != 1)" (( "(") (comma_expression "bVar1 = 0, DAT_0003c2e4 != 1" (assignment_expression "bVar1 = 0" (identifier "bVar1") (= "=") (number_literal "0")) (, ",") (binary_expression "DAT_0003c2e4 != 1" (identifier "DAT_0003c2e4") (!= "!=") (number_literal "1"))) () ")"))) () ")")) (compound_statement "{\n    if (param_1 == '\0') {\n      if (param_3 == 6) {\n        return 0x40;\n      }\n      if (param_3 == 1) {\n        return 0x7c;\n      }\n      bVar2 = param_3 == 7;\n    }\n    else {\n      param_2 = param_2 & 0xf000;\n      if (param_2 == 0xa000) {\n        return 0x40;\n      }\n      if (param_2 == 0x1000) {\n        return 0x7c;\n      }\n      bVar2 = param_2 == 0xc000;\n    }\n    bVar1 = -bVar2 & 0x3d;\n  }" ({ "{") (if_statement "if (param_1 == '\0') {\n      if (param_3 == 6) {\n        return 0x40;\n      }\n      if (param_3 == 1) {\n        return 0x7c;\n      }\n      bVar2 = param_3 == 7;\n    }\n    else {\n      param_2 = param_2 & 0xf000;\n      if (param_2 == 0xa000) {\n        return 0x40;\n      }\n      if (param_2 == 0x1000) {\n        return 0x7c;\n      }\n      bVar2 = param_2 == 0xc000;\n    }" (if "if") (parenthesized_expression "(param_1 == '\0')" (( "(") (binary_expression "param_1 == '\0'" (identifier "param_1") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      if (param_3 == 6) {\n        return 0x40;\n      }\n      if (param_3 == 1) {\n        return 0x7c;\n      }\n      bVar2 = param_3 == 7;\n    }" ({ "{") (if_statement "if (param_3 == 6) {\n        return 0x40;\n      }" (if "if") (parenthesized_expression "(param_3 == 6)" (( "(") (binary_expression "param_3 == 6" (identifier "param_3") (== "==") (number_literal "6")) () ")")) (compound_statement "{\n        return 0x40;\n      }" ({ "{") (return_statement "return 0x40;" (return "return") (number_literal "0x40") (; ";")) (} "}"))) (if_statement "if (param_3 == 1) {\n        return 0x7c;\n      }" (if "if") (parenthesized_expression "(param_3 == 1)" (( "(") (binary_expression "param_3 == 1" (identifier "param_3") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n        return 0x7c;\n      }" ({ "{") (return_statement "return 0x7c;" (return "return") (number_literal "0x7c") (; ";")) (} "}"))) (expression_statement "bVar2 = param_3 == 7;" (assignment_expression "bVar2 = param_3 == 7" (identifier "bVar2") (= "=") (binary_expression "param_3 == 7" (identifier "param_3") (== "==") (number_literal "7"))) (; ";")) (} "}")) (else_clause "else {\n      param_2 = param_2 & 0xf000;\n      if (param_2 == 0xa000) {\n        return 0x40;\n      }\n      if (param_2 == 0x1000) {\n        return 0x7c;\n      }\n      bVar2 = param_2 == 0xc000;\n    }" (else "else") (compound_statement "{\n      param_2 = param_2 & 0xf000;\n      if (param_2 == 0xa000) {\n        return 0x40;\n      }\n      if (param_2 == 0x1000) {\n        return 0x7c;\n      }\n      bVar2 = param_2 == 0xc000;\n    }" ({ "{") (expression_statement "param_2 = param_2 & 0xf000;" (assignment_expression "param_2 = param_2 & 0xf000" (identifier "param_2") (= "=") (binary_expression "param_2 & 0xf000" (identifier "param_2") (& "&") (number_literal "0xf000"))) (; ";")) (if_statement "if (param_2 == 0xa000) {\n        return 0x40;\n      }" (if "if") (parenthesized_expression "(param_2 == 0xa000)" (( "(") (binary_expression "param_2 == 0xa000" (identifier "param_2") (== "==") (number_literal "0xa000")) () ")")) (compound_statement "{\n        return 0x40;\n      }" ({ "{") (return_statement "return 0x40;" (return "return") (number_literal "0x40") (; ";")) (} "}"))) (if_statement "if (param_2 == 0x1000) {\n        return 0x7c;\n      }" (if "if") (parenthesized_expression "(param_2 == 0x1000)" (( "(") (binary_expression "param_2 == 0x1000" (identifier "param_2") (== "==") (number_literal "0x1000")) () ")")) (compound_statement "{\n        return 0x7c;\n      }" ({ "{") (return_statement "return 0x7c;" (return "return") (number_literal "0x7c") (; ";")) (} "}"))) (expression_statement "bVar2 = param_2 == 0xc000;" (assignment_expression "bVar2 = param_2 == 0xc000" (identifier "bVar2") (= "=") (binary_expression "param_2 == 0xc000" (identifier "param_2") (== "==") (number_literal "0xc000"))) (; ";")) (} "}")))) (expression_statement "bVar1 = -bVar2 & 0x3d;" (assignment_expression "bVar1 = -bVar2 & 0x3d" (identifier "bVar1") (= "=") (binary_expression "-bVar2 & 0x3d" (unary_expression "-bVar2" (- "-") (identifier "bVar2")) (& "&") (number_literal "0x3d"))) (; ";")) (} "}"))) (return_statement "return bVar1;" (return "return") (identifier "bVar1") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */

char __regparm3 function_1(type_1 stat_ok,type_2 var_1,type_3 var_4)

{
  type_4 var_9;
  char c;
  type_5 bVar2;
  bool bVar3;
  
  if (stat_ok) {
    if ((var_1 & 0xf000) == 0x8000) {
      if (var_2 != var_3) {
        return '\0';
      }
      return ~-((var_1 & 0x49) == 0) & 0x2a;
    }
    bVar3 = (var_1 & 0xf000) == 0x4000;
  }
  else {
    if (var_4 == var_5) {
      return '\0';
    }
    bVar3 = var_4 == var_6 || var_4 == var_7;
  }
  bVar2 = 0x2f;
  if ((!bVar3) && (bVar2 = 0, var_2 != var_8)) {
    if (stat_ok) {
      var_9 = var_1 & 0xf000;
      if (var_9 == 0xa000) {
        return '@';
      }
      if (var_9 == 0x1000) {
        return '|';
      }
      bVar3 = var_9 == 0xc000;
    }
    else {
      if (var_4 == var_10) {
        return '@';
      }
      if (var_4 == var_11) {
        return '|';
      }
      bVar3 = var_4 == var_12;
    }
    bVar2 = -bVar3 & 0x3d;
  }
  return bVar2;
}


(translation_unit (function_definition type: (type_identifier) (ERROR (identifier)) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (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: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (return_statement (binary_expression left: (unary_expression argument: (unary_expression argument: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (unary_expression argument: (identifier))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (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 (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (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))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (unary_expression argument: (identifier)) right: (number_literal)))))) (return_statement (identifier)))))

/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */

byte __regparm3 MASKED(char param_1,uint param_2,int param_3)

{
  byte bVar1;
  bool bVar2;
  
  if (param_1 == '\0') {
    if (param_3 == 5) {
      return 0;
    }
    bVar2 = param_3 == 9 || param_3 == 3;
  }
  else {
    if ((param_2 & 0xf000) == 0x8000) {
      if (DAT_0003c2e4 != 3) {
        return 0;
      }
      return ~-((param_2 & 0x49) == 0) & 0x2a;
    }
    bVar2 = (param_2 & 0xf000) == 0x4000;
  }
  bVar1 = 0x2f;
  if ((!bVar2) && (bVar1 = 0, DAT_0003c2e4 != 1)) {
    if (param_1 == '\0') {
      if (param_3 == 6) {
        return 0x40;
      }
      if (param_3 == 1) {
        return 0x7c;
      }
      bVar2 = param_3 == 7;
    }
    else {
      param_2 = param_2 & 0xf000;
      if (param_2 == 0xa000) {
        return 0x40;
      }
      if (param_2 == 0x1000) {
        return 0x7c;
      }
      bVar2 = param_2 == 0xc000;
    }
    bVar1 = -bVar2 & 0x3d;
  }
  return bVar1;
}

