
fixS * fix_new_exp(fragS *frag,int where,int size,expressionS *exp,int pcrel,
                  bfd_reloc_code_real r_type)

{
  fixS *pfVar1;
  char *format;
  symbolS *psVar2;
  symbolS *sub_symbol;
  offsetT offset;
  
  switch(exp->field_0x18) {
  default:
    psVar2 = make_expr_symbol(exp);
    offset = 0;
    sub_symbol = (symbolS *)0x0;
    break;
  case 1:
    offset = 0;
    sub_symbol = (symbolS *)0x0;
    psVar2 = (symbolS *)0x0;
    break;
  case 2:
    sub_symbol = (symbolS *)0x0;
    psVar2 = (symbolS *)0x0;
    goto LAB_0012ee45;
  case 3:
    sub_symbol = (symbolS *)0x0;
    goto LAB_0012ee84;
  case 4:
    psVar2 = exp->X_add_symbol;
    offset = exp->X_add_number;
    sub_symbol = (symbolS *)0x0;
    r_type = BFD_RELOC_RVA;
    break;
  case 5:
    format = (char *)dcgettext(0,"register value used as expression",5);
    as_bad(format);
    offset = 0;
    sub_symbol = (symbolS *)0x0;
    psVar2 = (symbolS *)0x0;
    break;
  case 7:
    sub_symbol = exp->X_add_symbol;
    offset = exp->X_add_number;
    psVar2 = (symbolS *)0x0;
    break;
  case 0x13:
    psVar2 = make_expr_symbol(exp);
    exp->field_0x18 = 3;
    sub_symbol = (symbolS *)0x0;
    exp->X_op_symbol = (symbolS *)0x0;
    exp->X_add_symbol = psVar2;
    exp->X_add_number = 0;
    goto LAB_0012ee84;
  case 0x14:
    sub_symbol = exp->X_op_symbol;
LAB_0012ee84:
    psVar2 = exp->X_add_symbol;
LAB_0012ee45:
    offset = exp->X_add_number;
  }
  pfVar1 = fix_new_internal(frag,where,size,psVar2,sub_symbol,offset,pcrel,r_type,0);
  return pfVar1;
}



void FUN_0012ee00(undefined8 param_1,undefined4 param_2,undefined4 param_3,undefined8 *param_4,
                 undefined4 param_5,undefined4 param_6)

{
  undefined8 uVar1;
  undefined8 uVar2;
  undefined8 uVar3;
  
  switch(*(undefined1 *)(param_4 + 3)) {
  default:
    uVar3 = FUN_00113ee0(param_4);
    uVar1 = 0;
    uVar2 = 0;
    break;
  case 1:
    uVar1 = 0;
    uVar2 = 0;
    uVar3 = 0;
    break;
  case 2:
    uVar2 = 0;
    uVar3 = 0;
    goto LAB_0012ee45;
  case 3:
    uVar2 = 0;
    goto LAB_0012ee84;
  case 4:
    uVar3 = *param_4;
    uVar1 = param_4[2];
    uVar2 = 0;
    param_6 = 0x3e;
    break;
  case 5:
    uVar2 = dcgettext(0,"register value used as expression",5);
    FUN_0011da70(uVar2);
    uVar1 = 0;
    uVar2 = 0;
    uVar3 = 0;
    break;
  case 7:
    uVar2 = *param_4;
    uVar1 = param_4[2];
    uVar3 = 0;
    break;
  case 0x13:
    uVar1 = FUN_00113ee0(param_4);
    *(undefined1 *)(param_4 + 3) = 3;
    uVar2 = 0;
    param_4[1] = 0;
    *param_4 = uVar1;
    param_4[2] = 0;
    goto LAB_0012ee84;
  case 0x14:
    uVar2 = param_4[1];
LAB_0012ee84:
    uVar3 = *param_4;
LAB_0012ee45:
    uVar1 = param_4[2];
  }
  FUN_0012d120(param_1,param_2,param_3,uVar3,uVar2,uVar1,param_5,param_6,0);
  return;
}


PUSH R15
MOV R15D,R8D
PUSH R14
MOV R14D,EDX
PUSH R13
MOV R13D,ESI
PUSH R12
MOV R12,RDI
PUSH RBP
MOV EBP,R9D
PUSH RBX
MOV RBX,RCX
SUB RSP,0x8
CMP byte ptr [RCX + 0x18],0x14
JA 0x0012ef10
MOVZX EAX,byte ptr [RCX + 0x18]
LEA RDX,[0x150078]
MOVSXD RAX,dword ptr [RDX + RAX*0x4]
ADD RAX,RDX
JMP RAX
XOR R8D,R8D
XOR ECX,ECX
MOV R9,qword ptr [RBX + 0x10]
SUB RSP,0x8
MOV EDX,R14D
MOV ESI,R13D
MOV RDI,R12
PUSH 0x0
PUSH RBP
PUSH R15
CALL 0x0012d120
ADD RSP,0x28
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
XOR R9D,R9D
XOR R8D,R8D
XOR ECX,ECX
JMP 0x0012ee49
MOV R8,qword ptr [RCX + 0x8]
MOV RCX,qword ptr [RBX]
JMP 0x0012ee45
MOV R8,qword ptr [RCX]
MOV R9,qword ptr [RCX + 0x10]
XOR ECX,ECX
JMP 0x0012ee49
MOV RDI,RCX
CALL 0x00113ee0
MOV byte ptr [RBX + 0x18],0x3
XOR R8D,R8D
MOV qword ptr [RBX + 0x8],0x0
MOV qword ptr [RBX],RAX
MOV qword ptr [RBX + 0x10],0x0
JMP 0x0012ee84
MOV RCX,qword ptr [RCX]
MOV R9,qword ptr [RBX + 0x10]
XOR R8D,R8D
MOV EBP,0x3e
JMP 0x0012ee49
MOV EDX,0x5
LEA RSI,[0x14ded0]
XOR EDI,EDI
CALL 0x001081c0
MOV RDI,RAX
XOR EAX,EAX
CALL 0x0011da70
XOR R9D,R9D
XOR R8D,R8D
XOR ECX,ECX
JMP 0x0012ee49
MOV RDI,RBX
CALL 0x00113ee0
XOR R9D,R9D
XOR R8D,R8D
MOV RCX,RAX
JMP 0x0012ee49
XOR R8D,R8D
JMP 0x0012ee84
(translation_unit "void FUN_0012ee00(undefined8 param_1,undefined4 param_2,undefined4 param_3,undefined8 *param_4,\n                 undefined4 param_5,undefined4 param_6)\n\n{\n  undefined8 uVar1;\n  undefined8 uVar2;\n  undefined8 uVar3;\n  \n  switch(*(undefined1 *)(param_4 + 3)) {\n  default:\n    uVar3 = FUN_00113ee0(param_4);\n    uVar1 = 0;\n    uVar2 = 0;\n    break;\n  case 1:\n    uVar1 = 0;\n    uVar2 = 0;\n    uVar3 = 0;\n    break;\n  case 2:\n    uVar2 = 0;\n    uVar3 = 0;\n    goto LAB_0012ee45;\n  case 3:\n    uVar2 = 0;\n    goto LAB_0012ee84;\n  case 4:\n    uVar3 = *param_4;\n    uVar1 = param_4[2];\n    uVar2 = 0;\n    param_6 = 0x3e;\n    break;\n  case 5:\n    uVar2 = dcgettext(0,"register value used as expression",5);\n    FUN_0011da70(uVar2);\n    uVar1 = 0;\n    uVar2 = 0;\n    uVar3 = 0;\n    break;\n  case 7:\n    uVar2 = *param_4;\n    uVar1 = param_4[2];\n    uVar3 = 0;\n    break;\n  case 0x13:\n    uVar1 = FUN_00113ee0(param_4);\n    *(undefined1 *)(param_4 + 3) = 3;\n    uVar2 = 0;\n    param_4[1] = 0;\n    *param_4 = uVar1;\n    param_4[2] = 0;\n    goto LAB_0012ee84;\n  case 0x14:\n    uVar2 = param_4[1];\nLAB_0012ee84:\n    uVar3 = *param_4;\nLAB_0012ee45:\n    uVar1 = param_4[2];\n  }\n  FUN_0012d120(param_1,param_2,param_3,uVar3,uVar2,uVar1,param_5,param_6,0);\n  return;\n}\n\n" (function_definition "void FUN_0012ee00(undefined8 param_1,undefined4 param_2,undefined4 param_3,undefined8 *param_4,\n                 undefined4 param_5,undefined4 param_6)\n\n{\n  undefined8 uVar1;\n  undefined8 uVar2;\n  undefined8 uVar3;\n  \n  switch(*(undefined1 *)(param_4 + 3)) {\n  default:\n    uVar3 = FUN_00113ee0(param_4);\n    uVar1 = 0;\n    uVar2 = 0;\n    break;\n  case 1:\n    uVar1 = 0;\n    uVar2 = 0;\n    uVar3 = 0;\n    break;\n  case 2:\n    uVar2 = 0;\n    uVar3 = 0;\n    goto LAB_0012ee45;\n  case 3:\n    uVar2 = 0;\n    goto LAB_0012ee84;\n  case 4:\n    uVar3 = *param_4;\n    uVar1 = param_4[2];\n    uVar2 = 0;\n    param_6 = 0x3e;\n    break;\n  case 5:\n    uVar2 = dcgettext(0,"register value used as expression",5);\n    FUN_0011da70(uVar2);\n    uVar1 = 0;\n    uVar2 = 0;\n    uVar3 = 0;\n    break;\n  case 7:\n    uVar2 = *param_4;\n    uVar1 = param_4[2];\n    uVar3 = 0;\n    break;\n  case 0x13:\n    uVar1 = FUN_00113ee0(param_4);\n    *(undefined1 *)(param_4 + 3) = 3;\n    uVar2 = 0;\n    param_4[1] = 0;\n    *param_4 = uVar1;\n    param_4[2] = 0;\n    goto LAB_0012ee84;\n  case 0x14:\n    uVar2 = param_4[1];\nLAB_0012ee84:\n    uVar3 = *param_4;\nLAB_0012ee45:\n    uVar1 = param_4[2];\n  }\n  FUN_0012d120(param_1,param_2,param_3,uVar3,uVar2,uVar1,param_5,param_6,0);\n  return;\n}" primitive_type (function_declarator "FUN_0012ee00(undefined8 param_1,undefined4 param_2,undefined4 param_3,undefined8 *param_4,\n                 undefined4 param_5,undefined4 param_6)" identifier (parameter_list "(undefined8 param_1,undefined4 param_2,undefined4 param_3,undefined8 *param_4,\n                 undefined4 param_5,undefined4 param_6)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "undefined8 *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "undefined4 param_5" type_identifier identifier) , (parameter_declaration "undefined4 param_6" type_identifier identifier) ))) (compound_statement "{\n  undefined8 uVar1;\n  undefined8 uVar2;\n  undefined8 uVar3;\n  \n  switch(*(undefined1 *)(param_4 + 3)) {\n  default:\n    uVar3 = FUN_00113ee0(param_4);\n    uVar1 = 0;\n    uVar2 = 0;\n    break;\n  case 1:\n    uVar1 = 0;\n    uVar2 = 0;\n    uVar3 = 0;\n    break;\n  case 2:\n    uVar2 = 0;\n    uVar3 = 0;\n    goto LAB_0012ee45;\n  case 3:\n    uVar2 = 0;\n    goto LAB_0012ee84;\n  case 4:\n    uVar3 = *param_4;\n    uVar1 = param_4[2];\n    uVar2 = 0;\n    param_6 = 0x3e;\n    break;\n  case 5:\n    uVar2 = dcgettext(0,"register value used as expression",5);\n    FUN_0011da70(uVar2);\n    uVar1 = 0;\n    uVar2 = 0;\n    uVar3 = 0;\n    break;\n  case 7:\n    uVar2 = *param_4;\n    uVar1 = param_4[2];\n    uVar3 = 0;\n    break;\n  case 0x13:\n    uVar1 = FUN_00113ee0(param_4);\n    *(undefined1 *)(param_4 + 3) = 3;\n    uVar2 = 0;\n    param_4[1] = 0;\n    *param_4 = uVar1;\n    param_4[2] = 0;\n    goto LAB_0012ee84;\n  case 0x14:\n    uVar2 = param_4[1];\nLAB_0012ee84:\n    uVar3 = *param_4;\nLAB_0012ee45:\n    uVar1 = param_4[2];\n  }\n  FUN_0012d120(param_1,param_2,param_3,uVar3,uVar2,uVar1,param_5,param_6,0);\n  return;\n}" { (declaration "undefined8 uVar1;" type_identifier identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (switch_statement "switch(*(undefined1 *)(param_4 + 3)) {\n  default:\n    uVar3 = FUN_00113ee0(param_4);\n    uVar1 = 0;\n    uVar2 = 0;\n    break;\n  case 1:\n    uVar1 = 0;\n    uVar2 = 0;\n    uVar3 = 0;\n    break;\n  case 2:\n    uVar2 = 0;\n    uVar3 = 0;\n    goto LAB_0012ee45;\n  case 3:\n    uVar2 = 0;\n    goto LAB_0012ee84;\n  case 4:\n    uVar3 = *param_4;\n    uVar1 = param_4[2];\n    uVar2 = 0;\n    param_6 = 0x3e;\n    break;\n  case 5:\n    uVar2 = dcgettext(0,"register value used as expression",5);\n    FUN_0011da70(uVar2);\n    uVar1 = 0;\n    uVar2 = 0;\n    uVar3 = 0;\n    break;\n  case 7:\n    uVar2 = *param_4;\n    uVar1 = param_4[2];\n    uVar3 = 0;\n    break;\n  case 0x13:\n    uVar1 = FUN_00113ee0(param_4);\n    *(undefined1 *)(param_4 + 3) = 3;\n    uVar2 = 0;\n    param_4[1] = 0;\n    *param_4 = uVar1;\n    param_4[2] = 0;\n    goto LAB_0012ee84;\n  case 0x14:\n    uVar2 = param_4[1];\nLAB_0012ee84:\n    uVar3 = *param_4;\nLAB_0012ee45:\n    uVar1 = param_4[2];\n  }" switch (parenthesized_expression "(*(undefined1 *)(param_4 + 3))" ( (pointer_expression "*(undefined1 *)(param_4 + 3)" * (cast_expression "(undefined1 *)(param_4 + 3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 3)" ( (binary_expression "param_4 + 3" identifier + number_literal) )))) )) (compound_statement "{\n  default:\n    uVar3 = FUN_00113ee0(param_4);\n    uVar1 = 0;\n    uVar2 = 0;\n    break;\n  case 1:\n    uVar1 = 0;\n    uVar2 = 0;\n    uVar3 = 0;\n    break;\n  case 2:\n    uVar2 = 0;\n    uVar3 = 0;\n    goto LAB_0012ee45;\n  case 3:\n    uVar2 = 0;\n    goto LAB_0012ee84;\n  case 4:\n    uVar3 = *param_4;\n    uVar1 = param_4[2];\n    uVar2 = 0;\n    param_6 = 0x3e;\n    break;\n  case 5:\n    uVar2 = dcgettext(0,"register value used as expression",5);\n    FUN_0011da70(uVar2);\n    uVar1 = 0;\n    uVar2 = 0;\n    uVar3 = 0;\n    break;\n  case 7:\n    uVar2 = *param_4;\n    uVar1 = param_4[2];\n    uVar3 = 0;\n    break;\n  case 0x13:\n    uVar1 = FUN_00113ee0(param_4);\n    *(undefined1 *)(param_4 + 3) = 3;\n    uVar2 = 0;\n    param_4[1] = 0;\n    *param_4 = uVar1;\n    param_4[2] = 0;\n    goto LAB_0012ee84;\n  case 0x14:\n    uVar2 = param_4[1];\nLAB_0012ee84:\n    uVar3 = *param_4;\nLAB_0012ee45:\n    uVar1 = param_4[2];\n  }" { (case_statement "default:\n    uVar3 = FUN_00113ee0(param_4);\n    uVar1 = 0;\n    uVar2 = 0;\n    break;" default : (expression_statement "uVar3 = FUN_00113ee0(param_4);" (assignment_expression "uVar3 = FUN_00113ee0(param_4)" identifier = (call_expression "FUN_00113ee0(param_4)" identifier (argument_list "(param_4)" ( identifier )))) ;) (expression_statement "uVar1 = 0;" (assignment_expression "uVar1 = 0" identifier = number_literal) ;) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (break_statement "break;" break ;)) (case_statement "case 1:\n    uVar1 = 0;\n    uVar2 = 0;\n    uVar3 = 0;\n    break;" case number_literal : (expression_statement "uVar1 = 0;" (assignment_expression "uVar1 = 0" identifier = number_literal) ;) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (break_statement "break;" break ;)) (case_statement "case 2:\n    uVar2 = 0;\n    uVar3 = 0;\n    goto LAB_0012ee45;" case number_literal : (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0012ee45;" goto statement_identifier ;)) (case_statement "case 3:\n    uVar2 = 0;\n    goto LAB_0012ee84;" case number_literal : (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0012ee84;" goto statement_identifier ;)) (case_statement "case 4:\n    uVar3 = *param_4;\n    uVar1 = param_4[2];\n    uVar2 = 0;\n    param_6 = 0x3e;\n    break;" case number_literal : (expression_statement "uVar3 = *param_4;" (assignment_expression "uVar3 = *param_4" identifier = (pointer_expression "*param_4" * identifier)) ;) (expression_statement "uVar1 = param_4[2];" (assignment_expression "uVar1 = param_4[2]" identifier = (subscript_expression "param_4[2]" identifier [ number_literal ])) ;) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (expression_statement "param_6 = 0x3e;" (assignment_expression "param_6 = 0x3e" identifier = number_literal) ;) (break_statement "break;" break ;)) (case_statement "case 5:\n    uVar2 = dcgettext(0,"register value used as expression",5);\n    FUN_0011da70(uVar2);\n    uVar1 = 0;\n    uVar2 = 0;\n    uVar3 = 0;\n    break;" case number_literal : (expression_statement "uVar2 = dcgettext(0,"register value used as expression",5);" (assignment_expression "uVar2 = dcgettext(0,"register value used as expression",5)" identifier = (call_expression "dcgettext(0,"register value used as expression",5)" identifier (argument_list "(0,"register value used as expression",5)" ( number_literal , (string_literal ""register value used as expression"" " string_content ") , number_literal )))) ;) (expression_statement "FUN_0011da70(uVar2);" (call_expression "FUN_0011da70(uVar2)" identifier (argument_list "(uVar2)" ( identifier ))) ;) (expression_statement "uVar1 = 0;" (assignment_expression "uVar1 = 0" identifier = number_literal) ;) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (break_statement "break;" break ;)) (case_statement "case 7:\n    uVar2 = *param_4;\n    uVar1 = param_4[2];\n    uVar3 = 0;\n    break;" case number_literal : (expression_statement "uVar2 = *param_4;" (assignment_expression "uVar2 = *param_4" identifier = (pointer_expression "*param_4" * identifier)) ;) (expression_statement "uVar1 = param_4[2];" (assignment_expression "uVar1 = param_4[2]" identifier = (subscript_expression "param_4[2]" identifier [ number_literal ])) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (break_statement "break;" break ;)) (case_statement "case 0x13:\n    uVar1 = FUN_00113ee0(param_4);\n    *(undefined1 *)(param_4 + 3) = 3;\n    uVar2 = 0;\n    param_4[1] = 0;\n    *param_4 = uVar1;\n    param_4[2] = 0;\n    goto LAB_0012ee84;" case number_literal : (expression_statement "uVar1 = FUN_00113ee0(param_4);" (assignment_expression "uVar1 = FUN_00113ee0(param_4)" identifier = (call_expression "FUN_00113ee0(param_4)" identifier (argument_list "(param_4)" ( identifier )))) ;) (expression_statement "*(undefined1 *)(param_4 + 3) = 3;" (assignment_expression "*(undefined1 *)(param_4 + 3) = 3" (pointer_expression "*(undefined1 *)(param_4 + 3)" * (cast_expression "(undefined1 *)(param_4 + 3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 3)" ( (binary_expression "param_4 + 3" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (expression_statement "param_4[1] = 0;" (assignment_expression "param_4[1] = 0" (subscript_expression "param_4[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*param_4 = uVar1;" (assignment_expression "*param_4 = uVar1" (pointer_expression "*param_4" * identifier) = identifier) ;) (expression_statement "param_4[2] = 0;" (assignment_expression "param_4[2] = 0" (subscript_expression "param_4[2]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto LAB_0012ee84;" goto statement_identifier ;)) (case_statement "case 0x14:\n    uVar2 = param_4[1];\nLAB_0012ee84:\n    uVar3 = *param_4;\nLAB_0012ee45:\n    uVar1 = param_4[2];" case number_literal : (expression_statement "uVar2 = param_4[1];" (assignment_expression "uVar2 = param_4[1]" identifier = (subscript_expression "param_4[1]" identifier [ number_literal ])) ;) (labeled_statement "LAB_0012ee84:\n    uVar3 = *param_4;" statement_identifier : (expression_statement "uVar3 = *param_4;" (assignment_expression "uVar3 = *param_4" identifier = (pointer_expression "*param_4" * identifier)) ;)) (labeled_statement "LAB_0012ee45:\n    uVar1 = param_4[2];" statement_identifier : (expression_statement "uVar1 = param_4[2];" (assignment_expression "uVar1 = param_4[2]" identifier = (subscript_expression "param_4[2]" identifier [ number_literal ])) ;))) })) (expression_statement "FUN_0012d120(param_1,param_2,param_3,uVar3,uVar2,uVar1,param_5,param_6,0);" (call_expression "FUN_0012d120(param_1,param_2,param_3,uVar3,uVar2,uVar1,param_5,param_6,0)" identifier (argument_list "(param_1,param_2,param_3,uVar3,uVar2,uVar1,param_5,param_6,0)" ( identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , number_literal ))) ;) (return_statement "return;" return ;) })))
(translation_unit "fixS * fix_new_exp(fragS *frag,int where,int size,expressionS *exp,int pcrel,\n                  bfd_reloc_code_real r_type)\n\n{\n  fixS *pfVar1;\n  char *format;\n  symbolS *psVar2;\n  symbolS *sub_symbol;\n  offsetT offset;\n  \n  switch(exp->field_0x18) {\n  default:\n    psVar2 = make_expr_symbol(exp);\n    offset = 0;\n    sub_symbol = (symbolS *)0x0;\n    break;\n  case 1:\n    offset = 0;\n    sub_symbol = (symbolS *)0x0;\n    psVar2 = (symbolS *)0x0;\n    break;\n  case 2:\n    sub_symbol = (symbolS *)0x0;\n    psVar2 = (symbolS *)0x0;\n    goto LAB_0012ee45;\n  case 3:\n    sub_symbol = (symbolS *)0x0;\n    goto LAB_0012ee84;\n  case 4:\n    psVar2 = exp->X_add_symbol;\n    offset = exp->X_add_number;\n    sub_symbol = (symbolS *)0x0;\n    r_type = BFD_RELOC_RVA;\n    break;\n  case 5:\n    format = (char *)dcgettext(0,"register value used as expression",5);\n    as_bad(format);\n    offset = 0;\n    sub_symbol = (symbolS *)0x0;\n    psVar2 = (symbolS *)0x0;\n    break;\n  case 7:\n    sub_symbol = exp->X_add_symbol;\n    offset = exp->X_add_number;\n    psVar2 = (symbolS *)0x0;\n    break;\n  case 0x13:\n    psVar2 = make_expr_symbol(exp);\n    exp->field_0x18 = 3;\n    sub_symbol = (symbolS *)0x0;\n    exp->X_op_symbol = (symbolS *)0x0;\n    exp->X_add_symbol = psVar2;\n    exp->X_add_number = 0;\n    goto LAB_0012ee84;\n  case 0x14:\n    sub_symbol = exp->X_op_symbol;\nLAB_0012ee84:\n    psVar2 = exp->X_add_symbol;\nLAB_0012ee45:\n    offset = exp->X_add_number;\n  }\n  pfVar1 = fix_new_internal(frag,where,size,psVar2,sub_symbol,offset,pcrel,r_type,0);\n  return pfVar1;\n}\n\n" (function_definition "fixS * fix_new_exp(fragS *frag,int where,int size,expressionS *exp,int pcrel,\n                  bfd_reloc_code_real r_type)\n\n{\n  fixS *pfVar1;\n  char *format;\n  symbolS *psVar2;\n  symbolS *sub_symbol;\n  offsetT offset;\n  \n  switch(exp->field_0x18) {\n  default:\n    psVar2 = make_expr_symbol(exp);\n    offset = 0;\n    sub_symbol = (symbolS *)0x0;\n    break;\n  case 1:\n    offset = 0;\n    sub_symbol = (symbolS *)0x0;\n    psVar2 = (symbolS *)0x0;\n    break;\n  case 2:\n    sub_symbol = (symbolS *)0x0;\n    psVar2 = (symbolS *)0x0;\n    goto LAB_0012ee45;\n  case 3:\n    sub_symbol = (symbolS *)0x0;\n    goto LAB_0012ee84;\n  case 4:\n    psVar2 = exp->X_add_symbol;\n    offset = exp->X_add_number;\n    sub_symbol = (symbolS *)0x0;\n    r_type = BFD_RELOC_RVA;\n    break;\n  case 5:\n    format = (char *)dcgettext(0,"register value used as expression",5);\n    as_bad(format);\n    offset = 0;\n    sub_symbol = (symbolS *)0x0;\n    psVar2 = (symbolS *)0x0;\n    break;\n  case 7:\n    sub_symbol = exp->X_add_symbol;\n    offset = exp->X_add_number;\n    psVar2 = (symbolS *)0x0;\n    break;\n  case 0x13:\n    psVar2 = make_expr_symbol(exp);\n    exp->field_0x18 = 3;\n    sub_symbol = (symbolS *)0x0;\n    exp->X_op_symbol = (symbolS *)0x0;\n    exp->X_add_symbol = psVar2;\n    exp->X_add_number = 0;\n    goto LAB_0012ee84;\n  case 0x14:\n    sub_symbol = exp->X_op_symbol;\nLAB_0012ee84:\n    psVar2 = exp->X_add_symbol;\nLAB_0012ee45:\n    offset = exp->X_add_number;\n  }\n  pfVar1 = fix_new_internal(frag,where,size,psVar2,sub_symbol,offset,pcrel,r_type,0);\n  return pfVar1;\n}" type_identifier (pointer_declarator "* fix_new_exp(fragS *frag,int where,int size,expressionS *exp,int pcrel,\n                  bfd_reloc_code_real r_type)" * (function_declarator "fix_new_exp(fragS *frag,int where,int size,expressionS *exp,int pcrel,\n                  bfd_reloc_code_real r_type)" identifier (parameter_list "(fragS *frag,int where,int size,expressionS *exp,int pcrel,\n                  bfd_reloc_code_real r_type)" ( (parameter_declaration "fragS *frag" type_identifier (pointer_declarator "*frag" * identifier)) , (parameter_declaration "int where" primitive_type identifier) , (parameter_declaration "int size" primitive_type identifier) , (parameter_declaration "expressionS *exp" type_identifier (pointer_declarator "*exp" * identifier)) , (parameter_declaration "int pcrel" primitive_type identifier) , (parameter_declaration "bfd_reloc_code_real r_type" type_identifier identifier) )))) (compound_statement "{\n  fixS *pfVar1;\n  char *format;\n  symbolS *psVar2;\n  symbolS *sub_symbol;\n  offsetT offset;\n  \n  switch(exp->field_0x18) {\n  default:\n    psVar2 = make_expr_symbol(exp);\n    offset = 0;\n    sub_symbol = (symbolS *)0x0;\n    break;\n  case 1:\n    offset = 0;\n    sub_symbol = (symbolS *)0x0;\n    psVar2 = (symbolS *)0x0;\n    break;\n  case 2:\n    sub_symbol = (symbolS *)0x0;\n    psVar2 = (symbolS *)0x0;\n    goto LAB_0012ee45;\n  case 3:\n    sub_symbol = (symbolS *)0x0;\n    goto LAB_0012ee84;\n  case 4:\n    psVar2 = exp->X_add_symbol;\n    offset = exp->X_add_number;\n    sub_symbol = (symbolS *)0x0;\n    r_type = BFD_RELOC_RVA;\n    break;\n  case 5:\n    format = (char *)dcgettext(0,"register value used as expression",5);\n    as_bad(format);\n    offset = 0;\n    sub_symbol = (symbolS *)0x0;\n    psVar2 = (symbolS *)0x0;\n    break;\n  case 7:\n    sub_symbol = exp->X_add_symbol;\n    offset = exp->X_add_number;\n    psVar2 = (symbolS *)0x0;\n    break;\n  case 0x13:\n    psVar2 = make_expr_symbol(exp);\n    exp->field_0x18 = 3;\n    sub_symbol = (symbolS *)0x0;\n    exp->X_op_symbol = (symbolS *)0x0;\n    exp->X_add_symbol = psVar2;\n    exp->X_add_number = 0;\n    goto LAB_0012ee84;\n  case 0x14:\n    sub_symbol = exp->X_op_symbol;\nLAB_0012ee84:\n    psVar2 = exp->X_add_symbol;\nLAB_0012ee45:\n    offset = exp->X_add_number;\n  }\n  pfVar1 = fix_new_internal(frag,where,size,psVar2,sub_symbol,offset,pcrel,r_type,0);\n  return pfVar1;\n}" { (declaration "fixS *pfVar1;" type_identifier (pointer_declarator "*pfVar1" * identifier) ;) (declaration "char *format;" primitive_type (pointer_declarator "*format" * identifier) ;) (declaration "symbolS *psVar2;" type_identifier (pointer_declarator "*psVar2" * identifier) ;) (declaration "symbolS *sub_symbol;" type_identifier (pointer_declarator "*sub_symbol" * identifier) ;) (declaration "offsetT offset;" type_identifier identifier ;) (switch_statement "switch(exp->field_0x18) {\n  default:\n    psVar2 = make_expr_symbol(exp);\n    offset = 0;\n    sub_symbol = (symbolS *)0x0;\n    break;\n  case 1:\n    offset = 0;\n    sub_symbol = (symbolS *)0x0;\n    psVar2 = (symbolS *)0x0;\n    break;\n  case 2:\n    sub_symbol = (symbolS *)0x0;\n    psVar2 = (symbolS *)0x0;\n    goto LAB_0012ee45;\n  case 3:\n    sub_symbol = (symbolS *)0x0;\n    goto LAB_0012ee84;\n  case 4:\n    psVar2 = exp->X_add_symbol;\n    offset = exp->X_add_number;\n    sub_symbol = (symbolS *)0x0;\n    r_type = BFD_RELOC_RVA;\n    break;\n  case 5:\n    format = (char *)dcgettext(0,"register value used as expression",5);\n    as_bad(format);\n    offset = 0;\n    sub_symbol = (symbolS *)0x0;\n    psVar2 = (symbolS *)0x0;\n    break;\n  case 7:\n    sub_symbol = exp->X_add_symbol;\n    offset = exp->X_add_number;\n    psVar2 = (symbolS *)0x0;\n    break;\n  case 0x13:\n    psVar2 = make_expr_symbol(exp);\n    exp->field_0x18 = 3;\n    sub_symbol = (symbolS *)0x0;\n    exp->X_op_symbol = (symbolS *)0x0;\n    exp->X_add_symbol = psVar2;\n    exp->X_add_number = 0;\n    goto LAB_0012ee84;\n  case 0x14:\n    sub_symbol = exp->X_op_symbol;\nLAB_0012ee84:\n    psVar2 = exp->X_add_symbol;\nLAB_0012ee45:\n    offset = exp->X_add_number;\n  }" switch (parenthesized_expression "(exp->field_0x18)" ( (field_expression "exp->field_0x18" identifier -> field_identifier) )) (compound_statement "{\n  default:\n    psVar2 = make_expr_symbol(exp);\n    offset = 0;\n    sub_symbol = (symbolS *)0x0;\n    break;\n  case 1:\n    offset = 0;\n    sub_symbol = (symbolS *)0x0;\n    psVar2 = (symbolS *)0x0;\n    break;\n  case 2:\n    sub_symbol = (symbolS *)0x0;\n    psVar2 = (symbolS *)0x0;\n    goto LAB_0012ee45;\n  case 3:\n    sub_symbol = (symbolS *)0x0;\n    goto LAB_0012ee84;\n  case 4:\n    psVar2 = exp->X_add_symbol;\n    offset = exp->X_add_number;\n    sub_symbol = (symbolS *)0x0;\n    r_type = BFD_RELOC_RVA;\n    break;\n  case 5:\n    format = (char *)dcgettext(0,"register value used as expression",5);\n    as_bad(format);\n    offset = 0;\n    sub_symbol = (symbolS *)0x0;\n    psVar2 = (symbolS *)0x0;\n    break;\n  case 7:\n    sub_symbol = exp->X_add_symbol;\n    offset = exp->X_add_number;\n    psVar2 = (symbolS *)0x0;\n    break;\n  case 0x13:\n    psVar2 = make_expr_symbol(exp);\n    exp->field_0x18 = 3;\n    sub_symbol = (symbolS *)0x0;\n    exp->X_op_symbol = (symbolS *)0x0;\n    exp->X_add_symbol = psVar2;\n    exp->X_add_number = 0;\n    goto LAB_0012ee84;\n  case 0x14:\n    sub_symbol = exp->X_op_symbol;\nLAB_0012ee84:\n    psVar2 = exp->X_add_symbol;\nLAB_0012ee45:\n    offset = exp->X_add_number;\n  }" { (case_statement "default:\n    psVar2 = make_expr_symbol(exp);\n    offset = 0;\n    sub_symbol = (symbolS *)0x0;\n    break;" default : (expression_statement "psVar2 = make_expr_symbol(exp);" (assignment_expression "psVar2 = make_expr_symbol(exp)" identifier = (call_expression "make_expr_symbol(exp)" identifier (argument_list "(exp)" ( identifier )))) ;) (expression_statement "offset = 0;" (assignment_expression "offset = 0" identifier = number_literal) ;) (expression_statement "sub_symbol = (symbolS *)0x0;" (assignment_expression "sub_symbol = (symbolS *)0x0" identifier = (cast_expression "(symbolS *)0x0" ( (type_descriptor "symbolS *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (break_statement "break;" break ;)) (case_statement "case 1:\n    offset = 0;\n    sub_symbol = (symbolS *)0x0;\n    psVar2 = (symbolS *)0x0;\n    break;" case number_literal : (expression_statement "offset = 0;" (assignment_expression "offset = 0" identifier = number_literal) ;) (expression_statement "sub_symbol = (symbolS *)0x0;" (assignment_expression "sub_symbol = (symbolS *)0x0" identifier = (cast_expression "(symbolS *)0x0" ( (type_descriptor "symbolS *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "psVar2 = (symbolS *)0x0;" (assignment_expression "psVar2 = (symbolS *)0x0" identifier = (cast_expression "(symbolS *)0x0" ( (type_descriptor "symbolS *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (break_statement "break;" break ;)) (case_statement "case 2:\n    sub_symbol = (symbolS *)0x0;\n    psVar2 = (symbolS *)0x0;\n    goto LAB_0012ee45;" case number_literal : (expression_statement "sub_symbol = (symbolS *)0x0;" (assignment_expression "sub_symbol = (symbolS *)0x0" identifier = (cast_expression "(symbolS *)0x0" ( (type_descriptor "symbolS *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "psVar2 = (symbolS *)0x0;" (assignment_expression "psVar2 = (symbolS *)0x0" identifier = (cast_expression "(symbolS *)0x0" ( (type_descriptor "symbolS *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0012ee45;" goto statement_identifier ;)) (case_statement "case 3:\n    sub_symbol = (symbolS *)0x0;\n    goto LAB_0012ee84;" case number_literal : (expression_statement "sub_symbol = (symbolS *)0x0;" (assignment_expression "sub_symbol = (symbolS *)0x0" identifier = (cast_expression "(symbolS *)0x0" ( (type_descriptor "symbolS *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0012ee84;" goto statement_identifier ;)) (case_statement "case 4:\n    psVar2 = exp->X_add_symbol;\n    offset = exp->X_add_number;\n    sub_symbol = (symbolS *)0x0;\n    r_type = BFD_RELOC_RVA;\n    break;" case number_literal : (expression_statement "psVar2 = exp->X_add_symbol;" (assignment_expression "psVar2 = exp->X_add_symbol" identifier = (field_expression "exp->X_add_symbol" identifier -> field_identifier)) ;) (expression_statement "offset = exp->X_add_number;" (assignment_expression "offset = exp->X_add_number" identifier = (field_expression "exp->X_add_number" identifier -> field_identifier)) ;) (expression_statement "sub_symbol = (symbolS *)0x0;" (assignment_expression "sub_symbol = (symbolS *)0x0" identifier = (cast_expression "(symbolS *)0x0" ( (type_descriptor "symbolS *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "r_type = BFD_RELOC_RVA;" (assignment_expression "r_type = BFD_RELOC_RVA" identifier = identifier) ;) (break_statement "break;" break ;)) (case_statement "case 5:\n    format = (char *)dcgettext(0,"register value used as expression",5);\n    as_bad(format);\n    offset = 0;\n    sub_symbol = (symbolS *)0x0;\n    psVar2 = (symbolS *)0x0;\n    break;" case number_literal : (expression_statement "format = (char *)dcgettext(0,"register value used as expression",5);" (assignment_expression "format = (char *)dcgettext(0,"register value used as expression",5)" identifier = (cast_expression "(char *)dcgettext(0,"register value used as expression",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"register value used as expression",5)" identifier (argument_list "(0,"register value used as expression",5)" ( number_literal , (string_literal ""register value used as expression"" " string_content ") , number_literal ))))) ;) (expression_statement "as_bad(format);" (call_expression "as_bad(format)" identifier (argument_list "(format)" ( identifier ))) ;) (expression_statement "offset = 0;" (assignment_expression "offset = 0" identifier = number_literal) ;) (expression_statement "sub_symbol = (symbolS *)0x0;" (assignment_expression "sub_symbol = (symbolS *)0x0" identifier = (cast_expression "(symbolS *)0x0" ( (type_descriptor "symbolS *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "psVar2 = (symbolS *)0x0;" (assignment_expression "psVar2 = (symbolS *)0x0" identifier = (cast_expression "(symbolS *)0x0" ( (type_descriptor "symbolS *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (break_statement "break;" break ;)) (case_statement "case 7:\n    sub_symbol = exp->X_add_symbol;\n    offset = exp->X_add_number;\n    psVar2 = (symbolS *)0x0;\n    break;" case number_literal : (expression_statement "sub_symbol = exp->X_add_symbol;" (assignment_expression "sub_symbol = exp->X_add_symbol" identifier = (field_expression "exp->X_add_symbol" identifier -> field_identifier)) ;) (expression_statement "offset = exp->X_add_number;" (assignment_expression "offset = exp->X_add_number" identifier = (field_expression "exp->X_add_number" identifier -> field_identifier)) ;) (expression_statement "psVar2 = (symbolS *)0x0;" (assignment_expression "psVar2 = (symbolS *)0x0" identifier = (cast_expression "(symbolS *)0x0" ( (type_descriptor "symbolS *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (break_statement "break;" break ;)) (case_statement "case 0x13:\n    psVar2 = make_expr_symbol(exp);\n    exp->field_0x18 = 3;\n    sub_symbol = (symbolS *)0x0;\n    exp->X_op_symbol = (symbolS *)0x0;\n    exp->X_add_symbol = psVar2;\n    exp->X_add_number = 0;\n    goto LAB_0012ee84;" case number_literal : (expression_statement "psVar2 = make_expr_symbol(exp);" (assignment_expression "psVar2 = make_expr_symbol(exp)" identifier = (call_expression "make_expr_symbol(exp)" identifier (argument_list "(exp)" ( identifier )))) ;) (expression_statement "exp->field_0x18 = 3;" (assignment_expression "exp->field_0x18 = 3" (field_expression "exp->field_0x18" identifier -> field_identifier) = number_literal) ;) (expression_statement "sub_symbol = (symbolS *)0x0;" (assignment_expression "sub_symbol = (symbolS *)0x0" identifier = (cast_expression "(symbolS *)0x0" ( (type_descriptor "symbolS *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "exp->X_op_symbol = (symbolS *)0x0;" (assignment_expression "exp->X_op_symbol = (symbolS *)0x0" (field_expression "exp->X_op_symbol" identifier -> field_identifier) = (cast_expression "(symbolS *)0x0" ( (type_descriptor "symbolS *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "exp->X_add_symbol = psVar2;" (assignment_expression "exp->X_add_symbol = psVar2" (field_expression "exp->X_add_symbol" identifier -> field_identifier) = identifier) ;) (expression_statement "exp->X_add_number = 0;" (assignment_expression "exp->X_add_number = 0" (field_expression "exp->X_add_number" identifier -> field_identifier) = number_literal) ;) (goto_statement "goto LAB_0012ee84;" goto statement_identifier ;)) (case_statement "case 0x14:\n    sub_symbol = exp->X_op_symbol;\nLAB_0012ee84:\n    psVar2 = exp->X_add_symbol;\nLAB_0012ee45:\n    offset = exp->X_add_number;" case number_literal : (expression_statement "sub_symbol = exp->X_op_symbol;" (assignment_expression "sub_symbol = exp->X_op_symbol" identifier = (field_expression "exp->X_op_symbol" identifier -> field_identifier)) ;) (labeled_statement "LAB_0012ee84:\n    psVar2 = exp->X_add_symbol;" statement_identifier : (expression_statement "psVar2 = exp->X_add_symbol;" (assignment_expression "psVar2 = exp->X_add_symbol" identifier = (field_expression "exp->X_add_symbol" identifier -> field_identifier)) ;)) (labeled_statement "LAB_0012ee45:\n    offset = exp->X_add_number;" statement_identifier : (expression_statement "offset = exp->X_add_number;" (assignment_expression "offset = exp->X_add_number" identifier = (field_expression "exp->X_add_number" identifier -> field_identifier)) ;))) })) (expression_statement "pfVar1 = fix_new_internal(frag,where,size,psVar2,sub_symbol,offset,pcrel,r_type,0);" (assignment_expression "pfVar1 = fix_new_internal(frag,where,size,psVar2,sub_symbol,offset,pcrel,r_type,0)" identifier = (call_expression "fix_new_internal(frag,where,size,psVar2,sub_symbol,offset,pcrel,r_type,0)" identifier (argument_list "(frag,where,size,psVar2,sub_symbol,offset,pcrel,r_type,0)" ( identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , number_literal )))) ;) (return_statement "return pfVar1;" return identifier ;) })))
(translation_unit "void FUN_0012ee00(undefined8 param_1,undefined4 param_2,undefined4 param_3,undefined8 *param_4,\n                 undefined4 param_5,undefined4 param_6)\n\n{\n  undefined8 uVar1;\n  undefined8 uVar2;\n  undefined8 uVar3;\n  \n  switch(*(undefined1 *)(param_4 + 3)) {\n  default:\n    uVar3 = FUN_00113ee0(param_4);\n    uVar1 = 0;\n    uVar2 = 0;\n    break;\n  case 1:\n    uVar1 = 0;\n    uVar2 = 0;\n    uVar3 = 0;\n    break;\n  case 2:\n    uVar2 = 0;\n    uVar3 = 0;\n    goto LAB_0012ee45;\n  case 3:\n    uVar2 = 0;\n    goto LAB_0012ee84;\n  case 4:\n    uVar3 = *param_4;\n    uVar1 = param_4[2];\n    uVar2 = 0;\n    param_6 = 0x3e;\n    break;\n  case 5:\n    uVar2 = dcgettext(0,"register value used as expression",5);\n    FUN_0011da70(uVar2);\n    uVar1 = 0;\n    uVar2 = 0;\n    uVar3 = 0;\n    break;\n  case 7:\n    uVar2 = *param_4;\n    uVar1 = param_4[2];\n    uVar3 = 0;\n    break;\n  case 0x13:\n    uVar1 = FUN_00113ee0(param_4);\n    *(undefined1 *)(param_4 + 3) = 3;\n    uVar2 = 0;\n    param_4[1] = 0;\n    *param_4 = uVar1;\n    param_4[2] = 0;\n    goto LAB_0012ee84;\n  case 0x14:\n    uVar2 = param_4[1];\nLAB_0012ee84:\n    uVar3 = *param_4;\nLAB_0012ee45:\n    uVar1 = param_4[2];\n  }\n  FUN_0012d120(param_1,param_2,param_3,uVar3,uVar2,uVar1,param_5,param_6,0);\n  return;\n}\n\n" (function_definition "void FUN_0012ee00(undefined8 param_1,undefined4 param_2,undefined4 param_3,undefined8 *param_4,\n                 undefined4 param_5,undefined4 param_6)\n\n{\n  undefined8 uVar1;\n  undefined8 uVar2;\n  undefined8 uVar3;\n  \n  switch(*(undefined1 *)(param_4 + 3)) {\n  default:\n    uVar3 = FUN_00113ee0(param_4);\n    uVar1 = 0;\n    uVar2 = 0;\n    break;\n  case 1:\n    uVar1 = 0;\n    uVar2 = 0;\n    uVar3 = 0;\n    break;\n  case 2:\n    uVar2 = 0;\n    uVar3 = 0;\n    goto LAB_0012ee45;\n  case 3:\n    uVar2 = 0;\n    goto LAB_0012ee84;\n  case 4:\n    uVar3 = *param_4;\n    uVar1 = param_4[2];\n    uVar2 = 0;\n    param_6 = 0x3e;\n    break;\n  case 5:\n    uVar2 = dcgettext(0,"register value used as expression",5);\n    FUN_0011da70(uVar2);\n    uVar1 = 0;\n    uVar2 = 0;\n    uVar3 = 0;\n    break;\n  case 7:\n    uVar2 = *param_4;\n    uVar1 = param_4[2];\n    uVar3 = 0;\n    break;\n  case 0x13:\n    uVar1 = FUN_00113ee0(param_4);\n    *(undefined1 *)(param_4 + 3) = 3;\n    uVar2 = 0;\n    param_4[1] = 0;\n    *param_4 = uVar1;\n    param_4[2] = 0;\n    goto LAB_0012ee84;\n  case 0x14:\n    uVar2 = param_4[1];\nLAB_0012ee84:\n    uVar3 = *param_4;\nLAB_0012ee45:\n    uVar1 = param_4[2];\n  }\n  FUN_0012d120(param_1,param_2,param_3,uVar3,uVar2,uVar1,param_5,param_6,0);\n  return;\n}" primitive_type (function_declarator "FUN_0012ee00(undefined8 param_1,undefined4 param_2,undefined4 param_3,undefined8 *param_4,\n                 undefined4 param_5,undefined4 param_6)" identifier (parameter_list "(undefined8 param_1,undefined4 param_2,undefined4 param_3,undefined8 *param_4,\n                 undefined4 param_5,undefined4 param_6)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "undefined8 *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "undefined4 param_5" type_identifier identifier) , (parameter_declaration "undefined4 param_6" type_identifier identifier) ))) (compound_statement "{\n  undefined8 uVar1;\n  undefined8 uVar2;\n  undefined8 uVar3;\n  \n  switch(*(undefined1 *)(param_4 + 3)) {\n  default:\n    uVar3 = FUN_00113ee0(param_4);\n    uVar1 = 0;\n    uVar2 = 0;\n    break;\n  case 1:\n    uVar1 = 0;\n    uVar2 = 0;\n    uVar3 = 0;\n    break;\n  case 2:\n    uVar2 = 0;\n    uVar3 = 0;\n    goto LAB_0012ee45;\n  case 3:\n    uVar2 = 0;\n    goto LAB_0012ee84;\n  case 4:\n    uVar3 = *param_4;\n    uVar1 = param_4[2];\n    uVar2 = 0;\n    param_6 = 0x3e;\n    break;\n  case 5:\n    uVar2 = dcgettext(0,"register value used as expression",5);\n    FUN_0011da70(uVar2);\n    uVar1 = 0;\n    uVar2 = 0;\n    uVar3 = 0;\n    break;\n  case 7:\n    uVar2 = *param_4;\n    uVar1 = param_4[2];\n    uVar3 = 0;\n    break;\n  case 0x13:\n    uVar1 = FUN_00113ee0(param_4);\n    *(undefined1 *)(param_4 + 3) = 3;\n    uVar2 = 0;\n    param_4[1] = 0;\n    *param_4 = uVar1;\n    param_4[2] = 0;\n    goto LAB_0012ee84;\n  case 0x14:\n    uVar2 = param_4[1];\nLAB_0012ee84:\n    uVar3 = *param_4;\nLAB_0012ee45:\n    uVar1 = param_4[2];\n  }\n  FUN_0012d120(param_1,param_2,param_3,uVar3,uVar2,uVar1,param_5,param_6,0);\n  return;\n}" { (declaration "undefined8 uVar1;" type_identifier identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (switch_statement "switch(*(undefined1 *)(param_4 + 3)) {\n  default:\n    uVar3 = FUN_00113ee0(param_4);\n    uVar1 = 0;\n    uVar2 = 0;\n    break;\n  case 1:\n    uVar1 = 0;\n    uVar2 = 0;\n    uVar3 = 0;\n    break;\n  case 2:\n    uVar2 = 0;\n    uVar3 = 0;\n    goto LAB_0012ee45;\n  case 3:\n    uVar2 = 0;\n    goto LAB_0012ee84;\n  case 4:\n    uVar3 = *param_4;\n    uVar1 = param_4[2];\n    uVar2 = 0;\n    param_6 = 0x3e;\n    break;\n  case 5:\n    uVar2 = dcgettext(0,"register value used as expression",5);\n    FUN_0011da70(uVar2);\n    uVar1 = 0;\n    uVar2 = 0;\n    uVar3 = 0;\n    break;\n  case 7:\n    uVar2 = *param_4;\n    uVar1 = param_4[2];\n    uVar3 = 0;\n    break;\n  case 0x13:\n    uVar1 = FUN_00113ee0(param_4);\n    *(undefined1 *)(param_4 + 3) = 3;\n    uVar2 = 0;\n    param_4[1] = 0;\n    *param_4 = uVar1;\n    param_4[2] = 0;\n    goto LAB_0012ee84;\n  case 0x14:\n    uVar2 = param_4[1];\nLAB_0012ee84:\n    uVar3 = *param_4;\nLAB_0012ee45:\n    uVar1 = param_4[2];\n  }" switch (parenthesized_expression "(*(undefined1 *)(param_4 + 3))" ( (pointer_expression "*(undefined1 *)(param_4 + 3)" * (cast_expression "(undefined1 *)(param_4 + 3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 3)" ( (binary_expression "param_4 + 3" identifier + number_literal) )))) )) (compound_statement "{\n  default:\n    uVar3 = FUN_00113ee0(param_4);\n    uVar1 = 0;\n    uVar2 = 0;\n    break;\n  case 1:\n    uVar1 = 0;\n    uVar2 = 0;\n    uVar3 = 0;\n    break;\n  case 2:\n    uVar2 = 0;\n    uVar3 = 0;\n    goto LAB_0012ee45;\n  case 3:\n    uVar2 = 0;\n    goto LAB_0012ee84;\n  case 4:\n    uVar3 = *param_4;\n    uVar1 = param_4[2];\n    uVar2 = 0;\n    param_6 = 0x3e;\n    break;\n  case 5:\n    uVar2 = dcgettext(0,"register value used as expression",5);\n    FUN_0011da70(uVar2);\n    uVar1 = 0;\n    uVar2 = 0;\n    uVar3 = 0;\n    break;\n  case 7:\n    uVar2 = *param_4;\n    uVar1 = param_4[2];\n    uVar3 = 0;\n    break;\n  case 0x13:\n    uVar1 = FUN_00113ee0(param_4);\n    *(undefined1 *)(param_4 + 3) = 3;\n    uVar2 = 0;\n    param_4[1] = 0;\n    *param_4 = uVar1;\n    param_4[2] = 0;\n    goto LAB_0012ee84;\n  case 0x14:\n    uVar2 = param_4[1];\nLAB_0012ee84:\n    uVar3 = *param_4;\nLAB_0012ee45:\n    uVar1 = param_4[2];\n  }" { (case_statement "default:\n    uVar3 = FUN_00113ee0(param_4);\n    uVar1 = 0;\n    uVar2 = 0;\n    break;" default : (expression_statement "uVar3 = FUN_00113ee0(param_4);" (assignment_expression "uVar3 = FUN_00113ee0(param_4)" identifier = (call_expression "FUN_00113ee0(param_4)" identifier (argument_list "(param_4)" ( identifier )))) ;) (expression_statement "uVar1 = 0;" (assignment_expression "uVar1 = 0" identifier = number_literal) ;) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (break_statement "break;" break ;)) (case_statement "case 1:\n    uVar1 = 0;\n    uVar2 = 0;\n    uVar3 = 0;\n    break;" case number_literal : (expression_statement "uVar1 = 0;" (assignment_expression "uVar1 = 0" identifier = number_literal) ;) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (break_statement "break;" break ;)) (case_statement "case 2:\n    uVar2 = 0;\n    uVar3 = 0;\n    goto LAB_0012ee45;" case number_literal : (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0012ee45;" goto statement_identifier ;)) (case_statement "case 3:\n    uVar2 = 0;\n    goto LAB_0012ee84;" case number_literal : (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0012ee84;" goto statement_identifier ;)) (case_statement "case 4:\n    uVar3 = *param_4;\n    uVar1 = param_4[2];\n    uVar2 = 0;\n    param_6 = 0x3e;\n    break;" case number_literal : (expression_statement "uVar3 = *param_4;" (assignment_expression "uVar3 = *param_4" identifier = (pointer_expression "*param_4" * identifier)) ;) (expression_statement "uVar1 = param_4[2];" (assignment_expression "uVar1 = param_4[2]" identifier = (subscript_expression "param_4[2]" identifier [ number_literal ])) ;) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (expression_statement "param_6 = 0x3e;" (assignment_expression "param_6 = 0x3e" identifier = number_literal) ;) (break_statement "break;" break ;)) (case_statement "case 5:\n    uVar2 = dcgettext(0,"register value used as expression",5);\n    FUN_0011da70(uVar2);\n    uVar1 = 0;\n    uVar2 = 0;\n    uVar3 = 0;\n    break;" case number_literal : (expression_statement "uVar2 = dcgettext(0,"register value used as expression",5);" (assignment_expression "uVar2 = dcgettext(0,"register value used as expression",5)" identifier = (call_expression "dcgettext(0,"register value used as expression",5)" identifier (argument_list "(0,"register value used as expression",5)" ( number_literal , (string_literal ""register value used as expression"" " string_content ") , number_literal )))) ;) (expression_statement "FUN_0011da70(uVar2);" (call_expression "FUN_0011da70(uVar2)" identifier (argument_list "(uVar2)" ( identifier ))) ;) (expression_statement "uVar1 = 0;" (assignment_expression "uVar1 = 0" identifier = number_literal) ;) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (break_statement "break;" break ;)) (case_statement "case 7:\n    uVar2 = *param_4;\n    uVar1 = param_4[2];\n    uVar3 = 0;\n    break;" case number_literal : (expression_statement "uVar2 = *param_4;" (assignment_expression "uVar2 = *param_4" identifier = (pointer_expression "*param_4" * identifier)) ;) (expression_statement "uVar1 = param_4[2];" (assignment_expression "uVar1 = param_4[2]" identifier = (subscript_expression "param_4[2]" identifier [ number_literal ])) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (break_statement "break;" break ;)) (case_statement "case 0x13:\n    uVar1 = FUN_00113ee0(param_4);\n    *(undefined1 *)(param_4 + 3) = 3;\n    uVar2 = 0;\n    param_4[1] = 0;\n    *param_4 = uVar1;\n    param_4[2] = 0;\n    goto LAB_0012ee84;" case number_literal : (expression_statement "uVar1 = FUN_00113ee0(param_4);" (assignment_expression "uVar1 = FUN_00113ee0(param_4)" identifier = (call_expression "FUN_00113ee0(param_4)" identifier (argument_list "(param_4)" ( identifier )))) ;) (expression_statement "*(undefined1 *)(param_4 + 3) = 3;" (assignment_expression "*(undefined1 *)(param_4 + 3) = 3" (pointer_expression "*(undefined1 *)(param_4 + 3)" * (cast_expression "(undefined1 *)(param_4 + 3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 3)" ( (binary_expression "param_4 + 3" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (expression_statement "param_4[1] = 0;" (assignment_expression "param_4[1] = 0" (subscript_expression "param_4[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*param_4 = uVar1;" (assignment_expression "*param_4 = uVar1" (pointer_expression "*param_4" * identifier) = identifier) ;) (expression_statement "param_4[2] = 0;" (assignment_expression "param_4[2] = 0" (subscript_expression "param_4[2]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto LAB_0012ee84;" goto statement_identifier ;)) (case_statement "case 0x14:\n    uVar2 = param_4[1];\nLAB_0012ee84:\n    uVar3 = *param_4;\nLAB_0012ee45:\n    uVar1 = param_4[2];" case number_literal : (expression_statement "uVar2 = param_4[1];" (assignment_expression "uVar2 = param_4[1]" identifier = (subscript_expression "param_4[1]" identifier [ number_literal ])) ;) (labeled_statement "LAB_0012ee84:\n    uVar3 = *param_4;" statement_identifier : (expression_statement "uVar3 = *param_4;" (assignment_expression "uVar3 = *param_4" identifier = (pointer_expression "*param_4" * identifier)) ;)) (labeled_statement "LAB_0012ee45:\n    uVar1 = param_4[2];" statement_identifier : (expression_statement "uVar1 = param_4[2];" (assignment_expression "uVar1 = param_4[2]" identifier = (subscript_expression "param_4[2]" identifier [ number_literal ])) ;))) })) (expression_statement "FUN_0012d120(param_1,param_2,param_3,uVar3,uVar2,uVar1,param_5,param_6,0);" (call_expression "FUN_0012d120(param_1,param_2,param_3,uVar3,uVar2,uVar1,param_5,param_6,0)" identifier (argument_list "(param_1,param_2,param_3,uVar3,uVar2,uVar1,param_5,param_6,0)" ( identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , number_literal ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (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 ;) (switch_statement switch (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (compound_statement { (case_statement default : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;))) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , LIT ))) ;) (return_statement return ;) })))
(function_definition "void FUN_0012ee00(undefined8 param_1,undefined4 param_2,undefined4 param_3,undefined8 *param_4,\n                 undefined4 param_5,undefined4 param_6)\n\n{\n  undefined8 uVar1;\n  undefined8 uVar2;\n  undefined8 uVar3;\n  \n  switch(*(undefined1 *)(param_4 + 3)) {\n  default:\n    uVar3 = FUN_00113ee0(param_4);\n    uVar1 = 0;\n    uVar2 = 0;\n    break;\n  case 1:\n    uVar1 = 0;\n    uVar2 = 0;\n    uVar3 = 0;\n    break;\n  case 2:\n    uVar2 = 0;\n    uVar3 = 0;\n    goto LAB_0012ee45;\n  case 3:\n    uVar2 = 0;\n    goto LAB_0012ee84;\n  case 4:\n    uVar3 = *param_4;\n    uVar1 = param_4[2];\n    uVar2 = 0;\n    param_6 = 0x3e;\n    break;\n  case 5:\n    uVar2 = dcgettext(0,"register value used as expression",5);\n    FUN_0011da70(uVar2);\n    uVar1 = 0;\n    uVar2 = 0;\n    uVar3 = 0;\n    break;\n  case 7:\n    uVar2 = *param_4;\n    uVar1 = param_4[2];\n    uVar3 = 0;\n    break;\n  case 0x13:\n    uVar1 = FUN_00113ee0(param_4);\n    *(undefined1 *)(param_4 + 3) = 3;\n    uVar2 = 0;\n    param_4[1] = 0;\n    *param_4 = uVar1;\n    param_4[2] = 0;\n    goto LAB_0012ee84;\n  case 0x14:\n    uVar2 = param_4[1];\nLAB_0012ee84:\n    uVar3 = *param_4;\nLAB_0012ee45:\n    uVar1 = param_4[2];\n  }\n  FUN_0012d120(param_1,param_2,param_3,uVar3,uVar2,uVar1,param_5,param_6,0);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_0012ee00(undefined8 param_1,undefined4 param_2,undefined4 param_3,undefined8 *param_4,\n                 undefined4 param_5,undefined4 param_6)" (identifier "FUN_0012ee00") (parameter_list "(undefined8 param_1,undefined4 param_2,undefined4 param_3,undefined8 *param_4,\n                 undefined4 param_5,undefined4 param_6)" (( "(") (parameter_declaration "undefined8 param_1" (type_identifier "undefined8") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "undefined4 param_3" (type_identifier "undefined4") (identifier "param_3")) (, ",") (parameter_declaration "undefined8 *param_4" (type_identifier "undefined8") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) (, ",") (parameter_declaration "undefined4 param_5" (type_identifier "undefined4") (identifier "param_5")) (, ",") (parameter_declaration "undefined4 param_6" (type_identifier "undefined4") (identifier "param_6")) () ")"))) (compound_statement "{\n  undefined8 uVar1;\n  undefined8 uVar2;\n  undefined8 uVar3;\n  \n  switch(*(undefined1 *)(param_4 + 3)) {\n  default:\n    uVar3 = FUN_00113ee0(param_4);\n    uVar1 = 0;\n    uVar2 = 0;\n    break;\n  case 1:\n    uVar1 = 0;\n    uVar2 = 0;\n    uVar3 = 0;\n    break;\n  case 2:\n    uVar2 = 0;\n    uVar3 = 0;\n    goto LAB_0012ee45;\n  case 3:\n    uVar2 = 0;\n    goto LAB_0012ee84;\n  case 4:\n    uVar3 = *param_4;\n    uVar1 = param_4[2];\n    uVar2 = 0;\n    param_6 = 0x3e;\n    break;\n  case 5:\n    uVar2 = dcgettext(0,"register value used as expression",5);\n    FUN_0011da70(uVar2);\n    uVar1 = 0;\n    uVar2 = 0;\n    uVar3 = 0;\n    break;\n  case 7:\n    uVar2 = *param_4;\n    uVar1 = param_4[2];\n    uVar3 = 0;\n    break;\n  case 0x13:\n    uVar1 = FUN_00113ee0(param_4);\n    *(undefined1 *)(param_4 + 3) = 3;\n    uVar2 = 0;\n    param_4[1] = 0;\n    *param_4 = uVar1;\n    param_4[2] = 0;\n    goto LAB_0012ee84;\n  case 0x14:\n    uVar2 = param_4[1];\nLAB_0012ee84:\n    uVar3 = *param_4;\nLAB_0012ee45:\n    uVar1 = param_4[2];\n  }\n  FUN_0012d120(param_1,param_2,param_3,uVar3,uVar2,uVar1,param_5,param_6,0);\n  return;\n}" ({ "{") (declaration "undefined8 uVar1;" (type_identifier "undefined8") (identifier "uVar1") (; ";")) (declaration "undefined8 uVar2;" (type_identifier "undefined8") (identifier "uVar2") (; ";")) (declaration "undefined8 uVar3;" (type_identifier "undefined8") (identifier "uVar3") (; ";")) (switch_statement "switch(*(undefined1 *)(param_4 + 3)) {\n  default:\n    uVar3 = FUN_00113ee0(param_4);\n    uVar1 = 0;\n    uVar2 = 0;\n    break;\n  case 1:\n    uVar1 = 0;\n    uVar2 = 0;\n    uVar3 = 0;\n    break;\n  case 2:\n    uVar2 = 0;\n    uVar3 = 0;\n    goto LAB_0012ee45;\n  case 3:\n    uVar2 = 0;\n    goto LAB_0012ee84;\n  case 4:\n    uVar3 = *param_4;\n    uVar1 = param_4[2];\n    uVar2 = 0;\n    param_6 = 0x3e;\n    break;\n  case 5:\n    uVar2 = dcgettext(0,"register value used as expression",5);\n    FUN_0011da70(uVar2);\n    uVar1 = 0;\n    uVar2 = 0;\n    uVar3 = 0;\n    break;\n  case 7:\n    uVar2 = *param_4;\n    uVar1 = param_4[2];\n    uVar3 = 0;\n    break;\n  case 0x13:\n    uVar1 = FUN_00113ee0(param_4);\n    *(undefined1 *)(param_4 + 3) = 3;\n    uVar2 = 0;\n    param_4[1] = 0;\n    *param_4 = uVar1;\n    param_4[2] = 0;\n    goto LAB_0012ee84;\n  case 0x14:\n    uVar2 = param_4[1];\nLAB_0012ee84:\n    uVar3 = *param_4;\nLAB_0012ee45:\n    uVar1 = param_4[2];\n  }" (switch "switch") (parenthesized_expression "(*(undefined1 *)(param_4 + 3))" (( "(") (pointer_expression "*(undefined1 *)(param_4 + 3)" (* "*") (cast_expression "(undefined1 *)(param_4 + 3)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 3)" (( "(") (binary_expression "param_4 + 3" (identifier "param_4") (+ "+") (number_literal "3")) () ")")))) () ")")) (compound_statement "{\n  default:\n    uVar3 = FUN_00113ee0(param_4);\n    uVar1 = 0;\n    uVar2 = 0;\n    break;\n  case 1:\n    uVar1 = 0;\n    uVar2 = 0;\n    uVar3 = 0;\n    break;\n  case 2:\n    uVar2 = 0;\n    uVar3 = 0;\n    goto LAB_0012ee45;\n  case 3:\n    uVar2 = 0;\n    goto LAB_0012ee84;\n  case 4:\n    uVar3 = *param_4;\n    uVar1 = param_4[2];\n    uVar2 = 0;\n    param_6 = 0x3e;\n    break;\n  case 5:\n    uVar2 = dcgettext(0,"register value used as expression",5);\n    FUN_0011da70(uVar2);\n    uVar1 = 0;\n    uVar2 = 0;\n    uVar3 = 0;\n    break;\n  case 7:\n    uVar2 = *param_4;\n    uVar1 = param_4[2];\n    uVar3 = 0;\n    break;\n  case 0x13:\n    uVar1 = FUN_00113ee0(param_4);\n    *(undefined1 *)(param_4 + 3) = 3;\n    uVar2 = 0;\n    param_4[1] = 0;\n    *param_4 = uVar1;\n    param_4[2] = 0;\n    goto LAB_0012ee84;\n  case 0x14:\n    uVar2 = param_4[1];\nLAB_0012ee84:\n    uVar3 = *param_4;\nLAB_0012ee45:\n    uVar1 = param_4[2];\n  }" ({ "{") (case_statement "default:\n    uVar3 = FUN_00113ee0(param_4);\n    uVar1 = 0;\n    uVar2 = 0;\n    break;" (default "default") (: ":") (expression_statement "uVar3 = FUN_00113ee0(param_4);" (assignment_expression "uVar3 = FUN_00113ee0(param_4)" (identifier "uVar3") (= "=") (call_expression "FUN_00113ee0(param_4)" (identifier "FUN_00113ee0") (argument_list "(param_4)" (( "(") (identifier "param_4") () ")")))) (; ";")) (expression_statement "uVar1 = 0;" (assignment_expression "uVar1 = 0" (identifier "uVar1") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" (identifier "uVar2") (= "=") (number_literal "0")) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 1:\n    uVar1 = 0;\n    uVar2 = 0;\n    uVar3 = 0;\n    break;" (case "case") (number_literal "1") (: ":") (expression_statement "uVar1 = 0;" (assignment_expression "uVar1 = 0" (identifier "uVar1") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" (identifier "uVar2") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" (identifier "uVar3") (= "=") (number_literal "0")) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 2:\n    uVar2 = 0;\n    uVar3 = 0;\n    goto LAB_0012ee45;" (case "case") (number_literal "2") (: ":") (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" (identifier "uVar2") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" (identifier "uVar3") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_0012ee45;" (goto "goto") (statement_identifier "LAB_0012ee45") (; ";"))) (case_statement "case 3:\n    uVar2 = 0;\n    goto LAB_0012ee84;" (case "case") (number_literal "3") (: ":") (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" (identifier "uVar2") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_0012ee84;" (goto "goto") (statement_identifier "LAB_0012ee84") (; ";"))) (case_statement "case 4:\n    uVar3 = *param_4;\n    uVar1 = param_4[2];\n    uVar2 = 0;\n    param_6 = 0x3e;\n    break;" (case "case") (number_literal "4") (: ":") (expression_statement "uVar3 = *param_4;" (assignment_expression "uVar3 = *param_4" (identifier "uVar3") (= "=") (pointer_expression "*param_4" (* "*") (identifier "param_4"))) (; ";")) (expression_statement "uVar1 = param_4[2];" (assignment_expression "uVar1 = param_4[2]" (identifier "uVar1") (= "=") (subscript_expression "param_4[2]" (identifier "param_4") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" (identifier "uVar2") (= "=") (number_literal "0")) (; ";")) (expression_statement "param_6 = 0x3e;" (assignment_expression "param_6 = 0x3e" (identifier "param_6") (= "=") (number_literal "0x3e")) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 5:\n    uVar2 = dcgettext(0,"register value used as expression",5);\n    FUN_0011da70(uVar2);\n    uVar1 = 0;\n    uVar2 = 0;\n    uVar3 = 0;\n    break;" (case "case") (number_literal "5") (: ":") (expression_statement "uVar2 = dcgettext(0,"register value used as expression",5);" (assignment_expression "uVar2 = dcgettext(0,"register value used as expression",5)" (identifier "uVar2") (= "=") (call_expression "dcgettext(0,"register value used as expression",5)" (identifier "dcgettext") (argument_list "(0,"register value used as expression",5)" (( "(") (number_literal "0") (, ",") (string_literal ""register value used as expression"" (" """) (string_content "register value used as expression") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "FUN_0011da70(uVar2);" (call_expression "FUN_0011da70(uVar2)" (identifier "FUN_0011da70") (argument_list "(uVar2)" (( "(") (identifier "uVar2") () ")"))) (; ";")) (expression_statement "uVar1 = 0;" (assignment_expression "uVar1 = 0" (identifier "uVar1") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" (identifier "uVar2") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" (identifier "uVar3") (= "=") (number_literal "0")) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 7:\n    uVar2 = *param_4;\n    uVar1 = param_4[2];\n    uVar3 = 0;\n    break;" (case "case") (number_literal "7") (: ":") (expression_statement "uVar2 = *param_4;" (assignment_expression "uVar2 = *param_4" (identifier "uVar2") (= "=") (pointer_expression "*param_4" (* "*") (identifier "param_4"))) (; ";")) (expression_statement "uVar1 = param_4[2];" (assignment_expression "uVar1 = param_4[2]" (identifier "uVar1") (= "=") (subscript_expression "param_4[2]" (identifier "param_4") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" (identifier "uVar3") (= "=") (number_literal "0")) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x13:\n    uVar1 = FUN_00113ee0(param_4);\n    *(undefined1 *)(param_4 + 3) = 3;\n    uVar2 = 0;\n    param_4[1] = 0;\n    *param_4 = uVar1;\n    param_4[2] = 0;\n    goto LAB_0012ee84;" (case "case") (number_literal "0x13") (: ":") (expression_statement "uVar1 = FUN_00113ee0(param_4);" (assignment_expression "uVar1 = FUN_00113ee0(param_4)" (identifier "uVar1") (= "=") (call_expression "FUN_00113ee0(param_4)" (identifier "FUN_00113ee0") (argument_list "(param_4)" (( "(") (identifier "param_4") () ")")))) (; ";")) (expression_statement "*(undefined1 *)(param_4 + 3) = 3;" (assignment_expression "*(undefined1 *)(param_4 + 3) = 3" (pointer_expression "*(undefined1 *)(param_4 + 3)" (* "*") (cast_expression "(undefined1 *)(param_4 + 3)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 3)" (( "(") (binary_expression "param_4 + 3" (identifier "param_4") (+ "+") (number_literal "3")) () ")")))) (= "=") (number_literal "3")) (; ";")) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" (identifier "uVar2") (= "=") (number_literal "0")) (; ";")) (expression_statement "param_4[1] = 0;" (assignment_expression "param_4[1] = 0" (subscript_expression "param_4[1]" (identifier "param_4") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*param_4 = uVar1;" (assignment_expression "*param_4 = uVar1" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "param_4[2] = 0;" (assignment_expression "param_4[2] = 0" (subscript_expression "param_4[2]" (identifier "param_4") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_0012ee84;" (goto "goto") (statement_identifier "LAB_0012ee84") (; ";"))) (case_statement "case 0x14:\n    uVar2 = param_4[1];\nLAB_0012ee84:\n    uVar3 = *param_4;\nLAB_0012ee45:\n    uVar1 = param_4[2];" (case "case") (number_literal "0x14") (: ":") (expression_statement "uVar2 = param_4[1];" (assignment_expression "uVar2 = param_4[1]" (identifier "uVar2") (= "=") (subscript_expression "param_4[1]" (identifier "param_4") ([ "[") (number_literal "1") (] "]"))) (; ";")) (labeled_statement "LAB_0012ee84:\n    uVar3 = *param_4;" (statement_identifier "LAB_0012ee84") (: ":") (expression_statement "uVar3 = *param_4;" (assignment_expression "uVar3 = *param_4" (identifier "uVar3") (= "=") (pointer_expression "*param_4" (* "*") (identifier "param_4"))) (; ";"))) (labeled_statement "LAB_0012ee45:\n    uVar1 = param_4[2];" (statement_identifier "LAB_0012ee45") (: ":") (expression_statement "uVar1 = param_4[2];" (assignment_expression "uVar1 = param_4[2]" (identifier "uVar1") (= "=") (subscript_expression "param_4[2]" (identifier "param_4") ([ "[") (number_literal "2") (] "]"))) (; ";")))) (} "}"))) (expression_statement "FUN_0012d120(param_1,param_2,param_3,uVar3,uVar2,uVar1,param_5,param_6,0);" (call_expression "FUN_0012d120(param_1,param_2,param_3,uVar3,uVar2,uVar1,param_5,param_6,0)" (identifier "FUN_0012d120") (argument_list "(param_1,param_2,param_3,uVar3,uVar2,uVar1,param_5,param_6,0)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "uVar3") (, ",") (identifier "uVar2") (, ",") (identifier "uVar1") (, ",") (identifier "param_5") (, ",") (identifier "param_6") (, ",") (number_literal "0") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

type_1 * function_1(type_2 *frag,int where,int size,type_3 *exp,int pcrel,
                  type_4 r_type)

{
  type_1 *pfVar1;
  char *format;
  type_5 *psVar2;
  type_5 *sub_symbol;
  type_6 offset;
  
  switch(exp->field_0x18) {
  default:
    psVar2 = var_1(exp);
    offset = 0;
    sub_symbol = (type_5 *)0x0;
    break;
  case 1:
    offset = 0;
    sub_symbol = (type_5 *)0x0;
    psVar2 = (type_5 *)0x0;
    break;
  case 2:
    sub_symbol = (type_5 *)0x0;
    psVar2 = (type_5 *)0x0;
    goto LAB_0012ee45;
  case 3:
    sub_symbol = (type_5 *)0x0;
    goto LAB_0012ee84;
  case 4:
    psVar2 = exp->X_add_symbol;
    offset = exp->X_add_number;
    sub_symbol = (type_5 *)0x0;
    r_type = BFD_RELOC_RVA;
    break;
  case 5:
    format = (char *)var_2(0,"register value used as expression",5);
    var_3(format);
    offset = 0;
    sub_symbol = (type_5 *)0x0;
    psVar2 = (type_5 *)0x0;
    break;
  case 7:
    sub_symbol = exp->X_add_symbol;
    offset = exp->X_add_number;
    psVar2 = (type_5 *)0x0;
    break;
  case 0x13:
    psVar2 = var_1(exp);
    exp->field_0x18 = 3;
    sub_symbol = (type_5 *)0x0;
    exp->X_op_symbol = (type_5 *)0x0;
    exp->X_add_symbol = psVar2;
    exp->X_add_number = 0;
    goto LAB_0012ee84;
  case 0x14:
    sub_symbol = exp->X_op_symbol;
LAB_0012ee84:
    psVar2 = exp->X_add_symbol;
LAB_0012ee45:
    offset = exp->X_add_number;
  }
  pfVar1 = var_4(frag,where,size,psVar2,sub_symbol,offset,pcrel,r_type,0);
  return pfVar1;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (switch_statement condition: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) body: (compound_statement (case_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (break_statement)) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (break_statement)) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier))) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier))) (case_statement value: (number_literal) (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: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (break_statement)) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content)) (number_literal))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (break_statement)) (case_statement value: (number_literal) (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: (number_literal))) (break_statement)) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (goto_statement label: (statement_identifier))) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (identifier) (identifier) (identifier) (identifier) (identifier) (number_literal)))) (return_statement))))

void MASKED(undefined8 param_1,undefined4 param_2,undefined4 param_3,undefined8 *param_4,
                 undefined4 param_5,undefined4 param_6)

{
  undefined8 uVar1;
  undefined8 uVar2;
  undefined8 uVar3;
  
  switch(*(undefined1 *)(param_4 + 3)) {
  default:
    uVar3 = FUN_00113ee0(param_4);
    uVar1 = 0;
    uVar2 = 0;
    break;
  case 1:
    uVar1 = 0;
    uVar2 = 0;
    uVar3 = 0;
    break;
  case 2:
    uVar2 = 0;
    uVar3 = 0;
    goto LAB_0012ee45;
  case 3:
    uVar2 = 0;
    goto LAB_0012ee84;
  case 4:
    uVar3 = *param_4;
    uVar1 = param_4[2];
    uVar2 = 0;
    param_6 = 0x3e;
    break;
  case 5:
    uVar2 = dcgettext(0,"register value used as expression",5);
    FUN_0011da70(uVar2);
    uVar1 = 0;
    uVar2 = 0;
    uVar3 = 0;
    break;
  case 7:
    uVar2 = *param_4;
    uVar1 = param_4[2];
    uVar3 = 0;
    break;
  case 0x13:
    uVar1 = FUN_00113ee0(param_4);
    *(undefined1 *)(param_4 + 3) = 3;
    uVar2 = 0;
    param_4[1] = 0;
    *param_4 = uVar1;
    param_4[2] = 0;
    goto LAB_0012ee84;
  case 0x14:
    uVar2 = param_4[1];
LAB_0012ee84:
    uVar3 = *param_4;
LAB_0012ee45:
    uVar1 = param_4[2];
  }
  FUN_0012d120(param_1,param_2,param_3,uVar3,uVar2,uVar1,param_5,param_6,0);
  return;
}

