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

void __regparm3 emit_expr_encoded(expressionS *exp,int encoding,bfd_boolean emit_encoding)

{
  uint nbytes;
  expressionS tmp;
  
  nbytes = encoding_size((uchar)encoding);
  if (encoding != 0xff) {
    if (emit_encoding != 0) {
      frag_append_1_char(encoding);
    }
    if ((encoding & 0x70U) == 0x10) {
      tmp.X_add_symbol = exp->X_add_symbol;
      tmp.X_op_symbol = exp->X_op_symbol;
      tmp.X_add_number = exp->X_add_number;
      tmp._13_3_ = (undefined3)((uint)*(undefined4 *)&exp->field_0xc >> 8);
      tmp._12_1_ = 0x14;
      tmp.X_op_symbol = symbol_temp_new_now();
      emit_expr(&tmp,nbytes);
      return;
    }
    emit_expr(exp,nbytes);
  }
  return;
}



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

void __regparm3 FUN_000212e0(undefined4 *param_1,uint param_2,int param_3)

{
  undefined4 uVar1;
  undefined4 local_2c;
  undefined4 local_28;
  undefined4 local_24;
  undefined1 local_20;
  undefined3 uStack_1f;
  undefined4 uStack_14;
  
  uStack_14 = 0x212f0;
  uVar1 = FUN_00021230();
  if (param_2 != 0xff) {
    if (param_3 != 0) {
      FUN_00026850(param_2);
    }
    if ((param_2 & 0x70) == 0x10) {
      local_2c = *param_1;
      local_28 = param_1[1];
      local_24 = param_1[2];
      _local_20 = CONCAT31((int3)((uint)param_1[3] >> 8),0x14);
      local_28 = FUN_00039a10();
      FUN_00032580(&local_2c,uVar1);
      return;
    }
    FUN_00032580(param_1,uVar1);
  }
  return;
}


PUSH EBP
PUSH EDI
MOV EDI,EAX
MOVZX EAX,DL
PUSH ESI
MOV ESI,EDX
PUSH EBX
CALL 0x00019010
ADD EBX,0x59d10
SUB ESP,0x2c
MOV dword ptr [ESP + 0xc],ECX
CALL 0x00021230
CMP ESI,0xff
JZ 0x00021329
MOV ECX,dword ptr [ESP + 0xc]
MOV EBP,EAX
TEST ECX,ECX
JNZ 0x00021380
AND ESI,0x70
CMP ESI,0x10
JZ 0x00021338
SUB ESP,0x8
PUSH EBP
PUSH EDI
CALL 0x00032580
ADD ESP,0x10
ADD ESP,0x2c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [EDI]
MOV dword ptr [ESP + 0x10],EAX
MOV EAX,dword ptr [EDI + 0x4]
MOV dword ptr [ESP + 0x14],EAX
MOV EAX,dword ptr [EDI + 0x8]
MOV dword ptr [ESP + 0x18],EAX
MOV EAX,dword ptr [EDI + 0xc]
MOV dword ptr [ESP + 0x1c],EAX
MOV byte ptr [ESP + 0x1c],0x14
CALL 0x00039a10
SUB ESP,0x8
MOV dword ptr [ESP + 0x1c],EAX
PUSH EBP
LEA EAX,[ESP + 0x1c]
PUSH EAX
CALL 0x00032580
ADD ESP,0x10
ADD ESP,0x2c
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0xc
PUSH ESI
CALL 0x00026850
ADD ESP,0x10
JMP 0x00021314
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid __regparm3 FUN_000212e0(undefined4 *param_1,uint param_2,int param_3)\n\n{\n  undefined4 uVar1;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  undefined1 local_20;\n  undefined3 uStack_1f;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x212f0;\n  uVar1 = FUN_00021230();\n  if (param_2 != 0xff) {\n    if (param_3 != 0) {\n      FUN_00026850(param_2);\n    }\n    if ((param_2 & 0x70) == 0x10) {\n      local_2c = *param_1;\n      local_28 = param_1[1];\n      local_24 = param_1[2];\n      _local_20 = CONCAT31((int3)((uint)param_1[3] >> 8),0x14);\n      local_28 = FUN_00039a10();\n      FUN_00032580(&local_2c,uVar1);\n      return;\n    }\n    FUN_00032580(param_1,uVar1);\n  }\n  return;\n}\n\n" comment (function_definition "void __regparm3 FUN_000212e0(undefined4 *param_1,uint param_2,int param_3)\n\n{\n  undefined4 uVar1;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  undefined1 local_20;\n  undefined3 uStack_1f;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x212f0;\n  uVar1 = FUN_00021230();\n  if (param_2 != 0xff) {\n    if (param_3 != 0) {\n      FUN_00026850(param_2);\n    }\n    if ((param_2 & 0x70) == 0x10) {\n      local_2c = *param_1;\n      local_28 = param_1[1];\n      local_24 = param_1[2];\n      _local_20 = CONCAT31((int3)((uint)param_1[3] >> 8),0x14);\n      local_28 = FUN_00039a10();\n      FUN_00032580(&local_2c,uVar1);\n      return;\n    }\n    FUN_00032580(param_1,uVar1);\n  }\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_000212e0(undefined4 *param_1,uint param_2,int param_3)" identifier (parameter_list "(undefined4 *param_1,uint param_2,int param_3)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  undefined4 uVar1;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  undefined1 local_20;\n  undefined3 uStack_1f;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x212f0;\n  uVar1 = FUN_00021230();\n  if (param_2 != 0xff) {\n    if (param_3 != 0) {\n      FUN_00026850(param_2);\n    }\n    if ((param_2 & 0x70) == 0x10) {\n      local_2c = *param_1;\n      local_28 = param_1[1];\n      local_24 = param_1[2];\n      _local_20 = CONCAT31((int3)((uint)param_1[3] >> 8),0x14);\n      local_28 = FUN_00039a10();\n      FUN_00032580(&local_2c,uVar1);\n      return;\n    }\n    FUN_00032580(param_1,uVar1);\n  }\n  return;\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (declaration "undefined4 local_24;" type_identifier identifier ;) (declaration "undefined1 local_20;" type_identifier identifier ;) (declaration "undefined3 uStack_1f;" type_identifier identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x212f0;" (assignment_expression "uStack_14 = 0x212f0" identifier = number_literal) ;) (expression_statement "uVar1 = FUN_00021230();" (assignment_expression "uVar1 = FUN_00021230()" identifier = (call_expression "FUN_00021230()" identifier (argument_list "()" ( )))) ;) (if_statement "if (param_2 != 0xff) {\n    if (param_3 != 0) {\n      FUN_00026850(param_2);\n    }\n    if ((param_2 & 0x70) == 0x10) {\n      local_2c = *param_1;\n      local_28 = param_1[1];\n      local_24 = param_1[2];\n      _local_20 = CONCAT31((int3)((uint)param_1[3] >> 8),0x14);\n      local_28 = FUN_00039a10();\n      FUN_00032580(&local_2c,uVar1);\n      return;\n    }\n    FUN_00032580(param_1,uVar1);\n  }" if (parenthesized_expression "(param_2 != 0xff)" ( (binary_expression "param_2 != 0xff" identifier != number_literal) )) (compound_statement "{\n    if (param_3 != 0) {\n      FUN_00026850(param_2);\n    }\n    if ((param_2 & 0x70) == 0x10) {\n      local_2c = *param_1;\n      local_28 = param_1[1];\n      local_24 = param_1[2];\n      _local_20 = CONCAT31((int3)((uint)param_1[3] >> 8),0x14);\n      local_28 = FUN_00039a10();\n      FUN_00032580(&local_2c,uVar1);\n      return;\n    }\n    FUN_00032580(param_1,uVar1);\n  }" { (if_statement "if (param_3 != 0) {\n      FUN_00026850(param_2);\n    }" if (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) (compound_statement "{\n      FUN_00026850(param_2);\n    }" { (expression_statement "FUN_00026850(param_2);" (call_expression "FUN_00026850(param_2)" identifier (argument_list "(param_2)" ( identifier ))) ;) })) (if_statement "if ((param_2 & 0x70) == 0x10) {\n      local_2c = *param_1;\n      local_28 = param_1[1];\n      local_24 = param_1[2];\n      _local_20 = CONCAT31((int3)((uint)param_1[3] >> 8),0x14);\n      local_28 = FUN_00039a10();\n      FUN_00032580(&local_2c,uVar1);\n      return;\n    }" if (parenthesized_expression "((param_2 & 0x70) == 0x10)" ( (binary_expression "(param_2 & 0x70) == 0x10" (parenthesized_expression "(param_2 & 0x70)" ( (binary_expression "param_2 & 0x70" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      local_2c = *param_1;\n      local_28 = param_1[1];\n      local_24 = param_1[2];\n      _local_20 = CONCAT31((int3)((uint)param_1[3] >> 8),0x14);\n      local_28 = FUN_00039a10();\n      FUN_00032580(&local_2c,uVar1);\n      return;\n    }" { (expression_statement "local_2c = *param_1;" (assignment_expression "local_2c = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "local_28 = param_1[1];" (assignment_expression "local_28 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "local_24 = param_1[2];" (assignment_expression "local_24 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "_local_20 = CONCAT31((int3)((uint)param_1[3] >> 8),0x14);" (assignment_expression "_local_20 = CONCAT31((int3)((uint)param_1[3] >> 8),0x14)" identifier = (call_expression "CONCAT31((int3)((uint)param_1[3] >> 8),0x14)" identifier (argument_list "((int3)((uint)param_1[3] >> 8),0x14)" ( (call_expression "(int3)((uint)param_1[3] >> 8)" (parenthesized_expression "(int3)" ( identifier )) (argument_list "((uint)param_1[3] >> 8)" ( (binary_expression "(uint)param_1[3] >> 8" (cast_expression "(uint)param_1[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[3]" identifier [ number_literal ])) >> number_literal) ))) , number_literal )))) ;) (expression_statement "local_28 = FUN_00039a10();" (assignment_expression "local_28 = FUN_00039a10()" identifier = (call_expression "FUN_00039a10()" identifier (argument_list "()" ( )))) ;) (expression_statement "FUN_00032580(&local_2c,uVar1);" (call_expression "FUN_00032580(&local_2c,uVar1)" identifier (argument_list "(&local_2c,uVar1)" ( (pointer_expression "&local_2c" & identifier) , identifier ))) ;) (return_statement "return;" return ;) })) (expression_statement "FUN_00032580(param_1,uVar1);" (call_expression "FUN_00032580(param_1,uVar1)" identifier (argument_list "(param_1,uVar1)" ( identifier , identifier ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid __regparm3 emit_expr_encoded(expressionS *exp,int encoding,bfd_boolean emit_encoding)\n\n{\n  uint nbytes;\n  expressionS tmp;\n  \n  nbytes = encoding_size((uchar)encoding);\n  if (encoding != 0xff) {\n    if (emit_encoding != 0) {\n      frag_append_1_char(encoding);\n    }\n    if ((encoding & 0x70U) == 0x10) {\n      tmp.X_add_symbol = exp->X_add_symbol;\n      tmp.X_op_symbol = exp->X_op_symbol;\n      tmp.X_add_number = exp->X_add_number;\n      tmp._13_3_ = (undefined3)((uint)*(undefined4 *)&exp->field_0xc >> 8);\n      tmp._12_1_ = 0x14;\n      tmp.X_op_symbol = symbol_temp_new_now();\n      emit_expr(&tmp,nbytes);\n      return;\n    }\n    emit_expr(exp,nbytes);\n  }\n  return;\n}\n\n" comment (function_definition "void __regparm3 emit_expr_encoded(expressionS *exp,int encoding,bfd_boolean emit_encoding)\n\n{\n  uint nbytes;\n  expressionS tmp;\n  \n  nbytes = encoding_size((uchar)encoding);\n  if (encoding != 0xff) {\n    if (emit_encoding != 0) {\n      frag_append_1_char(encoding);\n    }\n    if ((encoding & 0x70U) == 0x10) {\n      tmp.X_add_symbol = exp->X_add_symbol;\n      tmp.X_op_symbol = exp->X_op_symbol;\n      tmp.X_add_number = exp->X_add_number;\n      tmp._13_3_ = (undefined3)((uint)*(undefined4 *)&exp->field_0xc >> 8);\n      tmp._12_1_ = 0x14;\n      tmp.X_op_symbol = symbol_temp_new_now();\n      emit_expr(&tmp,nbytes);\n      return;\n    }\n    emit_expr(exp,nbytes);\n  }\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "emit_expr_encoded(expressionS *exp,int encoding,bfd_boolean emit_encoding)" identifier (parameter_list "(expressionS *exp,int encoding,bfd_boolean emit_encoding)" ( (parameter_declaration "expressionS *exp" type_identifier (pointer_declarator "*exp" * identifier)) , (parameter_declaration "int encoding" primitive_type identifier) , (parameter_declaration "bfd_boolean emit_encoding" type_identifier identifier) ))) (compound_statement "{\n  uint nbytes;\n  expressionS tmp;\n  \n  nbytes = encoding_size((uchar)encoding);\n  if (encoding != 0xff) {\n    if (emit_encoding != 0) {\n      frag_append_1_char(encoding);\n    }\n    if ((encoding & 0x70U) == 0x10) {\n      tmp.X_add_symbol = exp->X_add_symbol;\n      tmp.X_op_symbol = exp->X_op_symbol;\n      tmp.X_add_number = exp->X_add_number;\n      tmp._13_3_ = (undefined3)((uint)*(undefined4 *)&exp->field_0xc >> 8);\n      tmp._12_1_ = 0x14;\n      tmp.X_op_symbol = symbol_temp_new_now();\n      emit_expr(&tmp,nbytes);\n      return;\n    }\n    emit_expr(exp,nbytes);\n  }\n  return;\n}" { (declaration "uint nbytes;" type_identifier identifier ;) (declaration "expressionS tmp;" type_identifier identifier ;) (expression_statement "nbytes = encoding_size((uchar)encoding);" (assignment_expression "nbytes = encoding_size((uchar)encoding)" identifier = (call_expression "encoding_size((uchar)encoding)" identifier (argument_list "((uchar)encoding)" ( (cast_expression "(uchar)encoding" ( (type_descriptor "uchar" type_identifier) ) identifier) )))) ;) (if_statement "if (encoding != 0xff) {\n    if (emit_encoding != 0) {\n      frag_append_1_char(encoding);\n    }\n    if ((encoding & 0x70U) == 0x10) {\n      tmp.X_add_symbol = exp->X_add_symbol;\n      tmp.X_op_symbol = exp->X_op_symbol;\n      tmp.X_add_number = exp->X_add_number;\n      tmp._13_3_ = (undefined3)((uint)*(undefined4 *)&exp->field_0xc >> 8);\n      tmp._12_1_ = 0x14;\n      tmp.X_op_symbol = symbol_temp_new_now();\n      emit_expr(&tmp,nbytes);\n      return;\n    }\n    emit_expr(exp,nbytes);\n  }" if (parenthesized_expression "(encoding != 0xff)" ( (binary_expression "encoding != 0xff" identifier != number_literal) )) (compound_statement "{\n    if (emit_encoding != 0) {\n      frag_append_1_char(encoding);\n    }\n    if ((encoding & 0x70U) == 0x10) {\n      tmp.X_add_symbol = exp->X_add_symbol;\n      tmp.X_op_symbol = exp->X_op_symbol;\n      tmp.X_add_number = exp->X_add_number;\n      tmp._13_3_ = (undefined3)((uint)*(undefined4 *)&exp->field_0xc >> 8);\n      tmp._12_1_ = 0x14;\n      tmp.X_op_symbol = symbol_temp_new_now();\n      emit_expr(&tmp,nbytes);\n      return;\n    }\n    emit_expr(exp,nbytes);\n  }" { (if_statement "if (emit_encoding != 0) {\n      frag_append_1_char(encoding);\n    }" if (parenthesized_expression "(emit_encoding != 0)" ( (binary_expression "emit_encoding != 0" identifier != number_literal) )) (compound_statement "{\n      frag_append_1_char(encoding);\n    }" { (expression_statement "frag_append_1_char(encoding);" (call_expression "frag_append_1_char(encoding)" identifier (argument_list "(encoding)" ( identifier ))) ;) })) (if_statement "if ((encoding & 0x70U) == 0x10) {\n      tmp.X_add_symbol = exp->X_add_symbol;\n      tmp.X_op_symbol = exp->X_op_symbol;\n      tmp.X_add_number = exp->X_add_number;\n      tmp._13_3_ = (undefined3)((uint)*(undefined4 *)&exp->field_0xc >> 8);\n      tmp._12_1_ = 0x14;\n      tmp.X_op_symbol = symbol_temp_new_now();\n      emit_expr(&tmp,nbytes);\n      return;\n    }" if (parenthesized_expression "((encoding & 0x70U) == 0x10)" ( (binary_expression "(encoding & 0x70U) == 0x10" (parenthesized_expression "(encoding & 0x70U)" ( (binary_expression "encoding & 0x70U" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      tmp.X_add_symbol = exp->X_add_symbol;\n      tmp.X_op_symbol = exp->X_op_symbol;\n      tmp.X_add_number = exp->X_add_number;\n      tmp._13_3_ = (undefined3)((uint)*(undefined4 *)&exp->field_0xc >> 8);\n      tmp._12_1_ = 0x14;\n      tmp.X_op_symbol = symbol_temp_new_now();\n      emit_expr(&tmp,nbytes);\n      return;\n    }" { (expression_statement "tmp.X_add_symbol = exp->X_add_symbol;" (assignment_expression "tmp.X_add_symbol = exp->X_add_symbol" (field_expression "tmp.X_add_symbol" identifier . field_identifier) = (field_expression "exp->X_add_symbol" identifier -> field_identifier)) ;) (expression_statement "tmp.X_op_symbol = exp->X_op_symbol;" (assignment_expression "tmp.X_op_symbol = exp->X_op_symbol" (field_expression "tmp.X_op_symbol" identifier . field_identifier) = (field_expression "exp->X_op_symbol" identifier -> field_identifier)) ;) (expression_statement "tmp.X_add_number = exp->X_add_number;" (assignment_expression "tmp.X_add_number = exp->X_add_number" (field_expression "tmp.X_add_number" identifier . field_identifier) = (field_expression "exp->X_add_number" identifier -> field_identifier)) ;) (expression_statement "tmp._13_3_ = (undefined3)((uint)*(undefined4 *)&exp->field_0xc >> 8);" (assignment_expression "tmp._13_3_ = (undefined3)((uint)*(undefined4 *)&exp->field_0xc >> 8)" (field_expression "tmp._13_3_" identifier . field_identifier) = (call_expression "(undefined3)((uint)*(undefined4 *)&exp->field_0xc >> 8)" (parenthesized_expression "(undefined3)" ( identifier )) (argument_list "((uint)*(undefined4 *)&exp->field_0xc >> 8)" ( (binary_expression "(uint)*(undefined4 *)&exp->field_0xc >> 8" (binary_expression "(uint)*(undefined4 *)&exp->field_0xc" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(undefined4 *)&exp->field_0xc" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&exp->field_0xc" & (field_expression "exp->field_0xc" identifier -> field_identifier)))) >> number_literal) )))) ;) (expression_statement "tmp._12_1_ = 0x14;" (assignment_expression "tmp._12_1_ = 0x14" (field_expression "tmp._12_1_" identifier . field_identifier) = number_literal) ;) (expression_statement "tmp.X_op_symbol = symbol_temp_new_now();" (assignment_expression "tmp.X_op_symbol = symbol_temp_new_now()" (field_expression "tmp.X_op_symbol" identifier . field_identifier) = (call_expression "symbol_temp_new_now()" identifier (argument_list "()" ( )))) ;) (expression_statement "emit_expr(&tmp,nbytes);" (call_expression "emit_expr(&tmp,nbytes)" identifier (argument_list "(&tmp,nbytes)" ( (pointer_expression "&tmp" & identifier) , identifier ))) ;) (return_statement "return;" return ;) })) (expression_statement "emit_expr(exp,nbytes);" (call_expression "emit_expr(exp,nbytes)" identifier (argument_list "(exp,nbytes)" ( identifier , identifier ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void __regparm3 FUN_000212e0(undefined4 *param_1,uint param_2,int param_3)\n\n{\n  undefined4 uVar1;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  undefined1 local_20;\n  undefined3 uStack_1f;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x212f0;\n  uVar1 = FUN_00021230();\n  if (param_2 != 0xff) {\n    if (param_3 != 0) {\n      FUN_00026850(param_2);\n    }\n    if ((param_2 & 0x70) == 0x10) {\n      local_2c = *param_1;\n      local_28 = param_1[1];\n      local_24 = param_1[2];\n      _local_20 = CONCAT31((int3)((uint)param_1[3] >> 8),0x14);\n      local_28 = FUN_00039a10();\n      FUN_00032580(&local_2c,uVar1);\n      return;\n    }\n    FUN_00032580(param_1,uVar1);\n  }\n  return;\n}\n\n" (function_definition "void __regparm3 FUN_000212e0(undefined4 *param_1,uint param_2,int param_3)\n\n{\n  undefined4 uVar1;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  undefined1 local_20;\n  undefined3 uStack_1f;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x212f0;\n  uVar1 = FUN_00021230();\n  if (param_2 != 0xff) {\n    if (param_3 != 0) {\n      FUN_00026850(param_2);\n    }\n    if ((param_2 & 0x70) == 0x10) {\n      local_2c = *param_1;\n      local_28 = param_1[1];\n      local_24 = param_1[2];\n      _local_20 = CONCAT31((int3)((uint)param_1[3] >> 8),0x14);\n      local_28 = FUN_00039a10();\n      FUN_00032580(&local_2c,uVar1);\n      return;\n    }\n    FUN_00032580(param_1,uVar1);\n  }\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_000212e0(undefined4 *param_1,uint param_2,int param_3)" identifier (parameter_list "(undefined4 *param_1,uint param_2,int param_3)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  undefined4 uVar1;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  undefined1 local_20;\n  undefined3 uStack_1f;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x212f0;\n  uVar1 = FUN_00021230();\n  if (param_2 != 0xff) {\n    if (param_3 != 0) {\n      FUN_00026850(param_2);\n    }\n    if ((param_2 & 0x70) == 0x10) {\n      local_2c = *param_1;\n      local_28 = param_1[1];\n      local_24 = param_1[2];\n      _local_20 = CONCAT31((int3)((uint)param_1[3] >> 8),0x14);\n      local_28 = FUN_00039a10();\n      FUN_00032580(&local_2c,uVar1);\n      return;\n    }\n    FUN_00032580(param_1,uVar1);\n  }\n  return;\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (declaration "undefined4 local_24;" type_identifier identifier ;) (declaration "undefined1 local_20;" type_identifier identifier ;) (declaration "undefined3 uStack_1f;" type_identifier identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x212f0;" (assignment_expression "uStack_14 = 0x212f0" identifier = number_literal) ;) (expression_statement "uVar1 = FUN_00021230();" (assignment_expression "uVar1 = FUN_00021230()" identifier = (call_expression "FUN_00021230()" identifier (argument_list "()" ( )))) ;) (if_statement "if (param_2 != 0xff) {\n    if (param_3 != 0) {\n      FUN_00026850(param_2);\n    }\n    if ((param_2 & 0x70) == 0x10) {\n      local_2c = *param_1;\n      local_28 = param_1[1];\n      local_24 = param_1[2];\n      _local_20 = CONCAT31((int3)((uint)param_1[3] >> 8),0x14);\n      local_28 = FUN_00039a10();\n      FUN_00032580(&local_2c,uVar1);\n      return;\n    }\n    FUN_00032580(param_1,uVar1);\n  }" if (parenthesized_expression "(param_2 != 0xff)" ( (binary_expression "param_2 != 0xff" identifier != number_literal) )) (compound_statement "{\n    if (param_3 != 0) {\n      FUN_00026850(param_2);\n    }\n    if ((param_2 & 0x70) == 0x10) {\n      local_2c = *param_1;\n      local_28 = param_1[1];\n      local_24 = param_1[2];\n      _local_20 = CONCAT31((int3)((uint)param_1[3] >> 8),0x14);\n      local_28 = FUN_00039a10();\n      FUN_00032580(&local_2c,uVar1);\n      return;\n    }\n    FUN_00032580(param_1,uVar1);\n  }" { (if_statement "if (param_3 != 0) {\n      FUN_00026850(param_2);\n    }" if (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) (compound_statement "{\n      FUN_00026850(param_2);\n    }" { (expression_statement "FUN_00026850(param_2);" (call_expression "FUN_00026850(param_2)" identifier (argument_list "(param_2)" ( identifier ))) ;) })) (if_statement "if ((param_2 & 0x70) == 0x10) {\n      local_2c = *param_1;\n      local_28 = param_1[1];\n      local_24 = param_1[2];\n      _local_20 = CONCAT31((int3)((uint)param_1[3] >> 8),0x14);\n      local_28 = FUN_00039a10();\n      FUN_00032580(&local_2c,uVar1);\n      return;\n    }" if (parenthesized_expression "((param_2 & 0x70) == 0x10)" ( (binary_expression "(param_2 & 0x70) == 0x10" (parenthesized_expression "(param_2 & 0x70)" ( (binary_expression "param_2 & 0x70" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      local_2c = *param_1;\n      local_28 = param_1[1];\n      local_24 = param_1[2];\n      _local_20 = CONCAT31((int3)((uint)param_1[3] >> 8),0x14);\n      local_28 = FUN_00039a10();\n      FUN_00032580(&local_2c,uVar1);\n      return;\n    }" { (expression_statement "local_2c = *param_1;" (assignment_expression "local_2c = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "local_28 = param_1[1];" (assignment_expression "local_28 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "local_24 = param_1[2];" (assignment_expression "local_24 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "_local_20 = CONCAT31((int3)((uint)param_1[3] >> 8),0x14);" (assignment_expression "_local_20 = CONCAT31((int3)((uint)param_1[3] >> 8),0x14)" identifier = (call_expression "CONCAT31((int3)((uint)param_1[3] >> 8),0x14)" identifier (argument_list "((int3)((uint)param_1[3] >> 8),0x14)" ( (call_expression "(int3)((uint)param_1[3] >> 8)" (parenthesized_expression "(int3)" ( identifier )) (argument_list "((uint)param_1[3] >> 8)" ( (binary_expression "(uint)param_1[3] >> 8" (cast_expression "(uint)param_1[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[3]" identifier [ number_literal ])) >> number_literal) ))) , number_literal )))) ;) (expression_statement "local_28 = FUN_00039a10();" (assignment_expression "local_28 = FUN_00039a10()" identifier = (call_expression "FUN_00039a10()" identifier (argument_list "()" ( )))) ;) (expression_statement "FUN_00032580(&local_2c,uVar1);" (call_expression "FUN_00032580(&local_2c,uVar1)" identifier (argument_list "(&local_2c,uVar1)" ( (pointer_expression "&local_2c" & identifier) , identifier ))) ;) (return_statement "return;" return ;) })) (expression_statement "FUN_00032580(param_1,uVar1);" (call_expression "FUN_00032580(param_1,uVar1)" identifier (argument_list "(param_1,uVar1)" ( identifier , identifier ))) ;) })) (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) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (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 ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) >> LIT) ))) , LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT ))) ;) (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) })) (return_statement return ;) })))
(function_definition "void __regparm3 FUN_000212e0(undefined4 *param_1,uint param_2,int param_3)\n\n{\n  undefined4 uVar1;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  undefined1 local_20;\n  undefined3 uStack_1f;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x212f0;\n  uVar1 = FUN_00021230();\n  if (param_2 != 0xff) {\n    if (param_3 != 0) {\n      FUN_00026850(param_2);\n    }\n    if ((param_2 & 0x70) == 0x10) {\n      local_2c = *param_1;\n      local_28 = param_1[1];\n      local_24 = param_1[2];\n      _local_20 = CONCAT31((int3)((uint)param_1[3] >> 8),0x14);\n      local_28 = FUN_00039a10();\n      FUN_00032580(&local_2c,uVar1);\n      return;\n    }\n    FUN_00032580(param_1,uVar1);\n  }\n  return;\n}" (primitive_type "void") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_000212e0(undefined4 *param_1,uint param_2,int param_3)" (identifier "FUN_000212e0") (parameter_list "(undefined4 *param_1,uint param_2,int param_3)" (( "(") (parameter_declaration "undefined4 *param_1" (type_identifier "undefined4") (pointer_declarator "*param_1" (* "*") (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  undefined4 uVar1;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  undefined1 local_20;\n  undefined3 uStack_1f;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x212f0;\n  uVar1 = FUN_00021230();\n  if (param_2 != 0xff) {\n    if (param_3 != 0) {\n      FUN_00026850(param_2);\n    }\n    if ((param_2 & 0x70) == 0x10) {\n      local_2c = *param_1;\n      local_28 = param_1[1];\n      local_24 = param_1[2];\n      _local_20 = CONCAT31((int3)((uint)param_1[3] >> 8),0x14);\n      local_28 = FUN_00039a10();\n      FUN_00032580(&local_2c,uVar1);\n      return;\n    }\n    FUN_00032580(param_1,uVar1);\n  }\n  return;\n}" ({ "{") (declaration "undefined4 uVar1;" (type_identifier "undefined4") (identifier "uVar1") (; ";")) (declaration "undefined4 local_2c;" (type_identifier "undefined4") (identifier "local_2c") (; ";")) (declaration "undefined4 local_28;" (type_identifier "undefined4") (identifier "local_28") (; ";")) (declaration "undefined4 local_24;" (type_identifier "undefined4") (identifier "local_24") (; ";")) (declaration "undefined1 local_20;" (type_identifier "undefined1") (identifier "local_20") (; ";")) (declaration "undefined3 uStack_1f;" (type_identifier "undefined3") (identifier "uStack_1f") (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "uStack_14 = 0x212f0;" (assignment_expression "uStack_14 = 0x212f0" (identifier "uStack_14") (= "=") (number_literal "0x212f0")) (; ";")) (expression_statement "uVar1 = FUN_00021230();" (assignment_expression "uVar1 = FUN_00021230()" (identifier "uVar1") (= "=") (call_expression "FUN_00021230()" (identifier "FUN_00021230") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (param_2 != 0xff) {\n    if (param_3 != 0) {\n      FUN_00026850(param_2);\n    }\n    if ((param_2 & 0x70) == 0x10) {\n      local_2c = *param_1;\n      local_28 = param_1[1];\n      local_24 = param_1[2];\n      _local_20 = CONCAT31((int3)((uint)param_1[3] >> 8),0x14);\n      local_28 = FUN_00039a10();\n      FUN_00032580(&local_2c,uVar1);\n      return;\n    }\n    FUN_00032580(param_1,uVar1);\n  }" (if "if") (parenthesized_expression "(param_2 != 0xff)" (( "(") (binary_expression "param_2 != 0xff" (identifier "param_2") (!= "!=") (number_literal "0xff")) () ")")) (compound_statement "{\n    if (param_3 != 0) {\n      FUN_00026850(param_2);\n    }\n    if ((param_2 & 0x70) == 0x10) {\n      local_2c = *param_1;\n      local_28 = param_1[1];\n      local_24 = param_1[2];\n      _local_20 = CONCAT31((int3)((uint)param_1[3] >> 8),0x14);\n      local_28 = FUN_00039a10();\n      FUN_00032580(&local_2c,uVar1);\n      return;\n    }\n    FUN_00032580(param_1,uVar1);\n  }" ({ "{") (if_statement "if (param_3 != 0) {\n      FUN_00026850(param_2);\n    }" (if "if") (parenthesized_expression "(param_3 != 0)" (( "(") (binary_expression "param_3 != 0" (identifier "param_3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      FUN_00026850(param_2);\n    }" ({ "{") (expression_statement "FUN_00026850(param_2);" (call_expression "FUN_00026850(param_2)" (identifier "FUN_00026850") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")"))) (; ";")) (} "}"))) (if_statement "if ((param_2 & 0x70) == 0x10) {\n      local_2c = *param_1;\n      local_28 = param_1[1];\n      local_24 = param_1[2];\n      _local_20 = CONCAT31((int3)((uint)param_1[3] >> 8),0x14);\n      local_28 = FUN_00039a10();\n      FUN_00032580(&local_2c,uVar1);\n      return;\n    }" (if "if") (parenthesized_expression "((param_2 & 0x70) == 0x10)" (( "(") (binary_expression "(param_2 & 0x70) == 0x10" (parenthesized_expression "(param_2 & 0x70)" (( "(") (binary_expression "param_2 & 0x70" (identifier "param_2") (& "&") (number_literal "0x70")) () ")")) (== "==") (number_literal "0x10")) () ")")) (compound_statement "{\n      local_2c = *param_1;\n      local_28 = param_1[1];\n      local_24 = param_1[2];\n      _local_20 = CONCAT31((int3)((uint)param_1[3] >> 8),0x14);\n      local_28 = FUN_00039a10();\n      FUN_00032580(&local_2c,uVar1);\n      return;\n    }" ({ "{") (expression_statement "local_2c = *param_1;" (assignment_expression "local_2c = *param_1" (identifier "local_2c") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "local_28 = param_1[1];" (assignment_expression "local_28 = param_1[1]" (identifier "local_28") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "local_24 = param_1[2];" (assignment_expression "local_24 = param_1[2]" (identifier "local_24") (= "=") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "_local_20 = CONCAT31((int3)((uint)param_1[3] >> 8),0x14);" (assignment_expression "_local_20 = CONCAT31((int3)((uint)param_1[3] >> 8),0x14)" (identifier "_local_20") (= "=") (call_expression "CONCAT31((int3)((uint)param_1[3] >> 8),0x14)" (identifier "CONCAT31") (argument_list "((int3)((uint)param_1[3] >> 8),0x14)" (( "(") (call_expression "(int3)((uint)param_1[3] >> 8)" (parenthesized_expression "(int3)" (( "(") (identifier "int3") () ")")) (argument_list "((uint)param_1[3] >> 8)" (( "(") (binary_expression "(uint)param_1[3] >> 8" (cast_expression "(uint)param_1[3]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]"))) (>> ">>") (number_literal "8")) () ")"))) (, ",") (number_literal "0x14") () ")")))) (; ";")) (expression_statement "local_28 = FUN_00039a10();" (assignment_expression "local_28 = FUN_00039a10()" (identifier "local_28") (= "=") (call_expression "FUN_00039a10()" (identifier "FUN_00039a10") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "FUN_00032580(&local_2c,uVar1);" (call_expression "FUN_00032580(&local_2c,uVar1)" (identifier "FUN_00032580") (argument_list "(&local_2c,uVar1)" (( "(") (pointer_expression "&local_2c" (& "&") (identifier "local_2c")) (, ",") (identifier "uVar1") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "FUN_00032580(param_1,uVar1);" (call_expression "FUN_00032580(param_1,uVar1)" (identifier "FUN_00032580") (argument_list "(param_1,uVar1)" (( "(") (identifier "param_1") (, ",") (identifier "uVar1") () ")"))) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

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

void __regparm3 function_1(type_1 *exp,int var_2,type_2 var_3)

{
  type_3 nbytes;
  type_1 tmp;
  
  nbytes = var_1((type_4)var_2);
  if (var_2 != 0xff) {
    if (var_3 != 0) {
      var_4(var_2);
    }
    if ((var_2 & 0x70U) == 0x10) {
      tmp.X_add_symbol = exp->X_add_symbol;
      tmp.X_op_symbol = exp->X_op_symbol;
      tmp.X_add_number = exp->X_add_number;
      tmp._13_3_ = (undefined3)((type_3)*(type_5 *)&exp->field_0xc >> 8);
      tmp._12_1_ = 0x14;
      tmp.X_op_symbol = var_5();
      var_6(&tmp,nbytes);
      return;
    }
    var_6(exp,nbytes);
  }
  return;
}


(translation_unit (function_definition type: (primitive_type) (ERROR (identifier)) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator 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: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (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)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (number_literal)))) (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (identifier)))) (return_statement))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))))) (return_statement))))

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

void __regparm3 MASKED(undefined4 *param_1,uint param_2,int param_3)

{
  undefined4 uVar1;
  undefined4 local_2c;
  undefined4 local_28;
  undefined4 local_24;
  undefined1 local_20;
  undefined3 uStack_1f;
  undefined4 uStack_14;
  
  uStack_14 = 0x212f0;
  uVar1 = FUN_00021230();
  if (param_2 != 0xff) {
    if (param_3 != 0) {
      FUN_00026850(param_2);
    }
    if ((param_2 & 0x70) == 0x10) {
      local_2c = *param_1;
      local_28 = param_1[1];
      local_24 = param_1[2];
      _local_20 = CONCAT31((int3)((uint)param_1[3] >> 8),0x14);
      local_28 = FUN_00039a10();
      FUN_00032580(&local_2c,uVar1);
      return;
    }
    FUN_00032580(param_1,uVar1);
  }
  return;
}

