
/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */
/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */
/* WARNING: Struct "Output_section_headers": ignoring overlapping field "layout_" */
/* WARNING: Enum "DT": Some values do not have unique names */
/* WARNING: Struct "Output_reduced_debug_abbrev_section": ignoring overlapping field "data_" */
/* WARNING: Struct "Output_reduced_debug_info_section": ignoring overlapping field "data_" */

void anon_unknown.dwarf_29466b::Mips_relocate_functions<32,_true>::mips_reloc_shuffle
               (uchar *view,uint r_type,bool jal_shuffle)

{
  ushort uVar1;
  ushort uVar2;
  uint uVar3;
  ushort uVar4;
  undefined3 in_register_00000018;
  
  if (0xc < r_type - 100) {
    if (r_type - 0x85 < 0x29) {
                    /* WARNING: Could not emulate address calculation at 0x000e166c */
                    /* WARNING: Treating indirect jump as call */
      (*(code *)(&gold::Position_dependent_options::default_options_.relax_.user_set_via_option +
                *(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c + (r_type - 0x85) * 4 + 0x4f28)
                ))();
      return;
    }
    return;
  }
  uVar3 = *(uint *)view;
  uVar4 = (ushort)(uVar3 >> 0x10);
  uVar1 = (ushort)uVar3;
  if (r_type != 100) {
    uVar2 = (ushort)((uVar3 << 5) >> 0x10);
    *(ushort *)(view + 2) = uVar2 & 0xffe0 | uVar1 & 0x1f;
    *(ushort *)view = uVar4 & 0xf800 | uVar2 & 0x1f | uVar1 & 0x7e0;
    return;
  }
  if (CONCAT31(in_register_00000018,jal_shuffle) != 0) {
    uVar4 = (ushort)(uVar3 >> 0xb) & 0x3e0 | uVar4 & 0xfc00 | (ushort)((uVar3 << 6) >> 0x1b);
  }
  *(ushort *)view = uVar4;
  *(ushort *)(view + 2) = uVar1;
  return;
}



void FUN_000e15f4(uint *param_1,int param_2,int param_3)

{
  ushort uVar1;
  ushort uVar2;
  uint uVar3;
  ushort uVar4;
  
  if (0xc < param_2 - 100U) {
    if (param_2 - 0x85U < 0x29) {
                    /* WARNING: Could not emulate address calculation at 0x000e166c */
                    /* WARNING: Treating indirect jump as call */
      (*(code *)(gold::Position_dependent_options::default_options_ +
                *(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c +
                        (param_2 - 0x85U) * 4 + 0x4f28) + 0x3210))();
      return;
    }
    return;
  }
  uVar3 = *param_1;
  uVar4 = (ushort)(uVar3 >> 0x10);
  uVar1 = (ushort)uVar3;
  if (param_2 != 100) {
    uVar2 = (ushort)((uVar3 << 5) >> 0x10);
    *(ushort *)((int)param_1 + 2) = uVar2 & 0xffe0 | uVar1 & 0x1f;
    *(ushort *)param_1 = uVar4 & 0xf800 | uVar2 & 0x1f | uVar1 & 0x7e0;
    return;
  }
  if (param_3 != 0) {
    uVar4 = (ushort)(uVar3 >> 0xb) & 0x3e0 | uVar4 & 0xfc00 | (ushort)((uVar3 << 6) >> 0x1b);
  }
  *(ushort *)param_1 = uVar4;
  *(ushort *)((int)param_1 + 2) = uVar1;
  return;
}


lui gp,0x3e
addiu gp,gp,0x7c4c
addu gp,gp,t9
addiu v0,a1,-0x64
sltiu v0,v0,0xd
beq v0,zero,0x000e1650
_li t0,0x64
lw v0,0x0(a0)
andi a3,v0,0xffff
beq a1,t0,0x000e16d4
_srl v1,v0,0x10
ext v0,v0,0xb,0x10
andi v1,v1,0xf800
andi a2,v0,0x1f
andi a1,a3,0x1f
andi v0,v0,0xffe0
or v1,v1,a2
andi a3,a3,0x7e0
or a1,v0,a1
or v1,v1,a3
sh a1,0x2(a0)
jr ra
_sh v1,0x0(a0)
addiu a2,a1,-0x85
sltiu v0,a2,0x29
beq v0,zero,0x000e16cc
_nop
lw v1,-0x7fc4(gp)
sll v0,a2,0x2
addiu v1,v1,0x4f28
addu v0,v1,v0
lw v0,0x0(v0)
addu v0,v0,gp
jr v0
_nop
addiu a1,a1,-0x8b
sltiu a1,a1,0x2
bne a1,zero,0x000e16cc
_nop
lw v0,0x0(a0)
sltiu a3,a2,0x29
srl t0,v0,0x10
andi t1,v0,0xffff
or a1,t1,zero
beq a3,zero,0x000e1704
_andi v1,t0,0xffff
lw a3,-0x7fc4(gp)
sll a2,a2,0x2
addiu a3,a3,0x4fcc
addu a2,a3,a2
lw a2,0x0(a2)
addu a2,a2,gp
jr a2
_nop
jr ra
_nop
beq a2,zero,0x000e16f8
_or a1,a3,zero
srl a2,v0,0xb
andi a1,v1,0xfc00
andi a2,a2,0x3e0
ext v1,v0,0x15,0x5
or a1,a2,a1
or v1,a1,v1
or a1,a3,zero
sh v1,0x0(a0)
jr ra
_sh a1,0x2(a0)
or a3,t1,zero
b 0x000e1620
_andi v1,t0,0xffff
(translation_unit "void FUN_000e15f4(uint *param_1,int param_2,int param_3)\n\n{\n  ushort uVar1;\n  ushort uVar2;\n  uint uVar3;\n  ushort uVar4;\n  \n  if (0xc < param_2 - 100U) {\n    if (param_2 - 0x85U < 0x29) {\n                    /* WARNING: Could not emulate address calculation at 0x000e166c */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c +\n                        (param_2 - 0x85U) * 4 + 0x4f28) + 0x3210))();\n      return;\n    }\n    return;\n  }\n  uVar3 = *param_1;\n  uVar4 = (ushort)(uVar3 >> 0x10);\n  uVar1 = (ushort)uVar3;\n  if (param_2 != 100) {\n    uVar2 = (ushort)((uVar3 << 5) >> 0x10);\n    *(ushort *)((int)param_1 + 2) = uVar2 & 0xffe0 | uVar1 & 0x1f;\n    *(ushort *)param_1 = uVar4 & 0xf800 | uVar2 & 0x1f | uVar1 & 0x7e0;\n    return;\n  }\n  if (param_3 != 0) {\n    uVar4 = (ushort)(uVar3 >> 0xb) & 0x3e0 | uVar4 & 0xfc00 | (ushort)((uVar3 << 6) >> 0x1b);\n  }\n  *(ushort *)param_1 = uVar4;\n  *(ushort *)((int)param_1 + 2) = uVar1;\n  return;\n}\n\n" (function_definition "void FUN_000e15f4(uint *param_1,int param_2,int param_3)\n\n{\n  ushort uVar1;\n  ushort uVar2;\n  uint uVar3;\n  ushort uVar4;\n  \n  if (0xc < param_2 - 100U) {\n    if (param_2 - 0x85U < 0x29) {\n                    /* WARNING: Could not emulate address calculation at 0x000e166c */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c +\n                        (param_2 - 0x85U) * 4 + 0x4f28) + 0x3210))();\n      return;\n    }\n    return;\n  }\n  uVar3 = *param_1;\n  uVar4 = (ushort)(uVar3 >> 0x10);\n  uVar1 = (ushort)uVar3;\n  if (param_2 != 100) {\n    uVar2 = (ushort)((uVar3 << 5) >> 0x10);\n    *(ushort *)((int)param_1 + 2) = uVar2 & 0xffe0 | uVar1 & 0x1f;\n    *(ushort *)param_1 = uVar4 & 0xf800 | uVar2 & 0x1f | uVar1 & 0x7e0;\n    return;\n  }\n  if (param_3 != 0) {\n    uVar4 = (ushort)(uVar3 >> 0xb) & 0x3e0 | uVar4 & 0xfc00 | (ushort)((uVar3 << 6) >> 0x1b);\n  }\n  *(ushort *)param_1 = uVar4;\n  *(ushort *)((int)param_1 + 2) = uVar1;\n  return;\n}" primitive_type (function_declarator "FUN_000e15f4(uint *param_1,int param_2,int param_3)" identifier (parameter_list "(uint *param_1,int param_2,int param_3)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  ushort uVar1;\n  ushort uVar2;\n  uint uVar3;\n  ushort uVar4;\n  \n  if (0xc < param_2 - 100U) {\n    if (param_2 - 0x85U < 0x29) {\n                    /* WARNING: Could not emulate address calculation at 0x000e166c */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c +\n                        (param_2 - 0x85U) * 4 + 0x4f28) + 0x3210))();\n      return;\n    }\n    return;\n  }\n  uVar3 = *param_1;\n  uVar4 = (ushort)(uVar3 >> 0x10);\n  uVar1 = (ushort)uVar3;\n  if (param_2 != 100) {\n    uVar2 = (ushort)((uVar3 << 5) >> 0x10);\n    *(ushort *)((int)param_1 + 2) = uVar2 & 0xffe0 | uVar1 & 0x1f;\n    *(ushort *)param_1 = uVar4 & 0xf800 | uVar2 & 0x1f | uVar1 & 0x7e0;\n    return;\n  }\n  if (param_3 != 0) {\n    uVar4 = (ushort)(uVar3 >> 0xb) & 0x3e0 | uVar4 & 0xfc00 | (ushort)((uVar3 << 6) >> 0x1b);\n  }\n  *(ushort *)param_1 = uVar4;\n  *(ushort *)((int)param_1 + 2) = uVar1;\n  return;\n}" { (declaration "ushort uVar1;" type_identifier identifier ;) (declaration "ushort uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "ushort uVar4;" type_identifier identifier ;) (if_statement "if (0xc < param_2 - 100U) {\n    if (param_2 - 0x85U < 0x29) {\n                    /* WARNING: Could not emulate address calculation at 0x000e166c */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c +\n                        (param_2 - 0x85U) * 4 + 0x4f28) + 0x3210))();\n      return;\n    }\n    return;\n  }" if (parenthesized_expression "(0xc < param_2 - 100U)" ( (binary_expression "0xc < param_2 - 100U" number_literal < (binary_expression "param_2 - 100U" identifier - number_literal)) )) (compound_statement "{\n    if (param_2 - 0x85U < 0x29) {\n                    /* WARNING: Could not emulate address calculation at 0x000e166c */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c +\n                        (param_2 - 0x85U) * 4 + 0x4f28) + 0x3210))();\n      return;\n    }\n    return;\n  }" { (if_statement "if (param_2 - 0x85U < 0x29) {\n                    /* WARNING: Could not emulate address calculation at 0x000e166c */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c +\n                        (param_2 - 0x85U) * 4 + 0x4f28) + 0x3210))();\n      return;\n    }" if (parenthesized_expression "(param_2 - 0x85U < 0x29)" ( (binary_expression "param_2 - 0x85U < 0x29" (binary_expression "param_2 - 0x85U" identifier - number_literal) < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not emulate address calculation at 0x000e166c */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c +\n                        (param_2 - 0x85U) * 4 + 0x4f28) + 0x3210))();\n      return;\n    }" { comment comment (expression_statement "(*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c +\n                        (param_2 - 0x85U) * 4 + 0x4f28) + 0x3210))();" (call_expression "(*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c +\n                        (param_2 - 0x85U) * 4 + 0x4f28) + 0x3210))()" (parenthesized_expression "(*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c +\n                        (param_2 - 0x85U) * 4 + 0x4f28) + 0x3210))" ( (pointer_expression "*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c +\n                        (param_2 - 0x85U) * 4 + 0x4f28) + 0x3210)" * (cast_expression "(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c +\n                        (param_2 - 0x85U) * 4 + 0x4f28) + 0x3210)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c +\n                        (param_2 - 0x85U) * 4 + 0x4f28) + 0x3210)" ( (ERROR "gold::Position_dependent_options::" identifier : : identifier : :) (binary_expression "default_options_ +\n                *(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c +\n                        (param_2 - 0x85U) * 4 + 0x4f28) + 0x3210" (binary_expression "default_options_ +\n                *(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c +\n                        (param_2 - 0x85U) * 4 + 0x4f28)" identifier + (pointer_expression "*(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c +\n                        (param_2 - 0x85U) * 4 + 0x4f28)" * (cast_expression "(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c +\n                        (param_2 - 0x85U) * 4 + 0x4f28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_ral_options14Struct_no_crefE_004c127c +\n                        (param_2 - 0x85U) * 4 + 0x4f28)" ( (binary_expression "PTR_s_ral_options14Struct_no_crefE_004c127c +\n                        (param_2 - 0x85U) * 4 + 0x4f28" (binary_expression "PTR_s_ral_options14Struct_no_crefE_004c127c +\n                        (param_2 - 0x85U) * 4" identifier + (binary_expression "(param_2 - 0x85U) * 4" (parenthesized_expression "(param_2 - 0x85U)" ( (binary_expression "param_2 - 0x85U" identifier - number_literal) )) * number_literal)) + number_literal) ))))) + number_literal) )))) )) (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (return_statement "return;" return ;) })) (expression_statement "uVar3 = *param_1;" (assignment_expression "uVar3 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar4 = (ushort)(uVar3 >> 0x10);" (assignment_expression "uVar4 = (ushort)(uVar3 >> 0x10)" identifier = (call_expression "(ushort)(uVar3 >> 0x10)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(uVar3 >> 0x10)" ( (binary_expression "uVar3 >> 0x10" identifier >> number_literal) )))) ;) (expression_statement "uVar1 = (ushort)uVar3;" (assignment_expression "uVar1 = (ushort)uVar3" identifier = (cast_expression "(ushort)uVar3" ( (type_descriptor "ushort" type_identifier) ) identifier)) ;) (if_statement "if (param_2 != 100) {\n    uVar2 = (ushort)((uVar3 << 5) >> 0x10);\n    *(ushort *)((int)param_1 + 2) = uVar2 & 0xffe0 | uVar1 & 0x1f;\n    *(ushort *)param_1 = uVar4 & 0xf800 | uVar2 & 0x1f | uVar1 & 0x7e0;\n    return;\n  }" if (parenthesized_expression "(param_2 != 100)" ( (binary_expression "param_2 != 100" identifier != number_literal) )) (compound_statement "{\n    uVar2 = (ushort)((uVar3 << 5) >> 0x10);\n    *(ushort *)((int)param_1 + 2) = uVar2 & 0xffe0 | uVar1 & 0x1f;\n    *(ushort *)param_1 = uVar4 & 0xf800 | uVar2 & 0x1f | uVar1 & 0x7e0;\n    return;\n  }" { (expression_statement "uVar2 = (ushort)((uVar3 << 5) >> 0x10);" (assignment_expression "uVar2 = (ushort)((uVar3 << 5) >> 0x10)" identifier = (call_expression "(ushort)((uVar3 << 5) >> 0x10)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "((uVar3 << 5) >> 0x10)" ( (binary_expression "(uVar3 << 5) >> 0x10" (parenthesized_expression "(uVar3 << 5)" ( (binary_expression "uVar3 << 5" identifier << number_literal) )) >> number_literal) )))) ;) (expression_statement "*(ushort *)((int)param_1 + 2) = uVar2 & 0xffe0 | uVar1 & 0x1f;" (assignment_expression "*(ushort *)((int)param_1 + 2) = uVar2 & 0xffe0 | uVar1 & 0x1f" (pointer_expression "*(ushort *)((int)param_1 + 2)" * (cast_expression "(ushort *)((int)param_1 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 2)" ( (binary_expression "(int)param_1 + 2" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "uVar2 & 0xffe0 | uVar1 & 0x1f" (binary_expression "uVar2 & 0xffe0" identifier & number_literal) | (binary_expression "uVar1 & 0x1f" identifier & number_literal))) ;) (expression_statement "*(ushort *)param_1 = uVar4 & 0xf800 | uVar2 & 0x1f | uVar1 & 0x7e0;" (assignment_expression "*(ushort *)param_1 = uVar4 & 0xf800 | uVar2 & 0x1f | uVar1 & 0x7e0" (pointer_expression "*(ushort *)param_1" * (cast_expression "(ushort *)param_1" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (binary_expression "uVar4 & 0xf800 | uVar2 & 0x1f | uVar1 & 0x7e0" (binary_expression "uVar4 & 0xf800 | uVar2 & 0x1f" (binary_expression "uVar4 & 0xf800" identifier & number_literal) | (binary_expression "uVar2 & 0x1f" identifier & number_literal)) | (binary_expression "uVar1 & 0x7e0" identifier & number_literal))) ;) (return_statement "return;" return ;) })) (if_statement "if (param_3 != 0) {\n    uVar4 = (ushort)(uVar3 >> 0xb) & 0x3e0 | uVar4 & 0xfc00 | (ushort)((uVar3 << 6) >> 0x1b);\n  }" if (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar4 = (ushort)(uVar3 >> 0xb) & 0x3e0 | uVar4 & 0xfc00 | (ushort)((uVar3 << 6) >> 0x1b);\n  }" { (expression_statement "uVar4 = (ushort)(uVar3 >> 0xb) & 0x3e0 | uVar4 & 0xfc00 | (ushort)((uVar3 << 6) >> 0x1b);" (assignment_expression "uVar4 = (ushort)(uVar3 >> 0xb) & 0x3e0 | uVar4 & 0xfc00 | (ushort)((uVar3 << 6) >> 0x1b)" identifier = (binary_expression "(ushort)(uVar3 >> 0xb) & 0x3e0 | uVar4 & 0xfc00 | (ushort)((uVar3 << 6) >> 0x1b)" (binary_expression "(ushort)(uVar3 >> 0xb) & 0x3e0 | uVar4 & 0xfc00" (binary_expression "(ushort)(uVar3 >> 0xb) & 0x3e0" (call_expression "(ushort)(uVar3 >> 0xb)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(uVar3 >> 0xb)" ( (binary_expression "uVar3 >> 0xb" identifier >> number_literal) ))) & number_literal) | (binary_expression "uVar4 & 0xfc00" identifier & number_literal)) | (call_expression "(ushort)((uVar3 << 6) >> 0x1b)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "((uVar3 << 6) >> 0x1b)" ( (binary_expression "(uVar3 << 6) >> 0x1b" (parenthesized_expression "(uVar3 << 6)" ( (binary_expression "uVar3 << 6" identifier << number_literal) )) >> number_literal) ))))) ;) })) (expression_statement "*(ushort *)param_1 = uVar4;" (assignment_expression "*(ushort *)param_1 = uVar4" (pointer_expression "*(ushort *)param_1" * (cast_expression "(ushort *)param_1" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (expression_statement "*(ushort *)((int)param_1 + 2) = uVar1;" (assignment_expression "*(ushort *)((int)param_1 + 2) = uVar1" (pointer_expression "*(ushort *)((int)param_1 + 2)" * (cast_expression "(ushort *)((int)param_1 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 2)" ( (binary_expression "(int)param_1 + 2" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */\n/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */\n/* WARNING: Struct "Output_section_headers": ignoring overlapping field "layout_" */\n/* WARNING: Enum "DT": Some values do not have unique names */\n/* WARNING: Struct "Output_reduced_debug_abbrev_section": ignoring overlapping field "data_" */\n/* WARNING: Struct "Output_reduced_debug_info_section": ignoring overlapping field "data_" */\n\nvoid anon_unknown.dwarf_29466b::Mips_relocate_functions<32,_true>::mips_reloc_shuffle\n               (uchar *view,uint r_type,bool jal_shuffle)\n\n{\n  ushort uVar1;\n  ushort uVar2;\n  uint uVar3;\n  ushort uVar4;\n  undefined3 in_register_00000018;\n  \n  if (0xc < r_type - 100) {\n    if (r_type - 0x85 < 0x29) {\n                    /* WARNING: Could not emulate address calculation at 0x000e166c */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(&gold::Position_dependent_options::default_options_.relax_.user_set_via_option +\n                *(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c + (r_type - 0x85) * 4 + 0x4f28)\n                ))();\n      return;\n    }\n    return;\n  }\n  uVar3 = *(uint *)view;\n  uVar4 = (ushort)(uVar3 >> 0x10);\n  uVar1 = (ushort)uVar3;\n  if (r_type != 100) {\n    uVar2 = (ushort)((uVar3 << 5) >> 0x10);\n    *(ushort *)(view + 2) = uVar2 & 0xffe0 | uVar1 & 0x1f;\n    *(ushort *)view = uVar4 & 0xf800 | uVar2 & 0x1f | uVar1 & 0x7e0;\n    return;\n  }\n  if (CONCAT31(in_register_00000018,jal_shuffle) != 0) {\n    uVar4 = (ushort)(uVar3 >> 0xb) & 0x3e0 | uVar4 & 0xfc00 | (ushort)((uVar3 << 6) >> 0x1b);\n  }\n  *(ushort *)view = uVar4;\n  *(ushort *)(view + 2) = uVar1;\n  return;\n}\n\n" comment comment comment comment comment comment (declaration "void anon_unknown.dwarf_29466b::Mips_relocate_functions<32,_true>::mips_reloc_shuffle\n               (uchar *view,uint r_type,bool jal_shuffle)\n\n{\n  ushort uVar1;" primitive_type (ERROR "anon_unknown.dwarf_29466b::" identifier . identifier : :) identifier (ERROR "<32" < number_literal) , (ERROR "_true>::mips_reloc_shuffle\n               (uchar *view,uint r_type,bool jal_shuffle)\n\n{\n  ushort" identifier > : : (function_declarator "mips_reloc_shuffle\n               (uchar *view,uint r_type,bool jal_shuffle)" identifier (parameter_list "(uchar *view,uint r_type,bool jal_shuffle)" ( (parameter_declaration "uchar *view" type_identifier (pointer_declarator "*view" * identifier)) , (parameter_declaration "uint r_type" type_identifier identifier) , (parameter_declaration "bool jal_shuffle" primitive_type identifier) ))) { identifier) identifier ;) (declaration "ushort uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "ushort uVar4;" type_identifier identifier ;) (declaration "undefined3 in_register_00000018;" type_identifier identifier ;) (if_statement "if (0xc < r_type - 100) {\n    if (r_type - 0x85 < 0x29) {\n                    /* WARNING: Could not emulate address calculation at 0x000e166c */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(&gold::Position_dependent_options::default_options_.relax_.user_set_via_option +\n                *(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c + (r_type - 0x85) * 4 + 0x4f28)\n                ))();\n      return;\n    }\n    return;\n  }" if (parenthesized_expression "(0xc < r_type - 100)" ( (binary_expression "0xc < r_type - 100" number_literal < (binary_expression "r_type - 100" identifier - number_literal)) )) (compound_statement "{\n    if (r_type - 0x85 < 0x29) {\n                    /* WARNING: Could not emulate address calculation at 0x000e166c */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(&gold::Position_dependent_options::default_options_.relax_.user_set_via_option +\n                *(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c + (r_type - 0x85) * 4 + 0x4f28)\n                ))();\n      return;\n    }\n    return;\n  }" { (if_statement "if (r_type - 0x85 < 0x29) {\n                    /* WARNING: Could not emulate address calculation at 0x000e166c */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(&gold::Position_dependent_options::default_options_.relax_.user_set_via_option +\n                *(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c + (r_type - 0x85) * 4 + 0x4f28)\n                ))();\n      return;\n    }" if (parenthesized_expression "(r_type - 0x85 < 0x29)" ( (binary_expression "r_type - 0x85 < 0x29" (binary_expression "r_type - 0x85" identifier - number_literal) < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not emulate address calculation at 0x000e166c */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(&gold::Position_dependent_options::default_options_.relax_.user_set_via_option +\n                *(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c + (r_type - 0x85) * 4 + 0x4f28)\n                ))();\n      return;\n    }" { comment comment (expression_statement "(*(code *)(&gold::Position_dependent_options::default_options_.relax_.user_set_via_option +\n                *(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c + (r_type - 0x85) * 4 + 0x4f28)\n                ))();" (call_expression "(*(code *)(&gold::Position_dependent_options::default_options_.relax_.user_set_via_option +\n                *(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c + (r_type - 0x85) * 4 + 0x4f28)\n                ))()" (parenthesized_expression "(*(code *)(&gold::Position_dependent_options::default_options_.relax_.user_set_via_option +\n                *(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c + (r_type - 0x85) * 4 + 0x4f28)\n                ))" ( (pointer_expression "*(code *)(&gold::Position_dependent_options::default_options_.relax_.user_set_via_option +\n                *(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c + (r_type - 0x85) * 4 + 0x4f28)\n                )" * (cast_expression "(code *)(&gold::Position_dependent_options::default_options_.relax_.user_set_via_option +\n                *(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c + (r_type - 0x85) * 4 + 0x4f28)\n                )" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&gold::Position_dependent_options::default_options_.relax_.user_set_via_option +\n                *(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c + (r_type - 0x85) * 4 + 0x4f28)\n                )" ( (ERROR "&gold::Position_dependent_options::" (pointer_expression "&gold" & identifier) : : identifier : :) (binary_expression "default_options_.relax_.user_set_via_option +\n                *(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c + (r_type - 0x85) * 4 + 0x4f28)" (field_expression "default_options_.relax_.user_set_via_option" (field_expression "default_options_.relax_" identifier . field_identifier) . field_identifier) + (pointer_expression "*(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c + (r_type - 0x85) * 4 + 0x4f28)" * (cast_expression "(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c + (r_type - 0x85) * 4 + 0x4f28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_ral_options14Struct_no_crefE_004c127c + (r_type - 0x85) * 4 + 0x4f28)" ( (binary_expression "PTR_s_ral_options14Struct_no_crefE_004c127c + (r_type - 0x85) * 4 + 0x4f28" (binary_expression "PTR_s_ral_options14Struct_no_crefE_004c127c + (r_type - 0x85) * 4" identifier + (binary_expression "(r_type - 0x85) * 4" (parenthesized_expression "(r_type - 0x85)" ( (binary_expression "r_type - 0x85" identifier - number_literal) )) * number_literal)) + number_literal) ))))) )))) )) (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (return_statement "return;" return ;) })) (expression_statement "uVar3 = *(uint *)view;" (assignment_expression "uVar3 = *(uint *)view" identifier = (pointer_expression "*(uint *)view" * (cast_expression "(uint *)view" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar4 = (ushort)(uVar3 >> 0x10);" (assignment_expression "uVar4 = (ushort)(uVar3 >> 0x10)" identifier = (call_expression "(ushort)(uVar3 >> 0x10)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(uVar3 >> 0x10)" ( (binary_expression "uVar3 >> 0x10" identifier >> number_literal) )))) ;) (expression_statement "uVar1 = (ushort)uVar3;" (assignment_expression "uVar1 = (ushort)uVar3" identifier = (cast_expression "(ushort)uVar3" ( (type_descriptor "ushort" type_identifier) ) identifier)) ;) (if_statement "if (r_type != 100) {\n    uVar2 = (ushort)((uVar3 << 5) >> 0x10);\n    *(ushort *)(view + 2) = uVar2 & 0xffe0 | uVar1 & 0x1f;\n    *(ushort *)view = uVar4 & 0xf800 | uVar2 & 0x1f | uVar1 & 0x7e0;\n    return;\n  }" if (parenthesized_expression "(r_type != 100)" ( (binary_expression "r_type != 100" identifier != number_literal) )) (compound_statement "{\n    uVar2 = (ushort)((uVar3 << 5) >> 0x10);\n    *(ushort *)(view + 2) = uVar2 & 0xffe0 | uVar1 & 0x1f;\n    *(ushort *)view = uVar4 & 0xf800 | uVar2 & 0x1f | uVar1 & 0x7e0;\n    return;\n  }" { (expression_statement "uVar2 = (ushort)((uVar3 << 5) >> 0x10);" (assignment_expression "uVar2 = (ushort)((uVar3 << 5) >> 0x10)" identifier = (call_expression "(ushort)((uVar3 << 5) >> 0x10)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "((uVar3 << 5) >> 0x10)" ( (binary_expression "(uVar3 << 5) >> 0x10" (parenthesized_expression "(uVar3 << 5)" ( (binary_expression "uVar3 << 5" identifier << number_literal) )) >> number_literal) )))) ;) (expression_statement "*(ushort *)(view + 2) = uVar2 & 0xffe0 | uVar1 & 0x1f;" (assignment_expression "*(ushort *)(view + 2) = uVar2 & 0xffe0 | uVar1 & 0x1f" (pointer_expression "*(ushort *)(view + 2)" * (cast_expression "(ushort *)(view + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(view + 2)" ( (binary_expression "view + 2" identifier + number_literal) )))) = (binary_expression "uVar2 & 0xffe0 | uVar1 & 0x1f" (binary_expression "uVar2 & 0xffe0" identifier & number_literal) | (binary_expression "uVar1 & 0x1f" identifier & number_literal))) ;) (expression_statement "*(ushort *)view = uVar4 & 0xf800 | uVar2 & 0x1f | uVar1 & 0x7e0;" (assignment_expression "*(ushort *)view = uVar4 & 0xf800 | uVar2 & 0x1f | uVar1 & 0x7e0" (pointer_expression "*(ushort *)view" * (cast_expression "(ushort *)view" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (binary_expression "uVar4 & 0xf800 | uVar2 & 0x1f | uVar1 & 0x7e0" (binary_expression "uVar4 & 0xf800 | uVar2 & 0x1f" (binary_expression "uVar4 & 0xf800" identifier & number_literal) | (binary_expression "uVar2 & 0x1f" identifier & number_literal)) | (binary_expression "uVar1 & 0x7e0" identifier & number_literal))) ;) (return_statement "return;" return ;) })) (if_statement "if (CONCAT31(in_register_00000018,jal_shuffle) != 0) {\n    uVar4 = (ushort)(uVar3 >> 0xb) & 0x3e0 | uVar4 & 0xfc00 | (ushort)((uVar3 << 6) >> 0x1b);\n  }" if (parenthesized_expression "(CONCAT31(in_register_00000018,jal_shuffle) != 0)" ( (binary_expression "CONCAT31(in_register_00000018,jal_shuffle) != 0" (call_expression "CONCAT31(in_register_00000018,jal_shuffle)" identifier (argument_list "(in_register_00000018,jal_shuffle)" ( identifier , identifier ))) != number_literal) )) (compound_statement "{\n    uVar4 = (ushort)(uVar3 >> 0xb) & 0x3e0 | uVar4 & 0xfc00 | (ushort)((uVar3 << 6) >> 0x1b);\n  }" { (expression_statement "uVar4 = (ushort)(uVar3 >> 0xb) & 0x3e0 | uVar4 & 0xfc00 | (ushort)((uVar3 << 6) >> 0x1b);" (assignment_expression "uVar4 = (ushort)(uVar3 >> 0xb) & 0x3e0 | uVar4 & 0xfc00 | (ushort)((uVar3 << 6) >> 0x1b)" identifier = (binary_expression "(ushort)(uVar3 >> 0xb) & 0x3e0 | uVar4 & 0xfc00 | (ushort)((uVar3 << 6) >> 0x1b)" (binary_expression "(ushort)(uVar3 >> 0xb) & 0x3e0 | uVar4 & 0xfc00" (binary_expression "(ushort)(uVar3 >> 0xb) & 0x3e0" (call_expression "(ushort)(uVar3 >> 0xb)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(uVar3 >> 0xb)" ( (binary_expression "uVar3 >> 0xb" identifier >> number_literal) ))) & number_literal) | (binary_expression "uVar4 & 0xfc00" identifier & number_literal)) | (call_expression "(ushort)((uVar3 << 6) >> 0x1b)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "((uVar3 << 6) >> 0x1b)" ( (binary_expression "(uVar3 << 6) >> 0x1b" (parenthesized_expression "(uVar3 << 6)" ( (binary_expression "uVar3 << 6" identifier << number_literal) )) >> number_literal) ))))) ;) })) (expression_statement "*(ushort *)view = uVar4;" (assignment_expression "*(ushort *)view = uVar4" (pointer_expression "*(ushort *)view" * (cast_expression "(ushort *)view" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (expression_statement "*(ushort *)(view + 2) = uVar1;" (assignment_expression "*(ushort *)(view + 2) = uVar1" (pointer_expression "*(ushort *)(view + 2)" * (cast_expression "(ushort *)(view + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(view + 2)" ( (binary_expression "view + 2" identifier + number_literal) )))) = identifier) ;) (return_statement "return;" return ;) (ERROR "}" }))
(translation_unit "void FUN_000e15f4(uint *param_1,int param_2,int param_3)\n\n{\n  ushort uVar1;\n  ushort uVar2;\n  uint uVar3;\n  ushort uVar4;\n  \n  if (0xc < param_2 - 100U) {\n    if (param_2 - 0x85U < 0x29) {\n                    \n                    \n      (*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c +\n                        (param_2 - 0x85U) * 4 + 0x4f28) + 0x3210))();\n      return;\n    }\n    return;\n  }\n  uVar3 = *param_1;\n  uVar4 = (ushort)(uVar3 >> 0x10);\n  uVar1 = (ushort)uVar3;\n  if (param_2 != 100) {\n    uVar2 = (ushort)((uVar3 << 5) >> 0x10);\n    *(ushort *)((int)param_1 + 2) = uVar2 & 0xffe0 | uVar1 & 0x1f;\n    *(ushort *)param_1 = uVar4 & 0xf800 | uVar2 & 0x1f | uVar1 & 0x7e0;\n    return;\n  }\n  if (param_3 != 0) {\n    uVar4 = (ushort)(uVar3 >> 0xb) & 0x3e0 | uVar4 & 0xfc00 | (ushort)((uVar3 << 6) >> 0x1b);\n  }\n  *(ushort *)param_1 = uVar4;\n  *(ushort *)((int)param_1 + 2) = uVar1;\n  return;\n}\n\n" (function_definition "void FUN_000e15f4(uint *param_1,int param_2,int param_3)\n\n{\n  ushort uVar1;\n  ushort uVar2;\n  uint uVar3;\n  ushort uVar4;\n  \n  if (0xc < param_2 - 100U) {\n    if (param_2 - 0x85U < 0x29) {\n                    \n                    \n      (*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c +\n                        (param_2 - 0x85U) * 4 + 0x4f28) + 0x3210))();\n      return;\n    }\n    return;\n  }\n  uVar3 = *param_1;\n  uVar4 = (ushort)(uVar3 >> 0x10);\n  uVar1 = (ushort)uVar3;\n  if (param_2 != 100) {\n    uVar2 = (ushort)((uVar3 << 5) >> 0x10);\n    *(ushort *)((int)param_1 + 2) = uVar2 & 0xffe0 | uVar1 & 0x1f;\n    *(ushort *)param_1 = uVar4 & 0xf800 | uVar2 & 0x1f | uVar1 & 0x7e0;\n    return;\n  }\n  if (param_3 != 0) {\n    uVar4 = (ushort)(uVar3 >> 0xb) & 0x3e0 | uVar4 & 0xfc00 | (ushort)((uVar3 << 6) >> 0x1b);\n  }\n  *(ushort *)param_1 = uVar4;\n  *(ushort *)((int)param_1 + 2) = uVar1;\n  return;\n}" primitive_type (function_declarator "FUN_000e15f4(uint *param_1,int param_2,int param_3)" identifier (parameter_list "(uint *param_1,int param_2,int param_3)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  ushort uVar1;\n  ushort uVar2;\n  uint uVar3;\n  ushort uVar4;\n  \n  if (0xc < param_2 - 100U) {\n    if (param_2 - 0x85U < 0x29) {\n                    \n                    \n      (*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c +\n                        (param_2 - 0x85U) * 4 + 0x4f28) + 0x3210))();\n      return;\n    }\n    return;\n  }\n  uVar3 = *param_1;\n  uVar4 = (ushort)(uVar3 >> 0x10);\n  uVar1 = (ushort)uVar3;\n  if (param_2 != 100) {\n    uVar2 = (ushort)((uVar3 << 5) >> 0x10);\n    *(ushort *)((int)param_1 + 2) = uVar2 & 0xffe0 | uVar1 & 0x1f;\n    *(ushort *)param_1 = uVar4 & 0xf800 | uVar2 & 0x1f | uVar1 & 0x7e0;\n    return;\n  }\n  if (param_3 != 0) {\n    uVar4 = (ushort)(uVar3 >> 0xb) & 0x3e0 | uVar4 & 0xfc00 | (ushort)((uVar3 << 6) >> 0x1b);\n  }\n  *(ushort *)param_1 = uVar4;\n  *(ushort *)((int)param_1 + 2) = uVar1;\n  return;\n}" { (declaration "ushort uVar1;" type_identifier identifier ;) (declaration "ushort uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "ushort uVar4;" type_identifier identifier ;) (if_statement "if (0xc < param_2 - 100U) {\n    if (param_2 - 0x85U < 0x29) {\n                    \n                    \n      (*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c +\n                        (param_2 - 0x85U) * 4 + 0x4f28) + 0x3210))();\n      return;\n    }\n    return;\n  }" if (parenthesized_expression "(0xc < param_2 - 100U)" ( (binary_expression "0xc < param_2 - 100U" number_literal < (binary_expression "param_2 - 100U" identifier - number_literal)) )) (compound_statement "{\n    if (param_2 - 0x85U < 0x29) {\n                    \n                    \n      (*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c +\n                        (param_2 - 0x85U) * 4 + 0x4f28) + 0x3210))();\n      return;\n    }\n    return;\n  }" { (if_statement "if (param_2 - 0x85U < 0x29) {\n                    \n                    \n      (*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c +\n                        (param_2 - 0x85U) * 4 + 0x4f28) + 0x3210))();\n      return;\n    }" if (parenthesized_expression "(param_2 - 0x85U < 0x29)" ( (binary_expression "param_2 - 0x85U < 0x29" (binary_expression "param_2 - 0x85U" identifier - number_literal) < number_literal) )) (compound_statement "{\n                    \n                    \n      (*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c +\n                        (param_2 - 0x85U) * 4 + 0x4f28) + 0x3210))();\n      return;\n    }" { (expression_statement "(*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c +\n                        (param_2 - 0x85U) * 4 + 0x4f28) + 0x3210))();" (call_expression "(*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c +\n                        (param_2 - 0x85U) * 4 + 0x4f28) + 0x3210))()" (parenthesized_expression "(*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c +\n                        (param_2 - 0x85U) * 4 + 0x4f28) + 0x3210))" ( (pointer_expression "*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c +\n                        (param_2 - 0x85U) * 4 + 0x4f28) + 0x3210)" * (cast_expression "(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c +\n                        (param_2 - 0x85U) * 4 + 0x4f28) + 0x3210)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c +\n                        (param_2 - 0x85U) * 4 + 0x4f28) + 0x3210)" ( (ERROR "gold::Position_dependent_options::" identifier : : identifier : :) (binary_expression "default_options_ +\n                *(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c +\n                        (param_2 - 0x85U) * 4 + 0x4f28) + 0x3210" (binary_expression "default_options_ +\n                *(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c +\n                        (param_2 - 0x85U) * 4 + 0x4f28)" identifier + (pointer_expression "*(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c +\n                        (param_2 - 0x85U) * 4 + 0x4f28)" * (cast_expression "(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c +\n                        (param_2 - 0x85U) * 4 + 0x4f28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_ral_options14Struct_no_crefE_004c127c +\n                        (param_2 - 0x85U) * 4 + 0x4f28)" ( (binary_expression "PTR_s_ral_options14Struct_no_crefE_004c127c +\n                        (param_2 - 0x85U) * 4 + 0x4f28" (binary_expression "PTR_s_ral_options14Struct_no_crefE_004c127c +\n                        (param_2 - 0x85U) * 4" identifier + (binary_expression "(param_2 - 0x85U) * 4" (parenthesized_expression "(param_2 - 0x85U)" ( (binary_expression "param_2 - 0x85U" identifier - number_literal) )) * number_literal)) + number_literal) ))))) + number_literal) )))) )) (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (return_statement "return;" return ;) })) (expression_statement "uVar3 = *param_1;" (assignment_expression "uVar3 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar4 = (ushort)(uVar3 >> 0x10);" (assignment_expression "uVar4 = (ushort)(uVar3 >> 0x10)" identifier = (call_expression "(ushort)(uVar3 >> 0x10)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(uVar3 >> 0x10)" ( (binary_expression "uVar3 >> 0x10" identifier >> number_literal) )))) ;) (expression_statement "uVar1 = (ushort)uVar3;" (assignment_expression "uVar1 = (ushort)uVar3" identifier = (cast_expression "(ushort)uVar3" ( (type_descriptor "ushort" type_identifier) ) identifier)) ;) (if_statement "if (param_2 != 100) {\n    uVar2 = (ushort)((uVar3 << 5) >> 0x10);\n    *(ushort *)((int)param_1 + 2) = uVar2 & 0xffe0 | uVar1 & 0x1f;\n    *(ushort *)param_1 = uVar4 & 0xf800 | uVar2 & 0x1f | uVar1 & 0x7e0;\n    return;\n  }" if (parenthesized_expression "(param_2 != 100)" ( (binary_expression "param_2 != 100" identifier != number_literal) )) (compound_statement "{\n    uVar2 = (ushort)((uVar3 << 5) >> 0x10);\n    *(ushort *)((int)param_1 + 2) = uVar2 & 0xffe0 | uVar1 & 0x1f;\n    *(ushort *)param_1 = uVar4 & 0xf800 | uVar2 & 0x1f | uVar1 & 0x7e0;\n    return;\n  }" { (expression_statement "uVar2 = (ushort)((uVar3 << 5) >> 0x10);" (assignment_expression "uVar2 = (ushort)((uVar3 << 5) >> 0x10)" identifier = (call_expression "(ushort)((uVar3 << 5) >> 0x10)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "((uVar3 << 5) >> 0x10)" ( (binary_expression "(uVar3 << 5) >> 0x10" (parenthesized_expression "(uVar3 << 5)" ( (binary_expression "uVar3 << 5" identifier << number_literal) )) >> number_literal) )))) ;) (expression_statement "*(ushort *)((int)param_1 + 2) = uVar2 & 0xffe0 | uVar1 & 0x1f;" (assignment_expression "*(ushort *)((int)param_1 + 2) = uVar2 & 0xffe0 | uVar1 & 0x1f" (pointer_expression "*(ushort *)((int)param_1 + 2)" * (cast_expression "(ushort *)((int)param_1 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 2)" ( (binary_expression "(int)param_1 + 2" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "uVar2 & 0xffe0 | uVar1 & 0x1f" (binary_expression "uVar2 & 0xffe0" identifier & number_literal) | (binary_expression "uVar1 & 0x1f" identifier & number_literal))) ;) (expression_statement "*(ushort *)param_1 = uVar4 & 0xf800 | uVar2 & 0x1f | uVar1 & 0x7e0;" (assignment_expression "*(ushort *)param_1 = uVar4 & 0xf800 | uVar2 & 0x1f | uVar1 & 0x7e0" (pointer_expression "*(ushort *)param_1" * (cast_expression "(ushort *)param_1" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (binary_expression "uVar4 & 0xf800 | uVar2 & 0x1f | uVar1 & 0x7e0" (binary_expression "uVar4 & 0xf800 | uVar2 & 0x1f" (binary_expression "uVar4 & 0xf800" identifier & number_literal) | (binary_expression "uVar2 & 0x1f" identifier & number_literal)) | (binary_expression "uVar1 & 0x7e0" identifier & number_literal))) ;) (return_statement "return;" return ;) })) (if_statement "if (param_3 != 0) {\n    uVar4 = (ushort)(uVar3 >> 0xb) & 0x3e0 | uVar4 & 0xfc00 | (ushort)((uVar3 << 6) >> 0x1b);\n  }" if (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar4 = (ushort)(uVar3 >> 0xb) & 0x3e0 | uVar4 & 0xfc00 | (ushort)((uVar3 << 6) >> 0x1b);\n  }" { (expression_statement "uVar4 = (ushort)(uVar3 >> 0xb) & 0x3e0 | uVar4 & 0xfc00 | (ushort)((uVar3 << 6) >> 0x1b);" (assignment_expression "uVar4 = (ushort)(uVar3 >> 0xb) & 0x3e0 | uVar4 & 0xfc00 | (ushort)((uVar3 << 6) >> 0x1b)" identifier = (binary_expression "(ushort)(uVar3 >> 0xb) & 0x3e0 | uVar4 & 0xfc00 | (ushort)((uVar3 << 6) >> 0x1b)" (binary_expression "(ushort)(uVar3 >> 0xb) & 0x3e0 | uVar4 & 0xfc00" (binary_expression "(ushort)(uVar3 >> 0xb) & 0x3e0" (call_expression "(ushort)(uVar3 >> 0xb)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "(uVar3 >> 0xb)" ( (binary_expression "uVar3 >> 0xb" identifier >> number_literal) ))) & number_literal) | (binary_expression "uVar4 & 0xfc00" identifier & number_literal)) | (call_expression "(ushort)((uVar3 << 6) >> 0x1b)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "((uVar3 << 6) >> 0x1b)" ( (binary_expression "(uVar3 << 6) >> 0x1b" (parenthesized_expression "(uVar3 << 6)" ( (binary_expression "uVar3 << 6" identifier << number_literal) )) >> number_literal) ))))) ;) })) (expression_statement "*(ushort *)param_1 = uVar4;" (assignment_expression "*(ushort *)param_1 = uVar4" (pointer_expression "*(ushort *)param_1" * (cast_expression "(ushort *)param_1" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (expression_statement "*(ushort *)((int)param_1 + 2) = uVar1;" (assignment_expression "*(ushort *)((int)param_1 + 2) = uVar1" (pointer_expression "*(ushort *)((int)param_1 + 2)" * (cast_expression "(ushort *)((int)param_1 + 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 2)" ( (binary_expression "(int)param_1 + 2" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (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 ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (binary_expression IDENT - LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) < LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (ERROR IDENT : : IDENT : :) (binary_expression (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression IDENT - LIT) )) * LIT)) + LIT) ))))) + LIT) )))) )) (argument_list ( ))) ;) (return_statement return ;) })) (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression IDENT << LIT) )) >> LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression (binary_expression IDENT & LIT) | (binary_expression IDENT & LIT))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = (binary_expression (binary_expression (binary_expression IDENT & LIT) | (binary_expression IDENT & LIT)) | (binary_expression IDENT & LIT))) ;) (return_statement return ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) ))) & LIT) | (binary_expression IDENT & LIT)) | (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression IDENT << LIT) )) >> LIT) ))))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (return_statement return ;) })))
(function_definition "void FUN_000e15f4(uint *param_1,int param_2,int param_3)\n\n{\n  ushort uVar1;\n  ushort uVar2;\n  uint uVar3;\n  ushort uVar4;\n  \n  if (0xc < param_2 - 100U) {\n    if (param_2 - 0x85U < 0x29) {\n                    \n                    \n      (*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c +\n                        (param_2 - 0x85U) * 4 + 0x4f28) + 0x3210))();\n      return;\n    }\n    return;\n  }\n  uVar3 = *param_1;\n  uVar4 = (ushort)(uVar3 >> 0x10);\n  uVar1 = (ushort)uVar3;\n  if (param_2 != 100) {\n    uVar2 = (ushort)((uVar3 << 5) >> 0x10);\n    *(ushort *)((int)param_1 + 2) = uVar2 & 0xffe0 | uVar1 & 0x1f;\n    *(ushort *)param_1 = uVar4 & 0xf800 | uVar2 & 0x1f | uVar1 & 0x7e0;\n    return;\n  }\n  if (param_3 != 0) {\n    uVar4 = (ushort)(uVar3 >> 0xb) & 0x3e0 | uVar4 & 0xfc00 | (ushort)((uVar3 << 6) >> 0x1b);\n  }\n  *(ushort *)param_1 = uVar4;\n  *(ushort *)((int)param_1 + 2) = uVar1;\n  return;\n}" (primitive_type "void") (function_declarator "FUN_000e15f4(uint *param_1,int param_2,int param_3)" (identifier "FUN_000e15f4") (parameter_list "(uint *param_1,int param_2,int param_3)" (( "(") (parameter_declaration "uint *param_1" (type_identifier "uint") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) () ")"))) (compound_statement "{\n  ushort uVar1;\n  ushort uVar2;\n  uint uVar3;\n  ushort uVar4;\n  \n  if (0xc < param_2 - 100U) {\n    if (param_2 - 0x85U < 0x29) {\n                    \n                    \n      (*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c +\n                        (param_2 - 0x85U) * 4 + 0x4f28) + 0x3210))();\n      return;\n    }\n    return;\n  }\n  uVar3 = *param_1;\n  uVar4 = (ushort)(uVar3 >> 0x10);\n  uVar1 = (ushort)uVar3;\n  if (param_2 != 100) {\n    uVar2 = (ushort)((uVar3 << 5) >> 0x10);\n    *(ushort *)((int)param_1 + 2) = uVar2 & 0xffe0 | uVar1 & 0x1f;\n    *(ushort *)param_1 = uVar4 & 0xf800 | uVar2 & 0x1f | uVar1 & 0x7e0;\n    return;\n  }\n  if (param_3 != 0) {\n    uVar4 = (ushort)(uVar3 >> 0xb) & 0x3e0 | uVar4 & 0xfc00 | (ushort)((uVar3 << 6) >> 0x1b);\n  }\n  *(ushort *)param_1 = uVar4;\n  *(ushort *)((int)param_1 + 2) = uVar1;\n  return;\n}" ({ "{") (declaration "ushort uVar1;" (type_identifier "ushort") (identifier "uVar1") (; ";")) (declaration "ushort uVar2;" (type_identifier "ushort") (identifier "uVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "ushort uVar4;" (type_identifier "ushort") (identifier "uVar4") (; ";")) (if_statement "if (0xc < param_2 - 100U) {\n    if (param_2 - 0x85U < 0x29) {\n                    \n                    \n      (*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c +\n                        (param_2 - 0x85U) * 4 + 0x4f28) + 0x3210))();\n      return;\n    }\n    return;\n  }" (if "if") (parenthesized_expression "(0xc < param_2 - 100U)" (( "(") (binary_expression "0xc < param_2 - 100U" (number_literal "0xc") (< "<") (binary_expression "param_2 - 100U" (identifier "param_2") (- "-") (number_literal "100U"))) () ")")) (compound_statement "{\n    if (param_2 - 0x85U < 0x29) {\n                    \n                    \n      (*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c +\n                        (param_2 - 0x85U) * 4 + 0x4f28) + 0x3210))();\n      return;\n    }\n    return;\n  }" ({ "{") (if_statement "if (param_2 - 0x85U < 0x29) {\n                    \n                    \n      (*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c +\n                        (param_2 - 0x85U) * 4 + 0x4f28) + 0x3210))();\n      return;\n    }" (if "if") (parenthesized_expression "(param_2 - 0x85U < 0x29)" (( "(") (binary_expression "param_2 - 0x85U < 0x29" (binary_expression "param_2 - 0x85U" (identifier "param_2") (- "-") (number_literal "0x85U")) (< "<") (number_literal "0x29")) () ")")) (compound_statement "{\n                    \n                    \n      (*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c +\n                        (param_2 - 0x85U) * 4 + 0x4f28) + 0x3210))();\n      return;\n    }" ({ "{") (expression_statement "(*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c +\n                        (param_2 - 0x85U) * 4 + 0x4f28) + 0x3210))();" (call_expression "(*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c +\n                        (param_2 - 0x85U) * 4 + 0x4f28) + 0x3210))()" (parenthesized_expression "(*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c +\n                        (param_2 - 0x85U) * 4 + 0x4f28) + 0x3210))" (( "(") (pointer_expression "*(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c +\n                        (param_2 - 0x85U) * 4 + 0x4f28) + 0x3210)" (* "*") (cast_expression "(code *)(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c +\n                        (param_2 - 0x85U) * 4 + 0x4f28) + 0x3210)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(gold::Position_dependent_options::default_options_ +\n                *(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c +\n                        (param_2 - 0x85U) * 4 + 0x4f28) + 0x3210)" (( "(") (ERROR "gold::Position_dependent_options::" (identifier "gold") (: ":") (: ":") (identifier "Position_dependent_options") (: ":") (: ":")) (binary_expression "default_options_ +\n                *(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c +\n                        (param_2 - 0x85U) * 4 + 0x4f28) + 0x3210" (binary_expression "default_options_ +\n                *(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c +\n                        (param_2 - 0x85U) * 4 + 0x4f28)" (identifier "default_options_") (+ "+") (pointer_expression "*(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c +\n                        (param_2 - 0x85U) * 4 + 0x4f28)" (* "*") (cast_expression "(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c +\n                        (param_2 - 0x85U) * 4 + 0x4f28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_s_ral_options14Struct_no_crefE_004c127c +\n                        (param_2 - 0x85U) * 4 + 0x4f28)" (( "(") (binary_expression "PTR_s_ral_options14Struct_no_crefE_004c127c +\n                        (param_2 - 0x85U) * 4 + 0x4f28" (binary_expression "PTR_s_ral_options14Struct_no_crefE_004c127c +\n                        (param_2 - 0x85U) * 4" (identifier "PTR_s_ral_options14Struct_no_crefE_004c127c") (+ "+") (binary_expression "(param_2 - 0x85U) * 4" (parenthesized_expression "(param_2 - 0x85U)" (( "(") (binary_expression "param_2 - 0x85U" (identifier "param_2") (- "-") (number_literal "0x85U")) () ")")) (* "*") (number_literal "4"))) (+ "+") (number_literal "0x4f28")) () ")"))))) (+ "+") (number_literal "0x3210")) () ")")))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "uVar3 = *param_1;" (assignment_expression "uVar3 = *param_1" (identifier "uVar3") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "uVar4 = (ushort)(uVar3 >> 0x10);" (assignment_expression "uVar4 = (ushort)(uVar3 >> 0x10)" (identifier "uVar4") (= "=") (call_expression "(ushort)(uVar3 >> 0x10)" (parenthesized_expression "(ushort)" (( "(") (identifier "ushort") () ")")) (argument_list "(uVar3 >> 0x10)" (( "(") (binary_expression "uVar3 >> 0x10" (identifier "uVar3") (>> ">>") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "uVar1 = (ushort)uVar3;" (assignment_expression "uVar1 = (ushort)uVar3" (identifier "uVar1") (= "=") (cast_expression "(ushort)uVar3" (( "(") (type_descriptor "ushort" (type_identifier "ushort")) () ")") (identifier "uVar3"))) (; ";")) (if_statement "if (param_2 != 100) {\n    uVar2 = (ushort)((uVar3 << 5) >> 0x10);\n    *(ushort *)((int)param_1 + 2) = uVar2 & 0xffe0 | uVar1 & 0x1f;\n    *(ushort *)param_1 = uVar4 & 0xf800 | uVar2 & 0x1f | uVar1 & 0x7e0;\n    return;\n  }" (if "if") (parenthesized_expression "(param_2 != 100)" (( "(") (binary_expression "param_2 != 100" (identifier "param_2") (!= "!=") (number_literal "100")) () ")")) (compound_statement "{\n    uVar2 = (ushort)((uVar3 << 5) >> 0x10);\n    *(ushort *)((int)param_1 + 2) = uVar2 & 0xffe0 | uVar1 & 0x1f;\n    *(ushort *)param_1 = uVar4 & 0xf800 | uVar2 & 0x1f | uVar1 & 0x7e0;\n    return;\n  }" ({ "{") (expression_statement "uVar2 = (ushort)((uVar3 << 5) >> 0x10);" (assignment_expression "uVar2 = (ushort)((uVar3 << 5) >> 0x10)" (identifier "uVar2") (= "=") (call_expression "(ushort)((uVar3 << 5) >> 0x10)" (parenthesized_expression "(ushort)" (( "(") (identifier "ushort") () ")")) (argument_list "((uVar3 << 5) >> 0x10)" (( "(") (binary_expression "(uVar3 << 5) >> 0x10" (parenthesized_expression "(uVar3 << 5)" (( "(") (binary_expression "uVar3 << 5" (identifier "uVar3") (<< "<<") (number_literal "5")) () ")")) (>> ">>") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "*(ushort *)((int)param_1 + 2) = uVar2 & 0xffe0 | uVar1 & 0x1f;" (assignment_expression "*(ushort *)((int)param_1 + 2) = uVar2 & 0xffe0 | uVar1 & 0x1f" (pointer_expression "*(ushort *)((int)param_1 + 2)" (* "*") (cast_expression "(ushort *)((int)param_1 + 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 2)" (( "(") (binary_expression "(int)param_1 + 2" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "2")) () ")")))) (= "=") (binary_expression "uVar2 & 0xffe0 | uVar1 & 0x1f" (binary_expression "uVar2 & 0xffe0" (identifier "uVar2") (& "&") (number_literal "0xffe0")) (| "|") (binary_expression "uVar1 & 0x1f" (identifier "uVar1") (& "&") (number_literal "0x1f")))) (; ";")) (expression_statement "*(ushort *)param_1 = uVar4 & 0xf800 | uVar2 & 0x1f | uVar1 & 0x7e0;" (assignment_expression "*(ushort *)param_1 = uVar4 & 0xf800 | uVar2 & 0x1f | uVar1 & 0x7e0" (pointer_expression "*(ushort *)param_1" (* "*") (cast_expression "(ushort *)param_1" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_1"))) (= "=") (binary_expression "uVar4 & 0xf800 | uVar2 & 0x1f | uVar1 & 0x7e0" (binary_expression "uVar4 & 0xf800 | uVar2 & 0x1f" (binary_expression "uVar4 & 0xf800" (identifier "uVar4") (& "&") (number_literal "0xf800")) (| "|") (binary_expression "uVar2 & 0x1f" (identifier "uVar2") (& "&") (number_literal "0x1f"))) (| "|") (binary_expression "uVar1 & 0x7e0" (identifier "uVar1") (& "&") (number_literal "0x7e0")))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (param_3 != 0) {\n    uVar4 = (ushort)(uVar3 >> 0xb) & 0x3e0 | uVar4 & 0xfc00 | (ushort)((uVar3 << 6) >> 0x1b);\n  }" (if "if") (parenthesized_expression "(param_3 != 0)" (( "(") (binary_expression "param_3 != 0" (identifier "param_3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar4 = (ushort)(uVar3 >> 0xb) & 0x3e0 | uVar4 & 0xfc00 | (ushort)((uVar3 << 6) >> 0x1b);\n  }" ({ "{") (expression_statement "uVar4 = (ushort)(uVar3 >> 0xb) & 0x3e0 | uVar4 & 0xfc00 | (ushort)((uVar3 << 6) >> 0x1b);" (assignment_expression "uVar4 = (ushort)(uVar3 >> 0xb) & 0x3e0 | uVar4 & 0xfc00 | (ushort)((uVar3 << 6) >> 0x1b)" (identifier "uVar4") (= "=") (binary_expression "(ushort)(uVar3 >> 0xb) & 0x3e0 | uVar4 & 0xfc00 | (ushort)((uVar3 << 6) >> 0x1b)" (binary_expression "(ushort)(uVar3 >> 0xb) & 0x3e0 | uVar4 & 0xfc00" (binary_expression "(ushort)(uVar3 >> 0xb) & 0x3e0" (call_expression "(ushort)(uVar3 >> 0xb)" (parenthesized_expression "(ushort)" (( "(") (identifier "ushort") () ")")) (argument_list "(uVar3 >> 0xb)" (( "(") (binary_expression "uVar3 >> 0xb" (identifier "uVar3") (>> ">>") (number_literal "0xb")) () ")"))) (& "&") (number_literal "0x3e0")) (| "|") (binary_expression "uVar4 & 0xfc00" (identifier "uVar4") (& "&") (number_literal "0xfc00"))) (| "|") (call_expression "(ushort)((uVar3 << 6) >> 0x1b)" (parenthesized_expression "(ushort)" (( "(") (identifier "ushort") () ")")) (argument_list "((uVar3 << 6) >> 0x1b)" (( "(") (binary_expression "(uVar3 << 6) >> 0x1b" (parenthesized_expression "(uVar3 << 6)" (( "(") (binary_expression "uVar3 << 6" (identifier "uVar3") (<< "<<") (number_literal "6")) () ")")) (>> ">>") (number_literal "0x1b")) () ")"))))) (; ";")) (} "}"))) (expression_statement "*(ushort *)param_1 = uVar4;" (assignment_expression "*(ushort *)param_1 = uVar4" (pointer_expression "*(ushort *)param_1" (* "*") (cast_expression "(ushort *)param_1" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_1"))) (= "=") (identifier "uVar4")) (; ";")) (expression_statement "*(ushort *)((int)param_1 + 2) = uVar1;" (assignment_expression "*(ushort *)((int)param_1 + 2) = uVar1" (pointer_expression "*(ushort *)((int)param_1 + 2)" (* "*") (cast_expression "(ushort *)((int)param_1 + 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 2)" (( "(") (binary_expression "(int)param_1 + 2" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "2")) () ")")))) (= "=") (identifier "uVar1")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))
(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) 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)) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (ERROR (identifier) (identifier)) (binary_expression left: (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (number_literal)))))) right: (number_literal)))))) arguments: (argument_list))) (return_statement))) (return_statement))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))))) (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (identifier) right: (number_literal))))) (return_statement))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal))) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (identifier))) (return_statement))))

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

{
  ushort uVar1;
  ushort uVar2;
  uint uVar3;
  ushort uVar4;
  
  if (0xc < param_2 - 100U) {
    if (param_2 - 0x85U < 0x29) {
                    /* WARNING: Could not emulate address calculation at 0x000e166c */
                    /* WARNING: Treating indirect jump as call */
      (*(code *)(gold::Position_dependent_options::default_options_ +
                *(int *)(PTR_s_ral_options14Struct_no_crefE_004c127c +
                        (param_2 - 0x85U) * 4 + 0x4f28) + 0x3210))();
      return;
    }
    return;
  }
  uVar3 = *param_1;
  uVar4 = (ushort)(uVar3 >> 0x10);
  uVar1 = (ushort)uVar3;
  if (param_2 != 100) {
    uVar2 = (ushort)((uVar3 << 5) >> 0x10);
    *(ushort *)((int)param_1 + 2) = uVar2 & 0xffe0 | uVar1 & 0x1f;
    *(ushort *)param_1 = uVar4 & 0xf800 | uVar2 & 0x1f | uVar1 & 0x7e0;
    return;
  }
  if (param_3 != 0) {
    uVar4 = (ushort)(uVar3 >> 0xb) & 0x3e0 | uVar4 & 0xfc00 | (ushort)((uVar3 << 6) >> 0x1b);
  }
  *(ushort *)param_1 = uVar4;
  *(ushort *)((int)param_1 + 2) = uVar1;
  return;
}

