
int __regparm2 _Unwind_RaiseException(undefined4 param_1,undefined4 param_2,undefined4 *param_3)

{
  undefined4 uVar1;
  int iVar2;
  int extraout_EDX;
  undefined4 *puVar3;
  undefined4 *puVar4;
  byte bVar5;
  undefined4 local_1dc [32];
  undefined4 local_15c [18];
  int local_114;
  undefined4 local_110;
  int local_fc;
  code *local_34;
  int local_18;
  undefined4 local_14;
  
  bVar5 = 0;
  local_14 = param_2;
  uw_init_context_1();
  puVar3 = local_1dc;
  puVar4 = local_15c;
  for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {
    *puVar4 = *puVar3;
    puVar3 = puVar3 + (uint)bVar5 * -2 + 1;
    puVar4 = puVar4 + (uint)bVar5 * -2 + 1;
  }
  while( true ) {
    iVar2 = uw_frame_state_for();
    if (iVar2 == 5) {
      return 5;
    }
    if (iVar2 != 0) break;
    if (local_34 != (code *)0x0) {
      iVar2 = (*local_34)(1,1,*param_3,param_3[1],param_3,local_15c);
      if (iVar2 == 6) {
        param_3[3] = 0;
        param_3[4] = local_114 + (local_fc >> 0x1f);
        puVar3 = local_1dc;
        puVar4 = local_15c;
        for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {
          *puVar4 = *puVar3;
          puVar3 = puVar3 + (uint)bVar5 * -2 + 1;
          puVar4 = puVar4 + (uint)bVar5 * -2 + 1;
        }
        iVar2 = _Unwind_RaiseException_Phase2();
        if (iVar2 != 7) {
          return iVar2;
        }
        uVar1 = uw_install_context_1();
        _Unwind_DebugHook(local_114,local_110,uVar1,uVar1);
        *(undefined4 *)(&stack0x00000000 + extraout_EDX) = local_110;
        return local_18;
      }
      if (iVar2 != 8) {
        return 3;
      }
    }
    uw_update_context();
  }
  return 3;
}



int __regparm2 FUN_00217590(undefined4 param_1,undefined4 param_2,undefined4 *param_3)

{
  undefined4 uVar1;
  int iVar2;
  int extraout_EDX;
  undefined4 *puVar3;
  undefined4 *puVar4;
  byte bVar5;
  undefined4 local_1dc [32];
  undefined4 local_15c [18];
  int local_114;
  undefined4 local_110;
  int local_fc;
  code *local_34;
  int local_18;
  undefined4 local_14;
  
  bVar5 = 0;
  local_14 = param_2;
  FUN_00216e00();
  puVar3 = local_1dc;
  puVar4 = local_15c;
  for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {
    *puVar4 = *puVar3;
    puVar3 = puVar3 + (uint)bVar5 * -2 + 1;
    puVar4 = puVar4 + (uint)bVar5 * -2 + 1;
  }
  while( true ) {
    iVar2 = FUN_00215e20();
    if (iVar2 == 5) {
      return 5;
    }
    if (iVar2 != 0) break;
    if (local_34 != (code *)0x0) {
      iVar2 = (*local_34)(1,1,*param_3,param_3[1],param_3,local_15c);
      if (iVar2 == 6) {
        param_3[3] = 0;
        param_3[4] = local_114 + (local_fc >> 0x1f);
        puVar3 = local_1dc;
        puVar4 = local_15c;
        for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {
          *puVar4 = *puVar3;
          puVar3 = puVar3 + (uint)bVar5 * -2 + 1;
          puVar4 = puVar4 + (uint)bVar5 * -2 + 1;
        }
        iVar2 = FUN_00216fd0();
        if (iVar2 != 7) {
          return iVar2;
        }
        uVar1 = FUN_00217190();
        FUN_00217580(local_114,local_110,uVar1,uVar1);
        *(undefined4 *)(&stack0x00000000 + extraout_EDX) = local_110;
        return local_18;
      }
      if (iVar2 != 8) {
        return 3;
      }
    }
    FUN_00216f60();
  }
  return 3;
}


PUSH EBP
MOV EBP,ESP
PUSH EDI
PUSH ESI
LEA ESI,[EBP + 0xfffffe28]
PUSH EBX
LEA EBX,[EBP + 0xfffffea8]
PUSH EDX
LEA EDX,[EBP + 0x8]
MOV EDI,EBX
PUSH EAX
MOV EAX,ESI
SUB ESP,0x1d4
MOV ECX,dword ptr [EBP + 0x4]
MOV dword ptr [EBP + 0xfffffe20],ESI
CALL 0x00216e00
LEA EAX,[EBP + 0xffffff28]
MOV ECX,0x20
MOVSD.REP ES:EDI,ESI
MOV dword ptr [EBP + 0xfffffe24],EAX
JMP 0x00217612
TEST EAX,EAX
JNZ 0x00217630
MOV EAX,dword ptr [EBP + -0x30]
TEST EAX,EAX
JZ 0x00217605
MOV ESI,dword ptr [EBP + 0x8]
SUB ESP,0x8
PUSH EBX
PUSH dword ptr [EBP + 0x8]
PUSH dword ptr [ESI + 0x4]
PUSH dword ptr [ESI]
PUSH 0x1
PUSH 0x1
CALL EAX
ADD ESP,0x20
CMP EAX,0x6
JZ 0x00217640
CMP EAX,0x8
JNZ 0x00217630
MOV EDX,dword ptr [EBP + 0xfffffe24]
MOV EAX,EBX
CALL 0x00216f60
MOV EDX,dword ptr [EBP + 0xfffffe24]
MOV EAX,EBX
CALL 0x00215e20
CMP EAX,0x5
JNZ 0x002175d8
MOV EBX,dword ptr [EBP + -0xc]
MOV ESI,dword ptr [EBP + -0x8]
MOV EDI,dword ptr [EBP + -0x4]
LEAVE
RET
MOV EAX,0x3
MOV EBX,dword ptr [EBP + -0xc]
MOV ESI,dword ptr [EBP + -0x8]
MOV EDI,dword ptr [EBP + -0x4]
LEAVE
RET
MOV EAX,dword ptr [EBP + 0x8]
MOV EDI,dword ptr [EBP + 0xfffffef0]
MOV ECX,0x20
MOV EDX,EBX
MOV ESI,dword ptr [EBP + 0xfffffe20]
MOV dword ptr [EAX + 0xc],0x0
MOV EAX,dword ptr [EBP + 0xffffff08]
SHR EAX,0x1f
SUB EDI,EAX
MOV EAX,EDI
MOV EDI,dword ptr [EBP + 0x8]
MOV dword ptr [EDI + 0x10],EAX
MOV EDI,EBX
MOV EAX,dword ptr [EBP + 0x8]
MOVSD.REP ES:EDI,ESI
MOV ECX,dword ptr [EBP + 0xfffffe24]
CALL 0x00216fd0
CMP EAX,0x7
JNZ 0x00217624
MOV EAX,dword ptr [EBP + 0xfffffe20]
MOV EDX,EBX
CALL 0x00217190
MOV EBX,dword ptr [EBP + 0xfffffef4]
MOV EDX,EAX
PUSH EAX
PUSH EAX
PUSH EBX
PUSH dword ptr [EBP + 0xfffffef0]
CALL 0x00217580
ADD ESP,0x10
MOV ECX,EDX
MOV dword ptr [EBP + EDX*0x1 + 0x4],EBX
MOV EAX,dword ptr [EBP + -0x14]
LEA ECX,[EBP + ECX*0x1 + 0x4]
MOV EDX,dword ptr [EBP + -0x10]
MOV EBX,dword ptr [EBP + -0xc]
MOV ESI,dword ptr [EBP + -0x8]
MOV EDI,dword ptr [EBP + -0x4]
MOV EBP,dword ptr [EBP]
MOV ESP,ECX
RET
(translation_unit "int __regparm2 FUN_00217590(undefined4 param_1,undefined4 param_2,undefined4 *param_3)\n\n{\n  undefined4 uVar1;\n  int iVar2;\n  int extraout_EDX;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  byte bVar5;\n  undefined4 local_1dc [32];\n  undefined4 local_15c [18];\n  int local_114;\n  undefined4 local_110;\n  int local_fc;\n  code *local_34;\n  int local_18;\n  undefined4 local_14;\n  \n  bVar5 = 0;\n  local_14 = param_2;\n  FUN_00216e00();\n  puVar3 = local_1dc;\n  puVar4 = local_15c;\n  for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {\n    *puVar4 = *puVar3;\n    puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n    puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n  }\n  while( true ) {\n    iVar2 = FUN_00215e20();\n    if (iVar2 == 5) {\n      return 5;\n    }\n    if (iVar2 != 0) break;\n    if (local_34 != (code *)0x0) {\n      iVar2 = (*local_34)(1,1,*param_3,param_3[1],param_3,local_15c);\n      if (iVar2 == 6) {\n        param_3[3] = 0;\n        param_3[4] = local_114 + (local_fc >> 0x1f);\n        puVar3 = local_1dc;\n        puVar4 = local_15c;\n        for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {\n          *puVar4 = *puVar3;\n          puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n          puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n        }\n        iVar2 = FUN_00216fd0();\n        if (iVar2 != 7) {\n          return iVar2;\n        }\n        uVar1 = FUN_00217190();\n        FUN_00217580(local_114,local_110,uVar1,uVar1);\n        *(undefined4 *)(&stack0x00000000 + extraout_EDX) = local_110;\n        return local_18;\n      }\n      if (iVar2 != 8) {\n        return 3;\n      }\n    }\n    FUN_00216f60();\n  }\n  return 3;\n}\n\n" (function_definition "int __regparm2 FUN_00217590(undefined4 param_1,undefined4 param_2,undefined4 *param_3)\n\n{\n  undefined4 uVar1;\n  int iVar2;\n  int extraout_EDX;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  byte bVar5;\n  undefined4 local_1dc [32];\n  undefined4 local_15c [18];\n  int local_114;\n  undefined4 local_110;\n  int local_fc;\n  code *local_34;\n  int local_18;\n  undefined4 local_14;\n  \n  bVar5 = 0;\n  local_14 = param_2;\n  FUN_00216e00();\n  puVar3 = local_1dc;\n  puVar4 = local_15c;\n  for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {\n    *puVar4 = *puVar3;\n    puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n    puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n  }\n  while( true ) {\n    iVar2 = FUN_00215e20();\n    if (iVar2 == 5) {\n      return 5;\n    }\n    if (iVar2 != 0) break;\n    if (local_34 != (code *)0x0) {\n      iVar2 = (*local_34)(1,1,*param_3,param_3[1],param_3,local_15c);\n      if (iVar2 == 6) {\n        param_3[3] = 0;\n        param_3[4] = local_114 + (local_fc >> 0x1f);\n        puVar3 = local_1dc;\n        puVar4 = local_15c;\n        for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {\n          *puVar4 = *puVar3;\n          puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n          puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n        }\n        iVar2 = FUN_00216fd0();\n        if (iVar2 != 7) {\n          return iVar2;\n        }\n        uVar1 = FUN_00217190();\n        FUN_00217580(local_114,local_110,uVar1,uVar1);\n        *(undefined4 *)(&stack0x00000000 + extraout_EDX) = local_110;\n        return local_18;\n      }\n      if (iVar2 != 8) {\n        return 3;\n      }\n    }\n    FUN_00216f60();\n  }\n  return 3;\n}" primitive_type (ERROR "__regparm2" identifier) (function_declarator "FUN_00217590(undefined4 param_1,undefined4 param_2,undefined4 *param_3)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2,undefined4 *param_3)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  undefined4 uVar1;\n  int iVar2;\n  int extraout_EDX;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  byte bVar5;\n  undefined4 local_1dc [32];\n  undefined4 local_15c [18];\n  int local_114;\n  undefined4 local_110;\n  int local_fc;\n  code *local_34;\n  int local_18;\n  undefined4 local_14;\n  \n  bVar5 = 0;\n  local_14 = param_2;\n  FUN_00216e00();\n  puVar3 = local_1dc;\n  puVar4 = local_15c;\n  for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {\n    *puVar4 = *puVar3;\n    puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n    puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n  }\n  while( true ) {\n    iVar2 = FUN_00215e20();\n    if (iVar2 == 5) {\n      return 5;\n    }\n    if (iVar2 != 0) break;\n    if (local_34 != (code *)0x0) {\n      iVar2 = (*local_34)(1,1,*param_3,param_3[1],param_3,local_15c);\n      if (iVar2 == 6) {\n        param_3[3] = 0;\n        param_3[4] = local_114 + (local_fc >> 0x1f);\n        puVar3 = local_1dc;\n        puVar4 = local_15c;\n        for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {\n          *puVar4 = *puVar3;\n          puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n          puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n        }\n        iVar2 = FUN_00216fd0();\n        if (iVar2 != 7) {\n          return iVar2;\n        }\n        uVar1 = FUN_00217190();\n        FUN_00217580(local_114,local_110,uVar1,uVar1);\n        *(undefined4 *)(&stack0x00000000 + extraout_EDX) = local_110;\n        return local_18;\n      }\n      if (iVar2 != 8) {\n        return 3;\n      }\n    }\n    FUN_00216f60();\n  }\n  return 3;\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int extraout_EDX;" primitive_type identifier ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "byte bVar5;" type_identifier identifier ;) (declaration "undefined4 local_1dc [32];" type_identifier (array_declarator "local_1dc [32]" identifier [ number_literal ]) ;) (declaration "undefined4 local_15c [18];" type_identifier (array_declarator "local_15c [18]" identifier [ number_literal ]) ;) (declaration "int local_114;" primitive_type identifier ;) (declaration "undefined4 local_110;" type_identifier identifier ;) (declaration "int local_fc;" primitive_type identifier ;) (declaration "code *local_34;" type_identifier (pointer_declarator "*local_34" * identifier) ;) (declaration "int local_18;" primitive_type identifier ;) (declaration "undefined4 local_14;" type_identifier identifier ;) (expression_statement "bVar5 = 0;" (assignment_expression "bVar5 = 0" identifier = number_literal) ;) (expression_statement "local_14 = param_2;" (assignment_expression "local_14 = param_2" identifier = identifier) ;) (expression_statement "FUN_00216e00();" (call_expression "FUN_00216e00()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar3 = local_1dc;" (assignment_expression "puVar3 = local_1dc" identifier = identifier) ;) (expression_statement "puVar4 = local_15c;" (assignment_expression "puVar4 = local_15c" identifier = identifier) ;) (for_statement "for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {\n    *puVar4 = *puVar3;\n    puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n    puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n  }" for ( (assignment_expression "iVar2 = 0x20" identifier = number_literal) ; (binary_expression "iVar2 != 0" identifier != number_literal) ; (assignment_expression "iVar2 = iVar2 + -1" identifier = (binary_expression "iVar2 + -1" identifier + number_literal)) ) (compound_statement "{\n    *puVar4 = *puVar3;\n    puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n    puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n  }" { (expression_statement "*puVar4 = *puVar3;" (assignment_expression "*puVar4 = *puVar3" (pointer_expression "*puVar4" * identifier) = (pointer_expression "*puVar3" * identifier)) ;) (expression_statement "puVar3 = puVar3 + (uint)bVar5 * -2 + 1;" (assignment_expression "puVar3 = puVar3 + (uint)bVar5 * -2 + 1" identifier = (binary_expression "puVar3 + (uint)bVar5 * -2 + 1" (binary_expression "puVar3 + (uint)bVar5 * -2" identifier + (binary_expression "(uint)bVar5 * -2" (cast_expression "(uint)bVar5" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "puVar4 = puVar4 + (uint)bVar5 * -2 + 1;" (assignment_expression "puVar4 = puVar4 + (uint)bVar5 * -2 + 1" identifier = (binary_expression "puVar4 + (uint)bVar5 * -2 + 1" (binary_expression "puVar4 + (uint)bVar5 * -2" identifier + (binary_expression "(uint)bVar5 * -2" (cast_expression "(uint)bVar5" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (while_statement "while( true ) {\n    iVar2 = FUN_00215e20();\n    if (iVar2 == 5) {\n      return 5;\n    }\n    if (iVar2 != 0) break;\n    if (local_34 != (code *)0x0) {\n      iVar2 = (*local_34)(1,1,*param_3,param_3[1],param_3,local_15c);\n      if (iVar2 == 6) {\n        param_3[3] = 0;\n        param_3[4] = local_114 + (local_fc >> 0x1f);\n        puVar3 = local_1dc;\n        puVar4 = local_15c;\n        for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {\n          *puVar4 = *puVar3;\n          puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n          puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n        }\n        iVar2 = FUN_00216fd0();\n        if (iVar2 != 7) {\n          return iVar2;\n        }\n        uVar1 = FUN_00217190();\n        FUN_00217580(local_114,local_110,uVar1,uVar1);\n        *(undefined4 *)(&stack0x00000000 + extraout_EDX) = local_110;\n        return local_18;\n      }\n      if (iVar2 != 8) {\n        return 3;\n      }\n    }\n    FUN_00216f60();\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    iVar2 = FUN_00215e20();\n    if (iVar2 == 5) {\n      return 5;\n    }\n    if (iVar2 != 0) break;\n    if (local_34 != (code *)0x0) {\n      iVar2 = (*local_34)(1,1,*param_3,param_3[1],param_3,local_15c);\n      if (iVar2 == 6) {\n        param_3[3] = 0;\n        param_3[4] = local_114 + (local_fc >> 0x1f);\n        puVar3 = local_1dc;\n        puVar4 = local_15c;\n        for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {\n          *puVar4 = *puVar3;\n          puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n          puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n        }\n        iVar2 = FUN_00216fd0();\n        if (iVar2 != 7) {\n          return iVar2;\n        }\n        uVar1 = FUN_00217190();\n        FUN_00217580(local_114,local_110,uVar1,uVar1);\n        *(undefined4 *)(&stack0x00000000 + extraout_EDX) = local_110;\n        return local_18;\n      }\n      if (iVar2 != 8) {\n        return 3;\n      }\n    }\n    FUN_00216f60();\n  }" { (expression_statement "iVar2 = FUN_00215e20();" (assignment_expression "iVar2 = FUN_00215e20()" identifier = (call_expression "FUN_00215e20()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar2 == 5) {\n      return 5;\n    }" if (parenthesized_expression "(iVar2 == 5)" ( (binary_expression "iVar2 == 5" identifier == number_literal) )) (compound_statement "{\n      return 5;\n    }" { (return_statement "return 5;" return number_literal ;) })) (if_statement "if (iVar2 != 0) break;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (if_statement "if (local_34 != (code *)0x0) {\n      iVar2 = (*local_34)(1,1,*param_3,param_3[1],param_3,local_15c);\n      if (iVar2 == 6) {\n        param_3[3] = 0;\n        param_3[4] = local_114 + (local_fc >> 0x1f);\n        puVar3 = local_1dc;\n        puVar4 = local_15c;\n        for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {\n          *puVar4 = *puVar3;\n          puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n          puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n        }\n        iVar2 = FUN_00216fd0();\n        if (iVar2 != 7) {\n          return iVar2;\n        }\n        uVar1 = FUN_00217190();\n        FUN_00217580(local_114,local_110,uVar1,uVar1);\n        *(undefined4 *)(&stack0x00000000 + extraout_EDX) = local_110;\n        return local_18;\n      }\n      if (iVar2 != 8) {\n        return 3;\n      }\n    }" if (parenthesized_expression "(local_34 != (code *)0x0)" ( (binary_expression "local_34 != (code *)0x0" identifier != (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      iVar2 = (*local_34)(1,1,*param_3,param_3[1],param_3,local_15c);\n      if (iVar2 == 6) {\n        param_3[3] = 0;\n        param_3[4] = local_114 + (local_fc >> 0x1f);\n        puVar3 = local_1dc;\n        puVar4 = local_15c;\n        for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {\n          *puVar4 = *puVar3;\n          puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n          puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n        }\n        iVar2 = FUN_00216fd0();\n        if (iVar2 != 7) {\n          return iVar2;\n        }\n        uVar1 = FUN_00217190();\n        FUN_00217580(local_114,local_110,uVar1,uVar1);\n        *(undefined4 *)(&stack0x00000000 + extraout_EDX) = local_110;\n        return local_18;\n      }\n      if (iVar2 != 8) {\n        return 3;\n      }\n    }" { (expression_statement "iVar2 = (*local_34)(1,1,*param_3,param_3[1],param_3,local_15c);" (assignment_expression "iVar2 = (*local_34)(1,1,*param_3,param_3[1],param_3,local_15c)" identifier = (call_expression "(*local_34)(1,1,*param_3,param_3[1],param_3,local_15c)" (parenthesized_expression "(*local_34)" ( (pointer_expression "*local_34" * identifier) )) (argument_list "(1,1,*param_3,param_3[1],param_3,local_15c)" ( number_literal , number_literal , (pointer_expression "*param_3" * identifier) , (subscript_expression "param_3[1]" identifier [ number_literal ]) , identifier , identifier )))) ;) (if_statement "if (iVar2 == 6) {\n        param_3[3] = 0;\n        param_3[4] = local_114 + (local_fc >> 0x1f);\n        puVar3 = local_1dc;\n        puVar4 = local_15c;\n        for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {\n          *puVar4 = *puVar3;\n          puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n          puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n        }\n        iVar2 = FUN_00216fd0();\n        if (iVar2 != 7) {\n          return iVar2;\n        }\n        uVar1 = FUN_00217190();\n        FUN_00217580(local_114,local_110,uVar1,uVar1);\n        *(undefined4 *)(&stack0x00000000 + extraout_EDX) = local_110;\n        return local_18;\n      }" if (parenthesized_expression "(iVar2 == 6)" ( (binary_expression "iVar2 == 6" identifier == number_literal) )) (compound_statement "{\n        param_3[3] = 0;\n        param_3[4] = local_114 + (local_fc >> 0x1f);\n        puVar3 = local_1dc;\n        puVar4 = local_15c;\n        for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {\n          *puVar4 = *puVar3;\n          puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n          puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n        }\n        iVar2 = FUN_00216fd0();\n        if (iVar2 != 7) {\n          return iVar2;\n        }\n        uVar1 = FUN_00217190();\n        FUN_00217580(local_114,local_110,uVar1,uVar1);\n        *(undefined4 *)(&stack0x00000000 + extraout_EDX) = local_110;\n        return local_18;\n      }" { (expression_statement "param_3[3] = 0;" (assignment_expression "param_3[3] = 0" (subscript_expression "param_3[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_3[4] = local_114 + (local_fc >> 0x1f);" (assignment_expression "param_3[4] = local_114 + (local_fc >> 0x1f)" (subscript_expression "param_3[4]" identifier [ number_literal ]) = (binary_expression "local_114 + (local_fc >> 0x1f)" identifier + (parenthesized_expression "(local_fc >> 0x1f)" ( (binary_expression "local_fc >> 0x1f" identifier >> number_literal) )))) ;) (expression_statement "puVar3 = local_1dc;" (assignment_expression "puVar3 = local_1dc" identifier = identifier) ;) (expression_statement "puVar4 = local_15c;" (assignment_expression "puVar4 = local_15c" identifier = identifier) ;) (for_statement "for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {\n          *puVar4 = *puVar3;\n          puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n          puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n        }" for ( (assignment_expression "iVar2 = 0x20" identifier = number_literal) ; (binary_expression "iVar2 != 0" identifier != number_literal) ; (assignment_expression "iVar2 = iVar2 + -1" identifier = (binary_expression "iVar2 + -1" identifier + number_literal)) ) (compound_statement "{\n          *puVar4 = *puVar3;\n          puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n          puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n        }" { (expression_statement "*puVar4 = *puVar3;" (assignment_expression "*puVar4 = *puVar3" (pointer_expression "*puVar4" * identifier) = (pointer_expression "*puVar3" * identifier)) ;) (expression_statement "puVar3 = puVar3 + (uint)bVar5 * -2 + 1;" (assignment_expression "puVar3 = puVar3 + (uint)bVar5 * -2 + 1" identifier = (binary_expression "puVar3 + (uint)bVar5 * -2 + 1" (binary_expression "puVar3 + (uint)bVar5 * -2" identifier + (binary_expression "(uint)bVar5 * -2" (cast_expression "(uint)bVar5" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "puVar4 = puVar4 + (uint)bVar5 * -2 + 1;" (assignment_expression "puVar4 = puVar4 + (uint)bVar5 * -2 + 1" identifier = (binary_expression "puVar4 + (uint)bVar5 * -2 + 1" (binary_expression "puVar4 + (uint)bVar5 * -2" identifier + (binary_expression "(uint)bVar5 * -2" (cast_expression "(uint)bVar5" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "iVar2 = FUN_00216fd0();" (assignment_expression "iVar2 = FUN_00216fd0()" identifier = (call_expression "FUN_00216fd0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar2 != 7) {\n          return iVar2;\n        }" if (parenthesized_expression "(iVar2 != 7)" ( (binary_expression "iVar2 != 7" identifier != number_literal) )) (compound_statement "{\n          return iVar2;\n        }" { (return_statement "return iVar2;" return identifier ;) })) (expression_statement "uVar1 = FUN_00217190();" (assignment_expression "uVar1 = FUN_00217190()" identifier = (call_expression "FUN_00217190()" identifier (argument_list "()" ( )))) ;) (expression_statement "FUN_00217580(local_114,local_110,uVar1,uVar1);" (call_expression "FUN_00217580(local_114,local_110,uVar1,uVar1)" identifier (argument_list "(local_114,local_110,uVar1,uVar1)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "*(undefined4 *)(&stack0x00000000 + extraout_EDX) = local_110;" (assignment_expression "*(undefined4 *)(&stack0x00000000 + extraout_EDX) = local_110" (pointer_expression "*(undefined4 *)(&stack0x00000000 + extraout_EDX)" * (cast_expression "(undefined4 *)(&stack0x00000000 + extraout_EDX)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&stack0x00000000 + extraout_EDX)" ( (binary_expression "&stack0x00000000 + extraout_EDX" (pointer_expression "&stack0x00000000" & identifier) + identifier) )))) = identifier) ;) (return_statement "return local_18;" return identifier ;) })) (if_statement "if (iVar2 != 8) {\n        return 3;\n      }" if (parenthesized_expression "(iVar2 != 8)" ( (binary_expression "iVar2 != 8" identifier != number_literal) )) (compound_statement "{\n        return 3;\n      }" { (return_statement "return 3;" return number_literal ;) })) })) (expression_statement "FUN_00216f60();" (call_expression "FUN_00216f60()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return 3;" return number_literal ;) })))
(translation_unit "int __regparm2 _Unwind_RaiseException(undefined4 param_1,undefined4 param_2,undefined4 *param_3)\n\n{\n  undefined4 uVar1;\n  int iVar2;\n  int extraout_EDX;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  byte bVar5;\n  undefined4 local_1dc [32];\n  undefined4 local_15c [18];\n  int local_114;\n  undefined4 local_110;\n  int local_fc;\n  code *local_34;\n  int local_18;\n  undefined4 local_14;\n  \n  bVar5 = 0;\n  local_14 = param_2;\n  uw_init_context_1();\n  puVar3 = local_1dc;\n  puVar4 = local_15c;\n  for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {\n    *puVar4 = *puVar3;\n    puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n    puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n  }\n  while( true ) {\n    iVar2 = uw_frame_state_for();\n    if (iVar2 == 5) {\n      return 5;\n    }\n    if (iVar2 != 0) break;\n    if (local_34 != (code *)0x0) {\n      iVar2 = (*local_34)(1,1,*param_3,param_3[1],param_3,local_15c);\n      if (iVar2 == 6) {\n        param_3[3] = 0;\n        param_3[4] = local_114 + (local_fc >> 0x1f);\n        puVar3 = local_1dc;\n        puVar4 = local_15c;\n        for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {\n          *puVar4 = *puVar3;\n          puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n          puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n        }\n        iVar2 = _Unwind_RaiseException_Phase2();\n        if (iVar2 != 7) {\n          return iVar2;\n        }\n        uVar1 = uw_install_context_1();\n        _Unwind_DebugHook(local_114,local_110,uVar1,uVar1);\n        *(undefined4 *)(&stack0x00000000 + extraout_EDX) = local_110;\n        return local_18;\n      }\n      if (iVar2 != 8) {\n        return 3;\n      }\n    }\n    uw_update_context();\n  }\n  return 3;\n}\n\n" (function_definition "int __regparm2 _Unwind_RaiseException(undefined4 param_1,undefined4 param_2,undefined4 *param_3)\n\n{\n  undefined4 uVar1;\n  int iVar2;\n  int extraout_EDX;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  byte bVar5;\n  undefined4 local_1dc [32];\n  undefined4 local_15c [18];\n  int local_114;\n  undefined4 local_110;\n  int local_fc;\n  code *local_34;\n  int local_18;\n  undefined4 local_14;\n  \n  bVar5 = 0;\n  local_14 = param_2;\n  uw_init_context_1();\n  puVar3 = local_1dc;\n  puVar4 = local_15c;\n  for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {\n    *puVar4 = *puVar3;\n    puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n    puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n  }\n  while( true ) {\n    iVar2 = uw_frame_state_for();\n    if (iVar2 == 5) {\n      return 5;\n    }\n    if (iVar2 != 0) break;\n    if (local_34 != (code *)0x0) {\n      iVar2 = (*local_34)(1,1,*param_3,param_3[1],param_3,local_15c);\n      if (iVar2 == 6) {\n        param_3[3] = 0;\n        param_3[4] = local_114 + (local_fc >> 0x1f);\n        puVar3 = local_1dc;\n        puVar4 = local_15c;\n        for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {\n          *puVar4 = *puVar3;\n          puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n          puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n        }\n        iVar2 = _Unwind_RaiseException_Phase2();\n        if (iVar2 != 7) {\n          return iVar2;\n        }\n        uVar1 = uw_install_context_1();\n        _Unwind_DebugHook(local_114,local_110,uVar1,uVar1);\n        *(undefined4 *)(&stack0x00000000 + extraout_EDX) = local_110;\n        return local_18;\n      }\n      if (iVar2 != 8) {\n        return 3;\n      }\n    }\n    uw_update_context();\n  }\n  return 3;\n}" primitive_type (ERROR "__regparm2" identifier) (function_declarator "_Unwind_RaiseException(undefined4 param_1,undefined4 param_2,undefined4 *param_3)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2,undefined4 *param_3)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  undefined4 uVar1;\n  int iVar2;\n  int extraout_EDX;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  byte bVar5;\n  undefined4 local_1dc [32];\n  undefined4 local_15c [18];\n  int local_114;\n  undefined4 local_110;\n  int local_fc;\n  code *local_34;\n  int local_18;\n  undefined4 local_14;\n  \n  bVar5 = 0;\n  local_14 = param_2;\n  uw_init_context_1();\n  puVar3 = local_1dc;\n  puVar4 = local_15c;\n  for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {\n    *puVar4 = *puVar3;\n    puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n    puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n  }\n  while( true ) {\n    iVar2 = uw_frame_state_for();\n    if (iVar2 == 5) {\n      return 5;\n    }\n    if (iVar2 != 0) break;\n    if (local_34 != (code *)0x0) {\n      iVar2 = (*local_34)(1,1,*param_3,param_3[1],param_3,local_15c);\n      if (iVar2 == 6) {\n        param_3[3] = 0;\n        param_3[4] = local_114 + (local_fc >> 0x1f);\n        puVar3 = local_1dc;\n        puVar4 = local_15c;\n        for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {\n          *puVar4 = *puVar3;\n          puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n          puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n        }\n        iVar2 = _Unwind_RaiseException_Phase2();\n        if (iVar2 != 7) {\n          return iVar2;\n        }\n        uVar1 = uw_install_context_1();\n        _Unwind_DebugHook(local_114,local_110,uVar1,uVar1);\n        *(undefined4 *)(&stack0x00000000 + extraout_EDX) = local_110;\n        return local_18;\n      }\n      if (iVar2 != 8) {\n        return 3;\n      }\n    }\n    uw_update_context();\n  }\n  return 3;\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int extraout_EDX;" primitive_type identifier ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "byte bVar5;" type_identifier identifier ;) (declaration "undefined4 local_1dc [32];" type_identifier (array_declarator "local_1dc [32]" identifier [ number_literal ]) ;) (declaration "undefined4 local_15c [18];" type_identifier (array_declarator "local_15c [18]" identifier [ number_literal ]) ;) (declaration "int local_114;" primitive_type identifier ;) (declaration "undefined4 local_110;" type_identifier identifier ;) (declaration "int local_fc;" primitive_type identifier ;) (declaration "code *local_34;" type_identifier (pointer_declarator "*local_34" * identifier) ;) (declaration "int local_18;" primitive_type identifier ;) (declaration "undefined4 local_14;" type_identifier identifier ;) (expression_statement "bVar5 = 0;" (assignment_expression "bVar5 = 0" identifier = number_literal) ;) (expression_statement "local_14 = param_2;" (assignment_expression "local_14 = param_2" identifier = identifier) ;) (expression_statement "uw_init_context_1();" (call_expression "uw_init_context_1()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar3 = local_1dc;" (assignment_expression "puVar3 = local_1dc" identifier = identifier) ;) (expression_statement "puVar4 = local_15c;" (assignment_expression "puVar4 = local_15c" identifier = identifier) ;) (for_statement "for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {\n    *puVar4 = *puVar3;\n    puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n    puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n  }" for ( (assignment_expression "iVar2 = 0x20" identifier = number_literal) ; (binary_expression "iVar2 != 0" identifier != number_literal) ; (assignment_expression "iVar2 = iVar2 + -1" identifier = (binary_expression "iVar2 + -1" identifier + number_literal)) ) (compound_statement "{\n    *puVar4 = *puVar3;\n    puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n    puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n  }" { (expression_statement "*puVar4 = *puVar3;" (assignment_expression "*puVar4 = *puVar3" (pointer_expression "*puVar4" * identifier) = (pointer_expression "*puVar3" * identifier)) ;) (expression_statement "puVar3 = puVar3 + (uint)bVar5 * -2 + 1;" (assignment_expression "puVar3 = puVar3 + (uint)bVar5 * -2 + 1" identifier = (binary_expression "puVar3 + (uint)bVar5 * -2 + 1" (binary_expression "puVar3 + (uint)bVar5 * -2" identifier + (binary_expression "(uint)bVar5 * -2" (cast_expression "(uint)bVar5" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "puVar4 = puVar4 + (uint)bVar5 * -2 + 1;" (assignment_expression "puVar4 = puVar4 + (uint)bVar5 * -2 + 1" identifier = (binary_expression "puVar4 + (uint)bVar5 * -2 + 1" (binary_expression "puVar4 + (uint)bVar5 * -2" identifier + (binary_expression "(uint)bVar5 * -2" (cast_expression "(uint)bVar5" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (while_statement "while( true ) {\n    iVar2 = uw_frame_state_for();\n    if (iVar2 == 5) {\n      return 5;\n    }\n    if (iVar2 != 0) break;\n    if (local_34 != (code *)0x0) {\n      iVar2 = (*local_34)(1,1,*param_3,param_3[1],param_3,local_15c);\n      if (iVar2 == 6) {\n        param_3[3] = 0;\n        param_3[4] = local_114 + (local_fc >> 0x1f);\n        puVar3 = local_1dc;\n        puVar4 = local_15c;\n        for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {\n          *puVar4 = *puVar3;\n          puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n          puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n        }\n        iVar2 = _Unwind_RaiseException_Phase2();\n        if (iVar2 != 7) {\n          return iVar2;\n        }\n        uVar1 = uw_install_context_1();\n        _Unwind_DebugHook(local_114,local_110,uVar1,uVar1);\n        *(undefined4 *)(&stack0x00000000 + extraout_EDX) = local_110;\n        return local_18;\n      }\n      if (iVar2 != 8) {\n        return 3;\n      }\n    }\n    uw_update_context();\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    iVar2 = uw_frame_state_for();\n    if (iVar2 == 5) {\n      return 5;\n    }\n    if (iVar2 != 0) break;\n    if (local_34 != (code *)0x0) {\n      iVar2 = (*local_34)(1,1,*param_3,param_3[1],param_3,local_15c);\n      if (iVar2 == 6) {\n        param_3[3] = 0;\n        param_3[4] = local_114 + (local_fc >> 0x1f);\n        puVar3 = local_1dc;\n        puVar4 = local_15c;\n        for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {\n          *puVar4 = *puVar3;\n          puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n          puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n        }\n        iVar2 = _Unwind_RaiseException_Phase2();\n        if (iVar2 != 7) {\n          return iVar2;\n        }\n        uVar1 = uw_install_context_1();\n        _Unwind_DebugHook(local_114,local_110,uVar1,uVar1);\n        *(undefined4 *)(&stack0x00000000 + extraout_EDX) = local_110;\n        return local_18;\n      }\n      if (iVar2 != 8) {\n        return 3;\n      }\n    }\n    uw_update_context();\n  }" { (expression_statement "iVar2 = uw_frame_state_for();" (assignment_expression "iVar2 = uw_frame_state_for()" identifier = (call_expression "uw_frame_state_for()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar2 == 5) {\n      return 5;\n    }" if (parenthesized_expression "(iVar2 == 5)" ( (binary_expression "iVar2 == 5" identifier == number_literal) )) (compound_statement "{\n      return 5;\n    }" { (return_statement "return 5;" return number_literal ;) })) (if_statement "if (iVar2 != 0) break;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (if_statement "if (local_34 != (code *)0x0) {\n      iVar2 = (*local_34)(1,1,*param_3,param_3[1],param_3,local_15c);\n      if (iVar2 == 6) {\n        param_3[3] = 0;\n        param_3[4] = local_114 + (local_fc >> 0x1f);\n        puVar3 = local_1dc;\n        puVar4 = local_15c;\n        for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {\n          *puVar4 = *puVar3;\n          puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n          puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n        }\n        iVar2 = _Unwind_RaiseException_Phase2();\n        if (iVar2 != 7) {\n          return iVar2;\n        }\n        uVar1 = uw_install_context_1();\n        _Unwind_DebugHook(local_114,local_110,uVar1,uVar1);\n        *(undefined4 *)(&stack0x00000000 + extraout_EDX) = local_110;\n        return local_18;\n      }\n      if (iVar2 != 8) {\n        return 3;\n      }\n    }" if (parenthesized_expression "(local_34 != (code *)0x0)" ( (binary_expression "local_34 != (code *)0x0" identifier != (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      iVar2 = (*local_34)(1,1,*param_3,param_3[1],param_3,local_15c);\n      if (iVar2 == 6) {\n        param_3[3] = 0;\n        param_3[4] = local_114 + (local_fc >> 0x1f);\n        puVar3 = local_1dc;\n        puVar4 = local_15c;\n        for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {\n          *puVar4 = *puVar3;\n          puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n          puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n        }\n        iVar2 = _Unwind_RaiseException_Phase2();\n        if (iVar2 != 7) {\n          return iVar2;\n        }\n        uVar1 = uw_install_context_1();\n        _Unwind_DebugHook(local_114,local_110,uVar1,uVar1);\n        *(undefined4 *)(&stack0x00000000 + extraout_EDX) = local_110;\n        return local_18;\n      }\n      if (iVar2 != 8) {\n        return 3;\n      }\n    }" { (expression_statement "iVar2 = (*local_34)(1,1,*param_3,param_3[1],param_3,local_15c);" (assignment_expression "iVar2 = (*local_34)(1,1,*param_3,param_3[1],param_3,local_15c)" identifier = (call_expression "(*local_34)(1,1,*param_3,param_3[1],param_3,local_15c)" (parenthesized_expression "(*local_34)" ( (pointer_expression "*local_34" * identifier) )) (argument_list "(1,1,*param_3,param_3[1],param_3,local_15c)" ( number_literal , number_literal , (pointer_expression "*param_3" * identifier) , (subscript_expression "param_3[1]" identifier [ number_literal ]) , identifier , identifier )))) ;) (if_statement "if (iVar2 == 6) {\n        param_3[3] = 0;\n        param_3[4] = local_114 + (local_fc >> 0x1f);\n        puVar3 = local_1dc;\n        puVar4 = local_15c;\n        for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {\n          *puVar4 = *puVar3;\n          puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n          puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n        }\n        iVar2 = _Unwind_RaiseException_Phase2();\n        if (iVar2 != 7) {\n          return iVar2;\n        }\n        uVar1 = uw_install_context_1();\n        _Unwind_DebugHook(local_114,local_110,uVar1,uVar1);\n        *(undefined4 *)(&stack0x00000000 + extraout_EDX) = local_110;\n        return local_18;\n      }" if (parenthesized_expression "(iVar2 == 6)" ( (binary_expression "iVar2 == 6" identifier == number_literal) )) (compound_statement "{\n        param_3[3] = 0;\n        param_3[4] = local_114 + (local_fc >> 0x1f);\n        puVar3 = local_1dc;\n        puVar4 = local_15c;\n        for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {\n          *puVar4 = *puVar3;\n          puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n          puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n        }\n        iVar2 = _Unwind_RaiseException_Phase2();\n        if (iVar2 != 7) {\n          return iVar2;\n        }\n        uVar1 = uw_install_context_1();\n        _Unwind_DebugHook(local_114,local_110,uVar1,uVar1);\n        *(undefined4 *)(&stack0x00000000 + extraout_EDX) = local_110;\n        return local_18;\n      }" { (expression_statement "param_3[3] = 0;" (assignment_expression "param_3[3] = 0" (subscript_expression "param_3[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_3[4] = local_114 + (local_fc >> 0x1f);" (assignment_expression "param_3[4] = local_114 + (local_fc >> 0x1f)" (subscript_expression "param_3[4]" identifier [ number_literal ]) = (binary_expression "local_114 + (local_fc >> 0x1f)" identifier + (parenthesized_expression "(local_fc >> 0x1f)" ( (binary_expression "local_fc >> 0x1f" identifier >> number_literal) )))) ;) (expression_statement "puVar3 = local_1dc;" (assignment_expression "puVar3 = local_1dc" identifier = identifier) ;) (expression_statement "puVar4 = local_15c;" (assignment_expression "puVar4 = local_15c" identifier = identifier) ;) (for_statement "for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {\n          *puVar4 = *puVar3;\n          puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n          puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n        }" for ( (assignment_expression "iVar2 = 0x20" identifier = number_literal) ; (binary_expression "iVar2 != 0" identifier != number_literal) ; (assignment_expression "iVar2 = iVar2 + -1" identifier = (binary_expression "iVar2 + -1" identifier + number_literal)) ) (compound_statement "{\n          *puVar4 = *puVar3;\n          puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n          puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n        }" { (expression_statement "*puVar4 = *puVar3;" (assignment_expression "*puVar4 = *puVar3" (pointer_expression "*puVar4" * identifier) = (pointer_expression "*puVar3" * identifier)) ;) (expression_statement "puVar3 = puVar3 + (uint)bVar5 * -2 + 1;" (assignment_expression "puVar3 = puVar3 + (uint)bVar5 * -2 + 1" identifier = (binary_expression "puVar3 + (uint)bVar5 * -2 + 1" (binary_expression "puVar3 + (uint)bVar5 * -2" identifier + (binary_expression "(uint)bVar5 * -2" (cast_expression "(uint)bVar5" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "puVar4 = puVar4 + (uint)bVar5 * -2 + 1;" (assignment_expression "puVar4 = puVar4 + (uint)bVar5 * -2 + 1" identifier = (binary_expression "puVar4 + (uint)bVar5 * -2 + 1" (binary_expression "puVar4 + (uint)bVar5 * -2" identifier + (binary_expression "(uint)bVar5 * -2" (cast_expression "(uint)bVar5" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "iVar2 = _Unwind_RaiseException_Phase2();" (assignment_expression "iVar2 = _Unwind_RaiseException_Phase2()" identifier = (call_expression "_Unwind_RaiseException_Phase2()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar2 != 7) {\n          return iVar2;\n        }" if (parenthesized_expression "(iVar2 != 7)" ( (binary_expression "iVar2 != 7" identifier != number_literal) )) (compound_statement "{\n          return iVar2;\n        }" { (return_statement "return iVar2;" return identifier ;) })) (expression_statement "uVar1 = uw_install_context_1();" (assignment_expression "uVar1 = uw_install_context_1()" identifier = (call_expression "uw_install_context_1()" identifier (argument_list "()" ( )))) ;) (expression_statement "_Unwind_DebugHook(local_114,local_110,uVar1,uVar1);" (call_expression "_Unwind_DebugHook(local_114,local_110,uVar1,uVar1)" identifier (argument_list "(local_114,local_110,uVar1,uVar1)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "*(undefined4 *)(&stack0x00000000 + extraout_EDX) = local_110;" (assignment_expression "*(undefined4 *)(&stack0x00000000 + extraout_EDX) = local_110" (pointer_expression "*(undefined4 *)(&stack0x00000000 + extraout_EDX)" * (cast_expression "(undefined4 *)(&stack0x00000000 + extraout_EDX)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&stack0x00000000 + extraout_EDX)" ( (binary_expression "&stack0x00000000 + extraout_EDX" (pointer_expression "&stack0x00000000" & identifier) + identifier) )))) = identifier) ;) (return_statement "return local_18;" return identifier ;) })) (if_statement "if (iVar2 != 8) {\n        return 3;\n      }" if (parenthesized_expression "(iVar2 != 8)" ( (binary_expression "iVar2 != 8" identifier != number_literal) )) (compound_statement "{\n        return 3;\n      }" { (return_statement "return 3;" return number_literal ;) })) })) (expression_statement "uw_update_context();" (call_expression "uw_update_context()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return 3;" return number_literal ;) })))
(translation_unit "int __regparm2 FUN_00217590(undefined4 param_1,undefined4 param_2,undefined4 *param_3)\n\n{\n  undefined4 uVar1;\n  int iVar2;\n  int extraout_EDX;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  byte bVar5;\n  undefined4 local_1dc [32];\n  undefined4 local_15c [18];\n  int local_114;\n  undefined4 local_110;\n  int local_fc;\n  code *local_34;\n  int local_18;\n  undefined4 local_14;\n  \n  bVar5 = 0;\n  local_14 = param_2;\n  FUN_00216e00();\n  puVar3 = local_1dc;\n  puVar4 = local_15c;\n  for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {\n    *puVar4 = *puVar3;\n    puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n    puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n  }\n  while( true ) {\n    iVar2 = FUN_00215e20();\n    if (iVar2 == 5) {\n      return 5;\n    }\n    if (iVar2 != 0) break;\n    if (local_34 != (code *)0x0) {\n      iVar2 = (*local_34)(1,1,*param_3,param_3[1],param_3,local_15c);\n      if (iVar2 == 6) {\n        param_3[3] = 0;\n        param_3[4] = local_114 + (local_fc >> 0x1f);\n        puVar3 = local_1dc;\n        puVar4 = local_15c;\n        for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {\n          *puVar4 = *puVar3;\n          puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n          puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n        }\n        iVar2 = FUN_00216fd0();\n        if (iVar2 != 7) {\n          return iVar2;\n        }\n        uVar1 = FUN_00217190();\n        FUN_00217580(local_114,local_110,uVar1,uVar1);\n        *(undefined4 *)(&stack0x00000000 + extraout_EDX) = local_110;\n        return local_18;\n      }\n      if (iVar2 != 8) {\n        return 3;\n      }\n    }\n    FUN_00216f60();\n  }\n  return 3;\n}\n\n" (function_definition "int __regparm2 FUN_00217590(undefined4 param_1,undefined4 param_2,undefined4 *param_3)\n\n{\n  undefined4 uVar1;\n  int iVar2;\n  int extraout_EDX;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  byte bVar5;\n  undefined4 local_1dc [32];\n  undefined4 local_15c [18];\n  int local_114;\n  undefined4 local_110;\n  int local_fc;\n  code *local_34;\n  int local_18;\n  undefined4 local_14;\n  \n  bVar5 = 0;\n  local_14 = param_2;\n  FUN_00216e00();\n  puVar3 = local_1dc;\n  puVar4 = local_15c;\n  for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {\n    *puVar4 = *puVar3;\n    puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n    puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n  }\n  while( true ) {\n    iVar2 = FUN_00215e20();\n    if (iVar2 == 5) {\n      return 5;\n    }\n    if (iVar2 != 0) break;\n    if (local_34 != (code *)0x0) {\n      iVar2 = (*local_34)(1,1,*param_3,param_3[1],param_3,local_15c);\n      if (iVar2 == 6) {\n        param_3[3] = 0;\n        param_3[4] = local_114 + (local_fc >> 0x1f);\n        puVar3 = local_1dc;\n        puVar4 = local_15c;\n        for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {\n          *puVar4 = *puVar3;\n          puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n          puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n        }\n        iVar2 = FUN_00216fd0();\n        if (iVar2 != 7) {\n          return iVar2;\n        }\n        uVar1 = FUN_00217190();\n        FUN_00217580(local_114,local_110,uVar1,uVar1);\n        *(undefined4 *)(&stack0x00000000 + extraout_EDX) = local_110;\n        return local_18;\n      }\n      if (iVar2 != 8) {\n        return 3;\n      }\n    }\n    FUN_00216f60();\n  }\n  return 3;\n}" primitive_type (ERROR "__regparm2" identifier) (function_declarator "FUN_00217590(undefined4 param_1,undefined4 param_2,undefined4 *param_3)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2,undefined4 *param_3)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  undefined4 uVar1;\n  int iVar2;\n  int extraout_EDX;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  byte bVar5;\n  undefined4 local_1dc [32];\n  undefined4 local_15c [18];\n  int local_114;\n  undefined4 local_110;\n  int local_fc;\n  code *local_34;\n  int local_18;\n  undefined4 local_14;\n  \n  bVar5 = 0;\n  local_14 = param_2;\n  FUN_00216e00();\n  puVar3 = local_1dc;\n  puVar4 = local_15c;\n  for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {\n    *puVar4 = *puVar3;\n    puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n    puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n  }\n  while( true ) {\n    iVar2 = FUN_00215e20();\n    if (iVar2 == 5) {\n      return 5;\n    }\n    if (iVar2 != 0) break;\n    if (local_34 != (code *)0x0) {\n      iVar2 = (*local_34)(1,1,*param_3,param_3[1],param_3,local_15c);\n      if (iVar2 == 6) {\n        param_3[3] = 0;\n        param_3[4] = local_114 + (local_fc >> 0x1f);\n        puVar3 = local_1dc;\n        puVar4 = local_15c;\n        for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {\n          *puVar4 = *puVar3;\n          puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n          puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n        }\n        iVar2 = FUN_00216fd0();\n        if (iVar2 != 7) {\n          return iVar2;\n        }\n        uVar1 = FUN_00217190();\n        FUN_00217580(local_114,local_110,uVar1,uVar1);\n        *(undefined4 *)(&stack0x00000000 + extraout_EDX) = local_110;\n        return local_18;\n      }\n      if (iVar2 != 8) {\n        return 3;\n      }\n    }\n    FUN_00216f60();\n  }\n  return 3;\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int extraout_EDX;" primitive_type identifier ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "byte bVar5;" type_identifier identifier ;) (declaration "undefined4 local_1dc [32];" type_identifier (array_declarator "local_1dc [32]" identifier [ number_literal ]) ;) (declaration "undefined4 local_15c [18];" type_identifier (array_declarator "local_15c [18]" identifier [ number_literal ]) ;) (declaration "int local_114;" primitive_type identifier ;) (declaration "undefined4 local_110;" type_identifier identifier ;) (declaration "int local_fc;" primitive_type identifier ;) (declaration "code *local_34;" type_identifier (pointer_declarator "*local_34" * identifier) ;) (declaration "int local_18;" primitive_type identifier ;) (declaration "undefined4 local_14;" type_identifier identifier ;) (expression_statement "bVar5 = 0;" (assignment_expression "bVar5 = 0" identifier = number_literal) ;) (expression_statement "local_14 = param_2;" (assignment_expression "local_14 = param_2" identifier = identifier) ;) (expression_statement "FUN_00216e00();" (call_expression "FUN_00216e00()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar3 = local_1dc;" (assignment_expression "puVar3 = local_1dc" identifier = identifier) ;) (expression_statement "puVar4 = local_15c;" (assignment_expression "puVar4 = local_15c" identifier = identifier) ;) (for_statement "for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {\n    *puVar4 = *puVar3;\n    puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n    puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n  }" for ( (assignment_expression "iVar2 = 0x20" identifier = number_literal) ; (binary_expression "iVar2 != 0" identifier != number_literal) ; (assignment_expression "iVar2 = iVar2 + -1" identifier = (binary_expression "iVar2 + -1" identifier + number_literal)) ) (compound_statement "{\n    *puVar4 = *puVar3;\n    puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n    puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n  }" { (expression_statement "*puVar4 = *puVar3;" (assignment_expression "*puVar4 = *puVar3" (pointer_expression "*puVar4" * identifier) = (pointer_expression "*puVar3" * identifier)) ;) (expression_statement "puVar3 = puVar3 + (uint)bVar5 * -2 + 1;" (assignment_expression "puVar3 = puVar3 + (uint)bVar5 * -2 + 1" identifier = (binary_expression "puVar3 + (uint)bVar5 * -2 + 1" (binary_expression "puVar3 + (uint)bVar5 * -2" identifier + (binary_expression "(uint)bVar5 * -2" (cast_expression "(uint)bVar5" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "puVar4 = puVar4 + (uint)bVar5 * -2 + 1;" (assignment_expression "puVar4 = puVar4 + (uint)bVar5 * -2 + 1" identifier = (binary_expression "puVar4 + (uint)bVar5 * -2 + 1" (binary_expression "puVar4 + (uint)bVar5 * -2" identifier + (binary_expression "(uint)bVar5 * -2" (cast_expression "(uint)bVar5" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (while_statement "while( true ) {\n    iVar2 = FUN_00215e20();\n    if (iVar2 == 5) {\n      return 5;\n    }\n    if (iVar2 != 0) break;\n    if (local_34 != (code *)0x0) {\n      iVar2 = (*local_34)(1,1,*param_3,param_3[1],param_3,local_15c);\n      if (iVar2 == 6) {\n        param_3[3] = 0;\n        param_3[4] = local_114 + (local_fc >> 0x1f);\n        puVar3 = local_1dc;\n        puVar4 = local_15c;\n        for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {\n          *puVar4 = *puVar3;\n          puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n          puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n        }\n        iVar2 = FUN_00216fd0();\n        if (iVar2 != 7) {\n          return iVar2;\n        }\n        uVar1 = FUN_00217190();\n        FUN_00217580(local_114,local_110,uVar1,uVar1);\n        *(undefined4 *)(&stack0x00000000 + extraout_EDX) = local_110;\n        return local_18;\n      }\n      if (iVar2 != 8) {\n        return 3;\n      }\n    }\n    FUN_00216f60();\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    iVar2 = FUN_00215e20();\n    if (iVar2 == 5) {\n      return 5;\n    }\n    if (iVar2 != 0) break;\n    if (local_34 != (code *)0x0) {\n      iVar2 = (*local_34)(1,1,*param_3,param_3[1],param_3,local_15c);\n      if (iVar2 == 6) {\n        param_3[3] = 0;\n        param_3[4] = local_114 + (local_fc >> 0x1f);\n        puVar3 = local_1dc;\n        puVar4 = local_15c;\n        for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {\n          *puVar4 = *puVar3;\n          puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n          puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n        }\n        iVar2 = FUN_00216fd0();\n        if (iVar2 != 7) {\n          return iVar2;\n        }\n        uVar1 = FUN_00217190();\n        FUN_00217580(local_114,local_110,uVar1,uVar1);\n        *(undefined4 *)(&stack0x00000000 + extraout_EDX) = local_110;\n        return local_18;\n      }\n      if (iVar2 != 8) {\n        return 3;\n      }\n    }\n    FUN_00216f60();\n  }" { (expression_statement "iVar2 = FUN_00215e20();" (assignment_expression "iVar2 = FUN_00215e20()" identifier = (call_expression "FUN_00215e20()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar2 == 5) {\n      return 5;\n    }" if (parenthesized_expression "(iVar2 == 5)" ( (binary_expression "iVar2 == 5" identifier == number_literal) )) (compound_statement "{\n      return 5;\n    }" { (return_statement "return 5;" return number_literal ;) })) (if_statement "if (iVar2 != 0) break;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (if_statement "if (local_34 != (code *)0x0) {\n      iVar2 = (*local_34)(1,1,*param_3,param_3[1],param_3,local_15c);\n      if (iVar2 == 6) {\n        param_3[3] = 0;\n        param_3[4] = local_114 + (local_fc >> 0x1f);\n        puVar3 = local_1dc;\n        puVar4 = local_15c;\n        for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {\n          *puVar4 = *puVar3;\n          puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n          puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n        }\n        iVar2 = FUN_00216fd0();\n        if (iVar2 != 7) {\n          return iVar2;\n        }\n        uVar1 = FUN_00217190();\n        FUN_00217580(local_114,local_110,uVar1,uVar1);\n        *(undefined4 *)(&stack0x00000000 + extraout_EDX) = local_110;\n        return local_18;\n      }\n      if (iVar2 != 8) {\n        return 3;\n      }\n    }" if (parenthesized_expression "(local_34 != (code *)0x0)" ( (binary_expression "local_34 != (code *)0x0" identifier != (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      iVar2 = (*local_34)(1,1,*param_3,param_3[1],param_3,local_15c);\n      if (iVar2 == 6) {\n        param_3[3] = 0;\n        param_3[4] = local_114 + (local_fc >> 0x1f);\n        puVar3 = local_1dc;\n        puVar4 = local_15c;\n        for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {\n          *puVar4 = *puVar3;\n          puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n          puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n        }\n        iVar2 = FUN_00216fd0();\n        if (iVar2 != 7) {\n          return iVar2;\n        }\n        uVar1 = FUN_00217190();\n        FUN_00217580(local_114,local_110,uVar1,uVar1);\n        *(undefined4 *)(&stack0x00000000 + extraout_EDX) = local_110;\n        return local_18;\n      }\n      if (iVar2 != 8) {\n        return 3;\n      }\n    }" { (expression_statement "iVar2 = (*local_34)(1,1,*param_3,param_3[1],param_3,local_15c);" (assignment_expression "iVar2 = (*local_34)(1,1,*param_3,param_3[1],param_3,local_15c)" identifier = (call_expression "(*local_34)(1,1,*param_3,param_3[1],param_3,local_15c)" (parenthesized_expression "(*local_34)" ( (pointer_expression "*local_34" * identifier) )) (argument_list "(1,1,*param_3,param_3[1],param_3,local_15c)" ( number_literal , number_literal , (pointer_expression "*param_3" * identifier) , (subscript_expression "param_3[1]" identifier [ number_literal ]) , identifier , identifier )))) ;) (if_statement "if (iVar2 == 6) {\n        param_3[3] = 0;\n        param_3[4] = local_114 + (local_fc >> 0x1f);\n        puVar3 = local_1dc;\n        puVar4 = local_15c;\n        for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {\n          *puVar4 = *puVar3;\n          puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n          puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n        }\n        iVar2 = FUN_00216fd0();\n        if (iVar2 != 7) {\n          return iVar2;\n        }\n        uVar1 = FUN_00217190();\n        FUN_00217580(local_114,local_110,uVar1,uVar1);\n        *(undefined4 *)(&stack0x00000000 + extraout_EDX) = local_110;\n        return local_18;\n      }" if (parenthesized_expression "(iVar2 == 6)" ( (binary_expression "iVar2 == 6" identifier == number_literal) )) (compound_statement "{\n        param_3[3] = 0;\n        param_3[4] = local_114 + (local_fc >> 0x1f);\n        puVar3 = local_1dc;\n        puVar4 = local_15c;\n        for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {\n          *puVar4 = *puVar3;\n          puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n          puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n        }\n        iVar2 = FUN_00216fd0();\n        if (iVar2 != 7) {\n          return iVar2;\n        }\n        uVar1 = FUN_00217190();\n        FUN_00217580(local_114,local_110,uVar1,uVar1);\n        *(undefined4 *)(&stack0x00000000 + extraout_EDX) = local_110;\n        return local_18;\n      }" { (expression_statement "param_3[3] = 0;" (assignment_expression "param_3[3] = 0" (subscript_expression "param_3[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_3[4] = local_114 + (local_fc >> 0x1f);" (assignment_expression "param_3[4] = local_114 + (local_fc >> 0x1f)" (subscript_expression "param_3[4]" identifier [ number_literal ]) = (binary_expression "local_114 + (local_fc >> 0x1f)" identifier + (parenthesized_expression "(local_fc >> 0x1f)" ( (binary_expression "local_fc >> 0x1f" identifier >> number_literal) )))) ;) (expression_statement "puVar3 = local_1dc;" (assignment_expression "puVar3 = local_1dc" identifier = identifier) ;) (expression_statement "puVar4 = local_15c;" (assignment_expression "puVar4 = local_15c" identifier = identifier) ;) (for_statement "for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {\n          *puVar4 = *puVar3;\n          puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n          puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n        }" for ( (assignment_expression "iVar2 = 0x20" identifier = number_literal) ; (binary_expression "iVar2 != 0" identifier != number_literal) ; (assignment_expression "iVar2 = iVar2 + -1" identifier = (binary_expression "iVar2 + -1" identifier + number_literal)) ) (compound_statement "{\n          *puVar4 = *puVar3;\n          puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n          puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n        }" { (expression_statement "*puVar4 = *puVar3;" (assignment_expression "*puVar4 = *puVar3" (pointer_expression "*puVar4" * identifier) = (pointer_expression "*puVar3" * identifier)) ;) (expression_statement "puVar3 = puVar3 + (uint)bVar5 * -2 + 1;" (assignment_expression "puVar3 = puVar3 + (uint)bVar5 * -2 + 1" identifier = (binary_expression "puVar3 + (uint)bVar5 * -2 + 1" (binary_expression "puVar3 + (uint)bVar5 * -2" identifier + (binary_expression "(uint)bVar5 * -2" (cast_expression "(uint)bVar5" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "puVar4 = puVar4 + (uint)bVar5 * -2 + 1;" (assignment_expression "puVar4 = puVar4 + (uint)bVar5 * -2 + 1" identifier = (binary_expression "puVar4 + (uint)bVar5 * -2 + 1" (binary_expression "puVar4 + (uint)bVar5 * -2" identifier + (binary_expression "(uint)bVar5 * -2" (cast_expression "(uint)bVar5" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "iVar2 = FUN_00216fd0();" (assignment_expression "iVar2 = FUN_00216fd0()" identifier = (call_expression "FUN_00216fd0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar2 != 7) {\n          return iVar2;\n        }" if (parenthesized_expression "(iVar2 != 7)" ( (binary_expression "iVar2 != 7" identifier != number_literal) )) (compound_statement "{\n          return iVar2;\n        }" { (return_statement "return iVar2;" return identifier ;) })) (expression_statement "uVar1 = FUN_00217190();" (assignment_expression "uVar1 = FUN_00217190()" identifier = (call_expression "FUN_00217190()" identifier (argument_list "()" ( )))) ;) (expression_statement "FUN_00217580(local_114,local_110,uVar1,uVar1);" (call_expression "FUN_00217580(local_114,local_110,uVar1,uVar1)" identifier (argument_list "(local_114,local_110,uVar1,uVar1)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "*(undefined4 *)(&stack0x00000000 + extraout_EDX) = local_110;" (assignment_expression "*(undefined4 *)(&stack0x00000000 + extraout_EDX) = local_110" (pointer_expression "*(undefined4 *)(&stack0x00000000 + extraout_EDX)" * (cast_expression "(undefined4 *)(&stack0x00000000 + extraout_EDX)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&stack0x00000000 + extraout_EDX)" ( (binary_expression "&stack0x00000000 + extraout_EDX" (pointer_expression "&stack0x00000000" & identifier) + identifier) )))) = identifier) ;) (return_statement "return local_18;" return identifier ;) })) (if_statement "if (iVar2 != 8) {\n        return 3;\n      }" if (parenthesized_expression "(iVar2 != 8)" ( (binary_expression "iVar2 != 8" identifier != number_literal) )) (compound_statement "{\n        return 3;\n      }" { (return_statement "return 3;" return number_literal ;) })) })) (expression_statement "FUN_00216f60();" (call_expression "FUN_00216f60()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return 3;" return number_literal ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * 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 (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (for_statement for ( (assignment_expression IDENT = LIT) ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) })) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( LIT , LIT , (pointer_expression * IDENT) , (subscript_expression IDENT [ LIT ]) , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (for_statement for ( (assignment_expression IDENT = LIT) ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + IDENT) )))) = IDENT) ;) (return_statement return IDENT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return LIT ;) })) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (return_statement return LIT ;) })))
(function_definition "int __regparm2 FUN_00217590(undefined4 param_1,undefined4 param_2,undefined4 *param_3)\n\n{\n  undefined4 uVar1;\n  int iVar2;\n  int extraout_EDX;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  byte bVar5;\n  undefined4 local_1dc [32];\n  undefined4 local_15c [18];\n  int local_114;\n  undefined4 local_110;\n  int local_fc;\n  code *local_34;\n  int local_18;\n  undefined4 local_14;\n  \n  bVar5 = 0;\n  local_14 = param_2;\n  FUN_00216e00();\n  puVar3 = local_1dc;\n  puVar4 = local_15c;\n  for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {\n    *puVar4 = *puVar3;\n    puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n    puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n  }\n  while( true ) {\n    iVar2 = FUN_00215e20();\n    if (iVar2 == 5) {\n      return 5;\n    }\n    if (iVar2 != 0) break;\n    if (local_34 != (code *)0x0) {\n      iVar2 = (*local_34)(1,1,*param_3,param_3[1],param_3,local_15c);\n      if (iVar2 == 6) {\n        param_3[3] = 0;\n        param_3[4] = local_114 + (local_fc >> 0x1f);\n        puVar3 = local_1dc;\n        puVar4 = local_15c;\n        for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {\n          *puVar4 = *puVar3;\n          puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n          puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n        }\n        iVar2 = FUN_00216fd0();\n        if (iVar2 != 7) {\n          return iVar2;\n        }\n        uVar1 = FUN_00217190();\n        FUN_00217580(local_114,local_110,uVar1,uVar1);\n        *(undefined4 *)(&stack0x00000000 + extraout_EDX) = local_110;\n        return local_18;\n      }\n      if (iVar2 != 8) {\n        return 3;\n      }\n    }\n    FUN_00216f60();\n  }\n  return 3;\n}" (primitive_type "int") (ERROR "__regparm2" (identifier "__regparm2")) (function_declarator "FUN_00217590(undefined4 param_1,undefined4 param_2,undefined4 *param_3)" (identifier "FUN_00217590") (parameter_list "(undefined4 param_1,undefined4 param_2,undefined4 *param_3)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "undefined4 *param_3" (type_identifier "undefined4") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  undefined4 uVar1;\n  int iVar2;\n  int extraout_EDX;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  byte bVar5;\n  undefined4 local_1dc [32];\n  undefined4 local_15c [18];\n  int local_114;\n  undefined4 local_110;\n  int local_fc;\n  code *local_34;\n  int local_18;\n  undefined4 local_14;\n  \n  bVar5 = 0;\n  local_14 = param_2;\n  FUN_00216e00();\n  puVar3 = local_1dc;\n  puVar4 = local_15c;\n  for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {\n    *puVar4 = *puVar3;\n    puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n    puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n  }\n  while( true ) {\n    iVar2 = FUN_00215e20();\n    if (iVar2 == 5) {\n      return 5;\n    }\n    if (iVar2 != 0) break;\n    if (local_34 != (code *)0x0) {\n      iVar2 = (*local_34)(1,1,*param_3,param_3[1],param_3,local_15c);\n      if (iVar2 == 6) {\n        param_3[3] = 0;\n        param_3[4] = local_114 + (local_fc >> 0x1f);\n        puVar3 = local_1dc;\n        puVar4 = local_15c;\n        for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {\n          *puVar4 = *puVar3;\n          puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n          puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n        }\n        iVar2 = FUN_00216fd0();\n        if (iVar2 != 7) {\n          return iVar2;\n        }\n        uVar1 = FUN_00217190();\n        FUN_00217580(local_114,local_110,uVar1,uVar1);\n        *(undefined4 *)(&stack0x00000000 + extraout_EDX) = local_110;\n        return local_18;\n      }\n      if (iVar2 != 8) {\n        return 3;\n      }\n    }\n    FUN_00216f60();\n  }\n  return 3;\n}" ({ "{") (declaration "undefined4 uVar1;" (type_identifier "undefined4") (identifier "uVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int extraout_EDX;" (primitive_type "int") (identifier "extraout_EDX") (; ";")) (declaration "undefined4 *puVar3;" (type_identifier "undefined4") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "undefined4 *puVar4;" (type_identifier "undefined4") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "byte bVar5;" (type_identifier "byte") (identifier "bVar5") (; ";")) (declaration "undefined4 local_1dc [32];" (type_identifier "undefined4") (array_declarator "local_1dc [32]" (identifier "local_1dc") ([ "[") (number_literal "32") (] "]")) (; ";")) (declaration "undefined4 local_15c [18];" (type_identifier "undefined4") (array_declarator "local_15c [18]" (identifier "local_15c") ([ "[") (number_literal "18") (] "]")) (; ";")) (declaration "int local_114;" (primitive_type "int") (identifier "local_114") (; ";")) (declaration "undefined4 local_110;" (type_identifier "undefined4") (identifier "local_110") (; ";")) (declaration "int local_fc;" (primitive_type "int") (identifier "local_fc") (; ";")) (declaration "code *local_34;" (type_identifier "code") (pointer_declarator "*local_34" (* "*") (identifier "local_34")) (; ";")) (declaration "int local_18;" (primitive_type "int") (identifier "local_18") (; ";")) (declaration "undefined4 local_14;" (type_identifier "undefined4") (identifier "local_14") (; ";")) (expression_statement "bVar5 = 0;" (assignment_expression "bVar5 = 0" (identifier "bVar5") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_14 = param_2;" (assignment_expression "local_14 = param_2" (identifier "local_14") (= "=") (identifier "param_2")) (; ";")) (expression_statement "FUN_00216e00();" (call_expression "FUN_00216e00()" (identifier "FUN_00216e00") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar3 = local_1dc;" (assignment_expression "puVar3 = local_1dc" (identifier "puVar3") (= "=") (identifier "local_1dc")) (; ";")) (expression_statement "puVar4 = local_15c;" (assignment_expression "puVar4 = local_15c" (identifier "puVar4") (= "=") (identifier "local_15c")) (; ";")) (for_statement "for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {\n    *puVar4 = *puVar3;\n    puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n    puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n  }" (for "for") (( "(") (assignment_expression "iVar2 = 0x20" (identifier "iVar2") (= "=") (number_literal "0x20")) (; ";") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "iVar2 = iVar2 + -1" (identifier "iVar2") (= "=") (binary_expression "iVar2 + -1" (identifier "iVar2") (+ "+") (number_literal "-1"))) () ")") (compound_statement "{\n    *puVar4 = *puVar3;\n    puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n    puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n  }" ({ "{") (expression_statement "*puVar4 = *puVar3;" (assignment_expression "*puVar4 = *puVar3" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (pointer_expression "*puVar3" (* "*") (identifier "puVar3"))) (; ";")) (expression_statement "puVar3 = puVar3 + (uint)bVar5 * -2 + 1;" (assignment_expression "puVar3 = puVar3 + (uint)bVar5 * -2 + 1" (identifier "puVar3") (= "=") (binary_expression "puVar3 + (uint)bVar5 * -2 + 1" (binary_expression "puVar3 + (uint)bVar5 * -2" (identifier "puVar3") (+ "+") (binary_expression "(uint)bVar5 * -2" (cast_expression "(uint)bVar5" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar5")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar4 = puVar4 + (uint)bVar5 * -2 + 1;" (assignment_expression "puVar4 = puVar4 + (uint)bVar5 * -2 + 1" (identifier "puVar4") (= "=") (binary_expression "puVar4 + (uint)bVar5 * -2 + 1" (binary_expression "puVar4 + (uint)bVar5 * -2" (identifier "puVar4") (+ "+") (binary_expression "(uint)bVar5 * -2" (cast_expression "(uint)bVar5" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar5")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (while_statement "while( true ) {\n    iVar2 = FUN_00215e20();\n    if (iVar2 == 5) {\n      return 5;\n    }\n    if (iVar2 != 0) break;\n    if (local_34 != (code *)0x0) {\n      iVar2 = (*local_34)(1,1,*param_3,param_3[1],param_3,local_15c);\n      if (iVar2 == 6) {\n        param_3[3] = 0;\n        param_3[4] = local_114 + (local_fc >> 0x1f);\n        puVar3 = local_1dc;\n        puVar4 = local_15c;\n        for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {\n          *puVar4 = *puVar3;\n          puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n          puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n        }\n        iVar2 = FUN_00216fd0();\n        if (iVar2 != 7) {\n          return iVar2;\n        }\n        uVar1 = FUN_00217190();\n        FUN_00217580(local_114,local_110,uVar1,uVar1);\n        *(undefined4 *)(&stack0x00000000 + extraout_EDX) = local_110;\n        return local_18;\n      }\n      if (iVar2 != 8) {\n        return 3;\n      }\n    }\n    FUN_00216f60();\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    iVar2 = FUN_00215e20();\n    if (iVar2 == 5) {\n      return 5;\n    }\n    if (iVar2 != 0) break;\n    if (local_34 != (code *)0x0) {\n      iVar2 = (*local_34)(1,1,*param_3,param_3[1],param_3,local_15c);\n      if (iVar2 == 6) {\n        param_3[3] = 0;\n        param_3[4] = local_114 + (local_fc >> 0x1f);\n        puVar3 = local_1dc;\n        puVar4 = local_15c;\n        for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {\n          *puVar4 = *puVar3;\n          puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n          puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n        }\n        iVar2 = FUN_00216fd0();\n        if (iVar2 != 7) {\n          return iVar2;\n        }\n        uVar1 = FUN_00217190();\n        FUN_00217580(local_114,local_110,uVar1,uVar1);\n        *(undefined4 *)(&stack0x00000000 + extraout_EDX) = local_110;\n        return local_18;\n      }\n      if (iVar2 != 8) {\n        return 3;\n      }\n    }\n    FUN_00216f60();\n  }" ({ "{") (expression_statement "iVar2 = FUN_00215e20();" (assignment_expression "iVar2 = FUN_00215e20()" (identifier "iVar2") (= "=") (call_expression "FUN_00215e20()" (identifier "FUN_00215e20") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar2 == 5) {\n      return 5;\n    }" (if "if") (parenthesized_expression "(iVar2 == 5)" (( "(") (binary_expression "iVar2 == 5" (identifier "iVar2") (== "==") (number_literal "5")) () ")")) (compound_statement "{\n      return 5;\n    }" ({ "{") (return_statement "return 5;" (return "return") (number_literal "5") (; ";")) (} "}"))) (if_statement "if (iVar2 != 0) break;" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if (local_34 != (code *)0x0) {\n      iVar2 = (*local_34)(1,1,*param_3,param_3[1],param_3,local_15c);\n      if (iVar2 == 6) {\n        param_3[3] = 0;\n        param_3[4] = local_114 + (local_fc >> 0x1f);\n        puVar3 = local_1dc;\n        puVar4 = local_15c;\n        for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {\n          *puVar4 = *puVar3;\n          puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n          puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n        }\n        iVar2 = FUN_00216fd0();\n        if (iVar2 != 7) {\n          return iVar2;\n        }\n        uVar1 = FUN_00217190();\n        FUN_00217580(local_114,local_110,uVar1,uVar1);\n        *(undefined4 *)(&stack0x00000000 + extraout_EDX) = local_110;\n        return local_18;\n      }\n      if (iVar2 != 8) {\n        return 3;\n      }\n    }" (if "if") (parenthesized_expression "(local_34 != (code *)0x0)" (( "(") (binary_expression "local_34 != (code *)0x0" (identifier "local_34") (!= "!=") (cast_expression "(code *)0x0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      iVar2 = (*local_34)(1,1,*param_3,param_3[1],param_3,local_15c);\n      if (iVar2 == 6) {\n        param_3[3] = 0;\n        param_3[4] = local_114 + (local_fc >> 0x1f);\n        puVar3 = local_1dc;\n        puVar4 = local_15c;\n        for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {\n          *puVar4 = *puVar3;\n          puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n          puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n        }\n        iVar2 = FUN_00216fd0();\n        if (iVar2 != 7) {\n          return iVar2;\n        }\n        uVar1 = FUN_00217190();\n        FUN_00217580(local_114,local_110,uVar1,uVar1);\n        *(undefined4 *)(&stack0x00000000 + extraout_EDX) = local_110;\n        return local_18;\n      }\n      if (iVar2 != 8) {\n        return 3;\n      }\n    }" ({ "{") (expression_statement "iVar2 = (*local_34)(1,1,*param_3,param_3[1],param_3,local_15c);" (assignment_expression "iVar2 = (*local_34)(1,1,*param_3,param_3[1],param_3,local_15c)" (identifier "iVar2") (= "=") (call_expression "(*local_34)(1,1,*param_3,param_3[1],param_3,local_15c)" (parenthesized_expression "(*local_34)" (( "(") (pointer_expression "*local_34" (* "*") (identifier "local_34")) () ")")) (argument_list "(1,1,*param_3,param_3[1],param_3,local_15c)" (( "(") (number_literal "1") (, ",") (number_literal "1") (, ",") (pointer_expression "*param_3" (* "*") (identifier "param_3")) (, ",") (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]")) (, ",") (identifier "param_3") (, ",") (identifier "local_15c") () ")")))) (; ";")) (if_statement "if (iVar2 == 6) {\n        param_3[3] = 0;\n        param_3[4] = local_114 + (local_fc >> 0x1f);\n        puVar3 = local_1dc;\n        puVar4 = local_15c;\n        for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {\n          *puVar4 = *puVar3;\n          puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n          puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n        }\n        iVar2 = FUN_00216fd0();\n        if (iVar2 != 7) {\n          return iVar2;\n        }\n        uVar1 = FUN_00217190();\n        FUN_00217580(local_114,local_110,uVar1,uVar1);\n        *(undefined4 *)(&stack0x00000000 + extraout_EDX) = local_110;\n        return local_18;\n      }" (if "if") (parenthesized_expression "(iVar2 == 6)" (( "(") (binary_expression "iVar2 == 6" (identifier "iVar2") (== "==") (number_literal "6")) () ")")) (compound_statement "{\n        param_3[3] = 0;\n        param_3[4] = local_114 + (local_fc >> 0x1f);\n        puVar3 = local_1dc;\n        puVar4 = local_15c;\n        for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {\n          *puVar4 = *puVar3;\n          puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n          puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n        }\n        iVar2 = FUN_00216fd0();\n        if (iVar2 != 7) {\n          return iVar2;\n        }\n        uVar1 = FUN_00217190();\n        FUN_00217580(local_114,local_110,uVar1,uVar1);\n        *(undefined4 *)(&stack0x00000000 + extraout_EDX) = local_110;\n        return local_18;\n      }" ({ "{") (expression_statement "param_3[3] = 0;" (assignment_expression "param_3[3] = 0" (subscript_expression "param_3[3]" (identifier "param_3") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_3[4] = local_114 + (local_fc >> 0x1f);" (assignment_expression "param_3[4] = local_114 + (local_fc >> 0x1f)" (subscript_expression "param_3[4]" (identifier "param_3") ([ "[") (number_literal "4") (] "]")) (= "=") (binary_expression "local_114 + (local_fc >> 0x1f)" (identifier "local_114") (+ "+") (parenthesized_expression "(local_fc >> 0x1f)" (( "(") (binary_expression "local_fc >> 0x1f" (identifier "local_fc") (>> ">>") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "puVar3 = local_1dc;" (assignment_expression "puVar3 = local_1dc" (identifier "puVar3") (= "=") (identifier "local_1dc")) (; ";")) (expression_statement "puVar4 = local_15c;" (assignment_expression "puVar4 = local_15c" (identifier "puVar4") (= "=") (identifier "local_15c")) (; ";")) (for_statement "for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {\n          *puVar4 = *puVar3;\n          puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n          puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n        }" (for "for") (( "(") (assignment_expression "iVar2 = 0x20" (identifier "iVar2") (= "=") (number_literal "0x20")) (; ";") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "iVar2 = iVar2 + -1" (identifier "iVar2") (= "=") (binary_expression "iVar2 + -1" (identifier "iVar2") (+ "+") (number_literal "-1"))) () ")") (compound_statement "{\n          *puVar4 = *puVar3;\n          puVar3 = puVar3 + (uint)bVar5 * -2 + 1;\n          puVar4 = puVar4 + (uint)bVar5 * -2 + 1;\n        }" ({ "{") (expression_statement "*puVar4 = *puVar3;" (assignment_expression "*puVar4 = *puVar3" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (pointer_expression "*puVar3" (* "*") (identifier "puVar3"))) (; ";")) (expression_statement "puVar3 = puVar3 + (uint)bVar5 * -2 + 1;" (assignment_expression "puVar3 = puVar3 + (uint)bVar5 * -2 + 1" (identifier "puVar3") (= "=") (binary_expression "puVar3 + (uint)bVar5 * -2 + 1" (binary_expression "puVar3 + (uint)bVar5 * -2" (identifier "puVar3") (+ "+") (binary_expression "(uint)bVar5 * -2" (cast_expression "(uint)bVar5" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar5")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar4 = puVar4 + (uint)bVar5 * -2 + 1;" (assignment_expression "puVar4 = puVar4 + (uint)bVar5 * -2 + 1" (identifier "puVar4") (= "=") (binary_expression "puVar4 + (uint)bVar5 * -2 + 1" (binary_expression "puVar4 + (uint)bVar5 * -2" (identifier "puVar4") (+ "+") (binary_expression "(uint)bVar5 * -2" (cast_expression "(uint)bVar5" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar5")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "iVar2 = FUN_00216fd0();" (assignment_expression "iVar2 = FUN_00216fd0()" (identifier "iVar2") (= "=") (call_expression "FUN_00216fd0()" (identifier "FUN_00216fd0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar2 != 7) {\n          return iVar2;\n        }" (if "if") (parenthesized_expression "(iVar2 != 7)" (( "(") (binary_expression "iVar2 != 7" (identifier "iVar2") (!= "!=") (number_literal "7")) () ")")) (compound_statement "{\n          return iVar2;\n        }" ({ "{") (return_statement "return iVar2;" (return "return") (identifier "iVar2") (; ";")) (} "}"))) (expression_statement "uVar1 = FUN_00217190();" (assignment_expression "uVar1 = FUN_00217190()" (identifier "uVar1") (= "=") (call_expression "FUN_00217190()" (identifier "FUN_00217190") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "FUN_00217580(local_114,local_110,uVar1,uVar1);" (call_expression "FUN_00217580(local_114,local_110,uVar1,uVar1)" (identifier "FUN_00217580") (argument_list "(local_114,local_110,uVar1,uVar1)" (( "(") (identifier "local_114") (, ",") (identifier "local_110") (, ",") (identifier "uVar1") (, ",") (identifier "uVar1") () ")"))) (; ";")) (expression_statement "*(undefined4 *)(&stack0x00000000 + extraout_EDX) = local_110;" (assignment_expression "*(undefined4 *)(&stack0x00000000 + extraout_EDX) = local_110" (pointer_expression "*(undefined4 *)(&stack0x00000000 + extraout_EDX)" (* "*") (cast_expression "(undefined4 *)(&stack0x00000000 + extraout_EDX)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&stack0x00000000 + extraout_EDX)" (( "(") (binary_expression "&stack0x00000000 + extraout_EDX" (pointer_expression "&stack0x00000000" (& "&") (identifier "stack0x00000000")) (+ "+") (identifier "extraout_EDX")) () ")")))) (= "=") (identifier "local_110")) (; ";")) (return_statement "return local_18;" (return "return") (identifier "local_18") (; ";")) (} "}"))) (if_statement "if (iVar2 != 8) {\n        return 3;\n      }" (if "if") (parenthesized_expression "(iVar2 != 8)" (( "(") (binary_expression "iVar2 != 8" (identifier "iVar2") (!= "!=") (number_literal "8")) () ")")) (compound_statement "{\n        return 3;\n      }" ({ "{") (return_statement "return 3;" (return "return") (number_literal "3") (; ";")) (} "}"))) (} "}"))) (expression_statement "FUN_00216f60();" (call_expression "FUN_00216f60()" (identifier "FUN_00216f60") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (return_statement "return 3;" (return "return") (number_literal "3") (; ";")) (} "}")))

int __regparm2 function_1(type_1 param_1,type_1 param_2,type_1 *param_3)

{
  type_1 uVar1;
  int var_2;
  int var_12;
  type_1 *var_3;
  type_1 *var_4;
  type_2 bVar5;
  type_1 local_1dc [32];
  type_1 local_15c [18];
  int var_7;
  type_1 local_110;
  int var_8;
  type_3 *var_6;
  int local_18;
  type_1 local_14;
  
  bVar5 = 0;
  local_14 = param_2;
  var_1();
  var_3 = local_1dc;
  var_4 = local_15c;
  for (var_2 = 0x20; var_2 != 0; var_2 = var_2 + -1) {
    *var_4 = *var_3;
    var_3 = var_3 + (type_4)bVar5 * -2 + 1;
    var_4 = var_4 + (type_4)bVar5 * -2 + 1;
  }
  while( true ) {
    var_2 = var_5();
    if (var_2 == 5) {
      return 5;
    }
    if (var_2 != 0) break;
    if (var_6 != (type_3 *)0x0) {
      var_2 = (*var_6)(1,1,*param_3,param_3[1],param_3,local_15c);
      if (var_2 == 6) {
        param_3[3] = 0;
        param_3[4] = var_7 + (var_8 >> 0x1f);
        var_3 = local_1dc;
        var_4 = local_15c;
        for (var_2 = 0x20; var_2 != 0; var_2 = var_2 + -1) {
          *var_4 = *var_3;
          var_3 = var_3 + (type_4)bVar5 * -2 + 1;
          var_4 = var_4 + (type_4)bVar5 * -2 + 1;
        }
        var_2 = var_9();
        if (var_2 != 7) {
          return var_2;
        }
        uVar1 = var_10();
        var_11(var_7,local_110,uVar1,uVar1);
        *(type_1 *)(&stack0x00000000 + var_12) = local_110;
        return local_18;
      }
      if (var_2 != 8) {
        return 3;
      }
    }
    var_13();
  }
  return 3;
}


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

int __regparm2 MASKED(undefined4 param_1,undefined4 param_2,undefined4 *param_3)

{
  undefined4 uVar1;
  int iVar2;
  int extraout_EDX;
  undefined4 *puVar3;
  undefined4 *puVar4;
  byte bVar5;
  undefined4 local_1dc [32];
  undefined4 local_15c [18];
  int local_114;
  undefined4 local_110;
  int local_fc;
  code *local_34;
  int local_18;
  undefined4 local_14;
  
  bVar5 = 0;
  local_14 = param_2;
  FUN_00216e00();
  puVar3 = local_1dc;
  puVar4 = local_15c;
  for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {
    *puVar4 = *puVar3;
    puVar3 = puVar3 + (uint)bVar5 * -2 + 1;
    puVar4 = puVar4 + (uint)bVar5 * -2 + 1;
  }
  while( true ) {
    iVar2 = FUN_00215e20();
    if (iVar2 == 5) {
      return 5;
    }
    if (iVar2 != 0) break;
    if (local_34 != (code *)0x0) {
      iVar2 = (*local_34)(1,1,*param_3,param_3[1],param_3,local_15c);
      if (iVar2 == 6) {
        param_3[3] = 0;
        param_3[4] = local_114 + (local_fc >> 0x1f);
        puVar3 = local_1dc;
        puVar4 = local_15c;
        for (iVar2 = 0x20; iVar2 != 0; iVar2 = iVar2 + -1) {
          *puVar4 = *puVar3;
          puVar3 = puVar3 + (uint)bVar5 * -2 + 1;
          puVar4 = puVar4 + (uint)bVar5 * -2 + 1;
        }
        iVar2 = FUN_00216fd0();
        if (iVar2 != 7) {
          return iVar2;
        }
        uVar1 = FUN_00217190();
        FUN_00217580(local_114,local_110,uVar1,uVar1);
        *(undefined4 *)(&stack0x00000000 + extraout_EDX) = local_110;
        return local_18;
      }
      if (iVar2 != 8) {
        return 3;
      }
    }
    FUN_00216f60();
  }
  return 3;
}

