
undefined4 _Unwind_RaiseException_Phase2(undefined4 *param_1,int param_2,int *param_3)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  undefined4 *puVar4;
  uint uVar5;
  int *piVar6;
  int iVar7;
  undefined *puVar8;
  undefined4 uVar9;
  undefined *puVar10;
  code *pcVar11;
  undefined1 auStack_cb0 [1536];
  code *pcStack_6b0;
  code *pcStack_698;
  code *pcStack_694;
  uint uStack_690;
  undefined4 *puStack_68c;
  int iStack_688;
  undefined *puStack_684;
  undefined1 *puStack_680;
  undefined4 uStack_67c;
  undefined4 uStack_678;
  undefined4 uStack_674;
  int iStack_670;
  code *pcStack_66c;
  int *piStack_660;
  undefined4 *local_658;
  int local_654;
  undefined1 auStack_648 [1536];
  code *local_48;
  code *local_30;
  
  local_30 = (code *)(PTR_LAB_0043220c + 0x154);
  iVar7 = 1;
  puVar8 = PTR_LAB_0043220c + -0x1830;
  piVar6 = param_3;
  while( true ) {
    iVar2 = uw_frame_state_for(param_2,auStack_648);
    uVar3 = 4;
    iVar1 = *(int *)(param_2 + 0x30c) >> 0x1f;
    uVar5 = -iVar1;
    if (param_1[4] != *(int *)(param_2 + 0x2f4) + iVar1) {
      uVar3 = 0;
    }
    if (iVar2 != 0) {
      return 2;
    }
    puVar4 = (undefined4 *)0x1;
    if (local_48 != (code *)0x0) {
      piVar6 = (int *)*param_1;
      uVar5 = uVar3 | 2;
      local_658 = param_1;
      local_654 = param_2;
      iVar1 = (*local_48)();
      if (iVar1 == 7) {
        *param_3 = iVar7;
        return 7;
      }
      if (iVar1 != 8) {
        return 2;
      }
    }
    if (uVar3 != 0) break;
    iVar7 = iVar7 + 1;
    (*local_30)(param_2,auStack_648);
  }
  pcVar11 = _Unwind_ForcedUnwind_Phase2;
  puVar10 = PTR_abort_00436908;
  (*(code *)PTR_abort_00436908)();
  pcStack_698 = (code *)puVar4[3];
  uStack_678 = 7;
  uStack_674 = 8;
  uStack_67c = 4;
  iVar1 = 1;
  uVar9 = puVar4[4];
  pcStack_694 = (code *)(*(int *)(puVar10 + 0xc1e64) + 0x154);
  uStack_690 = uVar3;
  puStack_68c = param_1;
  iStack_688 = iVar7;
  puStack_684 = puVar8;
  puStack_680 = auStack_648;
  iStack_670 = param_2;
  pcStack_66c = pcVar11;
  piStack_660 = piVar6;
  while (iVar7 = uw_frame_state_for(uVar5,auStack_cb0), iVar7 == 0) {
    iVar7 = (*pcStack_698)(1,10,*puVar4,puVar4[1],puVar4,uVar5,uVar9);
    if (iVar7 != 0) {
      return 2;
    }
    if (pcStack_6b0 != (code *)0x0) {
      iVar7 = (*pcStack_6b0)(1,10,*puVar4,puVar4[1],puVar4,uVar5);
      if (iVar7 == 7) {
        uVar9 = 7;
        goto LAB_00370524;
      }
      if (iVar7 != 8) {
        return 2;
      }
    }
    iVar1 = iVar1 + 1;
    (*pcStack_694)(uVar5,auStack_cb0);
  }
  if (iVar7 == 5) {
    iVar7 = (*pcStack_698)(1,0x1a,*puVar4,puVar4[1],puVar4,uVar5,uVar9);
    uVar9 = 5;
    if (iVar7 == 0) {
LAB_00370524:
      *piStack_660 = iVar1;
      return uVar9;
    }
  }
  return 2;
}



undefined4 FUN_00370234(undefined4 *param_1,int param_2,int *param_3)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  undefined4 *puVar4;
  uint uVar5;
  int *piVar6;
  int iVar7;
  undefined *puVar8;
  undefined4 uVar9;
  undefined *puVar10;
  code *pcVar11;
  undefined1 auStack_cb0 [1536];
  code *pcStack_6b0;
  code *pcStack_698;
  code *pcStack_694;
  uint uStack_690;
  undefined4 *puStack_68c;
  int iStack_688;
  undefined *puStack_684;
  undefined1 *puStack_680;
  undefined4 uStack_67c;
  undefined4 uStack_678;
  undefined4 uStack_674;
  int iStack_670;
  code *pcStack_66c;
  int *piStack_660;
  undefined4 *local_658;
  int local_654;
  undefined1 auStack_648 [1536];
  code *local_48;
  code *local_30;
  
  local_30 = (code *)(PTR_LAB_0043220c + 0x154);
  iVar7 = 1;
  puVar8 = PTR_LAB_0043220c + -0x1830;
  piVar6 = param_3;
  while( true ) {
    iVar2 = FUN_0036e7d0(param_2,auStack_648);
    uVar3 = 4;
    iVar1 = *(int *)(param_2 + 0x30c) >> 0x1f;
    uVar5 = -iVar1;
    if (param_1[4] != *(int *)(param_2 + 0x2f4) + iVar1) {
      uVar3 = 0;
    }
    if (iVar2 != 0) {
      return 2;
    }
    puVar4 = (undefined4 *)0x1;
    if (local_48 != (code *)0x0) {
      piVar6 = (int *)*param_1;
      uVar5 = uVar3 | 2;
      local_658 = param_1;
      local_654 = param_2;
      iVar1 = (*local_48)();
      if (iVar1 == 7) {
        *param_3 = iVar7;
        return 7;
      }
      if (iVar1 != 8) {
        return 2;
      }
    }
    if (uVar3 != 0) break;
    iVar7 = iVar7 + 1;
    (*local_30)(param_2,auStack_648);
  }
  pcVar11 = FUN_003703a8;
  puVar10 = PTR_abort_00436908;
  (*(code *)PTR_abort_00436908)();
  pcStack_698 = (code *)puVar4[3];
  uStack_678 = 7;
  uStack_674 = 8;
  uStack_67c = 4;
  iVar1 = 1;
  uVar9 = puVar4[4];
  pcStack_694 = (code *)(*(int *)(puVar10 + 0xc1e64) + 0x154);
  uStack_690 = uVar3;
  puStack_68c = param_1;
  iStack_688 = iVar7;
  puStack_684 = puVar8;
  puStack_680 = auStack_648;
  iStack_670 = param_2;
  pcStack_66c = pcVar11;
  piStack_660 = piVar6;
  while (iVar7 = FUN_0036e7d0(uVar5,auStack_cb0), iVar7 == 0) {
    iVar7 = (*pcStack_698)(1,10,*puVar4,puVar4[1],puVar4,uVar5,uVar9);
    if (iVar7 != 0) {
      return 2;
    }
    if (pcStack_6b0 != (code *)0x0) {
      iVar7 = (*pcStack_6b0)(1,10,*puVar4,puVar4[1],puVar4,uVar5);
      if (iVar7 == 7) {
        uVar9 = 7;
        goto LAB_00370524;
      }
      if (iVar7 != 8) {
        return 2;
      }
    }
    iVar1 = iVar1 + 1;
    (*pcStack_694)(uVar5,auStack_cb0);
  }
  if (iVar7 == 5) {
    iVar7 = (*pcStack_698)(1,0x1a,*puVar4,puVar4[1],puVar4,uVar5,uVar9);
    uVar9 = 5;
    if (iVar7 == 0) {
LAB_00370524:
      *piStack_660 = iVar1;
      return uVar9;
    }
  }
  return 2;
}


lui gp,0xd
addiu gp,gp,-0x6064
addu gp,gp,t9
addiu sp,sp,-0x668
lw v0,-0x7fc4(gp)
sw s3,0x64c(sp)
addiu v0,v0,0x154
sw gp,0x18(sp)
sw s8,0x660(sp)
or s8,a1,zero
sw s7,0x65c(sp)
li s7,0x8
sw s6,0x658(sp)
li s6,0x7
sw s5,0x654(sp)
li s5,0x4
sw s4,0x650(sp)
addiu s4,sp,0x20
sw s2,0x648(sp)
li s2,0x1
sw s1,0x644(sp)
or s1,a0,zero
sw ra,0x664(sp)
sw s0,0x640(sp)
sw v0,0x638(sp)
sw a2,0x670(sp)
lw s3,-0x7fc4(gp)
b 0x003702f4
_addiu s3,s3,-0x1830
lw t9,0x620(sp)
beq t9,zero,0x003702dc
_li a0,0x1
lw a3,0x4(s1)
lw a2,0x0(s1)
ori a1,v1,0x2
sw s8,0x14(sp)
jalr t9
_sw s1,0x10(sp)
beq v0,s6,0x00370364
_lw gp,0x18(sp)
bne v0,s7,0x00370334
_lw ra,0x664(sp)
bne s0,zero,0x0037039c
_lw t9,0x638(sp)
addiu s2,s2,0x1
or a1,s4,zero
jalr t9
_or a0,s8,zero
or a1,s4,zero
or t9,s3,zero
bal 0x0036e7d0
_or a0,s8,zero
or v1,s5,zero
lw a1,0x30c(s8)
lw a0,0x2f4(s8)
lw s0,0x10(s1)
srl a1,a1,0x1f
lw gp,0x18(sp)
subu a0,a0,a1
xor s0,s0,a0
movn v1,zero,s0
beq v0,zero,0x003702a8
_or s0,v1,zero
lw ra,0x664(sp)
li v0,0x2
lw s8,0x660(sp)
lw s7,0x65c(sp)
lw s6,0x658(sp)
lw s5,0x654(sp)
lw s4,0x650(sp)
lw s3,0x64c(sp)
lw s2,0x648(sp)
lw s1,0x644(sp)
lw s0,0x640(sp)
jr ra
_addiu sp,sp,0x668
lw v1,0x670(sp)
lw ra,0x664(sp)
lw s8,0x660(sp)
lw s7,0x65c(sp)
lw s6,0x658(sp)
lw s5,0x654(sp)
lw s4,0x650(sp)
lw s3,0x64c(sp)
lw s1,0x644(sp)
lw s0,0x640(sp)
sw s2,0x0(v1)
lw s2,0x648(sp)
jr ra
_addiu sp,sp,0x668
lw t9,-0x38c8(gp)
jalr t9
_nop
(translation_unit "undefined4 FUN_00370234(undefined4 *param_1,int param_2,int *param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  undefined4 *puVar4;\n  uint uVar5;\n  int *piVar6;\n  int iVar7;\n  undefined *puVar8;\n  undefined4 uVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  undefined1 auStack_cb0 [1536];\n  code *pcStack_6b0;\n  code *pcStack_698;\n  code *pcStack_694;\n  uint uStack_690;\n  undefined4 *puStack_68c;\n  int iStack_688;\n  undefined *puStack_684;\n  undefined1 *puStack_680;\n  undefined4 uStack_67c;\n  undefined4 uStack_678;\n  undefined4 uStack_674;\n  int iStack_670;\n  code *pcStack_66c;\n  int *piStack_660;\n  undefined4 *local_658;\n  int local_654;\n  undefined1 auStack_648 [1536];\n  code *local_48;\n  code *local_30;\n  \n  local_30 = (code *)(PTR_LAB_0043220c + 0x154);\n  iVar7 = 1;\n  puVar8 = PTR_LAB_0043220c + -0x1830;\n  piVar6 = param_3;\n  while( true ) {\n    iVar2 = FUN_0036e7d0(param_2,auStack_648);\n    uVar3 = 4;\n    iVar1 = *(int *)(param_2 + 0x30c) >> 0x1f;\n    uVar5 = -iVar1;\n    if (param_1[4] != *(int *)(param_2 + 0x2f4) + iVar1) {\n      uVar3 = 0;\n    }\n    if (iVar2 != 0) {\n      return 2;\n    }\n    puVar4 = (undefined4 *)0x1;\n    if (local_48 != (code *)0x0) {\n      piVar6 = (int *)*param_1;\n      uVar5 = uVar3 | 2;\n      local_658 = param_1;\n      local_654 = param_2;\n      iVar1 = (*local_48)();\n      if (iVar1 == 7) {\n        *param_3 = iVar7;\n        return 7;\n      }\n      if (iVar1 != 8) {\n        return 2;\n      }\n    }\n    if (uVar3 != 0) break;\n    iVar7 = iVar7 + 1;\n    (*local_30)(param_2,auStack_648);\n  }\n  pcVar11 = FUN_003703a8;\n  puVar10 = PTR_abort_00436908;\n  (*(code *)PTR_abort_00436908)();\n  pcStack_698 = (code *)puVar4[3];\n  uStack_678 = 7;\n  uStack_674 = 8;\n  uStack_67c = 4;\n  iVar1 = 1;\n  uVar9 = puVar4[4];\n  pcStack_694 = (code *)(*(int *)(puVar10 + 0xc1e64) + 0x154);\n  uStack_690 = uVar3;\n  puStack_68c = param_1;\n  iStack_688 = iVar7;\n  puStack_684 = puVar8;\n  puStack_680 = auStack_648;\n  iStack_670 = param_2;\n  pcStack_66c = pcVar11;\n  piStack_660 = piVar6;\n  while (iVar7 = FUN_0036e7d0(uVar5,auStack_cb0), iVar7 == 0) {\n    iVar7 = (*pcStack_698)(1,10,*puVar4,puVar4[1],puVar4,uVar5,uVar9);\n    if (iVar7 != 0) {\n      return 2;\n    }\n    if (pcStack_6b0 != (code *)0x0) {\n      iVar7 = (*pcStack_6b0)(1,10,*puVar4,puVar4[1],puVar4,uVar5);\n      if (iVar7 == 7) {\n        uVar9 = 7;\n        goto LAB_00370524;\n      }\n      if (iVar7 != 8) {\n        return 2;\n      }\n    }\n    iVar1 = iVar1 + 1;\n    (*pcStack_694)(uVar5,auStack_cb0);\n  }\n  if (iVar7 == 5) {\n    iVar7 = (*pcStack_698)(1,0x1a,*puVar4,puVar4[1],puVar4,uVar5,uVar9);\n    uVar9 = 5;\n    if (iVar7 == 0) {\nLAB_00370524:\n      *piStack_660 = iVar1;\n      return uVar9;\n    }\n  }\n  return 2;\n}\n\n" (function_definition "undefined4 FUN_00370234(undefined4 *param_1,int param_2,int *param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  undefined4 *puVar4;\n  uint uVar5;\n  int *piVar6;\n  int iVar7;\n  undefined *puVar8;\n  undefined4 uVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  undefined1 auStack_cb0 [1536];\n  code *pcStack_6b0;\n  code *pcStack_698;\n  code *pcStack_694;\n  uint uStack_690;\n  undefined4 *puStack_68c;\n  int iStack_688;\n  undefined *puStack_684;\n  undefined1 *puStack_680;\n  undefined4 uStack_67c;\n  undefined4 uStack_678;\n  undefined4 uStack_674;\n  int iStack_670;\n  code *pcStack_66c;\n  int *piStack_660;\n  undefined4 *local_658;\n  int local_654;\n  undefined1 auStack_648 [1536];\n  code *local_48;\n  code *local_30;\n  \n  local_30 = (code *)(PTR_LAB_0043220c + 0x154);\n  iVar7 = 1;\n  puVar8 = PTR_LAB_0043220c + -0x1830;\n  piVar6 = param_3;\n  while( true ) {\n    iVar2 = FUN_0036e7d0(param_2,auStack_648);\n    uVar3 = 4;\n    iVar1 = *(int *)(param_2 + 0x30c) >> 0x1f;\n    uVar5 = -iVar1;\n    if (param_1[4] != *(int *)(param_2 + 0x2f4) + iVar1) {\n      uVar3 = 0;\n    }\n    if (iVar2 != 0) {\n      return 2;\n    }\n    puVar4 = (undefined4 *)0x1;\n    if (local_48 != (code *)0x0) {\n      piVar6 = (int *)*param_1;\n      uVar5 = uVar3 | 2;\n      local_658 = param_1;\n      local_654 = param_2;\n      iVar1 = (*local_48)();\n      if (iVar1 == 7) {\n        *param_3 = iVar7;\n        return 7;\n      }\n      if (iVar1 != 8) {\n        return 2;\n      }\n    }\n    if (uVar3 != 0) break;\n    iVar7 = iVar7 + 1;\n    (*local_30)(param_2,auStack_648);\n  }\n  pcVar11 = FUN_003703a8;\n  puVar10 = PTR_abort_00436908;\n  (*(code *)PTR_abort_00436908)();\n  pcStack_698 = (code *)puVar4[3];\n  uStack_678 = 7;\n  uStack_674 = 8;\n  uStack_67c = 4;\n  iVar1 = 1;\n  uVar9 = puVar4[4];\n  pcStack_694 = (code *)(*(int *)(puVar10 + 0xc1e64) + 0x154);\n  uStack_690 = uVar3;\n  puStack_68c = param_1;\n  iStack_688 = iVar7;\n  puStack_684 = puVar8;\n  puStack_680 = auStack_648;\n  iStack_670 = param_2;\n  pcStack_66c = pcVar11;\n  piStack_660 = piVar6;\n  while (iVar7 = FUN_0036e7d0(uVar5,auStack_cb0), iVar7 == 0) {\n    iVar7 = (*pcStack_698)(1,10,*puVar4,puVar4[1],puVar4,uVar5,uVar9);\n    if (iVar7 != 0) {\n      return 2;\n    }\n    if (pcStack_6b0 != (code *)0x0) {\n      iVar7 = (*pcStack_6b0)(1,10,*puVar4,puVar4[1],puVar4,uVar5);\n      if (iVar7 == 7) {\n        uVar9 = 7;\n        goto LAB_00370524;\n      }\n      if (iVar7 != 8) {\n        return 2;\n      }\n    }\n    iVar1 = iVar1 + 1;\n    (*pcStack_694)(uVar5,auStack_cb0);\n  }\n  if (iVar7 == 5) {\n    iVar7 = (*pcStack_698)(1,0x1a,*puVar4,puVar4[1],puVar4,uVar5,uVar9);\n    uVar9 = 5;\n    if (iVar7 == 0) {\nLAB_00370524:\n      *piStack_660 = iVar1;\n      return uVar9;\n    }\n  }\n  return 2;\n}" type_identifier (function_declarator "FUN_00370234(undefined4 *param_1,int param_2,int *param_3)" identifier (parameter_list "(undefined4 *param_1,int param_2,int *param_3)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  undefined4 *puVar4;\n  uint uVar5;\n  int *piVar6;\n  int iVar7;\n  undefined *puVar8;\n  undefined4 uVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  undefined1 auStack_cb0 [1536];\n  code *pcStack_6b0;\n  code *pcStack_698;\n  code *pcStack_694;\n  uint uStack_690;\n  undefined4 *puStack_68c;\n  int iStack_688;\n  undefined *puStack_684;\n  undefined1 *puStack_680;\n  undefined4 uStack_67c;\n  undefined4 uStack_678;\n  undefined4 uStack_674;\n  int iStack_670;\n  code *pcStack_66c;\n  int *piStack_660;\n  undefined4 *local_658;\n  int local_654;\n  undefined1 auStack_648 [1536];\n  code *local_48;\n  code *local_30;\n  \n  local_30 = (code *)(PTR_LAB_0043220c + 0x154);\n  iVar7 = 1;\n  puVar8 = PTR_LAB_0043220c + -0x1830;\n  piVar6 = param_3;\n  while( true ) {\n    iVar2 = FUN_0036e7d0(param_2,auStack_648);\n    uVar3 = 4;\n    iVar1 = *(int *)(param_2 + 0x30c) >> 0x1f;\n    uVar5 = -iVar1;\n    if (param_1[4] != *(int *)(param_2 + 0x2f4) + iVar1) {\n      uVar3 = 0;\n    }\n    if (iVar2 != 0) {\n      return 2;\n    }\n    puVar4 = (undefined4 *)0x1;\n    if (local_48 != (code *)0x0) {\n      piVar6 = (int *)*param_1;\n      uVar5 = uVar3 | 2;\n      local_658 = param_1;\n      local_654 = param_2;\n      iVar1 = (*local_48)();\n      if (iVar1 == 7) {\n        *param_3 = iVar7;\n        return 7;\n      }\n      if (iVar1 != 8) {\n        return 2;\n      }\n    }\n    if (uVar3 != 0) break;\n    iVar7 = iVar7 + 1;\n    (*local_30)(param_2,auStack_648);\n  }\n  pcVar11 = FUN_003703a8;\n  puVar10 = PTR_abort_00436908;\n  (*(code *)PTR_abort_00436908)();\n  pcStack_698 = (code *)puVar4[3];\n  uStack_678 = 7;\n  uStack_674 = 8;\n  uStack_67c = 4;\n  iVar1 = 1;\n  uVar9 = puVar4[4];\n  pcStack_694 = (code *)(*(int *)(puVar10 + 0xc1e64) + 0x154);\n  uStack_690 = uVar3;\n  puStack_68c = param_1;\n  iStack_688 = iVar7;\n  puStack_684 = puVar8;\n  puStack_680 = auStack_648;\n  iStack_670 = param_2;\n  pcStack_66c = pcVar11;\n  piStack_660 = piVar6;\n  while (iVar7 = FUN_0036e7d0(uVar5,auStack_cb0), iVar7 == 0) {\n    iVar7 = (*pcStack_698)(1,10,*puVar4,puVar4[1],puVar4,uVar5,uVar9);\n    if (iVar7 != 0) {\n      return 2;\n    }\n    if (pcStack_6b0 != (code *)0x0) {\n      iVar7 = (*pcStack_6b0)(1,10,*puVar4,puVar4[1],puVar4,uVar5);\n      if (iVar7 == 7) {\n        uVar9 = 7;\n        goto LAB_00370524;\n      }\n      if (iVar7 != 8) {\n        return 2;\n      }\n    }\n    iVar1 = iVar1 + 1;\n    (*pcStack_694)(uVar5,auStack_cb0);\n  }\n  if (iVar7 == 5) {\n    iVar7 = (*pcStack_698)(1,0x1a,*puVar4,puVar4[1],puVar4,uVar5,uVar9);\n    uVar9 = 5;\n    if (iVar7 == 0) {\nLAB_00370524:\n      *piStack_660 = iVar1;\n      return uVar9;\n    }\n  }\n  return 2;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "undefined *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "undefined *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "code *pcVar11;" type_identifier (pointer_declarator "*pcVar11" * identifier) ;) (declaration "undefined1 auStack_cb0 [1536];" type_identifier (array_declarator "auStack_cb0 [1536]" identifier [ number_literal ]) ;) (declaration "code *pcStack_6b0;" type_identifier (pointer_declarator "*pcStack_6b0" * identifier) ;) (declaration "code *pcStack_698;" type_identifier (pointer_declarator "*pcStack_698" * identifier) ;) (declaration "code *pcStack_694;" type_identifier (pointer_declarator "*pcStack_694" * identifier) ;) (declaration "uint uStack_690;" type_identifier identifier ;) (declaration "undefined4 *puStack_68c;" type_identifier (pointer_declarator "*puStack_68c" * identifier) ;) (declaration "int iStack_688;" primitive_type identifier ;) (declaration "undefined *puStack_684;" type_identifier (pointer_declarator "*puStack_684" * identifier) ;) (declaration "undefined1 *puStack_680;" type_identifier (pointer_declarator "*puStack_680" * identifier) ;) (declaration "undefined4 uStack_67c;" type_identifier identifier ;) (declaration "undefined4 uStack_678;" type_identifier identifier ;) (declaration "undefined4 uStack_674;" type_identifier identifier ;) (declaration "int iStack_670;" primitive_type identifier ;) (declaration "code *pcStack_66c;" type_identifier (pointer_declarator "*pcStack_66c" * identifier) ;) (declaration "int *piStack_660;" primitive_type (pointer_declarator "*piStack_660" * identifier) ;) (declaration "undefined4 *local_658;" type_identifier (pointer_declarator "*local_658" * identifier) ;) (declaration "int local_654;" primitive_type identifier ;) (declaration "undefined1 auStack_648 [1536];" type_identifier (array_declarator "auStack_648 [1536]" identifier [ number_literal ]) ;) (declaration "code *local_48;" type_identifier (pointer_declarator "*local_48" * identifier) ;) (declaration "code *local_30;" type_identifier (pointer_declarator "*local_30" * identifier) ;) (expression_statement "local_30 = (code *)(PTR_LAB_0043220c + 0x154);" (assignment_expression "local_30 = (code *)(PTR_LAB_0043220c + 0x154)" identifier = (cast_expression "(code *)(PTR_LAB_0043220c + 0x154)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0043220c + 0x154)" ( (binary_expression "PTR_LAB_0043220c + 0x154" identifier + number_literal) )))) ;) (expression_statement "iVar7 = 1;" (assignment_expression "iVar7 = 1" identifier = number_literal) ;) (expression_statement "puVar8 = PTR_LAB_0043220c + -0x1830;" (assignment_expression "puVar8 = PTR_LAB_0043220c + -0x1830" identifier = (binary_expression "PTR_LAB_0043220c + -0x1830" identifier + number_literal)) ;) (expression_statement "piVar6 = param_3;" (assignment_expression "piVar6 = param_3" identifier = identifier) ;) (while_statement "while( true ) {\n    iVar2 = FUN_0036e7d0(param_2,auStack_648);\n    uVar3 = 4;\n    iVar1 = *(int *)(param_2 + 0x30c) >> 0x1f;\n    uVar5 = -iVar1;\n    if (param_1[4] != *(int *)(param_2 + 0x2f4) + iVar1) {\n      uVar3 = 0;\n    }\n    if (iVar2 != 0) {\n      return 2;\n    }\n    puVar4 = (undefined4 *)0x1;\n    if (local_48 != (code *)0x0) {\n      piVar6 = (int *)*param_1;\n      uVar5 = uVar3 | 2;\n      local_658 = param_1;\n      local_654 = param_2;\n      iVar1 = (*local_48)();\n      if (iVar1 == 7) {\n        *param_3 = iVar7;\n        return 7;\n      }\n      if (iVar1 != 8) {\n        return 2;\n      }\n    }\n    if (uVar3 != 0) break;\n    iVar7 = iVar7 + 1;\n    (*local_30)(param_2,auStack_648);\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    iVar2 = FUN_0036e7d0(param_2,auStack_648);\n    uVar3 = 4;\n    iVar1 = *(int *)(param_2 + 0x30c) >> 0x1f;\n    uVar5 = -iVar1;\n    if (param_1[4] != *(int *)(param_2 + 0x2f4) + iVar1) {\n      uVar3 = 0;\n    }\n    if (iVar2 != 0) {\n      return 2;\n    }\n    puVar4 = (undefined4 *)0x1;\n    if (local_48 != (code *)0x0) {\n      piVar6 = (int *)*param_1;\n      uVar5 = uVar3 | 2;\n      local_658 = param_1;\n      local_654 = param_2;\n      iVar1 = (*local_48)();\n      if (iVar1 == 7) {\n        *param_3 = iVar7;\n        return 7;\n      }\n      if (iVar1 != 8) {\n        return 2;\n      }\n    }\n    if (uVar3 != 0) break;\n    iVar7 = iVar7 + 1;\n    (*local_30)(param_2,auStack_648);\n  }" { (expression_statement "iVar2 = FUN_0036e7d0(param_2,auStack_648);" (assignment_expression "iVar2 = FUN_0036e7d0(param_2,auStack_648)" identifier = (call_expression "FUN_0036e7d0(param_2,auStack_648)" identifier (argument_list "(param_2,auStack_648)" ( identifier , identifier )))) ;) (expression_statement "uVar3 = 4;" (assignment_expression "uVar3 = 4" identifier = number_literal) ;) (expression_statement "iVar1 = *(int *)(param_2 + 0x30c) >> 0x1f;" (assignment_expression "iVar1 = *(int *)(param_2 + 0x30c) >> 0x1f" identifier = (binary_expression "*(int *)(param_2 + 0x30c) >> 0x1f" (pointer_expression "*(int *)(param_2 + 0x30c)" * (cast_expression "(int *)(param_2 + 0x30c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x30c)" ( (binary_expression "param_2 + 0x30c" identifier + number_literal) )))) >> number_literal)) ;) (expression_statement "uVar5 = -iVar1;" (assignment_expression "uVar5 = -iVar1" identifier = (unary_expression "-iVar1" - identifier)) ;) (if_statement "if (param_1[4] != *(int *)(param_2 + 0x2f4) + iVar1) {\n      uVar3 = 0;\n    }" if (parenthesized_expression "(param_1[4] != *(int *)(param_2 + 0x2f4) + iVar1)" ( (binary_expression "param_1[4] != *(int *)(param_2 + 0x2f4) + iVar1" (subscript_expression "param_1[4]" identifier [ number_literal ]) != (binary_expression "*(int *)(param_2 + 0x2f4) + iVar1" (pointer_expression "*(int *)(param_2 + 0x2f4)" * (cast_expression "(int *)(param_2 + 0x2f4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x2f4)" ( (binary_expression "param_2 + 0x2f4" identifier + number_literal) )))) + identifier)) )) (compound_statement "{\n      uVar3 = 0;\n    }" { (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) })) (if_statement "if (iVar2 != 0) {\n      return 2;\n    }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n      return 2;\n    }" { (return_statement "return 2;" return number_literal ;) })) (expression_statement "puVar4 = (undefined4 *)0x1;" (assignment_expression "puVar4 = (undefined4 *)0x1" identifier = (cast_expression "(undefined4 *)0x1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (local_48 != (code *)0x0) {\n      piVar6 = (int *)*param_1;\n      uVar5 = uVar3 | 2;\n      local_658 = param_1;\n      local_654 = param_2;\n      iVar1 = (*local_48)();\n      if (iVar1 == 7) {\n        *param_3 = iVar7;\n        return 7;\n      }\n      if (iVar1 != 8) {\n        return 2;\n      }\n    }" if (parenthesized_expression "(local_48 != (code *)0x0)" ( (binary_expression "local_48 != (code *)0x0" identifier != (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      piVar6 = (int *)*param_1;\n      uVar5 = uVar3 | 2;\n      local_658 = param_1;\n      local_654 = param_2;\n      iVar1 = (*local_48)();\n      if (iVar1 == 7) {\n        *param_3 = iVar7;\n        return 7;\n      }\n      if (iVar1 != 8) {\n        return 2;\n      }\n    }" { (expression_statement "piVar6 = (int *)*param_1;" (assignment_expression "piVar6 = (int *)*param_1" identifier = (cast_expression "(int *)*param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "uVar5 = uVar3 | 2;" (assignment_expression "uVar5 = uVar3 | 2" identifier = (binary_expression "uVar3 | 2" identifier | number_literal)) ;) (expression_statement "local_658 = param_1;" (assignment_expression "local_658 = param_1" identifier = identifier) ;) (expression_statement "local_654 = param_2;" (assignment_expression "local_654 = param_2" identifier = identifier) ;) (expression_statement "iVar1 = (*local_48)();" (assignment_expression "iVar1 = (*local_48)()" identifier = (call_expression "(*local_48)()" (parenthesized_expression "(*local_48)" ( (pointer_expression "*local_48" * identifier) )) (argument_list "()" ( )))) ;) (if_statement "if (iVar1 == 7) {\n        *param_3 = iVar7;\n        return 7;\n      }" if (parenthesized_expression "(iVar1 == 7)" ( (binary_expression "iVar1 == 7" identifier == number_literal) )) (compound_statement "{\n        *param_3 = iVar7;\n        return 7;\n      }" { (expression_statement "*param_3 = iVar7;" (assignment_expression "*param_3 = iVar7" (pointer_expression "*param_3" * identifier) = identifier) ;) (return_statement "return 7;" return number_literal ;) })) (if_statement "if (iVar1 != 8) {\n        return 2;\n      }" if (parenthesized_expression "(iVar1 != 8)" ( (binary_expression "iVar1 != 8" identifier != number_literal) )) (compound_statement "{\n        return 2;\n      }" { (return_statement "return 2;" return number_literal ;) })) })) (if_statement "if (uVar3 != 0) break;" if (parenthesized_expression "(uVar3 != 0)" ( (binary_expression "uVar3 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (expression_statement "(*local_30)(param_2,auStack_648);" (call_expression "(*local_30)(param_2,auStack_648)" (parenthesized_expression "(*local_30)" ( (pointer_expression "*local_30" * identifier) )) (argument_list "(param_2,auStack_648)" ( identifier , identifier ))) ;) })) (expression_statement "pcVar11 = FUN_003703a8;" (assignment_expression "pcVar11 = FUN_003703a8" identifier = identifier) ;) (expression_statement "puVar10 = PTR_abort_00436908;" (assignment_expression "puVar10 = PTR_abort_00436908" identifier = identifier) ;) (expression_statement "(*(code *)PTR_abort_00436908)();" (call_expression "(*(code *)PTR_abort_00436908)()" (parenthesized_expression "(*(code *)PTR_abort_00436908)" ( (pointer_expression "*(code *)PTR_abort_00436908" * (cast_expression "(code *)PTR_abort_00436908" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "pcStack_698 = (code *)puVar4[3];" (assignment_expression "pcStack_698 = (code *)puVar4[3]" identifier = (cast_expression "(code *)puVar4[3]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[3]" identifier [ number_literal ]))) ;) (expression_statement "uStack_678 = 7;" (assignment_expression "uStack_678 = 7" identifier = number_literal) ;) (expression_statement "uStack_674 = 8;" (assignment_expression "uStack_674 = 8" identifier = number_literal) ;) (expression_statement "uStack_67c = 4;" (assignment_expression "uStack_67c = 4" identifier = number_literal) ;) (expression_statement "iVar1 = 1;" (assignment_expression "iVar1 = 1" identifier = number_literal) ;) (expression_statement "uVar9 = puVar4[4];" (assignment_expression "uVar9 = puVar4[4]" identifier = (subscript_expression "puVar4[4]" identifier [ number_literal ])) ;) (expression_statement "pcStack_694 = (code *)(*(int *)(puVar10 + 0xc1e64) + 0x154);" (assignment_expression "pcStack_694 = (code *)(*(int *)(puVar10 + 0xc1e64) + 0x154)" identifier = (cast_expression "(code *)(*(int *)(puVar10 + 0xc1e64) + 0x154)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar10 + 0xc1e64) + 0x154)" ( (binary_expression "*(int *)(puVar10 + 0xc1e64) + 0x154" (pointer_expression "*(int *)(puVar10 + 0xc1e64)" * (cast_expression "(int *)(puVar10 + 0xc1e64)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0xc1e64)" ( (binary_expression "puVar10 + 0xc1e64" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "uStack_690 = uVar3;" (assignment_expression "uStack_690 = uVar3" identifier = identifier) ;) (expression_statement "puStack_68c = param_1;" (assignment_expression "puStack_68c = param_1" identifier = identifier) ;) (expression_statement "iStack_688 = iVar7;" (assignment_expression "iStack_688 = iVar7" identifier = identifier) ;) (expression_statement "puStack_684 = puVar8;" (assignment_expression "puStack_684 = puVar8" identifier = identifier) ;) (expression_statement "puStack_680 = auStack_648;" (assignment_expression "puStack_680 = auStack_648" identifier = identifier) ;) (expression_statement "iStack_670 = param_2;" (assignment_expression "iStack_670 = param_2" identifier = identifier) ;) (expression_statement "pcStack_66c = pcVar11;" (assignment_expression "pcStack_66c = pcVar11" identifier = identifier) ;) (expression_statement "piStack_660 = piVar6;" (assignment_expression "piStack_660 = piVar6" identifier = identifier) ;) (while_statement "while (iVar7 = FUN_0036e7d0(uVar5,auStack_cb0), iVar7 == 0) {\n    iVar7 = (*pcStack_698)(1,10,*puVar4,puVar4[1],puVar4,uVar5,uVar9);\n    if (iVar7 != 0) {\n      return 2;\n    }\n    if (pcStack_6b0 != (code *)0x0) {\n      iVar7 = (*pcStack_6b0)(1,10,*puVar4,puVar4[1],puVar4,uVar5);\n      if (iVar7 == 7) {\n        uVar9 = 7;\n        goto LAB_00370524;\n      }\n      if (iVar7 != 8) {\n        return 2;\n      }\n    }\n    iVar1 = iVar1 + 1;\n    (*pcStack_694)(uVar5,auStack_cb0);\n  }" while (parenthesized_expression "(iVar7 = FUN_0036e7d0(uVar5,auStack_cb0), iVar7 == 0)" ( (comma_expression "iVar7 = FUN_0036e7d0(uVar5,auStack_cb0), iVar7 == 0" (assignment_expression "iVar7 = FUN_0036e7d0(uVar5,auStack_cb0)" identifier = (call_expression "FUN_0036e7d0(uVar5,auStack_cb0)" identifier (argument_list "(uVar5,auStack_cb0)" ( identifier , identifier )))) , (binary_expression "iVar7 == 0" identifier == number_literal)) )) (compound_statement "{\n    iVar7 = (*pcStack_698)(1,10,*puVar4,puVar4[1],puVar4,uVar5,uVar9);\n    if (iVar7 != 0) {\n      return 2;\n    }\n    if (pcStack_6b0 != (code *)0x0) {\n      iVar7 = (*pcStack_6b0)(1,10,*puVar4,puVar4[1],puVar4,uVar5);\n      if (iVar7 == 7) {\n        uVar9 = 7;\n        goto LAB_00370524;\n      }\n      if (iVar7 != 8) {\n        return 2;\n      }\n    }\n    iVar1 = iVar1 + 1;\n    (*pcStack_694)(uVar5,auStack_cb0);\n  }" { (expression_statement "iVar7 = (*pcStack_698)(1,10,*puVar4,puVar4[1],puVar4,uVar5,uVar9);" (assignment_expression "iVar7 = (*pcStack_698)(1,10,*puVar4,puVar4[1],puVar4,uVar5,uVar9)" identifier = (call_expression "(*pcStack_698)(1,10,*puVar4,puVar4[1],puVar4,uVar5,uVar9)" (parenthesized_expression "(*pcStack_698)" ( (pointer_expression "*pcStack_698" * identifier) )) (argument_list "(1,10,*puVar4,puVar4[1],puVar4,uVar5,uVar9)" ( number_literal , number_literal , (pointer_expression "*puVar4" * identifier) , (subscript_expression "puVar4[1]" identifier [ number_literal ]) , identifier , identifier , identifier )))) ;) (if_statement "if (iVar7 != 0) {\n      return 2;\n    }" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (compound_statement "{\n      return 2;\n    }" { (return_statement "return 2;" return number_literal ;) })) (if_statement "if (pcStack_6b0 != (code *)0x0) {\n      iVar7 = (*pcStack_6b0)(1,10,*puVar4,puVar4[1],puVar4,uVar5);\n      if (iVar7 == 7) {\n        uVar9 = 7;\n        goto LAB_00370524;\n      }\n      if (iVar7 != 8) {\n        return 2;\n      }\n    }" if (parenthesized_expression "(pcStack_6b0 != (code *)0x0)" ( (binary_expression "pcStack_6b0 != (code *)0x0" identifier != (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      iVar7 = (*pcStack_6b0)(1,10,*puVar4,puVar4[1],puVar4,uVar5);\n      if (iVar7 == 7) {\n        uVar9 = 7;\n        goto LAB_00370524;\n      }\n      if (iVar7 != 8) {\n        return 2;\n      }\n    }" { (expression_statement "iVar7 = (*pcStack_6b0)(1,10,*puVar4,puVar4[1],puVar4,uVar5);" (assignment_expression "iVar7 = (*pcStack_6b0)(1,10,*puVar4,puVar4[1],puVar4,uVar5)" identifier = (call_expression "(*pcStack_6b0)(1,10,*puVar4,puVar4[1],puVar4,uVar5)" (parenthesized_expression "(*pcStack_6b0)" ( (pointer_expression "*pcStack_6b0" * identifier) )) (argument_list "(1,10,*puVar4,puVar4[1],puVar4,uVar5)" ( number_literal , number_literal , (pointer_expression "*puVar4" * identifier) , (subscript_expression "puVar4[1]" identifier [ number_literal ]) , identifier , identifier )))) ;) (if_statement "if (iVar7 == 7) {\n        uVar9 = 7;\n        goto LAB_00370524;\n      }" if (parenthesized_expression "(iVar7 == 7)" ( (binary_expression "iVar7 == 7" identifier == number_literal) )) (compound_statement "{\n        uVar9 = 7;\n        goto LAB_00370524;\n      }" { (expression_statement "uVar9 = 7;" (assignment_expression "uVar9 = 7" identifier = number_literal) ;) (goto_statement "goto LAB_00370524;" goto statement_identifier ;) })) (if_statement "if (iVar7 != 8) {\n        return 2;\n      }" if (parenthesized_expression "(iVar7 != 8)" ( (binary_expression "iVar7 != 8" identifier != number_literal) )) (compound_statement "{\n        return 2;\n      }" { (return_statement "return 2;" return number_literal ;) })) })) (expression_statement "iVar1 = iVar1 + 1;" (assignment_expression "iVar1 = iVar1 + 1" identifier = (binary_expression "iVar1 + 1" identifier + number_literal)) ;) (expression_statement "(*pcStack_694)(uVar5,auStack_cb0);" (call_expression "(*pcStack_694)(uVar5,auStack_cb0)" (parenthesized_expression "(*pcStack_694)" ( (pointer_expression "*pcStack_694" * identifier) )) (argument_list "(uVar5,auStack_cb0)" ( identifier , identifier ))) ;) })) (if_statement "if (iVar7 == 5) {\n    iVar7 = (*pcStack_698)(1,0x1a,*puVar4,puVar4[1],puVar4,uVar5,uVar9);\n    uVar9 = 5;\n    if (iVar7 == 0) {\nLAB_00370524:\n      *piStack_660 = iVar1;\n      return uVar9;\n    }\n  }" if (parenthesized_expression "(iVar7 == 5)" ( (binary_expression "iVar7 == 5" identifier == number_literal) )) (compound_statement "{\n    iVar7 = (*pcStack_698)(1,0x1a,*puVar4,puVar4[1],puVar4,uVar5,uVar9);\n    uVar9 = 5;\n    if (iVar7 == 0) {\nLAB_00370524:\n      *piStack_660 = iVar1;\n      return uVar9;\n    }\n  }" { (expression_statement "iVar7 = (*pcStack_698)(1,0x1a,*puVar4,puVar4[1],puVar4,uVar5,uVar9);" (assignment_expression "iVar7 = (*pcStack_698)(1,0x1a,*puVar4,puVar4[1],puVar4,uVar5,uVar9)" identifier = (call_expression "(*pcStack_698)(1,0x1a,*puVar4,puVar4[1],puVar4,uVar5,uVar9)" (parenthesized_expression "(*pcStack_698)" ( (pointer_expression "*pcStack_698" * identifier) )) (argument_list "(1,0x1a,*puVar4,puVar4[1],puVar4,uVar5,uVar9)" ( number_literal , number_literal , (pointer_expression "*puVar4" * identifier) , (subscript_expression "puVar4[1]" identifier [ number_literal ]) , identifier , identifier , identifier )))) ;) (expression_statement "uVar9 = 5;" (assignment_expression "uVar9 = 5" identifier = number_literal) ;) (if_statement "if (iVar7 == 0) {\nLAB_00370524:\n      *piStack_660 = iVar1;\n      return uVar9;\n    }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00370524:\n      *piStack_660 = iVar1;\n      return uVar9;\n    }" { (labeled_statement "LAB_00370524:\n      *piStack_660 = iVar1;" statement_identifier : (expression_statement "*piStack_660 = iVar1;" (assignment_expression "*piStack_660 = iVar1" (pointer_expression "*piStack_660" * identifier) = identifier) ;)) (return_statement "return uVar9;" return identifier ;) })) })) (return_statement "return 2;" return number_literal ;) })))
(translation_unit "undefined4 _Unwind_RaiseException_Phase2(undefined4 *param_1,int param_2,int *param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  undefined4 *puVar4;\n  uint uVar5;\n  int *piVar6;\n  int iVar7;\n  undefined *puVar8;\n  undefined4 uVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  undefined1 auStack_cb0 [1536];\n  code *pcStack_6b0;\n  code *pcStack_698;\n  code *pcStack_694;\n  uint uStack_690;\n  undefined4 *puStack_68c;\n  int iStack_688;\n  undefined *puStack_684;\n  undefined1 *puStack_680;\n  undefined4 uStack_67c;\n  undefined4 uStack_678;\n  undefined4 uStack_674;\n  int iStack_670;\n  code *pcStack_66c;\n  int *piStack_660;\n  undefined4 *local_658;\n  int local_654;\n  undefined1 auStack_648 [1536];\n  code *local_48;\n  code *local_30;\n  \n  local_30 = (code *)(PTR_LAB_0043220c + 0x154);\n  iVar7 = 1;\n  puVar8 = PTR_LAB_0043220c + -0x1830;\n  piVar6 = param_3;\n  while( true ) {\n    iVar2 = uw_frame_state_for(param_2,auStack_648);\n    uVar3 = 4;\n    iVar1 = *(int *)(param_2 + 0x30c) >> 0x1f;\n    uVar5 = -iVar1;\n    if (param_1[4] != *(int *)(param_2 + 0x2f4) + iVar1) {\n      uVar3 = 0;\n    }\n    if (iVar2 != 0) {\n      return 2;\n    }\n    puVar4 = (undefined4 *)0x1;\n    if (local_48 != (code *)0x0) {\n      piVar6 = (int *)*param_1;\n      uVar5 = uVar3 | 2;\n      local_658 = param_1;\n      local_654 = param_2;\n      iVar1 = (*local_48)();\n      if (iVar1 == 7) {\n        *param_3 = iVar7;\n        return 7;\n      }\n      if (iVar1 != 8) {\n        return 2;\n      }\n    }\n    if (uVar3 != 0) break;\n    iVar7 = iVar7 + 1;\n    (*local_30)(param_2,auStack_648);\n  }\n  pcVar11 = _Unwind_ForcedUnwind_Phase2;\n  puVar10 = PTR_abort_00436908;\n  (*(code *)PTR_abort_00436908)();\n  pcStack_698 = (code *)puVar4[3];\n  uStack_678 = 7;\n  uStack_674 = 8;\n  uStack_67c = 4;\n  iVar1 = 1;\n  uVar9 = puVar4[4];\n  pcStack_694 = (code *)(*(int *)(puVar10 + 0xc1e64) + 0x154);\n  uStack_690 = uVar3;\n  puStack_68c = param_1;\n  iStack_688 = iVar7;\n  puStack_684 = puVar8;\n  puStack_680 = auStack_648;\n  iStack_670 = param_2;\n  pcStack_66c = pcVar11;\n  piStack_660 = piVar6;\n  while (iVar7 = uw_frame_state_for(uVar5,auStack_cb0), iVar7 == 0) {\n    iVar7 = (*pcStack_698)(1,10,*puVar4,puVar4[1],puVar4,uVar5,uVar9);\n    if (iVar7 != 0) {\n      return 2;\n    }\n    if (pcStack_6b0 != (code *)0x0) {\n      iVar7 = (*pcStack_6b0)(1,10,*puVar4,puVar4[1],puVar4,uVar5);\n      if (iVar7 == 7) {\n        uVar9 = 7;\n        goto LAB_00370524;\n      }\n      if (iVar7 != 8) {\n        return 2;\n      }\n    }\n    iVar1 = iVar1 + 1;\n    (*pcStack_694)(uVar5,auStack_cb0);\n  }\n  if (iVar7 == 5) {\n    iVar7 = (*pcStack_698)(1,0x1a,*puVar4,puVar4[1],puVar4,uVar5,uVar9);\n    uVar9 = 5;\n    if (iVar7 == 0) {\nLAB_00370524:\n      *piStack_660 = iVar1;\n      return uVar9;\n    }\n  }\n  return 2;\n}\n\n" (function_definition "undefined4 _Unwind_RaiseException_Phase2(undefined4 *param_1,int param_2,int *param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  undefined4 *puVar4;\n  uint uVar5;\n  int *piVar6;\n  int iVar7;\n  undefined *puVar8;\n  undefined4 uVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  undefined1 auStack_cb0 [1536];\n  code *pcStack_6b0;\n  code *pcStack_698;\n  code *pcStack_694;\n  uint uStack_690;\n  undefined4 *puStack_68c;\n  int iStack_688;\n  undefined *puStack_684;\n  undefined1 *puStack_680;\n  undefined4 uStack_67c;\n  undefined4 uStack_678;\n  undefined4 uStack_674;\n  int iStack_670;\n  code *pcStack_66c;\n  int *piStack_660;\n  undefined4 *local_658;\n  int local_654;\n  undefined1 auStack_648 [1536];\n  code *local_48;\n  code *local_30;\n  \n  local_30 = (code *)(PTR_LAB_0043220c + 0x154);\n  iVar7 = 1;\n  puVar8 = PTR_LAB_0043220c + -0x1830;\n  piVar6 = param_3;\n  while( true ) {\n    iVar2 = uw_frame_state_for(param_2,auStack_648);\n    uVar3 = 4;\n    iVar1 = *(int *)(param_2 + 0x30c) >> 0x1f;\n    uVar5 = -iVar1;\n    if (param_1[4] != *(int *)(param_2 + 0x2f4) + iVar1) {\n      uVar3 = 0;\n    }\n    if (iVar2 != 0) {\n      return 2;\n    }\n    puVar4 = (undefined4 *)0x1;\n    if (local_48 != (code *)0x0) {\n      piVar6 = (int *)*param_1;\n      uVar5 = uVar3 | 2;\n      local_658 = param_1;\n      local_654 = param_2;\n      iVar1 = (*local_48)();\n      if (iVar1 == 7) {\n        *param_3 = iVar7;\n        return 7;\n      }\n      if (iVar1 != 8) {\n        return 2;\n      }\n    }\n    if (uVar3 != 0) break;\n    iVar7 = iVar7 + 1;\n    (*local_30)(param_2,auStack_648);\n  }\n  pcVar11 = _Unwind_ForcedUnwind_Phase2;\n  puVar10 = PTR_abort_00436908;\n  (*(code *)PTR_abort_00436908)();\n  pcStack_698 = (code *)puVar4[3];\n  uStack_678 = 7;\n  uStack_674 = 8;\n  uStack_67c = 4;\n  iVar1 = 1;\n  uVar9 = puVar4[4];\n  pcStack_694 = (code *)(*(int *)(puVar10 + 0xc1e64) + 0x154);\n  uStack_690 = uVar3;\n  puStack_68c = param_1;\n  iStack_688 = iVar7;\n  puStack_684 = puVar8;\n  puStack_680 = auStack_648;\n  iStack_670 = param_2;\n  pcStack_66c = pcVar11;\n  piStack_660 = piVar6;\n  while (iVar7 = uw_frame_state_for(uVar5,auStack_cb0), iVar7 == 0) {\n    iVar7 = (*pcStack_698)(1,10,*puVar4,puVar4[1],puVar4,uVar5,uVar9);\n    if (iVar7 != 0) {\n      return 2;\n    }\n    if (pcStack_6b0 != (code *)0x0) {\n      iVar7 = (*pcStack_6b0)(1,10,*puVar4,puVar4[1],puVar4,uVar5);\n      if (iVar7 == 7) {\n        uVar9 = 7;\n        goto LAB_00370524;\n      }\n      if (iVar7 != 8) {\n        return 2;\n      }\n    }\n    iVar1 = iVar1 + 1;\n    (*pcStack_694)(uVar5,auStack_cb0);\n  }\n  if (iVar7 == 5) {\n    iVar7 = (*pcStack_698)(1,0x1a,*puVar4,puVar4[1],puVar4,uVar5,uVar9);\n    uVar9 = 5;\n    if (iVar7 == 0) {\nLAB_00370524:\n      *piStack_660 = iVar1;\n      return uVar9;\n    }\n  }\n  return 2;\n}" type_identifier (function_declarator "_Unwind_RaiseException_Phase2(undefined4 *param_1,int param_2,int *param_3)" identifier (parameter_list "(undefined4 *param_1,int param_2,int *param_3)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  undefined4 *puVar4;\n  uint uVar5;\n  int *piVar6;\n  int iVar7;\n  undefined *puVar8;\n  undefined4 uVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  undefined1 auStack_cb0 [1536];\n  code *pcStack_6b0;\n  code *pcStack_698;\n  code *pcStack_694;\n  uint uStack_690;\n  undefined4 *puStack_68c;\n  int iStack_688;\n  undefined *puStack_684;\n  undefined1 *puStack_680;\n  undefined4 uStack_67c;\n  undefined4 uStack_678;\n  undefined4 uStack_674;\n  int iStack_670;\n  code *pcStack_66c;\n  int *piStack_660;\n  undefined4 *local_658;\n  int local_654;\n  undefined1 auStack_648 [1536];\n  code *local_48;\n  code *local_30;\n  \n  local_30 = (code *)(PTR_LAB_0043220c + 0x154);\n  iVar7 = 1;\n  puVar8 = PTR_LAB_0043220c + -0x1830;\n  piVar6 = param_3;\n  while( true ) {\n    iVar2 = uw_frame_state_for(param_2,auStack_648);\n    uVar3 = 4;\n    iVar1 = *(int *)(param_2 + 0x30c) >> 0x1f;\n    uVar5 = -iVar1;\n    if (param_1[4] != *(int *)(param_2 + 0x2f4) + iVar1) {\n      uVar3 = 0;\n    }\n    if (iVar2 != 0) {\n      return 2;\n    }\n    puVar4 = (undefined4 *)0x1;\n    if (local_48 != (code *)0x0) {\n      piVar6 = (int *)*param_1;\n      uVar5 = uVar3 | 2;\n      local_658 = param_1;\n      local_654 = param_2;\n      iVar1 = (*local_48)();\n      if (iVar1 == 7) {\n        *param_3 = iVar7;\n        return 7;\n      }\n      if (iVar1 != 8) {\n        return 2;\n      }\n    }\n    if (uVar3 != 0) break;\n    iVar7 = iVar7 + 1;\n    (*local_30)(param_2,auStack_648);\n  }\n  pcVar11 = _Unwind_ForcedUnwind_Phase2;\n  puVar10 = PTR_abort_00436908;\n  (*(code *)PTR_abort_00436908)();\n  pcStack_698 = (code *)puVar4[3];\n  uStack_678 = 7;\n  uStack_674 = 8;\n  uStack_67c = 4;\n  iVar1 = 1;\n  uVar9 = puVar4[4];\n  pcStack_694 = (code *)(*(int *)(puVar10 + 0xc1e64) + 0x154);\n  uStack_690 = uVar3;\n  puStack_68c = param_1;\n  iStack_688 = iVar7;\n  puStack_684 = puVar8;\n  puStack_680 = auStack_648;\n  iStack_670 = param_2;\n  pcStack_66c = pcVar11;\n  piStack_660 = piVar6;\n  while (iVar7 = uw_frame_state_for(uVar5,auStack_cb0), iVar7 == 0) {\n    iVar7 = (*pcStack_698)(1,10,*puVar4,puVar4[1],puVar4,uVar5,uVar9);\n    if (iVar7 != 0) {\n      return 2;\n    }\n    if (pcStack_6b0 != (code *)0x0) {\n      iVar7 = (*pcStack_6b0)(1,10,*puVar4,puVar4[1],puVar4,uVar5);\n      if (iVar7 == 7) {\n        uVar9 = 7;\n        goto LAB_00370524;\n      }\n      if (iVar7 != 8) {\n        return 2;\n      }\n    }\n    iVar1 = iVar1 + 1;\n    (*pcStack_694)(uVar5,auStack_cb0);\n  }\n  if (iVar7 == 5) {\n    iVar7 = (*pcStack_698)(1,0x1a,*puVar4,puVar4[1],puVar4,uVar5,uVar9);\n    uVar9 = 5;\n    if (iVar7 == 0) {\nLAB_00370524:\n      *piStack_660 = iVar1;\n      return uVar9;\n    }\n  }\n  return 2;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "undefined *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "undefined *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "code *pcVar11;" type_identifier (pointer_declarator "*pcVar11" * identifier) ;) (declaration "undefined1 auStack_cb0 [1536];" type_identifier (array_declarator "auStack_cb0 [1536]" identifier [ number_literal ]) ;) (declaration "code *pcStack_6b0;" type_identifier (pointer_declarator "*pcStack_6b0" * identifier) ;) (declaration "code *pcStack_698;" type_identifier (pointer_declarator "*pcStack_698" * identifier) ;) (declaration "code *pcStack_694;" type_identifier (pointer_declarator "*pcStack_694" * identifier) ;) (declaration "uint uStack_690;" type_identifier identifier ;) (declaration "undefined4 *puStack_68c;" type_identifier (pointer_declarator "*puStack_68c" * identifier) ;) (declaration "int iStack_688;" primitive_type identifier ;) (declaration "undefined *puStack_684;" type_identifier (pointer_declarator "*puStack_684" * identifier) ;) (declaration "undefined1 *puStack_680;" type_identifier (pointer_declarator "*puStack_680" * identifier) ;) (declaration "undefined4 uStack_67c;" type_identifier identifier ;) (declaration "undefined4 uStack_678;" type_identifier identifier ;) (declaration "undefined4 uStack_674;" type_identifier identifier ;) (declaration "int iStack_670;" primitive_type identifier ;) (declaration "code *pcStack_66c;" type_identifier (pointer_declarator "*pcStack_66c" * identifier) ;) (declaration "int *piStack_660;" primitive_type (pointer_declarator "*piStack_660" * identifier) ;) (declaration "undefined4 *local_658;" type_identifier (pointer_declarator "*local_658" * identifier) ;) (declaration "int local_654;" primitive_type identifier ;) (declaration "undefined1 auStack_648 [1536];" type_identifier (array_declarator "auStack_648 [1536]" identifier [ number_literal ]) ;) (declaration "code *local_48;" type_identifier (pointer_declarator "*local_48" * identifier) ;) (declaration "code *local_30;" type_identifier (pointer_declarator "*local_30" * identifier) ;) (expression_statement "local_30 = (code *)(PTR_LAB_0043220c + 0x154);" (assignment_expression "local_30 = (code *)(PTR_LAB_0043220c + 0x154)" identifier = (cast_expression "(code *)(PTR_LAB_0043220c + 0x154)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0043220c + 0x154)" ( (binary_expression "PTR_LAB_0043220c + 0x154" identifier + number_literal) )))) ;) (expression_statement "iVar7 = 1;" (assignment_expression "iVar7 = 1" identifier = number_literal) ;) (expression_statement "puVar8 = PTR_LAB_0043220c + -0x1830;" (assignment_expression "puVar8 = PTR_LAB_0043220c + -0x1830" identifier = (binary_expression "PTR_LAB_0043220c + -0x1830" identifier + number_literal)) ;) (expression_statement "piVar6 = param_3;" (assignment_expression "piVar6 = param_3" identifier = identifier) ;) (while_statement "while( true ) {\n    iVar2 = uw_frame_state_for(param_2,auStack_648);\n    uVar3 = 4;\n    iVar1 = *(int *)(param_2 + 0x30c) >> 0x1f;\n    uVar5 = -iVar1;\n    if (param_1[4] != *(int *)(param_2 + 0x2f4) + iVar1) {\n      uVar3 = 0;\n    }\n    if (iVar2 != 0) {\n      return 2;\n    }\n    puVar4 = (undefined4 *)0x1;\n    if (local_48 != (code *)0x0) {\n      piVar6 = (int *)*param_1;\n      uVar5 = uVar3 | 2;\n      local_658 = param_1;\n      local_654 = param_2;\n      iVar1 = (*local_48)();\n      if (iVar1 == 7) {\n        *param_3 = iVar7;\n        return 7;\n      }\n      if (iVar1 != 8) {\n        return 2;\n      }\n    }\n    if (uVar3 != 0) break;\n    iVar7 = iVar7 + 1;\n    (*local_30)(param_2,auStack_648);\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    iVar2 = uw_frame_state_for(param_2,auStack_648);\n    uVar3 = 4;\n    iVar1 = *(int *)(param_2 + 0x30c) >> 0x1f;\n    uVar5 = -iVar1;\n    if (param_1[4] != *(int *)(param_2 + 0x2f4) + iVar1) {\n      uVar3 = 0;\n    }\n    if (iVar2 != 0) {\n      return 2;\n    }\n    puVar4 = (undefined4 *)0x1;\n    if (local_48 != (code *)0x0) {\n      piVar6 = (int *)*param_1;\n      uVar5 = uVar3 | 2;\n      local_658 = param_1;\n      local_654 = param_2;\n      iVar1 = (*local_48)();\n      if (iVar1 == 7) {\n        *param_3 = iVar7;\n        return 7;\n      }\n      if (iVar1 != 8) {\n        return 2;\n      }\n    }\n    if (uVar3 != 0) break;\n    iVar7 = iVar7 + 1;\n    (*local_30)(param_2,auStack_648);\n  }" { (expression_statement "iVar2 = uw_frame_state_for(param_2,auStack_648);" (assignment_expression "iVar2 = uw_frame_state_for(param_2,auStack_648)" identifier = (call_expression "uw_frame_state_for(param_2,auStack_648)" identifier (argument_list "(param_2,auStack_648)" ( identifier , identifier )))) ;) (expression_statement "uVar3 = 4;" (assignment_expression "uVar3 = 4" identifier = number_literal) ;) (expression_statement "iVar1 = *(int *)(param_2 + 0x30c) >> 0x1f;" (assignment_expression "iVar1 = *(int *)(param_2 + 0x30c) >> 0x1f" identifier = (binary_expression "*(int *)(param_2 + 0x30c) >> 0x1f" (pointer_expression "*(int *)(param_2 + 0x30c)" * (cast_expression "(int *)(param_2 + 0x30c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x30c)" ( (binary_expression "param_2 + 0x30c" identifier + number_literal) )))) >> number_literal)) ;) (expression_statement "uVar5 = -iVar1;" (assignment_expression "uVar5 = -iVar1" identifier = (unary_expression "-iVar1" - identifier)) ;) (if_statement "if (param_1[4] != *(int *)(param_2 + 0x2f4) + iVar1) {\n      uVar3 = 0;\n    }" if (parenthesized_expression "(param_1[4] != *(int *)(param_2 + 0x2f4) + iVar1)" ( (binary_expression "param_1[4] != *(int *)(param_2 + 0x2f4) + iVar1" (subscript_expression "param_1[4]" identifier [ number_literal ]) != (binary_expression "*(int *)(param_2 + 0x2f4) + iVar1" (pointer_expression "*(int *)(param_2 + 0x2f4)" * (cast_expression "(int *)(param_2 + 0x2f4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x2f4)" ( (binary_expression "param_2 + 0x2f4" identifier + number_literal) )))) + identifier)) )) (compound_statement "{\n      uVar3 = 0;\n    }" { (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) })) (if_statement "if (iVar2 != 0) {\n      return 2;\n    }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n      return 2;\n    }" { (return_statement "return 2;" return number_literal ;) })) (expression_statement "puVar4 = (undefined4 *)0x1;" (assignment_expression "puVar4 = (undefined4 *)0x1" identifier = (cast_expression "(undefined4 *)0x1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (local_48 != (code *)0x0) {\n      piVar6 = (int *)*param_1;\n      uVar5 = uVar3 | 2;\n      local_658 = param_1;\n      local_654 = param_2;\n      iVar1 = (*local_48)();\n      if (iVar1 == 7) {\n        *param_3 = iVar7;\n        return 7;\n      }\n      if (iVar1 != 8) {\n        return 2;\n      }\n    }" if (parenthesized_expression "(local_48 != (code *)0x0)" ( (binary_expression "local_48 != (code *)0x0" identifier != (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      piVar6 = (int *)*param_1;\n      uVar5 = uVar3 | 2;\n      local_658 = param_1;\n      local_654 = param_2;\n      iVar1 = (*local_48)();\n      if (iVar1 == 7) {\n        *param_3 = iVar7;\n        return 7;\n      }\n      if (iVar1 != 8) {\n        return 2;\n      }\n    }" { (expression_statement "piVar6 = (int *)*param_1;" (assignment_expression "piVar6 = (int *)*param_1" identifier = (cast_expression "(int *)*param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "uVar5 = uVar3 | 2;" (assignment_expression "uVar5 = uVar3 | 2" identifier = (binary_expression "uVar3 | 2" identifier | number_literal)) ;) (expression_statement "local_658 = param_1;" (assignment_expression "local_658 = param_1" identifier = identifier) ;) (expression_statement "local_654 = param_2;" (assignment_expression "local_654 = param_2" identifier = identifier) ;) (expression_statement "iVar1 = (*local_48)();" (assignment_expression "iVar1 = (*local_48)()" identifier = (call_expression "(*local_48)()" (parenthesized_expression "(*local_48)" ( (pointer_expression "*local_48" * identifier) )) (argument_list "()" ( )))) ;) (if_statement "if (iVar1 == 7) {\n        *param_3 = iVar7;\n        return 7;\n      }" if (parenthesized_expression "(iVar1 == 7)" ( (binary_expression "iVar1 == 7" identifier == number_literal) )) (compound_statement "{\n        *param_3 = iVar7;\n        return 7;\n      }" { (expression_statement "*param_3 = iVar7;" (assignment_expression "*param_3 = iVar7" (pointer_expression "*param_3" * identifier) = identifier) ;) (return_statement "return 7;" return number_literal ;) })) (if_statement "if (iVar1 != 8) {\n        return 2;\n      }" if (parenthesized_expression "(iVar1 != 8)" ( (binary_expression "iVar1 != 8" identifier != number_literal) )) (compound_statement "{\n        return 2;\n      }" { (return_statement "return 2;" return number_literal ;) })) })) (if_statement "if (uVar3 != 0) break;" if (parenthesized_expression "(uVar3 != 0)" ( (binary_expression "uVar3 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (expression_statement "(*local_30)(param_2,auStack_648);" (call_expression "(*local_30)(param_2,auStack_648)" (parenthesized_expression "(*local_30)" ( (pointer_expression "*local_30" * identifier) )) (argument_list "(param_2,auStack_648)" ( identifier , identifier ))) ;) })) (expression_statement "pcVar11 = _Unwind_ForcedUnwind_Phase2;" (assignment_expression "pcVar11 = _Unwind_ForcedUnwind_Phase2" identifier = identifier) ;) (expression_statement "puVar10 = PTR_abort_00436908;" (assignment_expression "puVar10 = PTR_abort_00436908" identifier = identifier) ;) (expression_statement "(*(code *)PTR_abort_00436908)();" (call_expression "(*(code *)PTR_abort_00436908)()" (parenthesized_expression "(*(code *)PTR_abort_00436908)" ( (pointer_expression "*(code *)PTR_abort_00436908" * (cast_expression "(code *)PTR_abort_00436908" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "pcStack_698 = (code *)puVar4[3];" (assignment_expression "pcStack_698 = (code *)puVar4[3]" identifier = (cast_expression "(code *)puVar4[3]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[3]" identifier [ number_literal ]))) ;) (expression_statement "uStack_678 = 7;" (assignment_expression "uStack_678 = 7" identifier = number_literal) ;) (expression_statement "uStack_674 = 8;" (assignment_expression "uStack_674 = 8" identifier = number_literal) ;) (expression_statement "uStack_67c = 4;" (assignment_expression "uStack_67c = 4" identifier = number_literal) ;) (expression_statement "iVar1 = 1;" (assignment_expression "iVar1 = 1" identifier = number_literal) ;) (expression_statement "uVar9 = puVar4[4];" (assignment_expression "uVar9 = puVar4[4]" identifier = (subscript_expression "puVar4[4]" identifier [ number_literal ])) ;) (expression_statement "pcStack_694 = (code *)(*(int *)(puVar10 + 0xc1e64) + 0x154);" (assignment_expression "pcStack_694 = (code *)(*(int *)(puVar10 + 0xc1e64) + 0x154)" identifier = (cast_expression "(code *)(*(int *)(puVar10 + 0xc1e64) + 0x154)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar10 + 0xc1e64) + 0x154)" ( (binary_expression "*(int *)(puVar10 + 0xc1e64) + 0x154" (pointer_expression "*(int *)(puVar10 + 0xc1e64)" * (cast_expression "(int *)(puVar10 + 0xc1e64)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0xc1e64)" ( (binary_expression "puVar10 + 0xc1e64" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "uStack_690 = uVar3;" (assignment_expression "uStack_690 = uVar3" identifier = identifier) ;) (expression_statement "puStack_68c = param_1;" (assignment_expression "puStack_68c = param_1" identifier = identifier) ;) (expression_statement "iStack_688 = iVar7;" (assignment_expression "iStack_688 = iVar7" identifier = identifier) ;) (expression_statement "puStack_684 = puVar8;" (assignment_expression "puStack_684 = puVar8" identifier = identifier) ;) (expression_statement "puStack_680 = auStack_648;" (assignment_expression "puStack_680 = auStack_648" identifier = identifier) ;) (expression_statement "iStack_670 = param_2;" (assignment_expression "iStack_670 = param_2" identifier = identifier) ;) (expression_statement "pcStack_66c = pcVar11;" (assignment_expression "pcStack_66c = pcVar11" identifier = identifier) ;) (expression_statement "piStack_660 = piVar6;" (assignment_expression "piStack_660 = piVar6" identifier = identifier) ;) (while_statement "while (iVar7 = uw_frame_state_for(uVar5,auStack_cb0), iVar7 == 0) {\n    iVar7 = (*pcStack_698)(1,10,*puVar4,puVar4[1],puVar4,uVar5,uVar9);\n    if (iVar7 != 0) {\n      return 2;\n    }\n    if (pcStack_6b0 != (code *)0x0) {\n      iVar7 = (*pcStack_6b0)(1,10,*puVar4,puVar4[1],puVar4,uVar5);\n      if (iVar7 == 7) {\n        uVar9 = 7;\n        goto LAB_00370524;\n      }\n      if (iVar7 != 8) {\n        return 2;\n      }\n    }\n    iVar1 = iVar1 + 1;\n    (*pcStack_694)(uVar5,auStack_cb0);\n  }" while (parenthesized_expression "(iVar7 = uw_frame_state_for(uVar5,auStack_cb0), iVar7 == 0)" ( (comma_expression "iVar7 = uw_frame_state_for(uVar5,auStack_cb0), iVar7 == 0" (assignment_expression "iVar7 = uw_frame_state_for(uVar5,auStack_cb0)" identifier = (call_expression "uw_frame_state_for(uVar5,auStack_cb0)" identifier (argument_list "(uVar5,auStack_cb0)" ( identifier , identifier )))) , (binary_expression "iVar7 == 0" identifier == number_literal)) )) (compound_statement "{\n    iVar7 = (*pcStack_698)(1,10,*puVar4,puVar4[1],puVar4,uVar5,uVar9);\n    if (iVar7 != 0) {\n      return 2;\n    }\n    if (pcStack_6b0 != (code *)0x0) {\n      iVar7 = (*pcStack_6b0)(1,10,*puVar4,puVar4[1],puVar4,uVar5);\n      if (iVar7 == 7) {\n        uVar9 = 7;\n        goto LAB_00370524;\n      }\n      if (iVar7 != 8) {\n        return 2;\n      }\n    }\n    iVar1 = iVar1 + 1;\n    (*pcStack_694)(uVar5,auStack_cb0);\n  }" { (expression_statement "iVar7 = (*pcStack_698)(1,10,*puVar4,puVar4[1],puVar4,uVar5,uVar9);" (assignment_expression "iVar7 = (*pcStack_698)(1,10,*puVar4,puVar4[1],puVar4,uVar5,uVar9)" identifier = (call_expression "(*pcStack_698)(1,10,*puVar4,puVar4[1],puVar4,uVar5,uVar9)" (parenthesized_expression "(*pcStack_698)" ( (pointer_expression "*pcStack_698" * identifier) )) (argument_list "(1,10,*puVar4,puVar4[1],puVar4,uVar5,uVar9)" ( number_literal , number_literal , (pointer_expression "*puVar4" * identifier) , (subscript_expression "puVar4[1]" identifier [ number_literal ]) , identifier , identifier , identifier )))) ;) (if_statement "if (iVar7 != 0) {\n      return 2;\n    }" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (compound_statement "{\n      return 2;\n    }" { (return_statement "return 2;" return number_literal ;) })) (if_statement "if (pcStack_6b0 != (code *)0x0) {\n      iVar7 = (*pcStack_6b0)(1,10,*puVar4,puVar4[1],puVar4,uVar5);\n      if (iVar7 == 7) {\n        uVar9 = 7;\n        goto LAB_00370524;\n      }\n      if (iVar7 != 8) {\n        return 2;\n      }\n    }" if (parenthesized_expression "(pcStack_6b0 != (code *)0x0)" ( (binary_expression "pcStack_6b0 != (code *)0x0" identifier != (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      iVar7 = (*pcStack_6b0)(1,10,*puVar4,puVar4[1],puVar4,uVar5);\n      if (iVar7 == 7) {\n        uVar9 = 7;\n        goto LAB_00370524;\n      }\n      if (iVar7 != 8) {\n        return 2;\n      }\n    }" { (expression_statement "iVar7 = (*pcStack_6b0)(1,10,*puVar4,puVar4[1],puVar4,uVar5);" (assignment_expression "iVar7 = (*pcStack_6b0)(1,10,*puVar4,puVar4[1],puVar4,uVar5)" identifier = (call_expression "(*pcStack_6b0)(1,10,*puVar4,puVar4[1],puVar4,uVar5)" (parenthesized_expression "(*pcStack_6b0)" ( (pointer_expression "*pcStack_6b0" * identifier) )) (argument_list "(1,10,*puVar4,puVar4[1],puVar4,uVar5)" ( number_literal , number_literal , (pointer_expression "*puVar4" * identifier) , (subscript_expression "puVar4[1]" identifier [ number_literal ]) , identifier , identifier )))) ;) (if_statement "if (iVar7 == 7) {\n        uVar9 = 7;\n        goto LAB_00370524;\n      }" if (parenthesized_expression "(iVar7 == 7)" ( (binary_expression "iVar7 == 7" identifier == number_literal) )) (compound_statement "{\n        uVar9 = 7;\n        goto LAB_00370524;\n      }" { (expression_statement "uVar9 = 7;" (assignment_expression "uVar9 = 7" identifier = number_literal) ;) (goto_statement "goto LAB_00370524;" goto statement_identifier ;) })) (if_statement "if (iVar7 != 8) {\n        return 2;\n      }" if (parenthesized_expression "(iVar7 != 8)" ( (binary_expression "iVar7 != 8" identifier != number_literal) )) (compound_statement "{\n        return 2;\n      }" { (return_statement "return 2;" return number_literal ;) })) })) (expression_statement "iVar1 = iVar1 + 1;" (assignment_expression "iVar1 = iVar1 + 1" identifier = (binary_expression "iVar1 + 1" identifier + number_literal)) ;) (expression_statement "(*pcStack_694)(uVar5,auStack_cb0);" (call_expression "(*pcStack_694)(uVar5,auStack_cb0)" (parenthesized_expression "(*pcStack_694)" ( (pointer_expression "*pcStack_694" * identifier) )) (argument_list "(uVar5,auStack_cb0)" ( identifier , identifier ))) ;) })) (if_statement "if (iVar7 == 5) {\n    iVar7 = (*pcStack_698)(1,0x1a,*puVar4,puVar4[1],puVar4,uVar5,uVar9);\n    uVar9 = 5;\n    if (iVar7 == 0) {\nLAB_00370524:\n      *piStack_660 = iVar1;\n      return uVar9;\n    }\n  }" if (parenthesized_expression "(iVar7 == 5)" ( (binary_expression "iVar7 == 5" identifier == number_literal) )) (compound_statement "{\n    iVar7 = (*pcStack_698)(1,0x1a,*puVar4,puVar4[1],puVar4,uVar5,uVar9);\n    uVar9 = 5;\n    if (iVar7 == 0) {\nLAB_00370524:\n      *piStack_660 = iVar1;\n      return uVar9;\n    }\n  }" { (expression_statement "iVar7 = (*pcStack_698)(1,0x1a,*puVar4,puVar4[1],puVar4,uVar5,uVar9);" (assignment_expression "iVar7 = (*pcStack_698)(1,0x1a,*puVar4,puVar4[1],puVar4,uVar5,uVar9)" identifier = (call_expression "(*pcStack_698)(1,0x1a,*puVar4,puVar4[1],puVar4,uVar5,uVar9)" (parenthesized_expression "(*pcStack_698)" ( (pointer_expression "*pcStack_698" * identifier) )) (argument_list "(1,0x1a,*puVar4,puVar4[1],puVar4,uVar5,uVar9)" ( number_literal , number_literal , (pointer_expression "*puVar4" * identifier) , (subscript_expression "puVar4[1]" identifier [ number_literal ]) , identifier , identifier , identifier )))) ;) (expression_statement "uVar9 = 5;" (assignment_expression "uVar9 = 5" identifier = number_literal) ;) (if_statement "if (iVar7 == 0) {\nLAB_00370524:\n      *piStack_660 = iVar1;\n      return uVar9;\n    }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00370524:\n      *piStack_660 = iVar1;\n      return uVar9;\n    }" { (labeled_statement "LAB_00370524:\n      *piStack_660 = iVar1;" statement_identifier : (expression_statement "*piStack_660 = iVar1;" (assignment_expression "*piStack_660 = iVar1" (pointer_expression "*piStack_660" * identifier) = identifier) ;)) (return_statement "return uVar9;" return identifier ;) })) })) (return_statement "return 2;" return number_literal ;) })))
(translation_unit "undefined4 FUN_00370234(undefined4 *param_1,int param_2,int *param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  undefined4 *puVar4;\n  uint uVar5;\n  int *piVar6;\n  int iVar7;\n  undefined *puVar8;\n  undefined4 uVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  undefined1 auStack_cb0 [1536];\n  code *pcStack_6b0;\n  code *pcStack_698;\n  code *pcStack_694;\n  uint uStack_690;\n  undefined4 *puStack_68c;\n  int iStack_688;\n  undefined *puStack_684;\n  undefined1 *puStack_680;\n  undefined4 uStack_67c;\n  undefined4 uStack_678;\n  undefined4 uStack_674;\n  int iStack_670;\n  code *pcStack_66c;\n  int *piStack_660;\n  undefined4 *local_658;\n  int local_654;\n  undefined1 auStack_648 [1536];\n  code *local_48;\n  code *local_30;\n  \n  local_30 = (code *)(PTR_LAB_0043220c + 0x154);\n  iVar7 = 1;\n  puVar8 = PTR_LAB_0043220c + -0x1830;\n  piVar6 = param_3;\n  while( true ) {\n    iVar2 = FUN_0036e7d0(param_2,auStack_648);\n    uVar3 = 4;\n    iVar1 = *(int *)(param_2 + 0x30c) >> 0x1f;\n    uVar5 = -iVar1;\n    if (param_1[4] != *(int *)(param_2 + 0x2f4) + iVar1) {\n      uVar3 = 0;\n    }\n    if (iVar2 != 0) {\n      return 2;\n    }\n    puVar4 = (undefined4 *)0x1;\n    if (local_48 != (code *)0x0) {\n      piVar6 = (int *)*param_1;\n      uVar5 = uVar3 | 2;\n      local_658 = param_1;\n      local_654 = param_2;\n      iVar1 = (*local_48)();\n      if (iVar1 == 7) {\n        *param_3 = iVar7;\n        return 7;\n      }\n      if (iVar1 != 8) {\n        return 2;\n      }\n    }\n    if (uVar3 != 0) break;\n    iVar7 = iVar7 + 1;\n    (*local_30)(param_2,auStack_648);\n  }\n  pcVar11 = FUN_003703a8;\n  puVar10 = PTR_abort_00436908;\n  (*(code *)PTR_abort_00436908)();\n  pcStack_698 = (code *)puVar4[3];\n  uStack_678 = 7;\n  uStack_674 = 8;\n  uStack_67c = 4;\n  iVar1 = 1;\n  uVar9 = puVar4[4];\n  pcStack_694 = (code *)(*(int *)(puVar10 + 0xc1e64) + 0x154);\n  uStack_690 = uVar3;\n  puStack_68c = param_1;\n  iStack_688 = iVar7;\n  puStack_684 = puVar8;\n  puStack_680 = auStack_648;\n  iStack_670 = param_2;\n  pcStack_66c = pcVar11;\n  piStack_660 = piVar6;\n  while (iVar7 = FUN_0036e7d0(uVar5,auStack_cb0), iVar7 == 0) {\n    iVar7 = (*pcStack_698)(1,10,*puVar4,puVar4[1],puVar4,uVar5,uVar9);\n    if (iVar7 != 0) {\n      return 2;\n    }\n    if (pcStack_6b0 != (code *)0x0) {\n      iVar7 = (*pcStack_6b0)(1,10,*puVar4,puVar4[1],puVar4,uVar5);\n      if (iVar7 == 7) {\n        uVar9 = 7;\n        goto LAB_00370524;\n      }\n      if (iVar7 != 8) {\n        return 2;\n      }\n    }\n    iVar1 = iVar1 + 1;\n    (*pcStack_694)(uVar5,auStack_cb0);\n  }\n  if (iVar7 == 5) {\n    iVar7 = (*pcStack_698)(1,0x1a,*puVar4,puVar4[1],puVar4,uVar5,uVar9);\n    uVar9 = 5;\n    if (iVar7 == 0) {\nLAB_00370524:\n      *piStack_660 = iVar1;\n      return uVar9;\n    }\n  }\n  return 2;\n}\n\n" (function_definition "undefined4 FUN_00370234(undefined4 *param_1,int param_2,int *param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  undefined4 *puVar4;\n  uint uVar5;\n  int *piVar6;\n  int iVar7;\n  undefined *puVar8;\n  undefined4 uVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  undefined1 auStack_cb0 [1536];\n  code *pcStack_6b0;\n  code *pcStack_698;\n  code *pcStack_694;\n  uint uStack_690;\n  undefined4 *puStack_68c;\n  int iStack_688;\n  undefined *puStack_684;\n  undefined1 *puStack_680;\n  undefined4 uStack_67c;\n  undefined4 uStack_678;\n  undefined4 uStack_674;\n  int iStack_670;\n  code *pcStack_66c;\n  int *piStack_660;\n  undefined4 *local_658;\n  int local_654;\n  undefined1 auStack_648 [1536];\n  code *local_48;\n  code *local_30;\n  \n  local_30 = (code *)(PTR_LAB_0043220c + 0x154);\n  iVar7 = 1;\n  puVar8 = PTR_LAB_0043220c + -0x1830;\n  piVar6 = param_3;\n  while( true ) {\n    iVar2 = FUN_0036e7d0(param_2,auStack_648);\n    uVar3 = 4;\n    iVar1 = *(int *)(param_2 + 0x30c) >> 0x1f;\n    uVar5 = -iVar1;\n    if (param_1[4] != *(int *)(param_2 + 0x2f4) + iVar1) {\n      uVar3 = 0;\n    }\n    if (iVar2 != 0) {\n      return 2;\n    }\n    puVar4 = (undefined4 *)0x1;\n    if (local_48 != (code *)0x0) {\n      piVar6 = (int *)*param_1;\n      uVar5 = uVar3 | 2;\n      local_658 = param_1;\n      local_654 = param_2;\n      iVar1 = (*local_48)();\n      if (iVar1 == 7) {\n        *param_3 = iVar7;\n        return 7;\n      }\n      if (iVar1 != 8) {\n        return 2;\n      }\n    }\n    if (uVar3 != 0) break;\n    iVar7 = iVar7 + 1;\n    (*local_30)(param_2,auStack_648);\n  }\n  pcVar11 = FUN_003703a8;\n  puVar10 = PTR_abort_00436908;\n  (*(code *)PTR_abort_00436908)();\n  pcStack_698 = (code *)puVar4[3];\n  uStack_678 = 7;\n  uStack_674 = 8;\n  uStack_67c = 4;\n  iVar1 = 1;\n  uVar9 = puVar4[4];\n  pcStack_694 = (code *)(*(int *)(puVar10 + 0xc1e64) + 0x154);\n  uStack_690 = uVar3;\n  puStack_68c = param_1;\n  iStack_688 = iVar7;\n  puStack_684 = puVar8;\n  puStack_680 = auStack_648;\n  iStack_670 = param_2;\n  pcStack_66c = pcVar11;\n  piStack_660 = piVar6;\n  while (iVar7 = FUN_0036e7d0(uVar5,auStack_cb0), iVar7 == 0) {\n    iVar7 = (*pcStack_698)(1,10,*puVar4,puVar4[1],puVar4,uVar5,uVar9);\n    if (iVar7 != 0) {\n      return 2;\n    }\n    if (pcStack_6b0 != (code *)0x0) {\n      iVar7 = (*pcStack_6b0)(1,10,*puVar4,puVar4[1],puVar4,uVar5);\n      if (iVar7 == 7) {\n        uVar9 = 7;\n        goto LAB_00370524;\n      }\n      if (iVar7 != 8) {\n        return 2;\n      }\n    }\n    iVar1 = iVar1 + 1;\n    (*pcStack_694)(uVar5,auStack_cb0);\n  }\n  if (iVar7 == 5) {\n    iVar7 = (*pcStack_698)(1,0x1a,*puVar4,puVar4[1],puVar4,uVar5,uVar9);\n    uVar9 = 5;\n    if (iVar7 == 0) {\nLAB_00370524:\n      *piStack_660 = iVar1;\n      return uVar9;\n    }\n  }\n  return 2;\n}" type_identifier (function_declarator "FUN_00370234(undefined4 *param_1,int param_2,int *param_3)" identifier (parameter_list "(undefined4 *param_1,int param_2,int *param_3)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  undefined4 *puVar4;\n  uint uVar5;\n  int *piVar6;\n  int iVar7;\n  undefined *puVar8;\n  undefined4 uVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  undefined1 auStack_cb0 [1536];\n  code *pcStack_6b0;\n  code *pcStack_698;\n  code *pcStack_694;\n  uint uStack_690;\n  undefined4 *puStack_68c;\n  int iStack_688;\n  undefined *puStack_684;\n  undefined1 *puStack_680;\n  undefined4 uStack_67c;\n  undefined4 uStack_678;\n  undefined4 uStack_674;\n  int iStack_670;\n  code *pcStack_66c;\n  int *piStack_660;\n  undefined4 *local_658;\n  int local_654;\n  undefined1 auStack_648 [1536];\n  code *local_48;\n  code *local_30;\n  \n  local_30 = (code *)(PTR_LAB_0043220c + 0x154);\n  iVar7 = 1;\n  puVar8 = PTR_LAB_0043220c + -0x1830;\n  piVar6 = param_3;\n  while( true ) {\n    iVar2 = FUN_0036e7d0(param_2,auStack_648);\n    uVar3 = 4;\n    iVar1 = *(int *)(param_2 + 0x30c) >> 0x1f;\n    uVar5 = -iVar1;\n    if (param_1[4] != *(int *)(param_2 + 0x2f4) + iVar1) {\n      uVar3 = 0;\n    }\n    if (iVar2 != 0) {\n      return 2;\n    }\n    puVar4 = (undefined4 *)0x1;\n    if (local_48 != (code *)0x0) {\n      piVar6 = (int *)*param_1;\n      uVar5 = uVar3 | 2;\n      local_658 = param_1;\n      local_654 = param_2;\n      iVar1 = (*local_48)();\n      if (iVar1 == 7) {\n        *param_3 = iVar7;\n        return 7;\n      }\n      if (iVar1 != 8) {\n        return 2;\n      }\n    }\n    if (uVar3 != 0) break;\n    iVar7 = iVar7 + 1;\n    (*local_30)(param_2,auStack_648);\n  }\n  pcVar11 = FUN_003703a8;\n  puVar10 = PTR_abort_00436908;\n  (*(code *)PTR_abort_00436908)();\n  pcStack_698 = (code *)puVar4[3];\n  uStack_678 = 7;\n  uStack_674 = 8;\n  uStack_67c = 4;\n  iVar1 = 1;\n  uVar9 = puVar4[4];\n  pcStack_694 = (code *)(*(int *)(puVar10 + 0xc1e64) + 0x154);\n  uStack_690 = uVar3;\n  puStack_68c = param_1;\n  iStack_688 = iVar7;\n  puStack_684 = puVar8;\n  puStack_680 = auStack_648;\n  iStack_670 = param_2;\n  pcStack_66c = pcVar11;\n  piStack_660 = piVar6;\n  while (iVar7 = FUN_0036e7d0(uVar5,auStack_cb0), iVar7 == 0) {\n    iVar7 = (*pcStack_698)(1,10,*puVar4,puVar4[1],puVar4,uVar5,uVar9);\n    if (iVar7 != 0) {\n      return 2;\n    }\n    if (pcStack_6b0 != (code *)0x0) {\n      iVar7 = (*pcStack_6b0)(1,10,*puVar4,puVar4[1],puVar4,uVar5);\n      if (iVar7 == 7) {\n        uVar9 = 7;\n        goto LAB_00370524;\n      }\n      if (iVar7 != 8) {\n        return 2;\n      }\n    }\n    iVar1 = iVar1 + 1;\n    (*pcStack_694)(uVar5,auStack_cb0);\n  }\n  if (iVar7 == 5) {\n    iVar7 = (*pcStack_698)(1,0x1a,*puVar4,puVar4[1],puVar4,uVar5,uVar9);\n    uVar9 = 5;\n    if (iVar7 == 0) {\nLAB_00370524:\n      *piStack_660 = iVar1;\n      return uVar9;\n    }\n  }\n  return 2;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "undefined *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "undefined *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "code *pcVar11;" type_identifier (pointer_declarator "*pcVar11" * identifier) ;) (declaration "undefined1 auStack_cb0 [1536];" type_identifier (array_declarator "auStack_cb0 [1536]" identifier [ number_literal ]) ;) (declaration "code *pcStack_6b0;" type_identifier (pointer_declarator "*pcStack_6b0" * identifier) ;) (declaration "code *pcStack_698;" type_identifier (pointer_declarator "*pcStack_698" * identifier) ;) (declaration "code *pcStack_694;" type_identifier (pointer_declarator "*pcStack_694" * identifier) ;) (declaration "uint uStack_690;" type_identifier identifier ;) (declaration "undefined4 *puStack_68c;" type_identifier (pointer_declarator "*puStack_68c" * identifier) ;) (declaration "int iStack_688;" primitive_type identifier ;) (declaration "undefined *puStack_684;" type_identifier (pointer_declarator "*puStack_684" * identifier) ;) (declaration "undefined1 *puStack_680;" type_identifier (pointer_declarator "*puStack_680" * identifier) ;) (declaration "undefined4 uStack_67c;" type_identifier identifier ;) (declaration "undefined4 uStack_678;" type_identifier identifier ;) (declaration "undefined4 uStack_674;" type_identifier identifier ;) (declaration "int iStack_670;" primitive_type identifier ;) (declaration "code *pcStack_66c;" type_identifier (pointer_declarator "*pcStack_66c" * identifier) ;) (declaration "int *piStack_660;" primitive_type (pointer_declarator "*piStack_660" * identifier) ;) (declaration "undefined4 *local_658;" type_identifier (pointer_declarator "*local_658" * identifier) ;) (declaration "int local_654;" primitive_type identifier ;) (declaration "undefined1 auStack_648 [1536];" type_identifier (array_declarator "auStack_648 [1536]" identifier [ number_literal ]) ;) (declaration "code *local_48;" type_identifier (pointer_declarator "*local_48" * identifier) ;) (declaration "code *local_30;" type_identifier (pointer_declarator "*local_30" * identifier) ;) (expression_statement "local_30 = (code *)(PTR_LAB_0043220c + 0x154);" (assignment_expression "local_30 = (code *)(PTR_LAB_0043220c + 0x154)" identifier = (cast_expression "(code *)(PTR_LAB_0043220c + 0x154)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0043220c + 0x154)" ( (binary_expression "PTR_LAB_0043220c + 0x154" identifier + number_literal) )))) ;) (expression_statement "iVar7 = 1;" (assignment_expression "iVar7 = 1" identifier = number_literal) ;) (expression_statement "puVar8 = PTR_LAB_0043220c + -0x1830;" (assignment_expression "puVar8 = PTR_LAB_0043220c + -0x1830" identifier = (binary_expression "PTR_LAB_0043220c + -0x1830" identifier + number_literal)) ;) (expression_statement "piVar6 = param_3;" (assignment_expression "piVar6 = param_3" identifier = identifier) ;) (while_statement "while( true ) {\n    iVar2 = FUN_0036e7d0(param_2,auStack_648);\n    uVar3 = 4;\n    iVar1 = *(int *)(param_2 + 0x30c) >> 0x1f;\n    uVar5 = -iVar1;\n    if (param_1[4] != *(int *)(param_2 + 0x2f4) + iVar1) {\n      uVar3 = 0;\n    }\n    if (iVar2 != 0) {\n      return 2;\n    }\n    puVar4 = (undefined4 *)0x1;\n    if (local_48 != (code *)0x0) {\n      piVar6 = (int *)*param_1;\n      uVar5 = uVar3 | 2;\n      local_658 = param_1;\n      local_654 = param_2;\n      iVar1 = (*local_48)();\n      if (iVar1 == 7) {\n        *param_3 = iVar7;\n        return 7;\n      }\n      if (iVar1 != 8) {\n        return 2;\n      }\n    }\n    if (uVar3 != 0) break;\n    iVar7 = iVar7 + 1;\n    (*local_30)(param_2,auStack_648);\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    iVar2 = FUN_0036e7d0(param_2,auStack_648);\n    uVar3 = 4;\n    iVar1 = *(int *)(param_2 + 0x30c) >> 0x1f;\n    uVar5 = -iVar1;\n    if (param_1[4] != *(int *)(param_2 + 0x2f4) + iVar1) {\n      uVar3 = 0;\n    }\n    if (iVar2 != 0) {\n      return 2;\n    }\n    puVar4 = (undefined4 *)0x1;\n    if (local_48 != (code *)0x0) {\n      piVar6 = (int *)*param_1;\n      uVar5 = uVar3 | 2;\n      local_658 = param_1;\n      local_654 = param_2;\n      iVar1 = (*local_48)();\n      if (iVar1 == 7) {\n        *param_3 = iVar7;\n        return 7;\n      }\n      if (iVar1 != 8) {\n        return 2;\n      }\n    }\n    if (uVar3 != 0) break;\n    iVar7 = iVar7 + 1;\n    (*local_30)(param_2,auStack_648);\n  }" { (expression_statement "iVar2 = FUN_0036e7d0(param_2,auStack_648);" (assignment_expression "iVar2 = FUN_0036e7d0(param_2,auStack_648)" identifier = (call_expression "FUN_0036e7d0(param_2,auStack_648)" identifier (argument_list "(param_2,auStack_648)" ( identifier , identifier )))) ;) (expression_statement "uVar3 = 4;" (assignment_expression "uVar3 = 4" identifier = number_literal) ;) (expression_statement "iVar1 = *(int *)(param_2 + 0x30c) >> 0x1f;" (assignment_expression "iVar1 = *(int *)(param_2 + 0x30c) >> 0x1f" identifier = (binary_expression "*(int *)(param_2 + 0x30c) >> 0x1f" (pointer_expression "*(int *)(param_2 + 0x30c)" * (cast_expression "(int *)(param_2 + 0x30c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x30c)" ( (binary_expression "param_2 + 0x30c" identifier + number_literal) )))) >> number_literal)) ;) (expression_statement "uVar5 = -iVar1;" (assignment_expression "uVar5 = -iVar1" identifier = (unary_expression "-iVar1" - identifier)) ;) (if_statement "if (param_1[4] != *(int *)(param_2 + 0x2f4) + iVar1) {\n      uVar3 = 0;\n    }" if (parenthesized_expression "(param_1[4] != *(int *)(param_2 + 0x2f4) + iVar1)" ( (binary_expression "param_1[4] != *(int *)(param_2 + 0x2f4) + iVar1" (subscript_expression "param_1[4]" identifier [ number_literal ]) != (binary_expression "*(int *)(param_2 + 0x2f4) + iVar1" (pointer_expression "*(int *)(param_2 + 0x2f4)" * (cast_expression "(int *)(param_2 + 0x2f4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x2f4)" ( (binary_expression "param_2 + 0x2f4" identifier + number_literal) )))) + identifier)) )) (compound_statement "{\n      uVar3 = 0;\n    }" { (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) })) (if_statement "if (iVar2 != 0) {\n      return 2;\n    }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n      return 2;\n    }" { (return_statement "return 2;" return number_literal ;) })) (expression_statement "puVar4 = (undefined4 *)0x1;" (assignment_expression "puVar4 = (undefined4 *)0x1" identifier = (cast_expression "(undefined4 *)0x1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (local_48 != (code *)0x0) {\n      piVar6 = (int *)*param_1;\n      uVar5 = uVar3 | 2;\n      local_658 = param_1;\n      local_654 = param_2;\n      iVar1 = (*local_48)();\n      if (iVar1 == 7) {\n        *param_3 = iVar7;\n        return 7;\n      }\n      if (iVar1 != 8) {\n        return 2;\n      }\n    }" if (parenthesized_expression "(local_48 != (code *)0x0)" ( (binary_expression "local_48 != (code *)0x0" identifier != (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      piVar6 = (int *)*param_1;\n      uVar5 = uVar3 | 2;\n      local_658 = param_1;\n      local_654 = param_2;\n      iVar1 = (*local_48)();\n      if (iVar1 == 7) {\n        *param_3 = iVar7;\n        return 7;\n      }\n      if (iVar1 != 8) {\n        return 2;\n      }\n    }" { (expression_statement "piVar6 = (int *)*param_1;" (assignment_expression "piVar6 = (int *)*param_1" identifier = (cast_expression "(int *)*param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "uVar5 = uVar3 | 2;" (assignment_expression "uVar5 = uVar3 | 2" identifier = (binary_expression "uVar3 | 2" identifier | number_literal)) ;) (expression_statement "local_658 = param_1;" (assignment_expression "local_658 = param_1" identifier = identifier) ;) (expression_statement "local_654 = param_2;" (assignment_expression "local_654 = param_2" identifier = identifier) ;) (expression_statement "iVar1 = (*local_48)();" (assignment_expression "iVar1 = (*local_48)()" identifier = (call_expression "(*local_48)()" (parenthesized_expression "(*local_48)" ( (pointer_expression "*local_48" * identifier) )) (argument_list "()" ( )))) ;) (if_statement "if (iVar1 == 7) {\n        *param_3 = iVar7;\n        return 7;\n      }" if (parenthesized_expression "(iVar1 == 7)" ( (binary_expression "iVar1 == 7" identifier == number_literal) )) (compound_statement "{\n        *param_3 = iVar7;\n        return 7;\n      }" { (expression_statement "*param_3 = iVar7;" (assignment_expression "*param_3 = iVar7" (pointer_expression "*param_3" * identifier) = identifier) ;) (return_statement "return 7;" return number_literal ;) })) (if_statement "if (iVar1 != 8) {\n        return 2;\n      }" if (parenthesized_expression "(iVar1 != 8)" ( (binary_expression "iVar1 != 8" identifier != number_literal) )) (compound_statement "{\n        return 2;\n      }" { (return_statement "return 2;" return number_literal ;) })) })) (if_statement "if (uVar3 != 0) break;" if (parenthesized_expression "(uVar3 != 0)" ( (binary_expression "uVar3 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (expression_statement "(*local_30)(param_2,auStack_648);" (call_expression "(*local_30)(param_2,auStack_648)" (parenthesized_expression "(*local_30)" ( (pointer_expression "*local_30" * identifier) )) (argument_list "(param_2,auStack_648)" ( identifier , identifier ))) ;) })) (expression_statement "pcVar11 = FUN_003703a8;" (assignment_expression "pcVar11 = FUN_003703a8" identifier = identifier) ;) (expression_statement "puVar10 = PTR_abort_00436908;" (assignment_expression "puVar10 = PTR_abort_00436908" identifier = identifier) ;) (expression_statement "(*(code *)PTR_abort_00436908)();" (call_expression "(*(code *)PTR_abort_00436908)()" (parenthesized_expression "(*(code *)PTR_abort_00436908)" ( (pointer_expression "*(code *)PTR_abort_00436908" * (cast_expression "(code *)PTR_abort_00436908" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "pcStack_698 = (code *)puVar4[3];" (assignment_expression "pcStack_698 = (code *)puVar4[3]" identifier = (cast_expression "(code *)puVar4[3]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[3]" identifier [ number_literal ]))) ;) (expression_statement "uStack_678 = 7;" (assignment_expression "uStack_678 = 7" identifier = number_literal) ;) (expression_statement "uStack_674 = 8;" (assignment_expression "uStack_674 = 8" identifier = number_literal) ;) (expression_statement "uStack_67c = 4;" (assignment_expression "uStack_67c = 4" identifier = number_literal) ;) (expression_statement "iVar1 = 1;" (assignment_expression "iVar1 = 1" identifier = number_literal) ;) (expression_statement "uVar9 = puVar4[4];" (assignment_expression "uVar9 = puVar4[4]" identifier = (subscript_expression "puVar4[4]" identifier [ number_literal ])) ;) (expression_statement "pcStack_694 = (code *)(*(int *)(puVar10 + 0xc1e64) + 0x154);" (assignment_expression "pcStack_694 = (code *)(*(int *)(puVar10 + 0xc1e64) + 0x154)" identifier = (cast_expression "(code *)(*(int *)(puVar10 + 0xc1e64) + 0x154)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar10 + 0xc1e64) + 0x154)" ( (binary_expression "*(int *)(puVar10 + 0xc1e64) + 0x154" (pointer_expression "*(int *)(puVar10 + 0xc1e64)" * (cast_expression "(int *)(puVar10 + 0xc1e64)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 0xc1e64)" ( (binary_expression "puVar10 + 0xc1e64" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "uStack_690 = uVar3;" (assignment_expression "uStack_690 = uVar3" identifier = identifier) ;) (expression_statement "puStack_68c = param_1;" (assignment_expression "puStack_68c = param_1" identifier = identifier) ;) (expression_statement "iStack_688 = iVar7;" (assignment_expression "iStack_688 = iVar7" identifier = identifier) ;) (expression_statement "puStack_684 = puVar8;" (assignment_expression "puStack_684 = puVar8" identifier = identifier) ;) (expression_statement "puStack_680 = auStack_648;" (assignment_expression "puStack_680 = auStack_648" identifier = identifier) ;) (expression_statement "iStack_670 = param_2;" (assignment_expression "iStack_670 = param_2" identifier = identifier) ;) (expression_statement "pcStack_66c = pcVar11;" (assignment_expression "pcStack_66c = pcVar11" identifier = identifier) ;) (expression_statement "piStack_660 = piVar6;" (assignment_expression "piStack_660 = piVar6" identifier = identifier) ;) (while_statement "while (iVar7 = FUN_0036e7d0(uVar5,auStack_cb0), iVar7 == 0) {\n    iVar7 = (*pcStack_698)(1,10,*puVar4,puVar4[1],puVar4,uVar5,uVar9);\n    if (iVar7 != 0) {\n      return 2;\n    }\n    if (pcStack_6b0 != (code *)0x0) {\n      iVar7 = (*pcStack_6b0)(1,10,*puVar4,puVar4[1],puVar4,uVar5);\n      if (iVar7 == 7) {\n        uVar9 = 7;\n        goto LAB_00370524;\n      }\n      if (iVar7 != 8) {\n        return 2;\n      }\n    }\n    iVar1 = iVar1 + 1;\n    (*pcStack_694)(uVar5,auStack_cb0);\n  }" while (parenthesized_expression "(iVar7 = FUN_0036e7d0(uVar5,auStack_cb0), iVar7 == 0)" ( (comma_expression "iVar7 = FUN_0036e7d0(uVar5,auStack_cb0), iVar7 == 0" (assignment_expression "iVar7 = FUN_0036e7d0(uVar5,auStack_cb0)" identifier = (call_expression "FUN_0036e7d0(uVar5,auStack_cb0)" identifier (argument_list "(uVar5,auStack_cb0)" ( identifier , identifier )))) , (binary_expression "iVar7 == 0" identifier == number_literal)) )) (compound_statement "{\n    iVar7 = (*pcStack_698)(1,10,*puVar4,puVar4[1],puVar4,uVar5,uVar9);\n    if (iVar7 != 0) {\n      return 2;\n    }\n    if (pcStack_6b0 != (code *)0x0) {\n      iVar7 = (*pcStack_6b0)(1,10,*puVar4,puVar4[1],puVar4,uVar5);\n      if (iVar7 == 7) {\n        uVar9 = 7;\n        goto LAB_00370524;\n      }\n      if (iVar7 != 8) {\n        return 2;\n      }\n    }\n    iVar1 = iVar1 + 1;\n    (*pcStack_694)(uVar5,auStack_cb0);\n  }" { (expression_statement "iVar7 = (*pcStack_698)(1,10,*puVar4,puVar4[1],puVar4,uVar5,uVar9);" (assignment_expression "iVar7 = (*pcStack_698)(1,10,*puVar4,puVar4[1],puVar4,uVar5,uVar9)" identifier = (call_expression "(*pcStack_698)(1,10,*puVar4,puVar4[1],puVar4,uVar5,uVar9)" (parenthesized_expression "(*pcStack_698)" ( (pointer_expression "*pcStack_698" * identifier) )) (argument_list "(1,10,*puVar4,puVar4[1],puVar4,uVar5,uVar9)" ( number_literal , number_literal , (pointer_expression "*puVar4" * identifier) , (subscript_expression "puVar4[1]" identifier [ number_literal ]) , identifier , identifier , identifier )))) ;) (if_statement "if (iVar7 != 0) {\n      return 2;\n    }" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (compound_statement "{\n      return 2;\n    }" { (return_statement "return 2;" return number_literal ;) })) (if_statement "if (pcStack_6b0 != (code *)0x0) {\n      iVar7 = (*pcStack_6b0)(1,10,*puVar4,puVar4[1],puVar4,uVar5);\n      if (iVar7 == 7) {\n        uVar9 = 7;\n        goto LAB_00370524;\n      }\n      if (iVar7 != 8) {\n        return 2;\n      }\n    }" if (parenthesized_expression "(pcStack_6b0 != (code *)0x0)" ( (binary_expression "pcStack_6b0 != (code *)0x0" identifier != (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      iVar7 = (*pcStack_6b0)(1,10,*puVar4,puVar4[1],puVar4,uVar5);\n      if (iVar7 == 7) {\n        uVar9 = 7;\n        goto LAB_00370524;\n      }\n      if (iVar7 != 8) {\n        return 2;\n      }\n    }" { (expression_statement "iVar7 = (*pcStack_6b0)(1,10,*puVar4,puVar4[1],puVar4,uVar5);" (assignment_expression "iVar7 = (*pcStack_6b0)(1,10,*puVar4,puVar4[1],puVar4,uVar5)" identifier = (call_expression "(*pcStack_6b0)(1,10,*puVar4,puVar4[1],puVar4,uVar5)" (parenthesized_expression "(*pcStack_6b0)" ( (pointer_expression "*pcStack_6b0" * identifier) )) (argument_list "(1,10,*puVar4,puVar4[1],puVar4,uVar5)" ( number_literal , number_literal , (pointer_expression "*puVar4" * identifier) , (subscript_expression "puVar4[1]" identifier [ number_literal ]) , identifier , identifier )))) ;) (if_statement "if (iVar7 == 7) {\n        uVar9 = 7;\n        goto LAB_00370524;\n      }" if (parenthesized_expression "(iVar7 == 7)" ( (binary_expression "iVar7 == 7" identifier == number_literal) )) (compound_statement "{\n        uVar9 = 7;\n        goto LAB_00370524;\n      }" { (expression_statement "uVar9 = 7;" (assignment_expression "uVar9 = 7" identifier = number_literal) ;) (goto_statement "goto LAB_00370524;" goto statement_identifier ;) })) (if_statement "if (iVar7 != 8) {\n        return 2;\n      }" if (parenthesized_expression "(iVar7 != 8)" ( (binary_expression "iVar7 != 8" identifier != number_literal) )) (compound_statement "{\n        return 2;\n      }" { (return_statement "return 2;" return number_literal ;) })) })) (expression_statement "iVar1 = iVar1 + 1;" (assignment_expression "iVar1 = iVar1 + 1" identifier = (binary_expression "iVar1 + 1" identifier + number_literal)) ;) (expression_statement "(*pcStack_694)(uVar5,auStack_cb0);" (call_expression "(*pcStack_694)(uVar5,auStack_cb0)" (parenthesized_expression "(*pcStack_694)" ( (pointer_expression "*pcStack_694" * identifier) )) (argument_list "(uVar5,auStack_cb0)" ( identifier , identifier ))) ;) })) (if_statement "if (iVar7 == 5) {\n    iVar7 = (*pcStack_698)(1,0x1a,*puVar4,puVar4[1],puVar4,uVar5,uVar9);\n    uVar9 = 5;\n    if (iVar7 == 0) {\nLAB_00370524:\n      *piStack_660 = iVar1;\n      return uVar9;\n    }\n  }" if (parenthesized_expression "(iVar7 == 5)" ( (binary_expression "iVar7 == 5" identifier == number_literal) )) (compound_statement "{\n    iVar7 = (*pcStack_698)(1,0x1a,*puVar4,puVar4[1],puVar4,uVar5,uVar9);\n    uVar9 = 5;\n    if (iVar7 == 0) {\nLAB_00370524:\n      *piStack_660 = iVar1;\n      return uVar9;\n    }\n  }" { (expression_statement "iVar7 = (*pcStack_698)(1,0x1a,*puVar4,puVar4[1],puVar4,uVar5,uVar9);" (assignment_expression "iVar7 = (*pcStack_698)(1,0x1a,*puVar4,puVar4[1],puVar4,uVar5,uVar9)" identifier = (call_expression "(*pcStack_698)(1,0x1a,*puVar4,puVar4[1],puVar4,uVar5,uVar9)" (parenthesized_expression "(*pcStack_698)" ( (pointer_expression "*pcStack_698" * identifier) )) (argument_list "(1,0x1a,*puVar4,puVar4[1],puVar4,uVar5,uVar9)" ( number_literal , number_literal , (pointer_expression "*puVar4" * identifier) , (subscript_expression "puVar4[1]" identifier [ number_literal ]) , identifier , identifier , identifier )))) ;) (expression_statement "uVar9 = 5;" (assignment_expression "uVar9 = 5" identifier = number_literal) ;) (if_statement "if (iVar7 == 0) {\nLAB_00370524:\n      *piStack_660 = iVar1;\n      return uVar9;\n    }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00370524:\n      *piStack_660 = iVar1;\n      return uVar9;\n    }" { (labeled_statement "LAB_00370524:\n      *piStack_660 = iVar1;" statement_identifier : (expression_statement "*piStack_660 = iVar1;" (assignment_expression "*piStack_660 = iVar1" (pointer_expression "*piStack_660" * identifier) = identifier) ;)) (return_statement "return uVar9;" return identifier ;) })) })) (return_statement "return 2;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * 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 IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) >> LIT)) ;) (expression_statement (assignment_expression IDENT = (unary_expression - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (return_statement return LIT ;) })) (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 ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) , (binary_expression IDENT == 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 , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return LIT ;) })) (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 IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return LIT ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == 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 , IDENT )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;)) (return_statement return IDENT ;) })) })) (return_statement return LIT ;) })))
(function_definition "undefined4 FUN_00370234(undefined4 *param_1,int param_2,int *param_3)\n\n{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  undefined4 *puVar4;\n  uint uVar5;\n  int *piVar6;\n  int iVar7;\n  undefined *puVar8;\n  undefined4 uVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  undefined1 auStack_cb0 [1536];\n  code *pcStack_6b0;\n  code *pcStack_698;\n  code *pcStack_694;\n  uint uStack_690;\n  undefined4 *puStack_68c;\n  int iStack_688;\n  undefined *puStack_684;\n  undefined1 *puStack_680;\n  undefined4 uStack_67c;\n  undefined4 uStack_678;\n  undefined4 uStack_674;\n  int iStack_670;\n  code *pcStack_66c;\n  int *piStack_660;\n  undefined4 *local_658;\n  int local_654;\n  undefined1 auStack_648 [1536];\n  code *local_48;\n  code *local_30;\n  \n  local_30 = (code *)(PTR_LAB_0043220c + 0x154);\n  iVar7 = 1;\n  puVar8 = PTR_LAB_0043220c + -0x1830;\n  piVar6 = param_3;\n  while( true ) {\n    iVar2 = FUN_0036e7d0(param_2,auStack_648);\n    uVar3 = 4;\n    iVar1 = *(int *)(param_2 + 0x30c) >> 0x1f;\n    uVar5 = -iVar1;\n    if (param_1[4] != *(int *)(param_2 + 0x2f4) + iVar1) {\n      uVar3 = 0;\n    }\n    if (iVar2 != 0) {\n      return 2;\n    }\n    puVar4 = (undefined4 *)0x1;\n    if (local_48 != (code *)0x0) {\n      piVar6 = (int *)*param_1;\n      uVar5 = uVar3 | 2;\n      local_658 = param_1;\n      local_654 = param_2;\n      iVar1 = (*local_48)();\n      if (iVar1 == 7) {\n        *param_3 = iVar7;\n        return 7;\n      }\n      if (iVar1 != 8) {\n        return 2;\n      }\n    }\n    if (uVar3 != 0) break;\n    iVar7 = iVar7 + 1;\n    (*local_30)(param_2,auStack_648);\n  }\n  pcVar11 = FUN_003703a8;\n  puVar10 = PTR_abort_00436908;\n  (*(code *)PTR_abort_00436908)();\n  pcStack_698 = (code *)puVar4[3];\n  uStack_678 = 7;\n  uStack_674 = 8;\n  uStack_67c = 4;\n  iVar1 = 1;\n  uVar9 = puVar4[4];\n  pcStack_694 = (code *)(*(int *)(puVar10 + 0xc1e64) + 0x154);\n  uStack_690 = uVar3;\n  puStack_68c = param_1;\n  iStack_688 = iVar7;\n  puStack_684 = puVar8;\n  puStack_680 = auStack_648;\n  iStack_670 = param_2;\n  pcStack_66c = pcVar11;\n  piStack_660 = piVar6;\n  while (iVar7 = FUN_0036e7d0(uVar5,auStack_cb0), iVar7 == 0) {\n    iVar7 = (*pcStack_698)(1,10,*puVar4,puVar4[1],puVar4,uVar5,uVar9);\n    if (iVar7 != 0) {\n      return 2;\n    }\n    if (pcStack_6b0 != (code *)0x0) {\n      iVar7 = (*pcStack_6b0)(1,10,*puVar4,puVar4[1],puVar4,uVar5);\n      if (iVar7 == 7) {\n        uVar9 = 7;\n        goto LAB_00370524;\n      }\n      if (iVar7 != 8) {\n        return 2;\n      }\n    }\n    iVar1 = iVar1 + 1;\n    (*pcStack_694)(uVar5,auStack_cb0);\n  }\n  if (iVar7 == 5) {\n    iVar7 = (*pcStack_698)(1,0x1a,*puVar4,puVar4[1],puVar4,uVar5,uVar9);\n    uVar9 = 5;\n    if (iVar7 == 0) {\nLAB_00370524:\n      *piStack_660 = iVar1;\n      return uVar9;\n    }\n  }\n  return 2;\n}" (type_identifier "undefined4") (function_declarator "FUN_00370234(undefined4 *param_1,int param_2,int *param_3)" (identifier "FUN_00370234") (parameter_list "(undefined4 *param_1,int param_2,int *param_3)" (( "(") (parameter_declaration "undefined4 *param_1" (type_identifier "undefined4") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "int *param_3" (primitive_type "int") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  undefined4 *puVar4;\n  uint uVar5;\n  int *piVar6;\n  int iVar7;\n  undefined *puVar8;\n  undefined4 uVar9;\n  undefined *puVar10;\n  code *pcVar11;\n  undefined1 auStack_cb0 [1536];\n  code *pcStack_6b0;\n  code *pcStack_698;\n  code *pcStack_694;\n  uint uStack_690;\n  undefined4 *puStack_68c;\n  int iStack_688;\n  undefined *puStack_684;\n  undefined1 *puStack_680;\n  undefined4 uStack_67c;\n  undefined4 uStack_678;\n  undefined4 uStack_674;\n  int iStack_670;\n  code *pcStack_66c;\n  int *piStack_660;\n  undefined4 *local_658;\n  int local_654;\n  undefined1 auStack_648 [1536];\n  code *local_48;\n  code *local_30;\n  \n  local_30 = (code *)(PTR_LAB_0043220c + 0x154);\n  iVar7 = 1;\n  puVar8 = PTR_LAB_0043220c + -0x1830;\n  piVar6 = param_3;\n  while( true ) {\n    iVar2 = FUN_0036e7d0(param_2,auStack_648);\n    uVar3 = 4;\n    iVar1 = *(int *)(param_2 + 0x30c) >> 0x1f;\n    uVar5 = -iVar1;\n    if (param_1[4] != *(int *)(param_2 + 0x2f4) + iVar1) {\n      uVar3 = 0;\n    }\n    if (iVar2 != 0) {\n      return 2;\n    }\n    puVar4 = (undefined4 *)0x1;\n    if (local_48 != (code *)0x0) {\n      piVar6 = (int *)*param_1;\n      uVar5 = uVar3 | 2;\n      local_658 = param_1;\n      local_654 = param_2;\n      iVar1 = (*local_48)();\n      if (iVar1 == 7) {\n        *param_3 = iVar7;\n        return 7;\n      }\n      if (iVar1 != 8) {\n        return 2;\n      }\n    }\n    if (uVar3 != 0) break;\n    iVar7 = iVar7 + 1;\n    (*local_30)(param_2,auStack_648);\n  }\n  pcVar11 = FUN_003703a8;\n  puVar10 = PTR_abort_00436908;\n  (*(code *)PTR_abort_00436908)();\n  pcStack_698 = (code *)puVar4[3];\n  uStack_678 = 7;\n  uStack_674 = 8;\n  uStack_67c = 4;\n  iVar1 = 1;\n  uVar9 = puVar4[4];\n  pcStack_694 = (code *)(*(int *)(puVar10 + 0xc1e64) + 0x154);\n  uStack_690 = uVar3;\n  puStack_68c = param_1;\n  iStack_688 = iVar7;\n  puStack_684 = puVar8;\n  puStack_680 = auStack_648;\n  iStack_670 = param_2;\n  pcStack_66c = pcVar11;\n  piStack_660 = piVar6;\n  while (iVar7 = FUN_0036e7d0(uVar5,auStack_cb0), iVar7 == 0) {\n    iVar7 = (*pcStack_698)(1,10,*puVar4,puVar4[1],puVar4,uVar5,uVar9);\n    if (iVar7 != 0) {\n      return 2;\n    }\n    if (pcStack_6b0 != (code *)0x0) {\n      iVar7 = (*pcStack_6b0)(1,10,*puVar4,puVar4[1],puVar4,uVar5);\n      if (iVar7 == 7) {\n        uVar9 = 7;\n        goto LAB_00370524;\n      }\n      if (iVar7 != 8) {\n        return 2;\n      }\n    }\n    iVar1 = iVar1 + 1;\n    (*pcStack_694)(uVar5,auStack_cb0);\n  }\n  if (iVar7 == 5) {\n    iVar7 = (*pcStack_698)(1,0x1a,*puVar4,puVar4[1],puVar4,uVar5,uVar9);\n    uVar9 = 5;\n    if (iVar7 == 0) {\nLAB_00370524:\n      *piStack_660 = iVar1;\n      return uVar9;\n    }\n  }\n  return 2;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "undefined4 *puVar4;" (type_identifier "undefined4") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "int *piVar6;" (primitive_type "int") (pointer_declarator "*piVar6" (* "*") (identifier "piVar6")) (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "undefined *puVar8;" (type_identifier "undefined") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "undefined4 uVar9;" (type_identifier "undefined4") (identifier "uVar9") (; ";")) (declaration "undefined *puVar10;" (type_identifier "undefined") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "code *pcVar11;" (type_identifier "code") (pointer_declarator "*pcVar11" (* "*") (identifier "pcVar11")) (; ";")) (declaration "undefined1 auStack_cb0 [1536];" (type_identifier "undefined1") (array_declarator "auStack_cb0 [1536]" (identifier "auStack_cb0") ([ "[") (number_literal "1536") (] "]")) (; ";")) (declaration "code *pcStack_6b0;" (type_identifier "code") (pointer_declarator "*pcStack_6b0" (* "*") (identifier "pcStack_6b0")) (; ";")) (declaration "code *pcStack_698;" (type_identifier "code") (pointer_declarator "*pcStack_698" (* "*") (identifier "pcStack_698")) (; ";")) (declaration "code *pcStack_694;" (type_identifier "code") (pointer_declarator "*pcStack_694" (* "*") (identifier "pcStack_694")) (; ";")) (declaration "uint uStack_690;" (type_identifier "uint") (identifier "uStack_690") (; ";")) (declaration "undefined4 *puStack_68c;" (type_identifier "undefined4") (pointer_declarator "*puStack_68c" (* "*") (identifier "puStack_68c")) (; ";")) (declaration "int iStack_688;" (primitive_type "int") (identifier "iStack_688") (; ";")) (declaration "undefined *puStack_684;" (type_identifier "undefined") (pointer_declarator "*puStack_684" (* "*") (identifier "puStack_684")) (; ";")) (declaration "undefined1 *puStack_680;" (type_identifier "undefined1") (pointer_declarator "*puStack_680" (* "*") (identifier "puStack_680")) (; ";")) (declaration "undefined4 uStack_67c;" (type_identifier "undefined4") (identifier "uStack_67c") (; ";")) (declaration "undefined4 uStack_678;" (type_identifier "undefined4") (identifier "uStack_678") (; ";")) (declaration "undefined4 uStack_674;" (type_identifier "undefined4") (identifier "uStack_674") (; ";")) (declaration "int iStack_670;" (primitive_type "int") (identifier "iStack_670") (; ";")) (declaration "code *pcStack_66c;" (type_identifier "code") (pointer_declarator "*pcStack_66c" (* "*") (identifier "pcStack_66c")) (; ";")) (declaration "int *piStack_660;" (primitive_type "int") (pointer_declarator "*piStack_660" (* "*") (identifier "piStack_660")) (; ";")) (declaration "undefined4 *local_658;" (type_identifier "undefined4") (pointer_declarator "*local_658" (* "*") (identifier "local_658")) (; ";")) (declaration "int local_654;" (primitive_type "int") (identifier "local_654") (; ";")) (declaration "undefined1 auStack_648 [1536];" (type_identifier "undefined1") (array_declarator "auStack_648 [1536]" (identifier "auStack_648") ([ "[") (number_literal "1536") (] "]")) (; ";")) (declaration "code *local_48;" (type_identifier "code") (pointer_declarator "*local_48" (* "*") (identifier "local_48")) (; ";")) (declaration "code *local_30;" (type_identifier "code") (pointer_declarator "*local_30" (* "*") (identifier "local_30")) (; ";")) (expression_statement "local_30 = (code *)(PTR_LAB_0043220c + 0x154);" (assignment_expression "local_30 = (code *)(PTR_LAB_0043220c + 0x154)" (identifier "local_30") (= "=") (cast_expression "(code *)(PTR_LAB_0043220c + 0x154)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_0043220c + 0x154)" (( "(") (binary_expression "PTR_LAB_0043220c + 0x154" (identifier "PTR_LAB_0043220c") (+ "+") (number_literal "0x154")) () ")")))) (; ";")) (expression_statement "iVar7 = 1;" (assignment_expression "iVar7 = 1" (identifier "iVar7") (= "=") (number_literal "1")) (; ";")) (expression_statement "puVar8 = PTR_LAB_0043220c + -0x1830;" (assignment_expression "puVar8 = PTR_LAB_0043220c + -0x1830" (identifier "puVar8") (= "=") (binary_expression "PTR_LAB_0043220c + -0x1830" (identifier "PTR_LAB_0043220c") (+ "+") (number_literal "-0x1830"))) (; ";")) (expression_statement "piVar6 = param_3;" (assignment_expression "piVar6 = param_3" (identifier "piVar6") (= "=") (identifier "param_3")) (; ";")) (while_statement "while( true ) {\n    iVar2 = FUN_0036e7d0(param_2,auStack_648);\n    uVar3 = 4;\n    iVar1 = *(int *)(param_2 + 0x30c) >> 0x1f;\n    uVar5 = -iVar1;\n    if (param_1[4] != *(int *)(param_2 + 0x2f4) + iVar1) {\n      uVar3 = 0;\n    }\n    if (iVar2 != 0) {\n      return 2;\n    }\n    puVar4 = (undefined4 *)0x1;\n    if (local_48 != (code *)0x0) {\n      piVar6 = (int *)*param_1;\n      uVar5 = uVar3 | 2;\n      local_658 = param_1;\n      local_654 = param_2;\n      iVar1 = (*local_48)();\n      if (iVar1 == 7) {\n        *param_3 = iVar7;\n        return 7;\n      }\n      if (iVar1 != 8) {\n        return 2;\n      }\n    }\n    if (uVar3 != 0) break;\n    iVar7 = iVar7 + 1;\n    (*local_30)(param_2,auStack_648);\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    iVar2 = FUN_0036e7d0(param_2,auStack_648);\n    uVar3 = 4;\n    iVar1 = *(int *)(param_2 + 0x30c) >> 0x1f;\n    uVar5 = -iVar1;\n    if (param_1[4] != *(int *)(param_2 + 0x2f4) + iVar1) {\n      uVar3 = 0;\n    }\n    if (iVar2 != 0) {\n      return 2;\n    }\n    puVar4 = (undefined4 *)0x1;\n    if (local_48 != (code *)0x0) {\n      piVar6 = (int *)*param_1;\n      uVar5 = uVar3 | 2;\n      local_658 = param_1;\n      local_654 = param_2;\n      iVar1 = (*local_48)();\n      if (iVar1 == 7) {\n        *param_3 = iVar7;\n        return 7;\n      }\n      if (iVar1 != 8) {\n        return 2;\n      }\n    }\n    if (uVar3 != 0) break;\n    iVar7 = iVar7 + 1;\n    (*local_30)(param_2,auStack_648);\n  }" ({ "{") (expression_statement "iVar2 = FUN_0036e7d0(param_2,auStack_648);" (assignment_expression "iVar2 = FUN_0036e7d0(param_2,auStack_648)" (identifier "iVar2") (= "=") (call_expression "FUN_0036e7d0(param_2,auStack_648)" (identifier "FUN_0036e7d0") (argument_list "(param_2,auStack_648)" (( "(") (identifier "param_2") (, ",") (identifier "auStack_648") () ")")))) (; ";")) (expression_statement "uVar3 = 4;" (assignment_expression "uVar3 = 4" (identifier "uVar3") (= "=") (number_literal "4")) (; ";")) (expression_statement "iVar1 = *(int *)(param_2 + 0x30c) >> 0x1f;" (assignment_expression "iVar1 = *(int *)(param_2 + 0x30c) >> 0x1f" (identifier "iVar1") (= "=") (binary_expression "*(int *)(param_2 + 0x30c) >> 0x1f" (pointer_expression "*(int *)(param_2 + 0x30c)" (* "*") (cast_expression "(int *)(param_2 + 0x30c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x30c)" (( "(") (binary_expression "param_2 + 0x30c" (identifier "param_2") (+ "+") (number_literal "0x30c")) () ")")))) (>> ">>") (number_literal "0x1f"))) (; ";")) (expression_statement "uVar5 = -iVar1;" (assignment_expression "uVar5 = -iVar1" (identifier "uVar5") (= "=") (unary_expression "-iVar1" (- "-") (identifier "iVar1"))) (; ";")) (if_statement "if (param_1[4] != *(int *)(param_2 + 0x2f4) + iVar1) {\n      uVar3 = 0;\n    }" (if "if") (parenthesized_expression "(param_1[4] != *(int *)(param_2 + 0x2f4) + iVar1)" (( "(") (binary_expression "param_1[4] != *(int *)(param_2 + 0x2f4) + iVar1" (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")) (!= "!=") (binary_expression "*(int *)(param_2 + 0x2f4) + iVar1" (pointer_expression "*(int *)(param_2 + 0x2f4)" (* "*") (cast_expression "(int *)(param_2 + 0x2f4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x2f4)" (( "(") (binary_expression "param_2 + 0x2f4" (identifier "param_2") (+ "+") (number_literal "0x2f4")) () ")")))) (+ "+") (identifier "iVar1"))) () ")")) (compound_statement "{\n      uVar3 = 0;\n    }" ({ "{") (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" (identifier "uVar3") (= "=") (number_literal "0")) (; ";")) (} "}"))) (if_statement "if (iVar2 != 0) {\n      return 2;\n    }" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      return 2;\n    }" ({ "{") (return_statement "return 2;" (return "return") (number_literal "2") (; ";")) (} "}"))) (expression_statement "puVar4 = (undefined4 *)0x1;" (assignment_expression "puVar4 = (undefined4 *)0x1" (identifier "puVar4") (= "=") (cast_expression "(undefined4 *)0x1" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (; ";")) (if_statement "if (local_48 != (code *)0x0) {\n      piVar6 = (int *)*param_1;\n      uVar5 = uVar3 | 2;\n      local_658 = param_1;\n      local_654 = param_2;\n      iVar1 = (*local_48)();\n      if (iVar1 == 7) {\n        *param_3 = iVar7;\n        return 7;\n      }\n      if (iVar1 != 8) {\n        return 2;\n      }\n    }" (if "if") (parenthesized_expression "(local_48 != (code *)0x0)" (( "(") (binary_expression "local_48 != (code *)0x0" (identifier "local_48") (!= "!=") (cast_expression "(code *)0x0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      piVar6 = (int *)*param_1;\n      uVar5 = uVar3 | 2;\n      local_658 = param_1;\n      local_654 = param_2;\n      iVar1 = (*local_48)();\n      if (iVar1 == 7) {\n        *param_3 = iVar7;\n        return 7;\n      }\n      if (iVar1 != 8) {\n        return 2;\n      }\n    }" ({ "{") (expression_statement "piVar6 = (int *)*param_1;" (assignment_expression "piVar6 = (int *)*param_1" (identifier "piVar6") (= "=") (cast_expression "(int *)*param_1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (expression_statement "uVar5 = uVar3 | 2;" (assignment_expression "uVar5 = uVar3 | 2" (identifier "uVar5") (= "=") (binary_expression "uVar3 | 2" (identifier "uVar3") (| "|") (number_literal "2"))) (; ";")) (expression_statement "local_658 = param_1;" (assignment_expression "local_658 = param_1" (identifier "local_658") (= "=") (identifier "param_1")) (; ";")) (expression_statement "local_654 = param_2;" (assignment_expression "local_654 = param_2" (identifier "local_654") (= "=") (identifier "param_2")) (; ";")) (expression_statement "iVar1 = (*local_48)();" (assignment_expression "iVar1 = (*local_48)()" (identifier "iVar1") (= "=") (call_expression "(*local_48)()" (parenthesized_expression "(*local_48)" (( "(") (pointer_expression "*local_48" (* "*") (identifier "local_48")) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar1 == 7) {\n        *param_3 = iVar7;\n        return 7;\n      }" (if "if") (parenthesized_expression "(iVar1 == 7)" (( "(") (binary_expression "iVar1 == 7" (identifier "iVar1") (== "==") (number_literal "7")) () ")")) (compound_statement "{\n        *param_3 = iVar7;\n        return 7;\n      }" ({ "{") (expression_statement "*param_3 = iVar7;" (assignment_expression "*param_3 = iVar7" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (identifier "iVar7")) (; ";")) (return_statement "return 7;" (return "return") (number_literal "7") (; ";")) (} "}"))) (if_statement "if (iVar1 != 8) {\n        return 2;\n      }" (if "if") (parenthesized_expression "(iVar1 != 8)" (( "(") (binary_expression "iVar1 != 8" (identifier "iVar1") (!= "!=") (number_literal "8")) () ")")) (compound_statement "{\n        return 2;\n      }" ({ "{") (return_statement "return 2;" (return "return") (number_literal "2") (; ";")) (} "}"))) (} "}"))) (if_statement "if (uVar3 != 0) break;" (if "if") (parenthesized_expression "(uVar3 != 0)" (( "(") (binary_expression "uVar3 != 0" (identifier "uVar3") (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" (identifier "iVar7") (= "=") (binary_expression "iVar7 + 1" (identifier "iVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "(*local_30)(param_2,auStack_648);" (call_expression "(*local_30)(param_2,auStack_648)" (parenthesized_expression "(*local_30)" (( "(") (pointer_expression "*local_30" (* "*") (identifier "local_30")) () ")")) (argument_list "(param_2,auStack_648)" (( "(") (identifier "param_2") (, ",") (identifier "auStack_648") () ")"))) (; ";")) (} "}"))) (expression_statement "pcVar11 = FUN_003703a8;" (assignment_expression "pcVar11 = FUN_003703a8" (identifier "pcVar11") (= "=") (identifier "FUN_003703a8")) (; ";")) (expression_statement "puVar10 = PTR_abort_00436908;" (assignment_expression "puVar10 = PTR_abort_00436908" (identifier "puVar10") (= "=") (identifier "PTR_abort_00436908")) (; ";")) (expression_statement "(*(code *)PTR_abort_00436908)();" (call_expression "(*(code *)PTR_abort_00436908)()" (parenthesized_expression "(*(code *)PTR_abort_00436908)" (( "(") (pointer_expression "*(code *)PTR_abort_00436908" (* "*") (cast_expression "(code *)PTR_abort_00436908" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_abort_00436908"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "pcStack_698 = (code *)puVar4[3];" (assignment_expression "pcStack_698 = (code *)puVar4[3]" (identifier "pcStack_698") (= "=") (cast_expression "(code *)puVar4[3]" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar4[3]" (identifier "puVar4") ([ "[") (number_literal "3") (] "]")))) (; ";")) (expression_statement "uStack_678 = 7;" (assignment_expression "uStack_678 = 7" (identifier "uStack_678") (= "=") (number_literal "7")) (; ";")) (expression_statement "uStack_674 = 8;" (assignment_expression "uStack_674 = 8" (identifier "uStack_674") (= "=") (number_literal "8")) (; ";")) (expression_statement "uStack_67c = 4;" (assignment_expression "uStack_67c = 4" (identifier "uStack_67c") (= "=") (number_literal "4")) (; ";")) (expression_statement "iVar1 = 1;" (assignment_expression "iVar1 = 1" (identifier "iVar1") (= "=") (number_literal "1")) (; ";")) (expression_statement "uVar9 = puVar4[4];" (assignment_expression "uVar9 = puVar4[4]" (identifier "uVar9") (= "=") (subscript_expression "puVar4[4]" (identifier "puVar4") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "pcStack_694 = (code *)(*(int *)(puVar10 + 0xc1e64) + 0x154);" (assignment_expression "pcStack_694 = (code *)(*(int *)(puVar10 + 0xc1e64) + 0x154)" (identifier "pcStack_694") (= "=") (cast_expression "(code *)(*(int *)(puVar10 + 0xc1e64) + 0x154)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar10 + 0xc1e64) + 0x154)" (( "(") (binary_expression "*(int *)(puVar10 + 0xc1e64) + 0x154" (pointer_expression "*(int *)(puVar10 + 0xc1e64)" (* "*") (cast_expression "(int *)(puVar10 + 0xc1e64)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar10 + 0xc1e64)" (( "(") (binary_expression "puVar10 + 0xc1e64" (identifier "puVar10") (+ "+") (number_literal "0xc1e64")) () ")")))) (+ "+") (number_literal "0x154")) () ")")))) (; ";")) (expression_statement "uStack_690 = uVar3;" (assignment_expression "uStack_690 = uVar3" (identifier "uStack_690") (= "=") (identifier "uVar3")) (; ";")) (expression_statement "puStack_68c = param_1;" (assignment_expression "puStack_68c = param_1" (identifier "puStack_68c") (= "=") (identifier "param_1")) (; ";")) (expression_statement "iStack_688 = iVar7;" (assignment_expression "iStack_688 = iVar7" (identifier "iStack_688") (= "=") (identifier "iVar7")) (; ";")) (expression_statement "puStack_684 = puVar8;" (assignment_expression "puStack_684 = puVar8" (identifier "puStack_684") (= "=") (identifier "puVar8")) (; ";")) (expression_statement "puStack_680 = auStack_648;" (assignment_expression "puStack_680 = auStack_648" (identifier "puStack_680") (= "=") (identifier "auStack_648")) (; ";")) (expression_statement "iStack_670 = param_2;" (assignment_expression "iStack_670 = param_2" (identifier "iStack_670") (= "=") (identifier "param_2")) (; ";")) (expression_statement "pcStack_66c = pcVar11;" (assignment_expression "pcStack_66c = pcVar11" (identifier "pcStack_66c") (= "=") (identifier "pcVar11")) (; ";")) (expression_statement "piStack_660 = piVar6;" (assignment_expression "piStack_660 = piVar6" (identifier "piStack_660") (= "=") (identifier "piVar6")) (; ";")) (while_statement "while (iVar7 = FUN_0036e7d0(uVar5,auStack_cb0), iVar7 == 0) {\n    iVar7 = (*pcStack_698)(1,10,*puVar4,puVar4[1],puVar4,uVar5,uVar9);\n    if (iVar7 != 0) {\n      return 2;\n    }\n    if (pcStack_6b0 != (code *)0x0) {\n      iVar7 = (*pcStack_6b0)(1,10,*puVar4,puVar4[1],puVar4,uVar5);\n      if (iVar7 == 7) {\n        uVar9 = 7;\n        goto LAB_00370524;\n      }\n      if (iVar7 != 8) {\n        return 2;\n      }\n    }\n    iVar1 = iVar1 + 1;\n    (*pcStack_694)(uVar5,auStack_cb0);\n  }" (while "while") (parenthesized_expression "(iVar7 = FUN_0036e7d0(uVar5,auStack_cb0), iVar7 == 0)" (( "(") (comma_expression "iVar7 = FUN_0036e7d0(uVar5,auStack_cb0), iVar7 == 0" (assignment_expression "iVar7 = FUN_0036e7d0(uVar5,auStack_cb0)" (identifier "iVar7") (= "=") (call_expression "FUN_0036e7d0(uVar5,auStack_cb0)" (identifier "FUN_0036e7d0") (argument_list "(uVar5,auStack_cb0)" (( "(") (identifier "uVar5") (, ",") (identifier "auStack_cb0") () ")")))) (, ",") (binary_expression "iVar7 == 0" (identifier "iVar7") (== "==") (number_literal "0"))) () ")")) (compound_statement "{\n    iVar7 = (*pcStack_698)(1,10,*puVar4,puVar4[1],puVar4,uVar5,uVar9);\n    if (iVar7 != 0) {\n      return 2;\n    }\n    if (pcStack_6b0 != (code *)0x0) {\n      iVar7 = (*pcStack_6b0)(1,10,*puVar4,puVar4[1],puVar4,uVar5);\n      if (iVar7 == 7) {\n        uVar9 = 7;\n        goto LAB_00370524;\n      }\n      if (iVar7 != 8) {\n        return 2;\n      }\n    }\n    iVar1 = iVar1 + 1;\n    (*pcStack_694)(uVar5,auStack_cb0);\n  }" ({ "{") (expression_statement "iVar7 = (*pcStack_698)(1,10,*puVar4,puVar4[1],puVar4,uVar5,uVar9);" (assignment_expression "iVar7 = (*pcStack_698)(1,10,*puVar4,puVar4[1],puVar4,uVar5,uVar9)" (identifier "iVar7") (= "=") (call_expression "(*pcStack_698)(1,10,*puVar4,puVar4[1],puVar4,uVar5,uVar9)" (parenthesized_expression "(*pcStack_698)" (( "(") (pointer_expression "*pcStack_698" (* "*") (identifier "pcStack_698")) () ")")) (argument_list "(1,10,*puVar4,puVar4[1],puVar4,uVar5,uVar9)" (( "(") (number_literal "1") (, ",") (number_literal "10") (, ",") (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (, ",") (subscript_expression "puVar4[1]" (identifier "puVar4") ([ "[") (number_literal "1") (] "]")) (, ",") (identifier "puVar4") (, ",") (identifier "uVar5") (, ",") (identifier "uVar9") () ")")))) (; ";")) (if_statement "if (iVar7 != 0) {\n      return 2;\n    }" (if "if") (parenthesized_expression "(iVar7 != 0)" (( "(") (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      return 2;\n    }" ({ "{") (return_statement "return 2;" (return "return") (number_literal "2") (; ";")) (} "}"))) (if_statement "if (pcStack_6b0 != (code *)0x0) {\n      iVar7 = (*pcStack_6b0)(1,10,*puVar4,puVar4[1],puVar4,uVar5);\n      if (iVar7 == 7) {\n        uVar9 = 7;\n        goto LAB_00370524;\n      }\n      if (iVar7 != 8) {\n        return 2;\n      }\n    }" (if "if") (parenthesized_expression "(pcStack_6b0 != (code *)0x0)" (( "(") (binary_expression "pcStack_6b0 != (code *)0x0" (identifier "pcStack_6b0") (!= "!=") (cast_expression "(code *)0x0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      iVar7 = (*pcStack_6b0)(1,10,*puVar4,puVar4[1],puVar4,uVar5);\n      if (iVar7 == 7) {\n        uVar9 = 7;\n        goto LAB_00370524;\n      }\n      if (iVar7 != 8) {\n        return 2;\n      }\n    }" ({ "{") (expression_statement "iVar7 = (*pcStack_6b0)(1,10,*puVar4,puVar4[1],puVar4,uVar5);" (assignment_expression "iVar7 = (*pcStack_6b0)(1,10,*puVar4,puVar4[1],puVar4,uVar5)" (identifier "iVar7") (= "=") (call_expression "(*pcStack_6b0)(1,10,*puVar4,puVar4[1],puVar4,uVar5)" (parenthesized_expression "(*pcStack_6b0)" (( "(") (pointer_expression "*pcStack_6b0" (* "*") (identifier "pcStack_6b0")) () ")")) (argument_list "(1,10,*puVar4,puVar4[1],puVar4,uVar5)" (( "(") (number_literal "1") (, ",") (number_literal "10") (, ",") (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (, ",") (subscript_expression "puVar4[1]" (identifier "puVar4") ([ "[") (number_literal "1") (] "]")) (, ",") (identifier "puVar4") (, ",") (identifier "uVar5") () ")")))) (; ";")) (if_statement "if (iVar7 == 7) {\n        uVar9 = 7;\n        goto LAB_00370524;\n      }" (if "if") (parenthesized_expression "(iVar7 == 7)" (( "(") (binary_expression "iVar7 == 7" (identifier "iVar7") (== "==") (number_literal "7")) () ")")) (compound_statement "{\n        uVar9 = 7;\n        goto LAB_00370524;\n      }" ({ "{") (expression_statement "uVar9 = 7;" (assignment_expression "uVar9 = 7" (identifier "uVar9") (= "=") (number_literal "7")) (; ";")) (goto_statement "goto LAB_00370524;" (goto "goto") (statement_identifier "LAB_00370524") (; ";")) (} "}"))) (if_statement "if (iVar7 != 8) {\n        return 2;\n      }" (if "if") (parenthesized_expression "(iVar7 != 8)" (( "(") (binary_expression "iVar7 != 8" (identifier "iVar7") (!= "!=") (number_literal "8")) () ")")) (compound_statement "{\n        return 2;\n      }" ({ "{") (return_statement "return 2;" (return "return") (number_literal "2") (; ";")) (} "}"))) (} "}"))) (expression_statement "iVar1 = iVar1 + 1;" (assignment_expression "iVar1 = iVar1 + 1" (identifier "iVar1") (= "=") (binary_expression "iVar1 + 1" (identifier "iVar1") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "(*pcStack_694)(uVar5,auStack_cb0);" (call_expression "(*pcStack_694)(uVar5,auStack_cb0)" (parenthesized_expression "(*pcStack_694)" (( "(") (pointer_expression "*pcStack_694" (* "*") (identifier "pcStack_694")) () ")")) (argument_list "(uVar5,auStack_cb0)" (( "(") (identifier "uVar5") (, ",") (identifier "auStack_cb0") () ")"))) (; ";")) (} "}"))) (if_statement "if (iVar7 == 5) {\n    iVar7 = (*pcStack_698)(1,0x1a,*puVar4,puVar4[1],puVar4,uVar5,uVar9);\n    uVar9 = 5;\n    if (iVar7 == 0) {\nLAB_00370524:\n      *piStack_660 = iVar1;\n      return uVar9;\n    }\n  }" (if "if") (parenthesized_expression "(iVar7 == 5)" (( "(") (binary_expression "iVar7 == 5" (identifier "iVar7") (== "==") (number_literal "5")) () ")")) (compound_statement "{\n    iVar7 = (*pcStack_698)(1,0x1a,*puVar4,puVar4[1],puVar4,uVar5,uVar9);\n    uVar9 = 5;\n    if (iVar7 == 0) {\nLAB_00370524:\n      *piStack_660 = iVar1;\n      return uVar9;\n    }\n  }" ({ "{") (expression_statement "iVar7 = (*pcStack_698)(1,0x1a,*puVar4,puVar4[1],puVar4,uVar5,uVar9);" (assignment_expression "iVar7 = (*pcStack_698)(1,0x1a,*puVar4,puVar4[1],puVar4,uVar5,uVar9)" (identifier "iVar7") (= "=") (call_expression "(*pcStack_698)(1,0x1a,*puVar4,puVar4[1],puVar4,uVar5,uVar9)" (parenthesized_expression "(*pcStack_698)" (( "(") (pointer_expression "*pcStack_698" (* "*") (identifier "pcStack_698")) () ")")) (argument_list "(1,0x1a,*puVar4,puVar4[1],puVar4,uVar5,uVar9)" (( "(") (number_literal "1") (, ",") (number_literal "0x1a") (, ",") (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (, ",") (subscript_expression "puVar4[1]" (identifier "puVar4") ([ "[") (number_literal "1") (] "]")) (, ",") (identifier "puVar4") (, ",") (identifier "uVar5") (, ",") (identifier "uVar9") () ")")))) (; ";")) (expression_statement "uVar9 = 5;" (assignment_expression "uVar9 = 5" (identifier "uVar9") (= "=") (number_literal "5")) (; ";")) (if_statement "if (iVar7 == 0) {\nLAB_00370524:\n      *piStack_660 = iVar1;\n      return uVar9;\n    }" (if "if") (parenthesized_expression "(iVar7 == 0)" (( "(") (binary_expression "iVar7 == 0" (identifier "iVar7") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00370524:\n      *piStack_660 = iVar1;\n      return uVar9;\n    }" ({ "{") (labeled_statement "LAB_00370524:\n      *piStack_660 = iVar1;" (statement_identifier "LAB_00370524") (: ":") (expression_statement "*piStack_660 = iVar1;" (assignment_expression "*piStack_660 = iVar1" (pointer_expression "*piStack_660" (* "*") (identifier "piStack_660")) (= "=") (identifier "iVar1")) (; ";"))) (return_statement "return uVar9;" (return "return") (identifier "uVar9") (; ";")) (} "}"))) (} "}"))) (return_statement "return 2;" (return "return") (number_literal "2") (; ";")) (} "}")))
(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) 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: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (unary_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (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: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (return_statement (number_literal)))) (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)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (while_statement condition: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) right: (binary_expression left: (identifier) right: (number_literal)))) body: (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) (identifier))))) (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: (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: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (number_literal) (number_literal) (pointer_expression argument: (identifier)) (subscript_expression argument: (identifier) index: (number_literal)) (identifier) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier)))) (return_statement (identifier)))))) (return_statement (number_literal)))))

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

{
  int iVar1;
  int iVar2;
  uint uVar3;
  undefined4 *puVar4;
  uint uVar5;
  int *piVar6;
  int iVar7;
  undefined *puVar8;
  undefined4 uVar9;
  undefined *puVar10;
  code *pcVar11;
  undefined1 auStack_cb0 [1536];
  code *pcStack_6b0;
  code *pcStack_698;
  code *pcStack_694;
  uint uStack_690;
  undefined4 *puStack_68c;
  int iStack_688;
  undefined *puStack_684;
  undefined1 *puStack_680;
  undefined4 uStack_67c;
  undefined4 uStack_678;
  undefined4 uStack_674;
  int iStack_670;
  code *pcStack_66c;
  int *piStack_660;
  undefined4 *local_658;
  int local_654;
  undefined1 auStack_648 [1536];
  code *local_48;
  code *local_30;
  
  local_30 = (code *)(PTR_LAB_0043220c + 0x154);
  iVar7 = 1;
  puVar8 = PTR_LAB_0043220c + -0x1830;
  piVar6 = param_3;
  while( true ) {
    iVar2 = FUN_0036e7d0(param_2,auStack_648);
    uVar3 = 4;
    iVar1 = *(int *)(param_2 + 0x30c) >> 0x1f;
    uVar5 = -iVar1;
    if (param_1[4] != *(int *)(param_2 + 0x2f4) + iVar1) {
      uVar3 = 0;
    }
    if (iVar2 != 0) {
      return 2;
    }
    puVar4 = (undefined4 *)0x1;
    if (local_48 != (code *)0x0) {
      piVar6 = (int *)*param_1;
      uVar5 = uVar3 | 2;
      local_658 = param_1;
      local_654 = param_2;
      iVar1 = (*local_48)();
      if (iVar1 == 7) {
        *param_3 = iVar7;
        return 7;
      }
      if (iVar1 != 8) {
        return 2;
      }
    }
    if (uVar3 != 0) break;
    iVar7 = iVar7 + 1;
    (*local_30)(param_2,auStack_648);
  }
  pcVar11 = FUN_003703a8;
  puVar10 = PTR_abort_00436908;
  (*(code *)PTR_abort_00436908)();
  pcStack_698 = (code *)puVar4[3];
  uStack_678 = 7;
  uStack_674 = 8;
  uStack_67c = 4;
  iVar1 = 1;
  uVar9 = puVar4[4];
  pcStack_694 = (code *)(*(int *)(puVar10 + 0xc1e64) + 0x154);
  uStack_690 = uVar3;
  puStack_68c = param_1;
  iStack_688 = iVar7;
  puStack_684 = puVar8;
  puStack_680 = auStack_648;
  iStack_670 = param_2;
  pcStack_66c = pcVar11;
  piStack_660 = piVar6;
  while (iVar7 = FUN_0036e7d0(uVar5,auStack_cb0), iVar7 == 0) {
    iVar7 = (*pcStack_698)(1,10,*puVar4,puVar4[1],puVar4,uVar5,uVar9);
    if (iVar7 != 0) {
      return 2;
    }
    if (pcStack_6b0 != (code *)0x0) {
      iVar7 = (*pcStack_6b0)(1,10,*puVar4,puVar4[1],puVar4,uVar5);
      if (iVar7 == 7) {
        uVar9 = 7;
        goto LAB_00370524;
      }
      if (iVar7 != 8) {
        return 2;
      }
    }
    iVar1 = iVar1 + 1;
    (*pcStack_694)(uVar5,auStack_cb0);
  }
  if (iVar7 == 5) {
    iVar7 = (*pcStack_698)(1,0x1a,*puVar4,puVar4[1],puVar4,uVar5,uVar9);
    uVar9 = 5;
    if (iVar7 == 0) {
LAB_00370524:
      *piStack_660 = iVar1;
      return uVar9;
    }
  }
  return 2;
}

