
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

void __regparm3 unw_print_abreg(char *cp,uint abreg)

{
  uint uVar1;
  
  uVar1 = abreg >> 5 & 3;
  if (uVar1 == 2) {
    sprintf(cp,"b%u",abreg & 0x1f);
    return;
  }
  if (uVar1 != 3) {
    if (uVar1 != 1) {
      sprintf(cp,"r%u",abreg & 0x1f);
      return;
    }
    sprintf(cp,"f%u",abreg & 0x1f);
    return;
  }
  strcpy(cp,*(char **)(special_reg_7097 + (abreg & 0xf) * 4));
  return;
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

void __regparm3 FUN_0004b2e0(char *param_1,uint param_2)

{
  uint uVar1;
  
  uVar1 = param_2 >> 5 & 3;
  if (uVar1 == 2) {
    sprintf(param_1,"b%u",param_2 & 0x1f);
    return;
  }
  if (uVar1 != 3) {
    if (uVar1 != 1) {
      sprintf(param_1,"r%u",param_2 & 0x1f);
      return;
    }
    sprintf(param_1,"f%u",param_2 & 0x1f);
    return;
  }
  strcpy(param_1,*(char **)(&DAT_000b3400 + (param_2 & 0xf) * 4));
  return;
}


PUSH EBX
MOV ECX,EDX
CALL 0x00013f70
ADD EBX,0x68d18
SHR ECX,0x5
AND ECX,0x3
SUB ESP,0x8
CMP ECX,0x2
JZ 0x0004b328
CMP ECX,0x3
JZ 0x0004b368
CMP ECX,0x1
JZ 0x0004b348
SUB ESP,0x4
AND EDX,0x1f
PUSH EDX
LEA EDX,[EBX + 0xfffda672]
PUSH EDX
PUSH EAX
CALL 0x00013370
ADD ESP,0x10
ADD ESP,0x8
POP EBX
RET
SUB ESP,0x4
AND EDX,0x1f
PUSH EDX
LEA EDX,[EBX + 0xfffda67a]
PUSH EDX
PUSH EAX
CALL 0x00013370
ADD ESP,0x10
ADD ESP,0x8
POP EBX
RET
SUB ESP,0x4
AND EDX,0x1f
PUSH EDX
LEA EDX,[EBX + 0xfffda676]
PUSH EDX
PUSH EAX
CALL 0x00013370
ADD ESP,0x10
ADD ESP,0x8
POP EBX
RET
SUB ESP,0x8
AND EDX,0xf
PUSH dword ptr [EBX + EDX*0x4 + 0xfffff400]
PUSH EAX
CALL 0x00013190
ADD ESP,0x10
ADD ESP,0x8
POP EBX
RET
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid __regparm3 FUN_0004b2e0(char *param_1,uint param_2)\n\n{\n  uint uVar1;\n  \n  uVar1 = param_2 >> 5 & 3;\n  if (uVar1 == 2) {\n    sprintf(param_1,"b%u",param_2 & 0x1f);\n    return;\n  }\n  if (uVar1 != 3) {\n    if (uVar1 != 1) {\n      sprintf(param_1,"r%u",param_2 & 0x1f);\n      return;\n    }\n    sprintf(param_1,"f%u",param_2 & 0x1f);\n    return;\n  }\n  strcpy(param_1,*(char **)(&DAT_000b3400 + (param_2 & 0xf) * 4));\n  return;\n}\n\n" comment (function_definition "void __regparm3 FUN_0004b2e0(char *param_1,uint param_2)\n\n{\n  uint uVar1;\n  \n  uVar1 = param_2 >> 5 & 3;\n  if (uVar1 == 2) {\n    sprintf(param_1,"b%u",param_2 & 0x1f);\n    return;\n  }\n  if (uVar1 != 3) {\n    if (uVar1 != 1) {\n      sprintf(param_1,"r%u",param_2 & 0x1f);\n      return;\n    }\n    sprintf(param_1,"f%u",param_2 & 0x1f);\n    return;\n  }\n  strcpy(param_1,*(char **)(&DAT_000b3400 + (param_2 & 0xf) * 4));\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_0004b2e0(char *param_1,uint param_2)" identifier (parameter_list "(char *param_1,uint param_2)" ( (parameter_declaration "char *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint param_2" type_identifier identifier) ))) (compound_statement "{\n  uint uVar1;\n  \n  uVar1 = param_2 >> 5 & 3;\n  if (uVar1 == 2) {\n    sprintf(param_1,"b%u",param_2 & 0x1f);\n    return;\n  }\n  if (uVar1 != 3) {\n    if (uVar1 != 1) {\n      sprintf(param_1,"r%u",param_2 & 0x1f);\n      return;\n    }\n    sprintf(param_1,"f%u",param_2 & 0x1f);\n    return;\n  }\n  strcpy(param_1,*(char **)(&DAT_000b3400 + (param_2 & 0xf) * 4));\n  return;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (expression_statement "uVar1 = param_2 >> 5 & 3;" (assignment_expression "uVar1 = param_2 >> 5 & 3" identifier = (binary_expression "param_2 >> 5 & 3" (binary_expression "param_2 >> 5" identifier >> number_literal) & number_literal)) ;) (if_statement "if (uVar1 == 2) {\n    sprintf(param_1,"b%u",param_2 & 0x1f);\n    return;\n  }" if (parenthesized_expression "(uVar1 == 2)" ( (binary_expression "uVar1 == 2" identifier == number_literal) )) (compound_statement "{\n    sprintf(param_1,"b%u",param_2 & 0x1f);\n    return;\n  }" { (expression_statement "sprintf(param_1,"b%u",param_2 & 0x1f);" (call_expression "sprintf(param_1,"b%u",param_2 & 0x1f)" identifier (argument_list "(param_1,"b%u",param_2 & 0x1f)" ( identifier , (string_literal ""b%u"" " string_content ") , (binary_expression "param_2 & 0x1f" identifier & number_literal) ))) ;) (return_statement "return;" return ;) })) (if_statement "if (uVar1 != 3) {\n    if (uVar1 != 1) {\n      sprintf(param_1,"r%u",param_2 & 0x1f);\n      return;\n    }\n    sprintf(param_1,"f%u",param_2 & 0x1f);\n    return;\n  }" if (parenthesized_expression "(uVar1 != 3)" ( (binary_expression "uVar1 != 3" identifier != number_literal) )) (compound_statement "{\n    if (uVar1 != 1) {\n      sprintf(param_1,"r%u",param_2 & 0x1f);\n      return;\n    }\n    sprintf(param_1,"f%u",param_2 & 0x1f);\n    return;\n  }" { (if_statement "if (uVar1 != 1) {\n      sprintf(param_1,"r%u",param_2 & 0x1f);\n      return;\n    }" if (parenthesized_expression "(uVar1 != 1)" ( (binary_expression "uVar1 != 1" identifier != number_literal) )) (compound_statement "{\n      sprintf(param_1,"r%u",param_2 & 0x1f);\n      return;\n    }" { (expression_statement "sprintf(param_1,"r%u",param_2 & 0x1f);" (call_expression "sprintf(param_1,"r%u",param_2 & 0x1f)" identifier (argument_list "(param_1,"r%u",param_2 & 0x1f)" ( identifier , (string_literal ""r%u"" " string_content ") , (binary_expression "param_2 & 0x1f" identifier & number_literal) ))) ;) (return_statement "return;" return ;) })) (expression_statement "sprintf(param_1,"f%u",param_2 & 0x1f);" (call_expression "sprintf(param_1,"f%u",param_2 & 0x1f)" identifier (argument_list "(param_1,"f%u",param_2 & 0x1f)" ( identifier , (string_literal ""f%u"" " string_content ") , (binary_expression "param_2 & 0x1f" identifier & number_literal) ))) ;) (return_statement "return;" return ;) })) (expression_statement "strcpy(param_1,*(char **)(&DAT_000b3400 + (param_2 & 0xf) * 4));" (call_expression "strcpy(param_1,*(char **)(&DAT_000b3400 + (param_2 & 0xf) * 4))" identifier (argument_list "(param_1,*(char **)(&DAT_000b3400 + (param_2 & 0xf) * 4))" ( identifier , (pointer_expression "*(char **)(&DAT_000b3400 + (param_2 & 0xf) * 4)" * (cast_expression "(char **)(&DAT_000b3400 + (param_2 & 0xf) * 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(&DAT_000b3400 + (param_2 & 0xf) * 4)" ( (binary_expression "&DAT_000b3400 + (param_2 & 0xf) * 4" (pointer_expression "&DAT_000b3400" & identifier) + (binary_expression "(param_2 & 0xf) * 4" (parenthesized_expression "(param_2 & 0xf)" ( (binary_expression "param_2 & 0xf" identifier & number_literal) )) * number_literal)) )))) ))) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid __regparm3 unw_print_abreg(char *cp,uint abreg)\n\n{\n  uint uVar1;\n  \n  uVar1 = abreg >> 5 & 3;\n  if (uVar1 == 2) {\n    sprintf(cp,"b%u",abreg & 0x1f);\n    return;\n  }\n  if (uVar1 != 3) {\n    if (uVar1 != 1) {\n      sprintf(cp,"r%u",abreg & 0x1f);\n      return;\n    }\n    sprintf(cp,"f%u",abreg & 0x1f);\n    return;\n  }\n  strcpy(cp,*(char **)(special_reg_7097 + (abreg & 0xf) * 4));\n  return;\n}\n\n" comment (function_definition "void __regparm3 unw_print_abreg(char *cp,uint abreg)\n\n{\n  uint uVar1;\n  \n  uVar1 = abreg >> 5 & 3;\n  if (uVar1 == 2) {\n    sprintf(cp,"b%u",abreg & 0x1f);\n    return;\n  }\n  if (uVar1 != 3) {\n    if (uVar1 != 1) {\n      sprintf(cp,"r%u",abreg & 0x1f);\n      return;\n    }\n    sprintf(cp,"f%u",abreg & 0x1f);\n    return;\n  }\n  strcpy(cp,*(char **)(special_reg_7097 + (abreg & 0xf) * 4));\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "unw_print_abreg(char *cp,uint abreg)" identifier (parameter_list "(char *cp,uint abreg)" ( (parameter_declaration "char *cp" primitive_type (pointer_declarator "*cp" * identifier)) , (parameter_declaration "uint abreg" type_identifier identifier) ))) (compound_statement "{\n  uint uVar1;\n  \n  uVar1 = abreg >> 5 & 3;\n  if (uVar1 == 2) {\n    sprintf(cp,"b%u",abreg & 0x1f);\n    return;\n  }\n  if (uVar1 != 3) {\n    if (uVar1 != 1) {\n      sprintf(cp,"r%u",abreg & 0x1f);\n      return;\n    }\n    sprintf(cp,"f%u",abreg & 0x1f);\n    return;\n  }\n  strcpy(cp,*(char **)(special_reg_7097 + (abreg & 0xf) * 4));\n  return;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (expression_statement "uVar1 = abreg >> 5 & 3;" (assignment_expression "uVar1 = abreg >> 5 & 3" identifier = (binary_expression "abreg >> 5 & 3" (binary_expression "abreg >> 5" identifier >> number_literal) & number_literal)) ;) (if_statement "if (uVar1 == 2) {\n    sprintf(cp,"b%u",abreg & 0x1f);\n    return;\n  }" if (parenthesized_expression "(uVar1 == 2)" ( (binary_expression "uVar1 == 2" identifier == number_literal) )) (compound_statement "{\n    sprintf(cp,"b%u",abreg & 0x1f);\n    return;\n  }" { (expression_statement "sprintf(cp,"b%u",abreg & 0x1f);" (call_expression "sprintf(cp,"b%u",abreg & 0x1f)" identifier (argument_list "(cp,"b%u",abreg & 0x1f)" ( identifier , (string_literal ""b%u"" " string_content ") , (binary_expression "abreg & 0x1f" identifier & number_literal) ))) ;) (return_statement "return;" return ;) })) (if_statement "if (uVar1 != 3) {\n    if (uVar1 != 1) {\n      sprintf(cp,"r%u",abreg & 0x1f);\n      return;\n    }\n    sprintf(cp,"f%u",abreg & 0x1f);\n    return;\n  }" if (parenthesized_expression "(uVar1 != 3)" ( (binary_expression "uVar1 != 3" identifier != number_literal) )) (compound_statement "{\n    if (uVar1 != 1) {\n      sprintf(cp,"r%u",abreg & 0x1f);\n      return;\n    }\n    sprintf(cp,"f%u",abreg & 0x1f);\n    return;\n  }" { (if_statement "if (uVar1 != 1) {\n      sprintf(cp,"r%u",abreg & 0x1f);\n      return;\n    }" if (parenthesized_expression "(uVar1 != 1)" ( (binary_expression "uVar1 != 1" identifier != number_literal) )) (compound_statement "{\n      sprintf(cp,"r%u",abreg & 0x1f);\n      return;\n    }" { (expression_statement "sprintf(cp,"r%u",abreg & 0x1f);" (call_expression "sprintf(cp,"r%u",abreg & 0x1f)" identifier (argument_list "(cp,"r%u",abreg & 0x1f)" ( identifier , (string_literal ""r%u"" " string_content ") , (binary_expression "abreg & 0x1f" identifier & number_literal) ))) ;) (return_statement "return;" return ;) })) (expression_statement "sprintf(cp,"f%u",abreg & 0x1f);" (call_expression "sprintf(cp,"f%u",abreg & 0x1f)" identifier (argument_list "(cp,"f%u",abreg & 0x1f)" ( identifier , (string_literal ""f%u"" " string_content ") , (binary_expression "abreg & 0x1f" identifier & number_literal) ))) ;) (return_statement "return;" return ;) })) (expression_statement "strcpy(cp,*(char **)(special_reg_7097 + (abreg & 0xf) * 4));" (call_expression "strcpy(cp,*(char **)(special_reg_7097 + (abreg & 0xf) * 4))" identifier (argument_list "(cp,*(char **)(special_reg_7097 + (abreg & 0xf) * 4))" ( identifier , (pointer_expression "*(char **)(special_reg_7097 + (abreg & 0xf) * 4)" * (cast_expression "(char **)(special_reg_7097 + (abreg & 0xf) * 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(special_reg_7097 + (abreg & 0xf) * 4)" ( (binary_expression "special_reg_7097 + (abreg & 0xf) * 4" identifier + (binary_expression "(abreg & 0xf) * 4" (parenthesized_expression "(abreg & 0xf)" ( (binary_expression "abreg & 0xf" identifier & number_literal) )) * number_literal)) )))) ))) ;) (return_statement "return;" return ;) })))
(translation_unit "void __regparm3 FUN_0004b2e0(char *param_1,uint param_2)\n\n{\n  uint uVar1;\n  \n  uVar1 = param_2 >> 5 & 3;\n  if (uVar1 == 2) {\n    sprintf(param_1,"b%u",param_2 & 0x1f);\n    return;\n  }\n  if (uVar1 != 3) {\n    if (uVar1 != 1) {\n      sprintf(param_1,"r%u",param_2 & 0x1f);\n      return;\n    }\n    sprintf(param_1,"f%u",param_2 & 0x1f);\n    return;\n  }\n  strcpy(param_1,*(char **)(&DAT_000b3400 + (param_2 & 0xf) * 4));\n  return;\n}\n\n" (function_definition "void __regparm3 FUN_0004b2e0(char *param_1,uint param_2)\n\n{\n  uint uVar1;\n  \n  uVar1 = param_2 >> 5 & 3;\n  if (uVar1 == 2) {\n    sprintf(param_1,"b%u",param_2 & 0x1f);\n    return;\n  }\n  if (uVar1 != 3) {\n    if (uVar1 != 1) {\n      sprintf(param_1,"r%u",param_2 & 0x1f);\n      return;\n    }\n    sprintf(param_1,"f%u",param_2 & 0x1f);\n    return;\n  }\n  strcpy(param_1,*(char **)(&DAT_000b3400 + (param_2 & 0xf) * 4));\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_0004b2e0(char *param_1,uint param_2)" identifier (parameter_list "(char *param_1,uint param_2)" ( (parameter_declaration "char *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint param_2" type_identifier identifier) ))) (compound_statement "{\n  uint uVar1;\n  \n  uVar1 = param_2 >> 5 & 3;\n  if (uVar1 == 2) {\n    sprintf(param_1,"b%u",param_2 & 0x1f);\n    return;\n  }\n  if (uVar1 != 3) {\n    if (uVar1 != 1) {\n      sprintf(param_1,"r%u",param_2 & 0x1f);\n      return;\n    }\n    sprintf(param_1,"f%u",param_2 & 0x1f);\n    return;\n  }\n  strcpy(param_1,*(char **)(&DAT_000b3400 + (param_2 & 0xf) * 4));\n  return;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (expression_statement "uVar1 = param_2 >> 5 & 3;" (assignment_expression "uVar1 = param_2 >> 5 & 3" identifier = (binary_expression "param_2 >> 5 & 3" (binary_expression "param_2 >> 5" identifier >> number_literal) & number_literal)) ;) (if_statement "if (uVar1 == 2) {\n    sprintf(param_1,"b%u",param_2 & 0x1f);\n    return;\n  }" if (parenthesized_expression "(uVar1 == 2)" ( (binary_expression "uVar1 == 2" identifier == number_literal) )) (compound_statement "{\n    sprintf(param_1,"b%u",param_2 & 0x1f);\n    return;\n  }" { (expression_statement "sprintf(param_1,"b%u",param_2 & 0x1f);" (call_expression "sprintf(param_1,"b%u",param_2 & 0x1f)" identifier (argument_list "(param_1,"b%u",param_2 & 0x1f)" ( identifier , (string_literal ""b%u"" " string_content ") , (binary_expression "param_2 & 0x1f" identifier & number_literal) ))) ;) (return_statement "return;" return ;) })) (if_statement "if (uVar1 != 3) {\n    if (uVar1 != 1) {\n      sprintf(param_1,"r%u",param_2 & 0x1f);\n      return;\n    }\n    sprintf(param_1,"f%u",param_2 & 0x1f);\n    return;\n  }" if (parenthesized_expression "(uVar1 != 3)" ( (binary_expression "uVar1 != 3" identifier != number_literal) )) (compound_statement "{\n    if (uVar1 != 1) {\n      sprintf(param_1,"r%u",param_2 & 0x1f);\n      return;\n    }\n    sprintf(param_1,"f%u",param_2 & 0x1f);\n    return;\n  }" { (if_statement "if (uVar1 != 1) {\n      sprintf(param_1,"r%u",param_2 & 0x1f);\n      return;\n    }" if (parenthesized_expression "(uVar1 != 1)" ( (binary_expression "uVar1 != 1" identifier != number_literal) )) (compound_statement "{\n      sprintf(param_1,"r%u",param_2 & 0x1f);\n      return;\n    }" { (expression_statement "sprintf(param_1,"r%u",param_2 & 0x1f);" (call_expression "sprintf(param_1,"r%u",param_2 & 0x1f)" identifier (argument_list "(param_1,"r%u",param_2 & 0x1f)" ( identifier , (string_literal ""r%u"" " string_content ") , (binary_expression "param_2 & 0x1f" identifier & number_literal) ))) ;) (return_statement "return;" return ;) })) (expression_statement "sprintf(param_1,"f%u",param_2 & 0x1f);" (call_expression "sprintf(param_1,"f%u",param_2 & 0x1f)" identifier (argument_list "(param_1,"f%u",param_2 & 0x1f)" ( identifier , (string_literal ""f%u"" " string_content ") , (binary_expression "param_2 & 0x1f" identifier & number_literal) ))) ;) (return_statement "return;" return ;) })) (expression_statement "strcpy(param_1,*(char **)(&DAT_000b3400 + (param_2 & 0xf) * 4));" (call_expression "strcpy(param_1,*(char **)(&DAT_000b3400 + (param_2 & 0xf) * 4))" identifier (argument_list "(param_1,*(char **)(&DAT_000b3400 + (param_2 & 0xf) * 4))" ( identifier , (pointer_expression "*(char **)(&DAT_000b3400 + (param_2 & 0xf) * 4)" * (cast_expression "(char **)(&DAT_000b3400 + (param_2 & 0xf) * 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(&DAT_000b3400 + (param_2 & 0xf) * 4)" ( (binary_expression "&DAT_000b3400 + (param_2 & 0xf) * 4" (pointer_expression "&DAT_000b3400" & identifier) + (binary_expression "(param_2 & 0xf) * 4" (parenthesized_expression "(param_2 & 0xf)" ( (binary_expression "param_2 & 0xf" identifier & number_literal) )) * number_literal)) )))) ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT >> LIT) & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , (binary_expression IDENT & LIT) ))) ;) (return_statement return ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , (binary_expression IDENT & LIT) ))) ;) (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , (binary_expression IDENT & LIT) ))) ;) (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) * LIT)) )))) ))) ;) (return_statement return ;) })))
(function_definition "void __regparm3 FUN_0004b2e0(char *param_1,uint param_2)\n\n{\n  uint uVar1;\n  \n  uVar1 = param_2 >> 5 & 3;\n  if (uVar1 == 2) {\n    sprintf(param_1,"b%u",param_2 & 0x1f);\n    return;\n  }\n  if (uVar1 != 3) {\n    if (uVar1 != 1) {\n      sprintf(param_1,"r%u",param_2 & 0x1f);\n      return;\n    }\n    sprintf(param_1,"f%u",param_2 & 0x1f);\n    return;\n  }\n  strcpy(param_1,*(char **)(&DAT_000b3400 + (param_2 & 0xf) * 4));\n  return;\n}" (primitive_type "void") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_0004b2e0(char *param_1,uint param_2)" (identifier "FUN_0004b2e0") (parameter_list "(char *param_1,uint param_2)" (( "(") (parameter_declaration "char *param_1" (primitive_type "char") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "uint param_2" (type_identifier "uint") (identifier "param_2")) () ")"))) (compound_statement "{\n  uint uVar1;\n  \n  uVar1 = param_2 >> 5 & 3;\n  if (uVar1 == 2) {\n    sprintf(param_1,"b%u",param_2 & 0x1f);\n    return;\n  }\n  if (uVar1 != 3) {\n    if (uVar1 != 1) {\n      sprintf(param_1,"r%u",param_2 & 0x1f);\n      return;\n    }\n    sprintf(param_1,"f%u",param_2 & 0x1f);\n    return;\n  }\n  strcpy(param_1,*(char **)(&DAT_000b3400 + (param_2 & 0xf) * 4));\n  return;\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (expression_statement "uVar1 = param_2 >> 5 & 3;" (assignment_expression "uVar1 = param_2 >> 5 & 3" (identifier "uVar1") (= "=") (binary_expression "param_2 >> 5 & 3" (binary_expression "param_2 >> 5" (identifier "param_2") (>> ">>") (number_literal "5")) (& "&") (number_literal "3"))) (; ";")) (if_statement "if (uVar1 == 2) {\n    sprintf(param_1,"b%u",param_2 & 0x1f);\n    return;\n  }" (if "if") (parenthesized_expression "(uVar1 == 2)" (( "(") (binary_expression "uVar1 == 2" (identifier "uVar1") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n    sprintf(param_1,"b%u",param_2 & 0x1f);\n    return;\n  }" ({ "{") (expression_statement "sprintf(param_1,"b%u",param_2 & 0x1f);" (call_expression "sprintf(param_1,"b%u",param_2 & 0x1f)" (identifier "sprintf") (argument_list "(param_1,"b%u",param_2 & 0x1f)" (( "(") (identifier "param_1") (, ",") (string_literal ""b%u"" (" """) (string_content "b%u") (" """)) (, ",") (binary_expression "param_2 & 0x1f" (identifier "param_2") (& "&") (number_literal "0x1f")) () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (uVar1 != 3) {\n    if (uVar1 != 1) {\n      sprintf(param_1,"r%u",param_2 & 0x1f);\n      return;\n    }\n    sprintf(param_1,"f%u",param_2 & 0x1f);\n    return;\n  }" (if "if") (parenthesized_expression "(uVar1 != 3)" (( "(") (binary_expression "uVar1 != 3" (identifier "uVar1") (!= "!=") (number_literal "3")) () ")")) (compound_statement "{\n    if (uVar1 != 1) {\n      sprintf(param_1,"r%u",param_2 & 0x1f);\n      return;\n    }\n    sprintf(param_1,"f%u",param_2 & 0x1f);\n    return;\n  }" ({ "{") (if_statement "if (uVar1 != 1) {\n      sprintf(param_1,"r%u",param_2 & 0x1f);\n      return;\n    }" (if "if") (parenthesized_expression "(uVar1 != 1)" (( "(") (binary_expression "uVar1 != 1" (identifier "uVar1") (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n      sprintf(param_1,"r%u",param_2 & 0x1f);\n      return;\n    }" ({ "{") (expression_statement "sprintf(param_1,"r%u",param_2 & 0x1f);" (call_expression "sprintf(param_1,"r%u",param_2 & 0x1f)" (identifier "sprintf") (argument_list "(param_1,"r%u",param_2 & 0x1f)" (( "(") (identifier "param_1") (, ",") (string_literal ""r%u"" (" """) (string_content "r%u") (" """)) (, ",") (binary_expression "param_2 & 0x1f" (identifier "param_2") (& "&") (number_literal "0x1f")) () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "sprintf(param_1,"f%u",param_2 & 0x1f);" (call_expression "sprintf(param_1,"f%u",param_2 & 0x1f)" (identifier "sprintf") (argument_list "(param_1,"f%u",param_2 & 0x1f)" (( "(") (identifier "param_1") (, ",") (string_literal ""f%u"" (" """) (string_content "f%u") (" """)) (, ",") (binary_expression "param_2 & 0x1f" (identifier "param_2") (& "&") (number_literal "0x1f")) () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "strcpy(param_1,*(char **)(&DAT_000b3400 + (param_2 & 0xf) * 4));" (call_expression "strcpy(param_1,*(char **)(&DAT_000b3400 + (param_2 & 0xf) * 4))" (identifier "strcpy") (argument_list "(param_1,*(char **)(&DAT_000b3400 + (param_2 & 0xf) * 4))" (( "(") (identifier "param_1") (, ",") (pointer_expression "*(char **)(&DAT_000b3400 + (param_2 & 0xf) * 4)" (* "*") (cast_expression "(char **)(&DAT_000b3400 + (param_2 & 0xf) * 4)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(&DAT_000b3400 + (param_2 & 0xf) * 4)" (( "(") (binary_expression "&DAT_000b3400 + (param_2 & 0xf) * 4" (pointer_expression "&DAT_000b3400" (& "&") (identifier "DAT_000b3400")) (+ "+") (binary_expression "(param_2 & 0xf) * 4" (parenthesized_expression "(param_2 & 0xf)" (( "(") (binary_expression "param_2 & 0xf" (identifier "param_2") (& "&") (number_literal "0xf")) () ")")) (* "*") (number_literal "4"))) () ")")))) () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

void __regparm3 function_1(char *cp,type_1 var_1)

{
  type_1 var_2;
  
  var_2 = var_1 >> 5 & 3;
  if (var_2 == 2) {
    var_3(cp,"b%u",var_1 & 0x1f);
    return;
  }
  if (var_2 != 3) {
    if (var_2 != 1) {
      var_3(cp,"r%u",var_1 & 0x1f);
      return;
    }
    var_3(cp,"f%u",var_1 & 0x1f);
    return;
  }
  var_4(cp,*(char **)(var_5 + (var_1 & 0xf) * 4));
  return;
}


(translation_unit (function_definition type: (primitive_type) (ERROR (identifier)) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)) (binary_expression left: (identifier) right: (number_literal))))) (return_statement))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)) (binary_expression left: (identifier) right: (number_literal))))) (return_statement))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)) (binary_expression left: (identifier) right: (number_literal))))) (return_statement))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))))))) (return_statement))))

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

void __regparm3 MASKED(char *param_1,uint param_2)

{
  uint uVar1;
  
  uVar1 = param_2 >> 5 & 3;
  if (uVar1 == 2) {
    sprintf(param_1,"b%u",param_2 & 0x1f);
    return;
  }
  if (uVar1 != 3) {
    if (uVar1 != 1) {
      sprintf(param_1,"r%u",param_2 & 0x1f);
      return;
    }
    sprintf(param_1,"f%u",param_2 & 0x1f);
    return;
  }
  strcpy(param_1,*(char **)(&DAT_000b3400 + (param_2 & 0xf) * 4));
  return;
}

