
void _Unwind_Resume(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int iVar4;
  undefined4 *puVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  undefined4 uVar8;
  undefined4 unaff_retaddr;
  undefined1 auStackX_0 [16];
  undefined4 local_820 [189];
  undefined4 local_52c;
  undefined4 local_528;
  undefined4 local_448 [246];
  undefined1 auStack_70 [8];
  int local_68;
  undefined4 local_64;
  undefined4 local_60;
  undefined4 local_5c;
  
  local_68 = param_1;
  local_64 = param_2;
  local_60 = param_3;
  local_5c = param_4;
  uw_init_context_1(local_448,auStackX_0,unaff_retaddr);
  puVar3 = local_448;
  puVar1 = local_820;
  do {
    puVar5 = puVar1;
    puVar2 = puVar3;
    puVar3 = puVar2 + 4;
    uVar8 = puVar2[1];
    uVar7 = puVar2[2];
    uVar6 = puVar2[3];
    *puVar5 = *puVar2;
    puVar5[1] = uVar8;
    puVar5[2] = uVar7;
    puVar5[3] = uVar6;
    puVar1 = puVar5 + 4;
  } while (puVar3 != local_448 + 0xf4);
  uVar6 = puVar2[5];
  iVar4 = *(int *)(param_1 + 0xc);
  puVar5[4] = *puVar3;
  puVar5[5] = uVar6;
  if (iVar4 == 0) {
    iVar4 = _Unwind_RaiseException_Phase2();
  }
  else {
    iVar4 = _Unwind_ForcedUnwind_Phase2(param_1,local_820,auStack_70);
  }
  if (iVar4 == 7) {
    uw_install_context_1(local_448,local_820);
    _Unwind_DebugHook(local_52c,local_528);
    return;
  }
  (*(code *)PTR_abort_00436908)();
  return;
}



void FUN_00370e80(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int iVar4;
  undefined4 *puVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  undefined4 uVar8;
  undefined4 unaff_retaddr;
  undefined1 auStackX_0 [16];
  undefined4 local_820 [189];
  undefined4 local_52c;
  undefined4 local_528;
  undefined4 local_448 [246];
  undefined1 auStack_70 [8];
  int local_68;
  undefined4 local_64;
  undefined4 local_60;
  undefined4 local_5c;
  
  local_68 = param_1;
  local_64 = param_2;
  local_60 = param_3;
  local_5c = param_4;
  FUN_0036faac(local_448,auStackX_0,unaff_retaddr);
  puVar3 = local_448;
  puVar1 = local_820;
  do {
    puVar5 = puVar1;
    puVar2 = puVar3;
    puVar3 = puVar2 + 4;
    uVar8 = puVar2[1];
    uVar7 = puVar2[2];
    uVar6 = puVar2[3];
    *puVar5 = *puVar2;
    puVar5[1] = uVar8;
    puVar5[2] = uVar7;
    puVar5[3] = uVar6;
    puVar1 = puVar5 + 4;
  } while (puVar3 != local_448 + 0xf4);
  uVar6 = puVar2[5];
  iVar4 = *(int *)(param_1 + 0xc);
  puVar5[4] = *puVar3;
  puVar5[5] = uVar6;
  if (iVar4 == 0) {
    iVar4 = FUN_00370234();
  }
  else {
    iVar4 = FUN_003703a8(param_1,local_820,auStack_70);
  }
  if (iVar4 == 7) {
    FUN_0037055c(local_448,local_820);
    FUN_00370a54(local_52c,local_528);
    return;
  }
  (*(code *)PTR_abort_00436908)();
  return;
}


lui gp,0xd
addiu gp,gp,-0x6cb0
addu gp,gp,t9
addiu sp,sp,-0x838
lw t9,-0x7fc4(gp)
sdc1 f30,0x830(sp)
sw s0,0x7e0(sp)
addiu s0,sp,0x3f0
sw a1,0x7d4(sp)
addiu t9,t9,-0x554
sdc1 f28,0x828(sp)
addiu a1,sp,0x838
sw gp,0x10(sp)
sdc1 f26,0x820(sp)
sw s2,0x7e8(sp)
or s2,a0,zero
sdc1 f24,0x818(sp)
sw s1,0x7e4(sp)
addiu s1,sp,0x18
sdc1 f22,0x810(sp)
sw a2,0x7d8(sp)
or a2,ra,zero
sdc1 f20,0x808(sp)
sw a0,0x7d0(sp)
or a0,s0,zero
sw ra,0x804(sp)
sw s8,0x800(sp)
sw s7,0x7fc(sp)
sw s6,0x7f8(sp)
sw s5,0x7f4(sp)
sw s4,0x7f0(sp)
sw s3,0x7ec(sp)
bal 0x0036faac
_sw a3,0x7dc(sp)
addiu a0,sp,0x7c0
lw gp,0x10(sp)
or v0,s0,zero
or v1,s1,zero
lw t0,0x0(v0)
addiu v0,v0,0x10
addiu v1,v1,0x10
lw a3,-0xc(v0)
lw a2,-0x8(v0)
lw a1,-0x4(v0)
sw t0,-0x10(v1)
sw a3,-0xc(v1)
sw a2,-0x8(v1)
bne v0,a0,0x00370f18
_sw a1,-0x4(v1)
lw a1,0x0(v0)
addiu a2,sp,0x7c8
lw a0,0x4(v0)
lw v0,0xc(s2)
sw a1,0x0(v1)
or a1,s1,zero
sw a0,0x4(v1)
bne v0,zero,0x00371014
_or a0,s2,zero
lw t9,-0x7fc4(gp)
addiu t9,t9,0x234
bal 0x00370234
_nop
lw gp,0x10(sp)
li v1,0x7
bne v0,v1,0x0037102c
_lw t9,-0x7fc4(gp)
or a1,s1,zero
addiu t9,t9,0x55c
bal 0x0037055c
_or a0,s0,zero
lw gp,0x10(sp)
lw a2,0x310(sp)
lw a0,0x30c(sp)
lw t9,-0x7fc4(gp)
addiu t9,t9,0xa54
bal 0x00370a54
_or a1,a2,zero
lw s8,0x800(sp)
lw s7,0x7fc(sp)
lw s6,0x7f8(sp)
lw s5,0x7f4(sp)
lw s4,0x7f0(sp)
lw s3,0x7ec(sp)
lw s2,0x7e8(sp)
lw s1,0x7e4(sp)
lw s0,0x7e0(sp)
lw a3,0x7dc(sp)
lw a1,0x7d4(sp)
lw a0,0x7d0(sp)
sw a2,0x804(sp)
lw ra,0x804(sp)
lw a2,0x7d8(sp)
ldc1 f30,0x830(sp)
ldc1 f28,0x828(sp)
ldc1 f26,0x820(sp)
ldc1 f24,0x818(sp)
ldc1 f22,0x810(sp)
ldc1 f20,0x808(sp)
addiu sp,sp,0x838
jr ra
_addu sp,sp,v0
lw t9,-0x7fc4(gp)
addiu t9,t9,0x3a8
bal 0x003703a8
_nop
b 0x00370f7c
_lw gp,0x10(sp)
lw t9,-0x38c8(gp)
jalr t9
_nop
(translation_unit "void FUN_00370e80(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  undefined4 *puVar1;\n  undefined4 *puVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  undefined4 *puVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 unaff_retaddr;\n  undefined1 auStackX_0 [16];\n  undefined4 local_820 [189];\n  undefined4 local_52c;\n  undefined4 local_528;\n  undefined4 local_448 [246];\n  undefined1 auStack_70 [8];\n  int local_68;\n  undefined4 local_64;\n  undefined4 local_60;\n  undefined4 local_5c;\n  \n  local_68 = param_1;\n  local_64 = param_2;\n  local_60 = param_3;\n  local_5c = param_4;\n  FUN_0036faac(local_448,auStackX_0,unaff_retaddr);\n  puVar3 = local_448;\n  puVar1 = local_820;\n  do {\n    puVar5 = puVar1;\n    puVar2 = puVar3;\n    puVar3 = puVar2 + 4;\n    uVar8 = puVar2[1];\n    uVar7 = puVar2[2];\n    uVar6 = puVar2[3];\n    *puVar5 = *puVar2;\n    puVar5[1] = uVar8;\n    puVar5[2] = uVar7;\n    puVar5[3] = uVar6;\n    puVar1 = puVar5 + 4;\n  } while (puVar3 != local_448 + 0xf4);\n  uVar6 = puVar2[5];\n  iVar4 = *(int *)(param_1 + 0xc);\n  puVar5[4] = *puVar3;\n  puVar5[5] = uVar6;\n  if (iVar4 == 0) {\n    iVar4 = FUN_00370234();\n  }\n  else {\n    iVar4 = FUN_003703a8(param_1,local_820,auStack_70);\n  }\n  if (iVar4 == 7) {\n    FUN_0037055c(local_448,local_820);\n    FUN_00370a54(local_52c,local_528);\n    return;\n  }\n  (*(code *)PTR_abort_00436908)();\n  return;\n}\n\n" (function_definition "void FUN_00370e80(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  undefined4 *puVar1;\n  undefined4 *puVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  undefined4 *puVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 unaff_retaddr;\n  undefined1 auStackX_0 [16];\n  undefined4 local_820 [189];\n  undefined4 local_52c;\n  undefined4 local_528;\n  undefined4 local_448 [246];\n  undefined1 auStack_70 [8];\n  int local_68;\n  undefined4 local_64;\n  undefined4 local_60;\n  undefined4 local_5c;\n  \n  local_68 = param_1;\n  local_64 = param_2;\n  local_60 = param_3;\n  local_5c = param_4;\n  FUN_0036faac(local_448,auStackX_0,unaff_retaddr);\n  puVar3 = local_448;\n  puVar1 = local_820;\n  do {\n    puVar5 = puVar1;\n    puVar2 = puVar3;\n    puVar3 = puVar2 + 4;\n    uVar8 = puVar2[1];\n    uVar7 = puVar2[2];\n    uVar6 = puVar2[3];\n    *puVar5 = *puVar2;\n    puVar5[1] = uVar8;\n    puVar5[2] = uVar7;\n    puVar5[3] = uVar6;\n    puVar1 = puVar5 + 4;\n  } while (puVar3 != local_448 + 0xf4);\n  uVar6 = puVar2[5];\n  iVar4 = *(int *)(param_1 + 0xc);\n  puVar5[4] = *puVar3;\n  puVar5[5] = uVar6;\n  if (iVar4 == 0) {\n    iVar4 = FUN_00370234();\n  }\n  else {\n    iVar4 = FUN_003703a8(param_1,local_820,auStack_70);\n  }\n  if (iVar4 == 7) {\n    FUN_0037055c(local_448,local_820);\n    FUN_00370a54(local_52c,local_528);\n    return;\n  }\n  (*(code *)PTR_abort_00436908)();\n  return;\n}" primitive_type (function_declarator "FUN_00370e80(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)" identifier (parameter_list "(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) ))) (compound_statement "{\n  undefined4 *puVar1;\n  undefined4 *puVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  undefined4 *puVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 unaff_retaddr;\n  undefined1 auStackX_0 [16];\n  undefined4 local_820 [189];\n  undefined4 local_52c;\n  undefined4 local_528;\n  undefined4 local_448 [246];\n  undefined1 auStack_70 [8];\n  int local_68;\n  undefined4 local_64;\n  undefined4 local_60;\n  undefined4 local_5c;\n  \n  local_68 = param_1;\n  local_64 = param_2;\n  local_60 = param_3;\n  local_5c = param_4;\n  FUN_0036faac(local_448,auStackX_0,unaff_retaddr);\n  puVar3 = local_448;\n  puVar1 = local_820;\n  do {\n    puVar5 = puVar1;\n    puVar2 = puVar3;\n    puVar3 = puVar2 + 4;\n    uVar8 = puVar2[1];\n    uVar7 = puVar2[2];\n    uVar6 = puVar2[3];\n    *puVar5 = *puVar2;\n    puVar5[1] = uVar8;\n    puVar5[2] = uVar7;\n    puVar5[3] = uVar6;\n    puVar1 = puVar5 + 4;\n  } while (puVar3 != local_448 + 0xf4);\n  uVar6 = puVar2[5];\n  iVar4 = *(int *)(param_1 + 0xc);\n  puVar5[4] = *puVar3;\n  puVar5[5] = uVar6;\n  if (iVar4 == 0) {\n    iVar4 = FUN_00370234();\n  }\n  else {\n    iVar4 = FUN_003703a8(param_1,local_820,auStack_70);\n  }\n  if (iVar4 == 7) {\n    FUN_0037055c(local_448,local_820);\n    FUN_00370a54(local_52c,local_528);\n    return;\n  }\n  (*(code *)PTR_abort_00436908)();\n  return;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined4 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined4 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "undefined4 uVar8;" type_identifier identifier ;) (declaration "undefined4 unaff_retaddr;" type_identifier identifier ;) (declaration "undefined1 auStackX_0 [16];" type_identifier (array_declarator "auStackX_0 [16]" identifier [ number_literal ]) ;) (declaration "undefined4 local_820 [189];" type_identifier (array_declarator "local_820 [189]" identifier [ number_literal ]) ;) (declaration "undefined4 local_52c;" type_identifier identifier ;) (declaration "undefined4 local_528;" type_identifier identifier ;) (declaration "undefined4 local_448 [246];" type_identifier (array_declarator "local_448 [246]" identifier [ number_literal ]) ;) (declaration "undefined1 auStack_70 [8];" type_identifier (array_declarator "auStack_70 [8]" identifier [ number_literal ]) ;) (declaration "int local_68;" primitive_type identifier ;) (declaration "undefined4 local_64;" type_identifier identifier ;) (declaration "undefined4 local_60;" type_identifier identifier ;) (declaration "undefined4 local_5c;" type_identifier identifier ;) (expression_statement "local_68 = param_1;" (assignment_expression "local_68 = param_1" identifier = identifier) ;) (expression_statement "local_64 = param_2;" (assignment_expression "local_64 = param_2" identifier = identifier) ;) (expression_statement "local_60 = param_3;" (assignment_expression "local_60 = param_3" identifier = identifier) ;) (expression_statement "local_5c = param_4;" (assignment_expression "local_5c = param_4" identifier = identifier) ;) (expression_statement "FUN_0036faac(local_448,auStackX_0,unaff_retaddr);" (call_expression "FUN_0036faac(local_448,auStackX_0,unaff_retaddr)" identifier (argument_list "(local_448,auStackX_0,unaff_retaddr)" ( identifier , identifier , identifier ))) ;) (expression_statement "puVar3 = local_448;" (assignment_expression "puVar3 = local_448" identifier = identifier) ;) (expression_statement "puVar1 = local_820;" (assignment_expression "puVar1 = local_820" identifier = identifier) ;) (do_statement "do {\n    puVar5 = puVar1;\n    puVar2 = puVar3;\n    puVar3 = puVar2 + 4;\n    uVar8 = puVar2[1];\n    uVar7 = puVar2[2];\n    uVar6 = puVar2[3];\n    *puVar5 = *puVar2;\n    puVar5[1] = uVar8;\n    puVar5[2] = uVar7;\n    puVar5[3] = uVar6;\n    puVar1 = puVar5 + 4;\n  } while (puVar3 != local_448 + 0xf4);" do (compound_statement "{\n    puVar5 = puVar1;\n    puVar2 = puVar3;\n    puVar3 = puVar2 + 4;\n    uVar8 = puVar2[1];\n    uVar7 = puVar2[2];\n    uVar6 = puVar2[3];\n    *puVar5 = *puVar2;\n    puVar5[1] = uVar8;\n    puVar5[2] = uVar7;\n    puVar5[3] = uVar6;\n    puVar1 = puVar5 + 4;\n  }" { (expression_statement "puVar5 = puVar1;" (assignment_expression "puVar5 = puVar1" identifier = identifier) ;) (expression_statement "puVar2 = puVar3;" (assignment_expression "puVar2 = puVar3" identifier = identifier) ;) (expression_statement "puVar3 = puVar2 + 4;" (assignment_expression "puVar3 = puVar2 + 4" identifier = (binary_expression "puVar2 + 4" identifier + number_literal)) ;) (expression_statement "uVar8 = puVar2[1];" (assignment_expression "uVar8 = puVar2[1]" identifier = (subscript_expression "puVar2[1]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = puVar2[2];" (assignment_expression "uVar7 = puVar2[2]" identifier = (subscript_expression "puVar2[2]" identifier [ number_literal ])) ;) (expression_statement "uVar6 = puVar2[3];" (assignment_expression "uVar6 = puVar2[3]" identifier = (subscript_expression "puVar2[3]" identifier [ number_literal ])) ;) (expression_statement "*puVar5 = *puVar2;" (assignment_expression "*puVar5 = *puVar2" (pointer_expression "*puVar5" * identifier) = (pointer_expression "*puVar2" * identifier)) ;) (expression_statement "puVar5[1] = uVar8;" (assignment_expression "puVar5[1] = uVar8" (subscript_expression "puVar5[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar5[2] = uVar7;" (assignment_expression "puVar5[2] = uVar7" (subscript_expression "puVar5[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar5[3] = uVar6;" (assignment_expression "puVar5[3] = uVar6" (subscript_expression "puVar5[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar1 = puVar5 + 4;" (assignment_expression "puVar1 = puVar5 + 4" identifier = (binary_expression "puVar5 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar3 != local_448 + 0xf4)" ( (binary_expression "puVar3 != local_448 + 0xf4" identifier != (binary_expression "local_448 + 0xf4" identifier + number_literal)) )) ;) (expression_statement "uVar6 = puVar2[5];" (assignment_expression "uVar6 = puVar2[5]" identifier = (subscript_expression "puVar2[5]" identifier [ number_literal ])) ;) (expression_statement "iVar4 = *(int *)(param_1 + 0xc);" (assignment_expression "iVar4 = *(int *)(param_1 + 0xc)" identifier = (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "puVar5[4] = *puVar3;" (assignment_expression "puVar5[4] = *puVar3" (subscript_expression "puVar5[4]" identifier [ number_literal ]) = (pointer_expression "*puVar3" * identifier)) ;) (expression_statement "puVar5[5] = uVar6;" (assignment_expression "puVar5[5] = uVar6" (subscript_expression "puVar5[5]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (iVar4 == 0) {\n    iVar4 = FUN_00370234();\n  }\n  else {\n    iVar4 = FUN_003703a8(param_1,local_820,auStack_70);\n  }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar4 = FUN_00370234();\n  }" { (expression_statement "iVar4 = FUN_00370234();" (assignment_expression "iVar4 = FUN_00370234()" identifier = (call_expression "FUN_00370234()" identifier (argument_list "()" ( )))) ;) }) (else_clause "else {\n    iVar4 = FUN_003703a8(param_1,local_820,auStack_70);\n  }" else (compound_statement "{\n    iVar4 = FUN_003703a8(param_1,local_820,auStack_70);\n  }" { (expression_statement "iVar4 = FUN_003703a8(param_1,local_820,auStack_70);" (assignment_expression "iVar4 = FUN_003703a8(param_1,local_820,auStack_70)" identifier = (call_expression "FUN_003703a8(param_1,local_820,auStack_70)" identifier (argument_list "(param_1,local_820,auStack_70)" ( identifier , identifier , identifier )))) ;) }))) (if_statement "if (iVar4 == 7) {\n    FUN_0037055c(local_448,local_820);\n    FUN_00370a54(local_52c,local_528);\n    return;\n  }" if (parenthesized_expression "(iVar4 == 7)" ( (binary_expression "iVar4 == 7" identifier == number_literal) )) (compound_statement "{\n    FUN_0037055c(local_448,local_820);\n    FUN_00370a54(local_52c,local_528);\n    return;\n  }" { (expression_statement "FUN_0037055c(local_448,local_820);" (call_expression "FUN_0037055c(local_448,local_820)" identifier (argument_list "(local_448,local_820)" ( identifier , identifier ))) ;) (expression_statement "FUN_00370a54(local_52c,local_528);" (call_expression "FUN_00370a54(local_52c,local_528)" identifier (argument_list "(local_52c,local_528)" ( identifier , identifier ))) ;) (return_statement "return;" return ;) })) (expression_statement "(*(code *)PTR_abort_00436908)();" (call_expression "(*(code *)PTR_abort_00436908)()" (parenthesized_expression "(*(code *)PTR_abort_00436908)" ( (pointer_expression "*(code *)PTR_abort_00436908" * (cast_expression "(code *)PTR_abort_00436908" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })))
(translation_unit "void _Unwind_Resume(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  undefined4 *puVar1;\n  undefined4 *puVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  undefined4 *puVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 unaff_retaddr;\n  undefined1 auStackX_0 [16];\n  undefined4 local_820 [189];\n  undefined4 local_52c;\n  undefined4 local_528;\n  undefined4 local_448 [246];\n  undefined1 auStack_70 [8];\n  int local_68;\n  undefined4 local_64;\n  undefined4 local_60;\n  undefined4 local_5c;\n  \n  local_68 = param_1;\n  local_64 = param_2;\n  local_60 = param_3;\n  local_5c = param_4;\n  uw_init_context_1(local_448,auStackX_0,unaff_retaddr);\n  puVar3 = local_448;\n  puVar1 = local_820;\n  do {\n    puVar5 = puVar1;\n    puVar2 = puVar3;\n    puVar3 = puVar2 + 4;\n    uVar8 = puVar2[1];\n    uVar7 = puVar2[2];\n    uVar6 = puVar2[3];\n    *puVar5 = *puVar2;\n    puVar5[1] = uVar8;\n    puVar5[2] = uVar7;\n    puVar5[3] = uVar6;\n    puVar1 = puVar5 + 4;\n  } while (puVar3 != local_448 + 0xf4);\n  uVar6 = puVar2[5];\n  iVar4 = *(int *)(param_1 + 0xc);\n  puVar5[4] = *puVar3;\n  puVar5[5] = uVar6;\n  if (iVar4 == 0) {\n    iVar4 = _Unwind_RaiseException_Phase2();\n  }\n  else {\n    iVar4 = _Unwind_ForcedUnwind_Phase2(param_1,local_820,auStack_70);\n  }\n  if (iVar4 == 7) {\n    uw_install_context_1(local_448,local_820);\n    _Unwind_DebugHook(local_52c,local_528);\n    return;\n  }\n  (*(code *)PTR_abort_00436908)();\n  return;\n}\n\n" (function_definition "void _Unwind_Resume(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  undefined4 *puVar1;\n  undefined4 *puVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  undefined4 *puVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 unaff_retaddr;\n  undefined1 auStackX_0 [16];\n  undefined4 local_820 [189];\n  undefined4 local_52c;\n  undefined4 local_528;\n  undefined4 local_448 [246];\n  undefined1 auStack_70 [8];\n  int local_68;\n  undefined4 local_64;\n  undefined4 local_60;\n  undefined4 local_5c;\n  \n  local_68 = param_1;\n  local_64 = param_2;\n  local_60 = param_3;\n  local_5c = param_4;\n  uw_init_context_1(local_448,auStackX_0,unaff_retaddr);\n  puVar3 = local_448;\n  puVar1 = local_820;\n  do {\n    puVar5 = puVar1;\n    puVar2 = puVar3;\n    puVar3 = puVar2 + 4;\n    uVar8 = puVar2[1];\n    uVar7 = puVar2[2];\n    uVar6 = puVar2[3];\n    *puVar5 = *puVar2;\n    puVar5[1] = uVar8;\n    puVar5[2] = uVar7;\n    puVar5[3] = uVar6;\n    puVar1 = puVar5 + 4;\n  } while (puVar3 != local_448 + 0xf4);\n  uVar6 = puVar2[5];\n  iVar4 = *(int *)(param_1 + 0xc);\n  puVar5[4] = *puVar3;\n  puVar5[5] = uVar6;\n  if (iVar4 == 0) {\n    iVar4 = _Unwind_RaiseException_Phase2();\n  }\n  else {\n    iVar4 = _Unwind_ForcedUnwind_Phase2(param_1,local_820,auStack_70);\n  }\n  if (iVar4 == 7) {\n    uw_install_context_1(local_448,local_820);\n    _Unwind_DebugHook(local_52c,local_528);\n    return;\n  }\n  (*(code *)PTR_abort_00436908)();\n  return;\n}" primitive_type (function_declarator "_Unwind_Resume(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)" identifier (parameter_list "(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) ))) (compound_statement "{\n  undefined4 *puVar1;\n  undefined4 *puVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  undefined4 *puVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 unaff_retaddr;\n  undefined1 auStackX_0 [16];\n  undefined4 local_820 [189];\n  undefined4 local_52c;\n  undefined4 local_528;\n  undefined4 local_448 [246];\n  undefined1 auStack_70 [8];\n  int local_68;\n  undefined4 local_64;\n  undefined4 local_60;\n  undefined4 local_5c;\n  \n  local_68 = param_1;\n  local_64 = param_2;\n  local_60 = param_3;\n  local_5c = param_4;\n  uw_init_context_1(local_448,auStackX_0,unaff_retaddr);\n  puVar3 = local_448;\n  puVar1 = local_820;\n  do {\n    puVar5 = puVar1;\n    puVar2 = puVar3;\n    puVar3 = puVar2 + 4;\n    uVar8 = puVar2[1];\n    uVar7 = puVar2[2];\n    uVar6 = puVar2[3];\n    *puVar5 = *puVar2;\n    puVar5[1] = uVar8;\n    puVar5[2] = uVar7;\n    puVar5[3] = uVar6;\n    puVar1 = puVar5 + 4;\n  } while (puVar3 != local_448 + 0xf4);\n  uVar6 = puVar2[5];\n  iVar4 = *(int *)(param_1 + 0xc);\n  puVar5[4] = *puVar3;\n  puVar5[5] = uVar6;\n  if (iVar4 == 0) {\n    iVar4 = _Unwind_RaiseException_Phase2();\n  }\n  else {\n    iVar4 = _Unwind_ForcedUnwind_Phase2(param_1,local_820,auStack_70);\n  }\n  if (iVar4 == 7) {\n    uw_install_context_1(local_448,local_820);\n    _Unwind_DebugHook(local_52c,local_528);\n    return;\n  }\n  (*(code *)PTR_abort_00436908)();\n  return;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined4 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined4 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "undefined4 uVar8;" type_identifier identifier ;) (declaration "undefined4 unaff_retaddr;" type_identifier identifier ;) (declaration "undefined1 auStackX_0 [16];" type_identifier (array_declarator "auStackX_0 [16]" identifier [ number_literal ]) ;) (declaration "undefined4 local_820 [189];" type_identifier (array_declarator "local_820 [189]" identifier [ number_literal ]) ;) (declaration "undefined4 local_52c;" type_identifier identifier ;) (declaration "undefined4 local_528;" type_identifier identifier ;) (declaration "undefined4 local_448 [246];" type_identifier (array_declarator "local_448 [246]" identifier [ number_literal ]) ;) (declaration "undefined1 auStack_70 [8];" type_identifier (array_declarator "auStack_70 [8]" identifier [ number_literal ]) ;) (declaration "int local_68;" primitive_type identifier ;) (declaration "undefined4 local_64;" type_identifier identifier ;) (declaration "undefined4 local_60;" type_identifier identifier ;) (declaration "undefined4 local_5c;" type_identifier identifier ;) (expression_statement "local_68 = param_1;" (assignment_expression "local_68 = param_1" identifier = identifier) ;) (expression_statement "local_64 = param_2;" (assignment_expression "local_64 = param_2" identifier = identifier) ;) (expression_statement "local_60 = param_3;" (assignment_expression "local_60 = param_3" identifier = identifier) ;) (expression_statement "local_5c = param_4;" (assignment_expression "local_5c = param_4" identifier = identifier) ;) (expression_statement "uw_init_context_1(local_448,auStackX_0,unaff_retaddr);" (call_expression "uw_init_context_1(local_448,auStackX_0,unaff_retaddr)" identifier (argument_list "(local_448,auStackX_0,unaff_retaddr)" ( identifier , identifier , identifier ))) ;) (expression_statement "puVar3 = local_448;" (assignment_expression "puVar3 = local_448" identifier = identifier) ;) (expression_statement "puVar1 = local_820;" (assignment_expression "puVar1 = local_820" identifier = identifier) ;) (do_statement "do {\n    puVar5 = puVar1;\n    puVar2 = puVar3;\n    puVar3 = puVar2 + 4;\n    uVar8 = puVar2[1];\n    uVar7 = puVar2[2];\n    uVar6 = puVar2[3];\n    *puVar5 = *puVar2;\n    puVar5[1] = uVar8;\n    puVar5[2] = uVar7;\n    puVar5[3] = uVar6;\n    puVar1 = puVar5 + 4;\n  } while (puVar3 != local_448 + 0xf4);" do (compound_statement "{\n    puVar5 = puVar1;\n    puVar2 = puVar3;\n    puVar3 = puVar2 + 4;\n    uVar8 = puVar2[1];\n    uVar7 = puVar2[2];\n    uVar6 = puVar2[3];\n    *puVar5 = *puVar2;\n    puVar5[1] = uVar8;\n    puVar5[2] = uVar7;\n    puVar5[3] = uVar6;\n    puVar1 = puVar5 + 4;\n  }" { (expression_statement "puVar5 = puVar1;" (assignment_expression "puVar5 = puVar1" identifier = identifier) ;) (expression_statement "puVar2 = puVar3;" (assignment_expression "puVar2 = puVar3" identifier = identifier) ;) (expression_statement "puVar3 = puVar2 + 4;" (assignment_expression "puVar3 = puVar2 + 4" identifier = (binary_expression "puVar2 + 4" identifier + number_literal)) ;) (expression_statement "uVar8 = puVar2[1];" (assignment_expression "uVar8 = puVar2[1]" identifier = (subscript_expression "puVar2[1]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = puVar2[2];" (assignment_expression "uVar7 = puVar2[2]" identifier = (subscript_expression "puVar2[2]" identifier [ number_literal ])) ;) (expression_statement "uVar6 = puVar2[3];" (assignment_expression "uVar6 = puVar2[3]" identifier = (subscript_expression "puVar2[3]" identifier [ number_literal ])) ;) (expression_statement "*puVar5 = *puVar2;" (assignment_expression "*puVar5 = *puVar2" (pointer_expression "*puVar5" * identifier) = (pointer_expression "*puVar2" * identifier)) ;) (expression_statement "puVar5[1] = uVar8;" (assignment_expression "puVar5[1] = uVar8" (subscript_expression "puVar5[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar5[2] = uVar7;" (assignment_expression "puVar5[2] = uVar7" (subscript_expression "puVar5[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar5[3] = uVar6;" (assignment_expression "puVar5[3] = uVar6" (subscript_expression "puVar5[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar1 = puVar5 + 4;" (assignment_expression "puVar1 = puVar5 + 4" identifier = (binary_expression "puVar5 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar3 != local_448 + 0xf4)" ( (binary_expression "puVar3 != local_448 + 0xf4" identifier != (binary_expression "local_448 + 0xf4" identifier + number_literal)) )) ;) (expression_statement "uVar6 = puVar2[5];" (assignment_expression "uVar6 = puVar2[5]" identifier = (subscript_expression "puVar2[5]" identifier [ number_literal ])) ;) (expression_statement "iVar4 = *(int *)(param_1 + 0xc);" (assignment_expression "iVar4 = *(int *)(param_1 + 0xc)" identifier = (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "puVar5[4] = *puVar3;" (assignment_expression "puVar5[4] = *puVar3" (subscript_expression "puVar5[4]" identifier [ number_literal ]) = (pointer_expression "*puVar3" * identifier)) ;) (expression_statement "puVar5[5] = uVar6;" (assignment_expression "puVar5[5] = uVar6" (subscript_expression "puVar5[5]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (iVar4 == 0) {\n    iVar4 = _Unwind_RaiseException_Phase2();\n  }\n  else {\n    iVar4 = _Unwind_ForcedUnwind_Phase2(param_1,local_820,auStack_70);\n  }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar4 = _Unwind_RaiseException_Phase2();\n  }" { (expression_statement "iVar4 = _Unwind_RaiseException_Phase2();" (assignment_expression "iVar4 = _Unwind_RaiseException_Phase2()" identifier = (call_expression "_Unwind_RaiseException_Phase2()" identifier (argument_list "()" ( )))) ;) }) (else_clause "else {\n    iVar4 = _Unwind_ForcedUnwind_Phase2(param_1,local_820,auStack_70);\n  }" else (compound_statement "{\n    iVar4 = _Unwind_ForcedUnwind_Phase2(param_1,local_820,auStack_70);\n  }" { (expression_statement "iVar4 = _Unwind_ForcedUnwind_Phase2(param_1,local_820,auStack_70);" (assignment_expression "iVar4 = _Unwind_ForcedUnwind_Phase2(param_1,local_820,auStack_70)" identifier = (call_expression "_Unwind_ForcedUnwind_Phase2(param_1,local_820,auStack_70)" identifier (argument_list "(param_1,local_820,auStack_70)" ( identifier , identifier , identifier )))) ;) }))) (if_statement "if (iVar4 == 7) {\n    uw_install_context_1(local_448,local_820);\n    _Unwind_DebugHook(local_52c,local_528);\n    return;\n  }" if (parenthesized_expression "(iVar4 == 7)" ( (binary_expression "iVar4 == 7" identifier == number_literal) )) (compound_statement "{\n    uw_install_context_1(local_448,local_820);\n    _Unwind_DebugHook(local_52c,local_528);\n    return;\n  }" { (expression_statement "uw_install_context_1(local_448,local_820);" (call_expression "uw_install_context_1(local_448,local_820)" identifier (argument_list "(local_448,local_820)" ( identifier , identifier ))) ;) (expression_statement "_Unwind_DebugHook(local_52c,local_528);" (call_expression "_Unwind_DebugHook(local_52c,local_528)" identifier (argument_list "(local_52c,local_528)" ( identifier , identifier ))) ;) (return_statement "return;" return ;) })) (expression_statement "(*(code *)PTR_abort_00436908)();" (call_expression "(*(code *)PTR_abort_00436908)()" (parenthesized_expression "(*(code *)PTR_abort_00436908)" ( (pointer_expression "*(code *)PTR_abort_00436908" * (cast_expression "(code *)PTR_abort_00436908" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_00370e80(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  undefined4 *puVar1;\n  undefined4 *puVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  undefined4 *puVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 unaff_retaddr;\n  undefined1 auStackX_0 [16];\n  undefined4 local_820 [189];\n  undefined4 local_52c;\n  undefined4 local_528;\n  undefined4 local_448 [246];\n  undefined1 auStack_70 [8];\n  int local_68;\n  undefined4 local_64;\n  undefined4 local_60;\n  undefined4 local_5c;\n  \n  local_68 = param_1;\n  local_64 = param_2;\n  local_60 = param_3;\n  local_5c = param_4;\n  FUN_0036faac(local_448,auStackX_0,unaff_retaddr);\n  puVar3 = local_448;\n  puVar1 = local_820;\n  do {\n    puVar5 = puVar1;\n    puVar2 = puVar3;\n    puVar3 = puVar2 + 4;\n    uVar8 = puVar2[1];\n    uVar7 = puVar2[2];\n    uVar6 = puVar2[3];\n    *puVar5 = *puVar2;\n    puVar5[1] = uVar8;\n    puVar5[2] = uVar7;\n    puVar5[3] = uVar6;\n    puVar1 = puVar5 + 4;\n  } while (puVar3 != local_448 + 0xf4);\n  uVar6 = puVar2[5];\n  iVar4 = *(int *)(param_1 + 0xc);\n  puVar5[4] = *puVar3;\n  puVar5[5] = uVar6;\n  if (iVar4 == 0) {\n    iVar4 = FUN_00370234();\n  }\n  else {\n    iVar4 = FUN_003703a8(param_1,local_820,auStack_70);\n  }\n  if (iVar4 == 7) {\n    FUN_0037055c(local_448,local_820);\n    FUN_00370a54(local_52c,local_528);\n    return;\n  }\n  (*(code *)PTR_abort_00436908)();\n  return;\n}\n\n" (function_definition "void FUN_00370e80(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  undefined4 *puVar1;\n  undefined4 *puVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  undefined4 *puVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 unaff_retaddr;\n  undefined1 auStackX_0 [16];\n  undefined4 local_820 [189];\n  undefined4 local_52c;\n  undefined4 local_528;\n  undefined4 local_448 [246];\n  undefined1 auStack_70 [8];\n  int local_68;\n  undefined4 local_64;\n  undefined4 local_60;\n  undefined4 local_5c;\n  \n  local_68 = param_1;\n  local_64 = param_2;\n  local_60 = param_3;\n  local_5c = param_4;\n  FUN_0036faac(local_448,auStackX_0,unaff_retaddr);\n  puVar3 = local_448;\n  puVar1 = local_820;\n  do {\n    puVar5 = puVar1;\n    puVar2 = puVar3;\n    puVar3 = puVar2 + 4;\n    uVar8 = puVar2[1];\n    uVar7 = puVar2[2];\n    uVar6 = puVar2[3];\n    *puVar5 = *puVar2;\n    puVar5[1] = uVar8;\n    puVar5[2] = uVar7;\n    puVar5[3] = uVar6;\n    puVar1 = puVar5 + 4;\n  } while (puVar3 != local_448 + 0xf4);\n  uVar6 = puVar2[5];\n  iVar4 = *(int *)(param_1 + 0xc);\n  puVar5[4] = *puVar3;\n  puVar5[5] = uVar6;\n  if (iVar4 == 0) {\n    iVar4 = FUN_00370234();\n  }\n  else {\n    iVar4 = FUN_003703a8(param_1,local_820,auStack_70);\n  }\n  if (iVar4 == 7) {\n    FUN_0037055c(local_448,local_820);\n    FUN_00370a54(local_52c,local_528);\n    return;\n  }\n  (*(code *)PTR_abort_00436908)();\n  return;\n}" primitive_type (function_declarator "FUN_00370e80(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)" identifier (parameter_list "(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) ))) (compound_statement "{\n  undefined4 *puVar1;\n  undefined4 *puVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  undefined4 *puVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 unaff_retaddr;\n  undefined1 auStackX_0 [16];\n  undefined4 local_820 [189];\n  undefined4 local_52c;\n  undefined4 local_528;\n  undefined4 local_448 [246];\n  undefined1 auStack_70 [8];\n  int local_68;\n  undefined4 local_64;\n  undefined4 local_60;\n  undefined4 local_5c;\n  \n  local_68 = param_1;\n  local_64 = param_2;\n  local_60 = param_3;\n  local_5c = param_4;\n  FUN_0036faac(local_448,auStackX_0,unaff_retaddr);\n  puVar3 = local_448;\n  puVar1 = local_820;\n  do {\n    puVar5 = puVar1;\n    puVar2 = puVar3;\n    puVar3 = puVar2 + 4;\n    uVar8 = puVar2[1];\n    uVar7 = puVar2[2];\n    uVar6 = puVar2[3];\n    *puVar5 = *puVar2;\n    puVar5[1] = uVar8;\n    puVar5[2] = uVar7;\n    puVar5[3] = uVar6;\n    puVar1 = puVar5 + 4;\n  } while (puVar3 != local_448 + 0xf4);\n  uVar6 = puVar2[5];\n  iVar4 = *(int *)(param_1 + 0xc);\n  puVar5[4] = *puVar3;\n  puVar5[5] = uVar6;\n  if (iVar4 == 0) {\n    iVar4 = FUN_00370234();\n  }\n  else {\n    iVar4 = FUN_003703a8(param_1,local_820,auStack_70);\n  }\n  if (iVar4 == 7) {\n    FUN_0037055c(local_448,local_820);\n    FUN_00370a54(local_52c,local_528);\n    return;\n  }\n  (*(code *)PTR_abort_00436908)();\n  return;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined4 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined4 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "undefined4 uVar8;" type_identifier identifier ;) (declaration "undefined4 unaff_retaddr;" type_identifier identifier ;) (declaration "undefined1 auStackX_0 [16];" type_identifier (array_declarator "auStackX_0 [16]" identifier [ number_literal ]) ;) (declaration "undefined4 local_820 [189];" type_identifier (array_declarator "local_820 [189]" identifier [ number_literal ]) ;) (declaration "undefined4 local_52c;" type_identifier identifier ;) (declaration "undefined4 local_528;" type_identifier identifier ;) (declaration "undefined4 local_448 [246];" type_identifier (array_declarator "local_448 [246]" identifier [ number_literal ]) ;) (declaration "undefined1 auStack_70 [8];" type_identifier (array_declarator "auStack_70 [8]" identifier [ number_literal ]) ;) (declaration "int local_68;" primitive_type identifier ;) (declaration "undefined4 local_64;" type_identifier identifier ;) (declaration "undefined4 local_60;" type_identifier identifier ;) (declaration "undefined4 local_5c;" type_identifier identifier ;) (expression_statement "local_68 = param_1;" (assignment_expression "local_68 = param_1" identifier = identifier) ;) (expression_statement "local_64 = param_2;" (assignment_expression "local_64 = param_2" identifier = identifier) ;) (expression_statement "local_60 = param_3;" (assignment_expression "local_60 = param_3" identifier = identifier) ;) (expression_statement "local_5c = param_4;" (assignment_expression "local_5c = param_4" identifier = identifier) ;) (expression_statement "FUN_0036faac(local_448,auStackX_0,unaff_retaddr);" (call_expression "FUN_0036faac(local_448,auStackX_0,unaff_retaddr)" identifier (argument_list "(local_448,auStackX_0,unaff_retaddr)" ( identifier , identifier , identifier ))) ;) (expression_statement "puVar3 = local_448;" (assignment_expression "puVar3 = local_448" identifier = identifier) ;) (expression_statement "puVar1 = local_820;" (assignment_expression "puVar1 = local_820" identifier = identifier) ;) (do_statement "do {\n    puVar5 = puVar1;\n    puVar2 = puVar3;\n    puVar3 = puVar2 + 4;\n    uVar8 = puVar2[1];\n    uVar7 = puVar2[2];\n    uVar6 = puVar2[3];\n    *puVar5 = *puVar2;\n    puVar5[1] = uVar8;\n    puVar5[2] = uVar7;\n    puVar5[3] = uVar6;\n    puVar1 = puVar5 + 4;\n  } while (puVar3 != local_448 + 0xf4);" do (compound_statement "{\n    puVar5 = puVar1;\n    puVar2 = puVar3;\n    puVar3 = puVar2 + 4;\n    uVar8 = puVar2[1];\n    uVar7 = puVar2[2];\n    uVar6 = puVar2[3];\n    *puVar5 = *puVar2;\n    puVar5[1] = uVar8;\n    puVar5[2] = uVar7;\n    puVar5[3] = uVar6;\n    puVar1 = puVar5 + 4;\n  }" { (expression_statement "puVar5 = puVar1;" (assignment_expression "puVar5 = puVar1" identifier = identifier) ;) (expression_statement "puVar2 = puVar3;" (assignment_expression "puVar2 = puVar3" identifier = identifier) ;) (expression_statement "puVar3 = puVar2 + 4;" (assignment_expression "puVar3 = puVar2 + 4" identifier = (binary_expression "puVar2 + 4" identifier + number_literal)) ;) (expression_statement "uVar8 = puVar2[1];" (assignment_expression "uVar8 = puVar2[1]" identifier = (subscript_expression "puVar2[1]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = puVar2[2];" (assignment_expression "uVar7 = puVar2[2]" identifier = (subscript_expression "puVar2[2]" identifier [ number_literal ])) ;) (expression_statement "uVar6 = puVar2[3];" (assignment_expression "uVar6 = puVar2[3]" identifier = (subscript_expression "puVar2[3]" identifier [ number_literal ])) ;) (expression_statement "*puVar5 = *puVar2;" (assignment_expression "*puVar5 = *puVar2" (pointer_expression "*puVar5" * identifier) = (pointer_expression "*puVar2" * identifier)) ;) (expression_statement "puVar5[1] = uVar8;" (assignment_expression "puVar5[1] = uVar8" (subscript_expression "puVar5[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar5[2] = uVar7;" (assignment_expression "puVar5[2] = uVar7" (subscript_expression "puVar5[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar5[3] = uVar6;" (assignment_expression "puVar5[3] = uVar6" (subscript_expression "puVar5[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar1 = puVar5 + 4;" (assignment_expression "puVar1 = puVar5 + 4" identifier = (binary_expression "puVar5 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar3 != local_448 + 0xf4)" ( (binary_expression "puVar3 != local_448 + 0xf4" identifier != (binary_expression "local_448 + 0xf4" identifier + number_literal)) )) ;) (expression_statement "uVar6 = puVar2[5];" (assignment_expression "uVar6 = puVar2[5]" identifier = (subscript_expression "puVar2[5]" identifier [ number_literal ])) ;) (expression_statement "iVar4 = *(int *)(param_1 + 0xc);" (assignment_expression "iVar4 = *(int *)(param_1 + 0xc)" identifier = (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "puVar5[4] = *puVar3;" (assignment_expression "puVar5[4] = *puVar3" (subscript_expression "puVar5[4]" identifier [ number_literal ]) = (pointer_expression "*puVar3" * identifier)) ;) (expression_statement "puVar5[5] = uVar6;" (assignment_expression "puVar5[5] = uVar6" (subscript_expression "puVar5[5]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (iVar4 == 0) {\n    iVar4 = FUN_00370234();\n  }\n  else {\n    iVar4 = FUN_003703a8(param_1,local_820,auStack_70);\n  }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar4 = FUN_00370234();\n  }" { (expression_statement "iVar4 = FUN_00370234();" (assignment_expression "iVar4 = FUN_00370234()" identifier = (call_expression "FUN_00370234()" identifier (argument_list "()" ( )))) ;) }) (else_clause "else {\n    iVar4 = FUN_003703a8(param_1,local_820,auStack_70);\n  }" else (compound_statement "{\n    iVar4 = FUN_003703a8(param_1,local_820,auStack_70);\n  }" { (expression_statement "iVar4 = FUN_003703a8(param_1,local_820,auStack_70);" (assignment_expression "iVar4 = FUN_003703a8(param_1,local_820,auStack_70)" identifier = (call_expression "FUN_003703a8(param_1,local_820,auStack_70)" identifier (argument_list "(param_1,local_820,auStack_70)" ( identifier , identifier , identifier )))) ;) }))) (if_statement "if (iVar4 == 7) {\n    FUN_0037055c(local_448,local_820);\n    FUN_00370a54(local_52c,local_528);\n    return;\n  }" if (parenthesized_expression "(iVar4 == 7)" ( (binary_expression "iVar4 == 7" identifier == number_literal) )) (compound_statement "{\n    FUN_0037055c(local_448,local_820);\n    FUN_00370a54(local_52c,local_528);\n    return;\n  }" { (expression_statement "FUN_0037055c(local_448,local_820);" (call_expression "FUN_0037055c(local_448,local_820)" identifier (argument_list "(local_448,local_820)" ( identifier , identifier ))) ;) (expression_statement "FUN_00370a54(local_52c,local_528);" (call_expression "FUN_00370a54(local_52c,local_528)" identifier (argument_list "(local_52c,local_528)" ( identifier , identifier ))) ;) (return_statement "return;" return ;) })) (expression_statement "(*(code *)PTR_abort_00436908)();" (call_expression "(*(code *)PTR_abort_00436908)()" (parenthesized_expression "(*(code *)PTR_abort_00436908)" ( (pointer_expression "*(code *)PTR_abort_00436908" * (cast_expression "(code *)PTR_abort_00436908" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (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 IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (binary_expression IDENT + LIT)) )) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (return_statement return ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (return_statement return ;) })))
(function_definition "void FUN_00370e80(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  undefined4 *puVar1;\n  undefined4 *puVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  undefined4 *puVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 unaff_retaddr;\n  undefined1 auStackX_0 [16];\n  undefined4 local_820 [189];\n  undefined4 local_52c;\n  undefined4 local_528;\n  undefined4 local_448 [246];\n  undefined1 auStack_70 [8];\n  int local_68;\n  undefined4 local_64;\n  undefined4 local_60;\n  undefined4 local_5c;\n  \n  local_68 = param_1;\n  local_64 = param_2;\n  local_60 = param_3;\n  local_5c = param_4;\n  FUN_0036faac(local_448,auStackX_0,unaff_retaddr);\n  puVar3 = local_448;\n  puVar1 = local_820;\n  do {\n    puVar5 = puVar1;\n    puVar2 = puVar3;\n    puVar3 = puVar2 + 4;\n    uVar8 = puVar2[1];\n    uVar7 = puVar2[2];\n    uVar6 = puVar2[3];\n    *puVar5 = *puVar2;\n    puVar5[1] = uVar8;\n    puVar5[2] = uVar7;\n    puVar5[3] = uVar6;\n    puVar1 = puVar5 + 4;\n  } while (puVar3 != local_448 + 0xf4);\n  uVar6 = puVar2[5];\n  iVar4 = *(int *)(param_1 + 0xc);\n  puVar5[4] = *puVar3;\n  puVar5[5] = uVar6;\n  if (iVar4 == 0) {\n    iVar4 = FUN_00370234();\n  }\n  else {\n    iVar4 = FUN_003703a8(param_1,local_820,auStack_70);\n  }\n  if (iVar4 == 7) {\n    FUN_0037055c(local_448,local_820);\n    FUN_00370a54(local_52c,local_528);\n    return;\n  }\n  (*(code *)PTR_abort_00436908)();\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00370e80(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)" (identifier "FUN_00370e80") (parameter_list "(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (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 "undefined4 param_4" (type_identifier "undefined4") (identifier "param_4")) () ")"))) (compound_statement "{\n  undefined4 *puVar1;\n  undefined4 *puVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  undefined4 *puVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined4 uVar8;\n  undefined4 unaff_retaddr;\n  undefined1 auStackX_0 [16];\n  undefined4 local_820 [189];\n  undefined4 local_52c;\n  undefined4 local_528;\n  undefined4 local_448 [246];\n  undefined1 auStack_70 [8];\n  int local_68;\n  undefined4 local_64;\n  undefined4 local_60;\n  undefined4 local_5c;\n  \n  local_68 = param_1;\n  local_64 = param_2;\n  local_60 = param_3;\n  local_5c = param_4;\n  FUN_0036faac(local_448,auStackX_0,unaff_retaddr);\n  puVar3 = local_448;\n  puVar1 = local_820;\n  do {\n    puVar5 = puVar1;\n    puVar2 = puVar3;\n    puVar3 = puVar2 + 4;\n    uVar8 = puVar2[1];\n    uVar7 = puVar2[2];\n    uVar6 = puVar2[3];\n    *puVar5 = *puVar2;\n    puVar5[1] = uVar8;\n    puVar5[2] = uVar7;\n    puVar5[3] = uVar6;\n    puVar1 = puVar5 + 4;\n  } while (puVar3 != local_448 + 0xf4);\n  uVar6 = puVar2[5];\n  iVar4 = *(int *)(param_1 + 0xc);\n  puVar5[4] = *puVar3;\n  puVar5[5] = uVar6;\n  if (iVar4 == 0) {\n    iVar4 = FUN_00370234();\n  }\n  else {\n    iVar4 = FUN_003703a8(param_1,local_820,auStack_70);\n  }\n  if (iVar4 == 7) {\n    FUN_0037055c(local_448,local_820);\n    FUN_00370a54(local_52c,local_528);\n    return;\n  }\n  (*(code *)PTR_abort_00436908)();\n  return;\n}" ({ "{") (declaration "undefined4 *puVar1;" (type_identifier "undefined4") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "undefined4 *puVar2;" (type_identifier "undefined4") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "undefined4 *puVar3;" (type_identifier "undefined4") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "undefined4 *puVar5;" (type_identifier "undefined4") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "undefined4 uVar6;" (type_identifier "undefined4") (identifier "uVar6") (; ";")) (declaration "undefined4 uVar7;" (type_identifier "undefined4") (identifier "uVar7") (; ";")) (declaration "undefined4 uVar8;" (type_identifier "undefined4") (identifier "uVar8") (; ";")) (declaration "undefined4 unaff_retaddr;" (type_identifier "undefined4") (identifier "unaff_retaddr") (; ";")) (declaration "undefined1 auStackX_0 [16];" (type_identifier "undefined1") (array_declarator "auStackX_0 [16]" (identifier "auStackX_0") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "undefined4 local_820 [189];" (type_identifier "undefined4") (array_declarator "local_820 [189]" (identifier "local_820") ([ "[") (number_literal "189") (] "]")) (; ";")) (declaration "undefined4 local_52c;" (type_identifier "undefined4") (identifier "local_52c") (; ";")) (declaration "undefined4 local_528;" (type_identifier "undefined4") (identifier "local_528") (; ";")) (declaration "undefined4 local_448 [246];" (type_identifier "undefined4") (array_declarator "local_448 [246]" (identifier "local_448") ([ "[") (number_literal "246") (] "]")) (; ";")) (declaration "undefined1 auStack_70 [8];" (type_identifier "undefined1") (array_declarator "auStack_70 [8]" (identifier "auStack_70") ([ "[") (number_literal "8") (] "]")) (; ";")) (declaration "int local_68;" (primitive_type "int") (identifier "local_68") (; ";")) (declaration "undefined4 local_64;" (type_identifier "undefined4") (identifier "local_64") (; ";")) (declaration "undefined4 local_60;" (type_identifier "undefined4") (identifier "local_60") (; ";")) (declaration "undefined4 local_5c;" (type_identifier "undefined4") (identifier "local_5c") (; ";")) (expression_statement "local_68 = param_1;" (assignment_expression "local_68 = param_1" (identifier "local_68") (= "=") (identifier "param_1")) (; ";")) (expression_statement "local_64 = param_2;" (assignment_expression "local_64 = param_2" (identifier "local_64") (= "=") (identifier "param_2")) (; ";")) (expression_statement "local_60 = param_3;" (assignment_expression "local_60 = param_3" (identifier "local_60") (= "=") (identifier "param_3")) (; ";")) (expression_statement "local_5c = param_4;" (assignment_expression "local_5c = param_4" (identifier "local_5c") (= "=") (identifier "param_4")) (; ";")) (expression_statement "FUN_0036faac(local_448,auStackX_0,unaff_retaddr);" (call_expression "FUN_0036faac(local_448,auStackX_0,unaff_retaddr)" (identifier "FUN_0036faac") (argument_list "(local_448,auStackX_0,unaff_retaddr)" (( "(") (identifier "local_448") (, ",") (identifier "auStackX_0") (, ",") (identifier "unaff_retaddr") () ")"))) (; ";")) (expression_statement "puVar3 = local_448;" (assignment_expression "puVar3 = local_448" (identifier "puVar3") (= "=") (identifier "local_448")) (; ";")) (expression_statement "puVar1 = local_820;" (assignment_expression "puVar1 = local_820" (identifier "puVar1") (= "=") (identifier "local_820")) (; ";")) (do_statement "do {\n    puVar5 = puVar1;\n    puVar2 = puVar3;\n    puVar3 = puVar2 + 4;\n    uVar8 = puVar2[1];\n    uVar7 = puVar2[2];\n    uVar6 = puVar2[3];\n    *puVar5 = *puVar2;\n    puVar5[1] = uVar8;\n    puVar5[2] = uVar7;\n    puVar5[3] = uVar6;\n    puVar1 = puVar5 + 4;\n  } while (puVar3 != local_448 + 0xf4);" (do "do") (compound_statement "{\n    puVar5 = puVar1;\n    puVar2 = puVar3;\n    puVar3 = puVar2 + 4;\n    uVar8 = puVar2[1];\n    uVar7 = puVar2[2];\n    uVar6 = puVar2[3];\n    *puVar5 = *puVar2;\n    puVar5[1] = uVar8;\n    puVar5[2] = uVar7;\n    puVar5[3] = uVar6;\n    puVar1 = puVar5 + 4;\n  }" ({ "{") (expression_statement "puVar5 = puVar1;" (assignment_expression "puVar5 = puVar1" (identifier "puVar5") (= "=") (identifier "puVar1")) (; ";")) (expression_statement "puVar2 = puVar3;" (assignment_expression "puVar2 = puVar3" (identifier "puVar2") (= "=") (identifier "puVar3")) (; ";")) (expression_statement "puVar3 = puVar2 + 4;" (assignment_expression "puVar3 = puVar2 + 4" (identifier "puVar3") (= "=") (binary_expression "puVar2 + 4" (identifier "puVar2") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "uVar8 = puVar2[1];" (assignment_expression "uVar8 = puVar2[1]" (identifier "uVar8") (= "=") (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar7 = puVar2[2];" (assignment_expression "uVar7 = puVar2[2]" (identifier "uVar7") (= "=") (subscript_expression "puVar2[2]" (identifier "puVar2") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "uVar6 = puVar2[3];" (assignment_expression "uVar6 = puVar2[3]" (identifier "uVar6") (= "=") (subscript_expression "puVar2[3]" (identifier "puVar2") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "*puVar5 = *puVar2;" (assignment_expression "*puVar5 = *puVar2" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (pointer_expression "*puVar2" (* "*") (identifier "puVar2"))) (; ";")) (expression_statement "puVar5[1] = uVar8;" (assignment_expression "puVar5[1] = uVar8" (subscript_expression "puVar5[1]" (identifier "puVar5") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar8")) (; ";")) (expression_statement "puVar5[2] = uVar7;" (assignment_expression "puVar5[2] = uVar7" (subscript_expression "puVar5[2]" (identifier "puVar5") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "uVar7")) (; ";")) (expression_statement "puVar5[3] = uVar6;" (assignment_expression "puVar5[3] = uVar6" (subscript_expression "puVar5[3]" (identifier "puVar5") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "uVar6")) (; ";")) (expression_statement "puVar1 = puVar5 + 4;" (assignment_expression "puVar1 = puVar5 + 4" (identifier "puVar1") (= "=") (binary_expression "puVar5 + 4" (identifier "puVar5") (+ "+") (number_literal "4"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar3 != local_448 + 0xf4)" (( "(") (binary_expression "puVar3 != local_448 + 0xf4" (identifier "puVar3") (!= "!=") (binary_expression "local_448 + 0xf4" (identifier "local_448") (+ "+") (number_literal "0xf4"))) () ")")) (; ";")) (expression_statement "uVar6 = puVar2[5];" (assignment_expression "uVar6 = puVar2[5]" (identifier "uVar6") (= "=") (subscript_expression "puVar2[5]" (identifier "puVar2") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "iVar4 = *(int *)(param_1 + 0xc);" (assignment_expression "iVar4 = *(int *)(param_1 + 0xc)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(param_1 + 0xc)" (* "*") (cast_expression "(int *)(param_1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "puVar5[4] = *puVar3;" (assignment_expression "puVar5[4] = *puVar3" (subscript_expression "puVar5[4]" (identifier "puVar5") ([ "[") (number_literal "4") (] "]")) (= "=") (pointer_expression "*puVar3" (* "*") (identifier "puVar3"))) (; ";")) (expression_statement "puVar5[5] = uVar6;" (assignment_expression "puVar5[5] = uVar6" (subscript_expression "puVar5[5]" (identifier "puVar5") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "uVar6")) (; ";")) (if_statement "if (iVar4 == 0) {\n    iVar4 = FUN_00370234();\n  }\n  else {\n    iVar4 = FUN_003703a8(param_1,local_820,auStack_70);\n  }" (if "if") (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    iVar4 = FUN_00370234();\n  }" ({ "{") (expression_statement "iVar4 = FUN_00370234();" (assignment_expression "iVar4 = FUN_00370234()" (identifier "iVar4") (= "=") (call_expression "FUN_00370234()" (identifier "FUN_00370234") (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")) (else_clause "else {\n    iVar4 = FUN_003703a8(param_1,local_820,auStack_70);\n  }" (else "else") (compound_statement "{\n    iVar4 = FUN_003703a8(param_1,local_820,auStack_70);\n  }" ({ "{") (expression_statement "iVar4 = FUN_003703a8(param_1,local_820,auStack_70);" (assignment_expression "iVar4 = FUN_003703a8(param_1,local_820,auStack_70)" (identifier "iVar4") (= "=") (call_expression "FUN_003703a8(param_1,local_820,auStack_70)" (identifier "FUN_003703a8") (argument_list "(param_1,local_820,auStack_70)" (( "(") (identifier "param_1") (, ",") (identifier "local_820") (, ",") (identifier "auStack_70") () ")")))) (; ";")) (} "}")))) (if_statement "if (iVar4 == 7) {\n    FUN_0037055c(local_448,local_820);\n    FUN_00370a54(local_52c,local_528);\n    return;\n  }" (if "if") (parenthesized_expression "(iVar4 == 7)" (( "(") (binary_expression "iVar4 == 7" (identifier "iVar4") (== "==") (number_literal "7")) () ")")) (compound_statement "{\n    FUN_0037055c(local_448,local_820);\n    FUN_00370a54(local_52c,local_528);\n    return;\n  }" ({ "{") (expression_statement "FUN_0037055c(local_448,local_820);" (call_expression "FUN_0037055c(local_448,local_820)" (identifier "FUN_0037055c") (argument_list "(local_448,local_820)" (( "(") (identifier "local_448") (, ",") (identifier "local_820") () ")"))) (; ";")) (expression_statement "FUN_00370a54(local_52c,local_528);" (call_expression "FUN_00370a54(local_52c,local_528)" (identifier "FUN_00370a54") (argument_list "(local_52c,local_528)" (( "(") (identifier "local_52c") (, ",") (identifier "local_528") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "(*(code *)PTR_abort_00436908)();" (call_expression "(*(code *)PTR_abort_00436908)()" (parenthesized_expression "(*(code *)PTR_abort_00436908)" (( "(") (pointer_expression "*(code *)PTR_abort_00436908" (* "*") (cast_expression "(code *)PTR_abort_00436908" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_abort_00436908"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

void function_1(int var_6,type_1 param_2,type_1 param_3,type_1 param_4)

{
  type_1 *puVar1;
  type_1 *var_2;
  type_1 *var_4;
  int var_7;
  type_1 *var_3;
  type_1 uVar6;
  type_1 uVar7;
  type_1 uVar8;
  type_1 unaff_retaddr;
  type_2 auStackX_0 [16];
  type_1 local_820 [189];
  type_1 local_52c;
  type_1 local_528;
  type_1 var_5 [246];
  type_2 auStack_70 [8];
  int local_68;
  type_1 local_64;
  type_1 local_60;
  type_1 local_5c;
  
  local_68 = var_6;
  local_64 = param_2;
  local_60 = param_3;
  local_5c = param_4;
  var_1(var_5,auStackX_0,unaff_retaddr);
  var_4 = var_5;
  puVar1 = local_820;
  do {
    var_3 = puVar1;
    var_2 = var_4;
    var_4 = var_2 + 4;
    uVar8 = var_2[1];
    uVar7 = var_2[2];
    uVar6 = var_2[3];
    *var_3 = *var_2;
    var_3[1] = uVar8;
    var_3[2] = uVar7;
    var_3[3] = uVar6;
    puVar1 = var_3 + 4;
  } while (var_4 != var_5 + 0xf4);
  uVar6 = var_2[5];
  var_7 = *(int *)(var_6 + 0xc);
  var_3[4] = *var_4;
  var_3[5] = uVar6;
  if (var_7 == 0) {
    var_7 = var_8();
  }
  else {
    var_7 = var_9(var_6,local_820,auStack_70);
  }
  if (var_7 == 7) {
    var_10(var_5,local_820);
    var_11(local_52c,local_528);
    return;
  }
  (*(type_3 *)PTR_abort_00436908)();
  return;
}


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

void MASKED(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  undefined4 *puVar1;
  undefined4 *puVar2;
  undefined4 *puVar3;
  int iVar4;
  undefined4 *puVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  undefined4 uVar8;
  undefined4 unaff_retaddr;
  undefined1 auStackX_0 [16];
  undefined4 local_820 [189];
  undefined4 local_52c;
  undefined4 local_528;
  undefined4 local_448 [246];
  undefined1 auStack_70 [8];
  int local_68;
  undefined4 local_64;
  undefined4 local_60;
  undefined4 local_5c;
  
  local_68 = param_1;
  local_64 = param_2;
  local_60 = param_3;
  local_5c = param_4;
  FUN_0036faac(local_448,auStackX_0,unaff_retaddr);
  puVar3 = local_448;
  puVar1 = local_820;
  do {
    puVar5 = puVar1;
    puVar2 = puVar3;
    puVar3 = puVar2 + 4;
    uVar8 = puVar2[1];
    uVar7 = puVar2[2];
    uVar6 = puVar2[3];
    *puVar5 = *puVar2;
    puVar5[1] = uVar8;
    puVar5[2] = uVar7;
    puVar5[3] = uVar6;
    puVar1 = puVar5 + 4;
  } while (puVar3 != local_448 + 0xf4);
  uVar6 = puVar2[5];
  iVar4 = *(int *)(param_1 + 0xc);
  puVar5[4] = *puVar3;
  puVar5[5] = uVar6;
  if (iVar4 == 0) {
    iVar4 = FUN_00370234();
  }
  else {
    iVar4 = FUN_003703a8(param_1,local_820,auStack_70);
  }
  if (iVar4 == 7) {
    FUN_0037055c(local_448,local_820);
    FUN_00370a54(local_52c,local_528);
    return;
  }
  (*(code *)PTR_abort_00436908)();
  return;
}

