
/* WARNING: Removing unreachable block (ram,0x001620b4) */
/* WARNING: Heritage AFTER dead removal. Example location: s0xffffffffffffffb0 : 0x001620c2 */
/* WARNING: Restarted to delay deadcode elimination for space: stack */

int ltc_init_multi(void **a,...)

{
  long lVar1;
  long lVar2;
  undefined *puVar3;
  int iVar4;
  undefined8 in_RCX;
  ulong uVar5;
  undefined8 in_RDX;
  undefined8 *puVar6;
  uint uVar7;
  uint uVar8;
  void **in_RSI;
  undefined8 in_R8;
  undefined8 in_R9;
  long in_FS_OFFSET;
  va_list args;
  va_list clean_list;
  long local_58;
  void **local_50;
  undefined8 local_48;
  undefined8 local_40;
  undefined8 local_38;
  undefined8 local_30;
  
  puVar3 = PTR_ltc_mp_001ddec0;
  lVar1 = *(long *)(in_FS_OFFSET + 0x28);
  args[0].overflow_arg_area = &stack0x00000008;
  args[0].gp_offset = 8;
  local_50 = in_RSI;
  local_48 = in_RDX;
  local_40 = in_RCX;
  local_38 = in_R8;
  local_30 = in_R9;
  if (a != (void **)0x0) {
    uVar7 = 0;
    do {
      iVar4 = (**(code **)(puVar3 + 0x10))();
      if (iVar4 != 0) {
        clean_list[0].overflow_arg_area = &stack0x00000008;
        clean_list[0].gp_offset = 8;
        iVar4 = uVar7 - 1;
        if (uVar7 != 0) {
          uVar8 = uVar7 & 3;
          if (uVar8 == 0) goto LAB_001621c6;
          if (uVar8 != 1) {
            if (uVar8 != 2) {
              (**(code **)(puVar3 + 0x20))(*a);
              clean_list[0].gp_offset = 0x10;
              iVar4 = uVar7 - 2;
              a = local_50;
            }
            (**(code **)(puVar3 + 0x20))(*a);
            if (clean_list[0].gp_offset < 0x30) {
              uVar5 = (ulong)clean_list[0].gp_offset;
              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;
              puVar6 = (undefined8 *)((long)&local_58 + uVar5);
            }
            else {
              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;
              clean_list[0].overflow_arg_area = &stack0x00000010;
            }
            a = (void **)*puVar6;
            iVar4 = iVar4 + -1;
          }
          (**(code **)(puVar3 + 0x20))(*a);
          if (clean_list[0].gp_offset < 0x30) {
            uVar5 = (ulong)clean_list[0].gp_offset;
            clean_list[0].gp_offset = clean_list[0].gp_offset + 8;
            puVar6 = (undefined8 *)((long)&local_58 + uVar5);
          }
          else {
            puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;
            clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);
          }
          a = (void **)*puVar6;
          for (iVar4 = iVar4 + -1; iVar4 != -1; iVar4 = iVar4 + -4) {
LAB_001621c6:
            (**(code **)(puVar3 + 0x20))(*a);
            uVar5 = (ulong)clean_list[0].gp_offset;
            if (clean_list[0].gp_offset < 0x30) {
              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;
              puVar6 = (undefined8 *)((long)&local_58 + uVar5);
            }
            else {
              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;
              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);
            }
            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar6);
            if (clean_list[0].gp_offset < 0x30) {
              uVar5 = (ulong)clean_list[0].gp_offset;
              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;
              puVar6 = (undefined8 *)((long)&local_58 + uVar5);
            }
            else {
              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;
              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);
            }
            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar6);
            if (clean_list[0].gp_offset < 0x30) {
              uVar5 = (ulong)clean_list[0].gp_offset;
              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;
              puVar6 = (undefined8 *)((long)&local_58 + uVar5);
            }
            else {
              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;
              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);
            }
            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar6);
            if (clean_list[0].gp_offset < 0x30) {
              uVar5 = (ulong)clean_list[0].gp_offset;
              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;
              puVar6 = (undefined8 *)((long)&local_58 + uVar5);
            }
            else {
              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;
              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);
            }
            a = (void **)*puVar6;
          }
        }
        iVar4 = 0xd;
        goto LAB_00162039;
      }
      uVar5 = (ulong)args[0].gp_offset;
      uVar7 = uVar7 + 1;
      if (args[0].gp_offset < 0x30) {
        args[0].gp_offset = args[0].gp_offset + 8;
        lVar2 = *(long *)((long)&local_58 + uVar5);
      }
      else {
                    /* WARNING: Load size is inaccurate */
        lVar2 = *args[0].overflow_arg_area;
        args[0].overflow_arg_area = (void *)((long)args[0].overflow_arg_area + 8);
      }
    } while (lVar2 != 0);
  }
  iVar4 = 0;
LAB_00162039:
  if (lVar1 != *(long *)(in_FS_OFFSET + 0x28)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail();
  }
  return iVar4;
}



/* WARNING: Removing unreachable block (ram,0x001620b4) */
/* WARNING: Heritage AFTER dead removal. Example location: s0xffffffffffffffb0 : 0x001620c2 */
/* WARNING: Restarted to delay deadcode elimination for space: stack */

undefined8
ltc_init_multi(undefined8 *param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4,
              undefined8 param_5,undefined8 param_6)

{
  long lVar1;
  long lVar2;
  undefined *puVar3;
  int iVar4;
  undefined8 uVar5;
  ulong uVar6;
  undefined8 *puVar7;
  uint uVar8;
  uint uVar9;
  long in_FS_OFFSET;
  uint local_90;
  long *local_88;
  uint local_78;
  undefined8 *local_70;
  long local_58;
  undefined8 *local_50;
  undefined8 local_48;
  undefined8 local_40;
  undefined8 local_38;
  undefined8 local_30;
  
  puVar3 = PTR_ltc_mp_001ddec0;
  lVar1 = *(long *)(in_FS_OFFSET + 0x28);
  local_88 = (long *)&stack0x00000008;
  local_90 = 8;
  local_50 = param_2;
  local_48 = param_3;
  local_40 = param_4;
  local_38 = param_5;
  local_30 = param_6;
  if (param_1 != (undefined8 *)0x0) {
    uVar8 = 0;
    do {
      iVar4 = (**(code **)(puVar3 + 0x10))();
      if (iVar4 != 0) {
        local_70 = (undefined8 *)&stack0x00000008;
        local_78 = 8;
        iVar4 = uVar8 - 1;
        if (uVar8 != 0) {
          uVar9 = uVar8 & 3;
          if (uVar9 == 0) goto LAB_001621c6;
          if (uVar9 != 1) {
            if (uVar9 != 2) {
              (**(code **)(puVar3 + 0x20))(*param_1);
              local_78 = 0x10;
              iVar4 = uVar8 - 2;
              param_1 = local_50;
            }
            (**(code **)(puVar3 + 0x20))(*param_1);
            if (local_78 < 0x30) {
              uVar6 = (ulong)local_78;
              local_78 = local_78 + 8;
              param_1 = (undefined8 *)((long)&local_58 + uVar6);
            }
            else {
              param_1 = local_70;
              local_70 = (undefined8 *)&stack0x00000010;
            }
            param_1 = (undefined8 *)*param_1;
            iVar4 = iVar4 + -1;
          }
          (**(code **)(puVar3 + 0x20))(*param_1);
          if (local_78 < 0x30) {
            uVar6 = (ulong)local_78;
            local_78 = local_78 + 8;
            param_1 = (undefined8 *)((long)&local_58 + uVar6);
          }
          else {
            param_1 = local_70;
            local_70 = local_70 + 1;
          }
          param_1 = (undefined8 *)*param_1;
          for (iVar4 = iVar4 + -1; iVar4 != -1; iVar4 = iVar4 + -4) {
LAB_001621c6:
            (**(code **)(puVar3 + 0x20))(*param_1);
            uVar6 = (ulong)local_78;
            if (local_78 < 0x30) {
              local_78 = local_78 + 8;
              puVar7 = (undefined8 *)((long)&local_58 + uVar6);
            }
            else {
              puVar7 = local_70;
              local_70 = local_70 + 1;
            }
            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);
            if (local_78 < 0x30) {
              uVar6 = (ulong)local_78;
              local_78 = local_78 + 8;
              puVar7 = (undefined8 *)((long)&local_58 + uVar6);
            }
            else {
              puVar7 = local_70;
              local_70 = local_70 + 1;
            }
            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);
            if (local_78 < 0x30) {
              uVar6 = (ulong)local_78;
              local_78 = local_78 + 8;
              puVar7 = (undefined8 *)((long)&local_58 + uVar6);
            }
            else {
              puVar7 = local_70;
              local_70 = local_70 + 1;
            }
            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);
            if (local_78 < 0x30) {
              uVar6 = (ulong)local_78;
              local_78 = local_78 + 8;
              param_1 = (undefined8 *)((long)&local_58 + uVar6);
            }
            else {
              param_1 = local_70;
              local_70 = local_70 + 1;
            }
            param_1 = (undefined8 *)*param_1;
          }
        }
        uVar5 = 0xd;
        goto LAB_00162039;
      }
      uVar6 = (ulong)local_90;
      uVar8 = uVar8 + 1;
      if (local_90 < 0x30) {
        local_90 = local_90 + 8;
        lVar2 = *(long *)((long)&local_58 + uVar6);
      }
      else {
        lVar2 = *local_88;
        local_88 = local_88 + 1;
      }
    } while (lVar2 != 0);
  }
  uVar5 = 0;
LAB_00162039:
  if (lVar1 != *(long *)(in_FS_OFFSET + 0x28)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail();
  }
  return uVar5;
}


PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x78
MOV qword ptr [RSP + 0x50],RDX
LEA RDX,[RSP + 0x40]
MOV qword ptr [RSP + 0x48],RSI
MOV qword ptr [RSP + 0x58],RCX
MOV qword ptr [RSP + 0x60],R8
MOV qword ptr [RSP + 0x68],R9
MOV RAX,qword ptr FS:[0x28]
MOV qword ptr [RSP + 0x38],RAX
XOR EAX,EAX
LEA RAX,[RSP + 0xa0]
MOV dword ptr [RSP + 0x8],0x8
MOV qword ptr [RSP + 0x10],RAX
MOV qword ptr [RSP + 0x18],RDX
TEST RDI,RDI
JZ 0x00162037
MOV R12,RDI
XOR EBX,EBX
MOV RBP,qword ptr [0x001ddec0]
JMP 0x0016200e
MOV ESI,ECX
ADD RSI,qword ptr [RSP + 0x18]
ADD ECX,0x8
MOV RDI,qword ptr [RSI]
MOV dword ptr [RSP + 0x8],ECX
TEST RDI,RDI
JZ 0x00162037
CALL qword ptr [RBP + 0x10]
TEST EAX,EAX
JNZ 0x00162060
MOV ECX,dword ptr [RSP + 0x8]
ADD EBX,0x1
CMP ECX,0x2f
JBE 0x00161ff8
MOV RSI,qword ptr [RSP + 0x10]
LEA RDI,[RSI + 0x8]
MOV qword ptr [RSP + 0x10],RDI
MOV RDI,qword ptr [RSI]
TEST RDI,RDI
JNZ 0x0016200e
XOR EAX,EAX
MOV RCX,qword ptr [RSP + 0x38]
XOR RCX,qword ptr FS:[0x28]
JNZ 0x00162281
ADD RSP,0x78
POP RBX
POP RBP
POP R12
POP R13
RET
LEA R8,[RSP + 0xa0]
MOV dword ptr [RSP + 0x20],0x8
LEA R9,[RSP + 0x40]
MOV qword ptr [RSP + 0x28],R8
LEA R13D,[RBX + -0x1]
MOV qword ptr [RSP + 0x30],R9
TEST EBX,EBX
JZ 0x00162128
AND EBX,0x3
JZ 0x001621c6
CMP EBX,0x1
JZ 0x001620f2
CMP EBX,0x2
JZ 0x001620c9
MOV RDI,qword ptr [R12]
CALL qword ptr [RBP + 0x20]
MOV R10D,dword ptr [RSP + 0x20]
CMP R10D,0x2f
JBE 0x0016226b
MOV R11,qword ptr [RSP + 0x28]
LEA R12,[R11 + 0x8]
MOV qword ptr [RSP + 0x28],R12
MOV R12,qword ptr [R11]
SUB R13D,0x1
MOV RDI,qword ptr [R12]
CALL qword ptr [RBP + 0x20]
MOV EAX,dword ptr [RSP + 0x20]
CMP EAX,0x2f
JA 0x00162258
MOV EDX,EAX
ADD EAX,0x8
ADD RDX,qword ptr [RSP + 0x30]
MOV dword ptr [RSP + 0x20],EAX
MOV R12,qword ptr [RDX]
SUB R13D,0x1
MOV RDI,qword ptr [R12]
CALL qword ptr [RBP + 0x20]
MOV ECX,dword ptr [RSP + 0x20]
CMP ECX,0x2f
JA 0x00162240
MOV ESI,ECX
ADD ECX,0x8
ADD RSI,qword ptr [RSP + 0x30]
MOV dword ptr [RSP + 0x20],ECX
SUB R13D,0x1
MOV R12,qword ptr [RSI]
CMP R13D,-0x1
JNZ 0x001621c6
NOP dword ptr [RAX]
MOV EAX,0xd
JMP 0x00162039
MOV R9D,R8D
ADD R8D,0x8
ADD R9,qword ptr [RSP + 0x30]
MOV dword ptr [RSP + 0x20],R8D
MOV R11,qword ptr [R9]
SUB R13D,0x1
MOV RDI,qword ptr [R11]
CALL qword ptr [RBP + 0x20]
MOV R12D,dword ptr [RSP + 0x20]
CMP R12D,0x2f
JBE 0x00162200
MOV RDX,qword ptr [RSP + 0x28]
LEA RAX,[RDX + 0x8]
MOV qword ptr [RSP + 0x28],RAX
MOV RBX,qword ptr [RDX]
MOV RDI,qword ptr [RBX]
CALL qword ptr [RBP + 0x20]
MOV ECX,dword ptr [RSP + 0x20]
CMP ECX,0x2f
JBE 0x001621f0
MOV RSI,qword ptr [RSP + 0x28]
LEA RDI,[RSI + 0x8]
MOV qword ptr [RSP + 0x28],RDI
MOV R8,qword ptr [RSI]
MOV RDI,qword ptr [R8]
CALL qword ptr [RBP + 0x20]
MOV R9D,dword ptr [RSP + 0x20]
CMP R9D,0x2f
JBE 0x00162220
MOV R10,qword ptr [RSP + 0x28]
LEA R11,[R10 + 0x8]
MOV qword ptr [RSP + 0x28],R11
SUB R13D,0x3
MOV R12,qword ptr [R10]
CMP R13D,-0x1
JZ 0x00162128
MOV RDI,qword ptr [R12]
CALL qword ptr [RBP + 0x20]
MOV R8D,dword ptr [RSP + 0x20]
CMP R8D,0x2f
JBE 0x00162138
MOV R9,qword ptr [RSP + 0x28]
LEA R10,[R9 + 0x8]
MOV qword ptr [RSP + 0x28],R10
JMP 0x00162149
MOV ESI,ECX
ADD ECX,0x8
ADD RSI,qword ptr [RSP + 0x30]
MOV dword ptr [RSP + 0x20],ECX
JMP 0x00162193
MOV EDX,R12D
ADD R12D,0x8
ADD RDX,qword ptr [RSP + 0x30]
MOV dword ptr [RSP + 0x20],R12D
JMP 0x00162173
MOV R10D,R9D
ADD R9D,0x8
ADD R10,qword ptr [RSP + 0x30]
MOV dword ptr [RSP + 0x20],R9D
JMP 0x001621b5
MOV RSI,qword ptr [RSP + 0x28]
LEA RDI,[RSI + 0x8]
MOV qword ptr [RSP + 0x28],RDI
JMP 0x00162114
MOV RDX,qword ptr [RSP + 0x28]
LEA RBX,[RDX + 0x8]
MOV qword ptr [RSP + 0x28],RBX
JMP 0x001620eb
MOV R11D,R10D
ADD R10D,0x8
ADD R11,qword ptr [RSP + 0x30]
MOV dword ptr [RSP + 0x20],R10D
JMP 0x001620c2
CALL 0x00113880
(translation_unit "/* WARNING: Removing unreachable block (ram,0x001620b4) */\n/* WARNING: Heritage AFTER dead removal. Example location: s0xffffffffffffffb0 : 0x001620c2 */\n/* WARNING: Restarted to delay deadcode elimination for space: stack */\n\nundefined8\nltc_init_multi(undefined8 *param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4,\n              undefined8 param_5,undefined8 param_6)\n\n{\n  long lVar1;\n  long lVar2;\n  undefined *puVar3;\n  int iVar4;\n  undefined8 uVar5;\n  ulong uVar6;\n  undefined8 *puVar7;\n  uint uVar8;\n  uint uVar9;\n  long in_FS_OFFSET;\n  uint local_90;\n  long *local_88;\n  uint local_78;\n  undefined8 *local_70;\n  long local_58;\n  undefined8 *local_50;\n  undefined8 local_48;\n  undefined8 local_40;\n  undefined8 local_38;\n  undefined8 local_30;\n  \n  puVar3 = PTR_ltc_mp_001ddec0;\n  lVar1 = *(long *)(in_FS_OFFSET + 0x28);\n  local_88 = (long *)&stack0x00000008;\n  local_90 = 8;\n  local_50 = param_2;\n  local_48 = param_3;\n  local_40 = param_4;\n  local_38 = param_5;\n  local_30 = param_6;\n  if (param_1 != (undefined8 *)0x0) {\n    uVar8 = 0;\n    do {\n      iVar4 = (**(code **)(puVar3 + 0x10))();\n      if (iVar4 != 0) {\n        local_70 = (undefined8 *)&stack0x00000008;\n        local_78 = 8;\n        iVar4 = uVar8 - 1;\n        if (uVar8 != 0) {\n          uVar9 = uVar8 & 3;\n          if (uVar9 == 0) goto LAB_001621c6;\n          if (uVar9 != 1) {\n            if (uVar9 != 2) {\n              (**(code **)(puVar3 + 0x20))(*param_1);\n              local_78 = 0x10;\n              iVar4 = uVar8 - 2;\n              param_1 = local_50;\n            }\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = (undefined8 *)&stack0x00000010;\n            }\n            param_1 = (undefined8 *)*param_1;\n            iVar4 = iVar4 + -1;\n          }\n          (**(code **)(puVar3 + 0x20))(*param_1);\n          if (local_78 < 0x30) {\n            uVar6 = (ulong)local_78;\n            local_78 = local_78 + 8;\n            param_1 = (undefined8 *)((long)&local_58 + uVar6);\n          }\n          else {\n            param_1 = local_70;\n            local_70 = local_70 + 1;\n          }\n          param_1 = (undefined8 *)*param_1;\n          for (iVar4 = iVar4 + -1; iVar4 != -1; iVar4 = iVar4 + -4) {\nLAB_001621c6:\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            uVar6 = (ulong)local_78;\n            if (local_78 < 0x30) {\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = local_70 + 1;\n            }\n            param_1 = (undefined8 *)*param_1;\n          }\n        }\n        uVar5 = 0xd;\n        goto LAB_00162039;\n      }\n      uVar6 = (ulong)local_90;\n      uVar8 = uVar8 + 1;\n      if (local_90 < 0x30) {\n        local_90 = local_90 + 8;\n        lVar2 = *(long *)((long)&local_58 + uVar6);\n      }\n      else {\n        lVar2 = *local_88;\n        local_88 = local_88 + 1;\n      }\n    } while (lVar2 != 0);\n  }\n  uVar5 = 0;\nLAB_00162039:\n  if (lVar1 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return uVar5;\n}\n\n" comment comment comment (function_definition "undefined8\nltc_init_multi(undefined8 *param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4,\n              undefined8 param_5,undefined8 param_6)\n\n{\n  long lVar1;\n  long lVar2;\n  undefined *puVar3;\n  int iVar4;\n  undefined8 uVar5;\n  ulong uVar6;\n  undefined8 *puVar7;\n  uint uVar8;\n  uint uVar9;\n  long in_FS_OFFSET;\n  uint local_90;\n  long *local_88;\n  uint local_78;\n  undefined8 *local_70;\n  long local_58;\n  undefined8 *local_50;\n  undefined8 local_48;\n  undefined8 local_40;\n  undefined8 local_38;\n  undefined8 local_30;\n  \n  puVar3 = PTR_ltc_mp_001ddec0;\n  lVar1 = *(long *)(in_FS_OFFSET + 0x28);\n  local_88 = (long *)&stack0x00000008;\n  local_90 = 8;\n  local_50 = param_2;\n  local_48 = param_3;\n  local_40 = param_4;\n  local_38 = param_5;\n  local_30 = param_6;\n  if (param_1 != (undefined8 *)0x0) {\n    uVar8 = 0;\n    do {\n      iVar4 = (**(code **)(puVar3 + 0x10))();\n      if (iVar4 != 0) {\n        local_70 = (undefined8 *)&stack0x00000008;\n        local_78 = 8;\n        iVar4 = uVar8 - 1;\n        if (uVar8 != 0) {\n          uVar9 = uVar8 & 3;\n          if (uVar9 == 0) goto LAB_001621c6;\n          if (uVar9 != 1) {\n            if (uVar9 != 2) {\n              (**(code **)(puVar3 + 0x20))(*param_1);\n              local_78 = 0x10;\n              iVar4 = uVar8 - 2;\n              param_1 = local_50;\n            }\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = (undefined8 *)&stack0x00000010;\n            }\n            param_1 = (undefined8 *)*param_1;\n            iVar4 = iVar4 + -1;\n          }\n          (**(code **)(puVar3 + 0x20))(*param_1);\n          if (local_78 < 0x30) {\n            uVar6 = (ulong)local_78;\n            local_78 = local_78 + 8;\n            param_1 = (undefined8 *)((long)&local_58 + uVar6);\n          }\n          else {\n            param_1 = local_70;\n            local_70 = local_70 + 1;\n          }\n          param_1 = (undefined8 *)*param_1;\n          for (iVar4 = iVar4 + -1; iVar4 != -1; iVar4 = iVar4 + -4) {\nLAB_001621c6:\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            uVar6 = (ulong)local_78;\n            if (local_78 < 0x30) {\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = local_70 + 1;\n            }\n            param_1 = (undefined8 *)*param_1;\n          }\n        }\n        uVar5 = 0xd;\n        goto LAB_00162039;\n      }\n      uVar6 = (ulong)local_90;\n      uVar8 = uVar8 + 1;\n      if (local_90 < 0x30) {\n        local_90 = local_90 + 8;\n        lVar2 = *(long *)((long)&local_58 + uVar6);\n      }\n      else {\n        lVar2 = *local_88;\n        local_88 = local_88 + 1;\n      }\n    } while (lVar2 != 0);\n  }\n  uVar5 = 0;\nLAB_00162039:\n  if (lVar1 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return uVar5;\n}" type_identifier (function_declarator "ltc_init_multi(undefined8 *param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4,\n              undefined8 param_5,undefined8 param_6)" identifier (parameter_list "(undefined8 *param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4,\n              undefined8 param_5,undefined8 param_6)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined8 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined8 param_3" type_identifier identifier) , (parameter_declaration "undefined8 param_4" type_identifier identifier) , (parameter_declaration "undefined8 param_5" type_identifier identifier) , (parameter_declaration "undefined8 param_6" type_identifier identifier) ))) (compound_statement "{\n  long lVar1;\n  long lVar2;\n  undefined *puVar3;\n  int iVar4;\n  undefined8 uVar5;\n  ulong uVar6;\n  undefined8 *puVar7;\n  uint uVar8;\n  uint uVar9;\n  long in_FS_OFFSET;\n  uint local_90;\n  long *local_88;\n  uint local_78;\n  undefined8 *local_70;\n  long local_58;\n  undefined8 *local_50;\n  undefined8 local_48;\n  undefined8 local_40;\n  undefined8 local_38;\n  undefined8 local_30;\n  \n  puVar3 = PTR_ltc_mp_001ddec0;\n  lVar1 = *(long *)(in_FS_OFFSET + 0x28);\n  local_88 = (long *)&stack0x00000008;\n  local_90 = 8;\n  local_50 = param_2;\n  local_48 = param_3;\n  local_40 = param_4;\n  local_38 = param_5;\n  local_30 = param_6;\n  if (param_1 != (undefined8 *)0x0) {\n    uVar8 = 0;\n    do {\n      iVar4 = (**(code **)(puVar3 + 0x10))();\n      if (iVar4 != 0) {\n        local_70 = (undefined8 *)&stack0x00000008;\n        local_78 = 8;\n        iVar4 = uVar8 - 1;\n        if (uVar8 != 0) {\n          uVar9 = uVar8 & 3;\n          if (uVar9 == 0) goto LAB_001621c6;\n          if (uVar9 != 1) {\n            if (uVar9 != 2) {\n              (**(code **)(puVar3 + 0x20))(*param_1);\n              local_78 = 0x10;\n              iVar4 = uVar8 - 2;\n              param_1 = local_50;\n            }\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = (undefined8 *)&stack0x00000010;\n            }\n            param_1 = (undefined8 *)*param_1;\n            iVar4 = iVar4 + -1;\n          }\n          (**(code **)(puVar3 + 0x20))(*param_1);\n          if (local_78 < 0x30) {\n            uVar6 = (ulong)local_78;\n            local_78 = local_78 + 8;\n            param_1 = (undefined8 *)((long)&local_58 + uVar6);\n          }\n          else {\n            param_1 = local_70;\n            local_70 = local_70 + 1;\n          }\n          param_1 = (undefined8 *)*param_1;\n          for (iVar4 = iVar4 + -1; iVar4 != -1; iVar4 = iVar4 + -4) {\nLAB_001621c6:\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            uVar6 = (ulong)local_78;\n            if (local_78 < 0x30) {\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = local_70 + 1;\n            }\n            param_1 = (undefined8 *)*param_1;\n          }\n        }\n        uVar5 = 0xd;\n        goto LAB_00162039;\n      }\n      uVar6 = (ulong)local_90;\n      uVar8 = uVar8 + 1;\n      if (local_90 < 0x30) {\n        local_90 = local_90 + 8;\n        lVar2 = *(long *)((long)&local_58 + uVar6);\n      }\n      else {\n        lVar2 = *local_88;\n        local_88 = local_88 + 1;\n      }\n    } while (lVar2 != 0);\n  }\n  uVar5 = 0;\nLAB_00162039:\n  if (lVar1 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return uVar5;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined8 uVar5;" type_identifier identifier ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "undefined8 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "uint local_90;" type_identifier identifier ;) (declaration "long *local_88;" (sized_type_specifier "long" long) (pointer_declarator "*local_88" * identifier) ;) (declaration "uint local_78;" type_identifier identifier ;) (declaration "undefined8 *local_70;" type_identifier (pointer_declarator "*local_70" * identifier) ;) (declaration "long local_58;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *local_50;" type_identifier (pointer_declarator "*local_50" * identifier) ;) (declaration "undefined8 local_48;" type_identifier identifier ;) (declaration "undefined8 local_40;" type_identifier identifier ;) (declaration "undefined8 local_38;" type_identifier identifier ;) (declaration "undefined8 local_30;" type_identifier identifier ;) (expression_statement "puVar3 = PTR_ltc_mp_001ddec0;" (assignment_expression "puVar3 = PTR_ltc_mp_001ddec0" identifier = identifier) ;) (expression_statement "lVar1 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "lVar1 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (expression_statement "local_88 = (long *)&stack0x00000008;" (assignment_expression "local_88 = (long *)&stack0x00000008" identifier = (cast_expression "(long *)&stack0x00000008" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "&stack0x00000008" & identifier))) ;) (expression_statement "local_90 = 8;" (assignment_expression "local_90 = 8" identifier = number_literal) ;) (expression_statement "local_50 = param_2;" (assignment_expression "local_50 = param_2" identifier = identifier) ;) (expression_statement "local_48 = param_3;" (assignment_expression "local_48 = param_3" identifier = identifier) ;) (expression_statement "local_40 = param_4;" (assignment_expression "local_40 = param_4" identifier = identifier) ;) (expression_statement "local_38 = param_5;" (assignment_expression "local_38 = param_5" identifier = identifier) ;) (expression_statement "local_30 = param_6;" (assignment_expression "local_30 = param_6" identifier = identifier) ;) (if_statement "if (param_1 != (undefined8 *)0x0) {\n    uVar8 = 0;\n    do {\n      iVar4 = (**(code **)(puVar3 + 0x10))();\n      if (iVar4 != 0) {\n        local_70 = (undefined8 *)&stack0x00000008;\n        local_78 = 8;\n        iVar4 = uVar8 - 1;\n        if (uVar8 != 0) {\n          uVar9 = uVar8 & 3;\n          if (uVar9 == 0) goto LAB_001621c6;\n          if (uVar9 != 1) {\n            if (uVar9 != 2) {\n              (**(code **)(puVar3 + 0x20))(*param_1);\n              local_78 = 0x10;\n              iVar4 = uVar8 - 2;\n              param_1 = local_50;\n            }\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = (undefined8 *)&stack0x00000010;\n            }\n            param_1 = (undefined8 *)*param_1;\n            iVar4 = iVar4 + -1;\n          }\n          (**(code **)(puVar3 + 0x20))(*param_1);\n          if (local_78 < 0x30) {\n            uVar6 = (ulong)local_78;\n            local_78 = local_78 + 8;\n            param_1 = (undefined8 *)((long)&local_58 + uVar6);\n          }\n          else {\n            param_1 = local_70;\n            local_70 = local_70 + 1;\n          }\n          param_1 = (undefined8 *)*param_1;\n          for (iVar4 = iVar4 + -1; iVar4 != -1; iVar4 = iVar4 + -4) {\nLAB_001621c6:\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            uVar6 = (ulong)local_78;\n            if (local_78 < 0x30) {\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = local_70 + 1;\n            }\n            param_1 = (undefined8 *)*param_1;\n          }\n        }\n        uVar5 = 0xd;\n        goto LAB_00162039;\n      }\n      uVar6 = (ulong)local_90;\n      uVar8 = uVar8 + 1;\n      if (local_90 < 0x30) {\n        local_90 = local_90 + 8;\n        lVar2 = *(long *)((long)&local_58 + uVar6);\n      }\n      else {\n        lVar2 = *local_88;\n        local_88 = local_88 + 1;\n      }\n    } while (lVar2 != 0);\n  }" if (parenthesized_expression "(param_1 != (undefined8 *)0x0)" ( (binary_expression "param_1 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar8 = 0;\n    do {\n      iVar4 = (**(code **)(puVar3 + 0x10))();\n      if (iVar4 != 0) {\n        local_70 = (undefined8 *)&stack0x00000008;\n        local_78 = 8;\n        iVar4 = uVar8 - 1;\n        if (uVar8 != 0) {\n          uVar9 = uVar8 & 3;\n          if (uVar9 == 0) goto LAB_001621c6;\n          if (uVar9 != 1) {\n            if (uVar9 != 2) {\n              (**(code **)(puVar3 + 0x20))(*param_1);\n              local_78 = 0x10;\n              iVar4 = uVar8 - 2;\n              param_1 = local_50;\n            }\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = (undefined8 *)&stack0x00000010;\n            }\n            param_1 = (undefined8 *)*param_1;\n            iVar4 = iVar4 + -1;\n          }\n          (**(code **)(puVar3 + 0x20))(*param_1);\n          if (local_78 < 0x30) {\n            uVar6 = (ulong)local_78;\n            local_78 = local_78 + 8;\n            param_1 = (undefined8 *)((long)&local_58 + uVar6);\n          }\n          else {\n            param_1 = local_70;\n            local_70 = local_70 + 1;\n          }\n          param_1 = (undefined8 *)*param_1;\n          for (iVar4 = iVar4 + -1; iVar4 != -1; iVar4 = iVar4 + -4) {\nLAB_001621c6:\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            uVar6 = (ulong)local_78;\n            if (local_78 < 0x30) {\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = local_70 + 1;\n            }\n            param_1 = (undefined8 *)*param_1;\n          }\n        }\n        uVar5 = 0xd;\n        goto LAB_00162039;\n      }\n      uVar6 = (ulong)local_90;\n      uVar8 = uVar8 + 1;\n      if (local_90 < 0x30) {\n        local_90 = local_90 + 8;\n        lVar2 = *(long *)((long)&local_58 + uVar6);\n      }\n      else {\n        lVar2 = *local_88;\n        local_88 = local_88 + 1;\n      }\n    } while (lVar2 != 0);\n  }" { (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (do_statement "do {\n      iVar4 = (**(code **)(puVar3 + 0x10))();\n      if (iVar4 != 0) {\n        local_70 = (undefined8 *)&stack0x00000008;\n        local_78 = 8;\n        iVar4 = uVar8 - 1;\n        if (uVar8 != 0) {\n          uVar9 = uVar8 & 3;\n          if (uVar9 == 0) goto LAB_001621c6;\n          if (uVar9 != 1) {\n            if (uVar9 != 2) {\n              (**(code **)(puVar3 + 0x20))(*param_1);\n              local_78 = 0x10;\n              iVar4 = uVar8 - 2;\n              param_1 = local_50;\n            }\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = (undefined8 *)&stack0x00000010;\n            }\n            param_1 = (undefined8 *)*param_1;\n            iVar4 = iVar4 + -1;\n          }\n          (**(code **)(puVar3 + 0x20))(*param_1);\n          if (local_78 < 0x30) {\n            uVar6 = (ulong)local_78;\n            local_78 = local_78 + 8;\n            param_1 = (undefined8 *)((long)&local_58 + uVar6);\n          }\n          else {\n            param_1 = local_70;\n            local_70 = local_70 + 1;\n          }\n          param_1 = (undefined8 *)*param_1;\n          for (iVar4 = iVar4 + -1; iVar4 != -1; iVar4 = iVar4 + -4) {\nLAB_001621c6:\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            uVar6 = (ulong)local_78;\n            if (local_78 < 0x30) {\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = local_70 + 1;\n            }\n            param_1 = (undefined8 *)*param_1;\n          }\n        }\n        uVar5 = 0xd;\n        goto LAB_00162039;\n      }\n      uVar6 = (ulong)local_90;\n      uVar8 = uVar8 + 1;\n      if (local_90 < 0x30) {\n        local_90 = local_90 + 8;\n        lVar2 = *(long *)((long)&local_58 + uVar6);\n      }\n      else {\n        lVar2 = *local_88;\n        local_88 = local_88 + 1;\n      }\n    } while (lVar2 != 0);" do (compound_statement "{\n      iVar4 = (**(code **)(puVar3 + 0x10))();\n      if (iVar4 != 0) {\n        local_70 = (undefined8 *)&stack0x00000008;\n        local_78 = 8;\n        iVar4 = uVar8 - 1;\n        if (uVar8 != 0) {\n          uVar9 = uVar8 & 3;\n          if (uVar9 == 0) goto LAB_001621c6;\n          if (uVar9 != 1) {\n            if (uVar9 != 2) {\n              (**(code **)(puVar3 + 0x20))(*param_1);\n              local_78 = 0x10;\n              iVar4 = uVar8 - 2;\n              param_1 = local_50;\n            }\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = (undefined8 *)&stack0x00000010;\n            }\n            param_1 = (undefined8 *)*param_1;\n            iVar4 = iVar4 + -1;\n          }\n          (**(code **)(puVar3 + 0x20))(*param_1);\n          if (local_78 < 0x30) {\n            uVar6 = (ulong)local_78;\n            local_78 = local_78 + 8;\n            param_1 = (undefined8 *)((long)&local_58 + uVar6);\n          }\n          else {\n            param_1 = local_70;\n            local_70 = local_70 + 1;\n          }\n          param_1 = (undefined8 *)*param_1;\n          for (iVar4 = iVar4 + -1; iVar4 != -1; iVar4 = iVar4 + -4) {\nLAB_001621c6:\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            uVar6 = (ulong)local_78;\n            if (local_78 < 0x30) {\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = local_70 + 1;\n            }\n            param_1 = (undefined8 *)*param_1;\n          }\n        }\n        uVar5 = 0xd;\n        goto LAB_00162039;\n      }\n      uVar6 = (ulong)local_90;\n      uVar8 = uVar8 + 1;\n      if (local_90 < 0x30) {\n        local_90 = local_90 + 8;\n        lVar2 = *(long *)((long)&local_58 + uVar6);\n      }\n      else {\n        lVar2 = *local_88;\n        local_88 = local_88 + 1;\n      }\n    }" { (expression_statement "iVar4 = (**(code **)(puVar3 + 0x10))();" (assignment_expression "iVar4 = (**(code **)(puVar3 + 0x10))()" identifier = (call_expression "(**(code **)(puVar3 + 0x10))()" (parenthesized_expression "(**(code **)(puVar3 + 0x10))" ( (pointer_expression "**(code **)(puVar3 + 0x10)" * (pointer_expression "*(code **)(puVar3 + 0x10)" * (cast_expression "(code **)(puVar3 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + 0x10)" ( (binary_expression "puVar3 + 0x10" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) (if_statement "if (iVar4 != 0) {\n        local_70 = (undefined8 *)&stack0x00000008;\n        local_78 = 8;\n        iVar4 = uVar8 - 1;\n        if (uVar8 != 0) {\n          uVar9 = uVar8 & 3;\n          if (uVar9 == 0) goto LAB_001621c6;\n          if (uVar9 != 1) {\n            if (uVar9 != 2) {\n              (**(code **)(puVar3 + 0x20))(*param_1);\n              local_78 = 0x10;\n              iVar4 = uVar8 - 2;\n              param_1 = local_50;\n            }\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = (undefined8 *)&stack0x00000010;\n            }\n            param_1 = (undefined8 *)*param_1;\n            iVar4 = iVar4 + -1;\n          }\n          (**(code **)(puVar3 + 0x20))(*param_1);\n          if (local_78 < 0x30) {\n            uVar6 = (ulong)local_78;\n            local_78 = local_78 + 8;\n            param_1 = (undefined8 *)((long)&local_58 + uVar6);\n          }\n          else {\n            param_1 = local_70;\n            local_70 = local_70 + 1;\n          }\n          param_1 = (undefined8 *)*param_1;\n          for (iVar4 = iVar4 + -1; iVar4 != -1; iVar4 = iVar4 + -4) {\nLAB_001621c6:\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            uVar6 = (ulong)local_78;\n            if (local_78 < 0x30) {\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = local_70 + 1;\n            }\n            param_1 = (undefined8 *)*param_1;\n          }\n        }\n        uVar5 = 0xd;\n        goto LAB_00162039;\n      }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n        local_70 = (undefined8 *)&stack0x00000008;\n        local_78 = 8;\n        iVar4 = uVar8 - 1;\n        if (uVar8 != 0) {\n          uVar9 = uVar8 & 3;\n          if (uVar9 == 0) goto LAB_001621c6;\n          if (uVar9 != 1) {\n            if (uVar9 != 2) {\n              (**(code **)(puVar3 + 0x20))(*param_1);\n              local_78 = 0x10;\n              iVar4 = uVar8 - 2;\n              param_1 = local_50;\n            }\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = (undefined8 *)&stack0x00000010;\n            }\n            param_1 = (undefined8 *)*param_1;\n            iVar4 = iVar4 + -1;\n          }\n          (**(code **)(puVar3 + 0x20))(*param_1);\n          if (local_78 < 0x30) {\n            uVar6 = (ulong)local_78;\n            local_78 = local_78 + 8;\n            param_1 = (undefined8 *)((long)&local_58 + uVar6);\n          }\n          else {\n            param_1 = local_70;\n            local_70 = local_70 + 1;\n          }\n          param_1 = (undefined8 *)*param_1;\n          for (iVar4 = iVar4 + -1; iVar4 != -1; iVar4 = iVar4 + -4) {\nLAB_001621c6:\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            uVar6 = (ulong)local_78;\n            if (local_78 < 0x30) {\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = local_70 + 1;\n            }\n            param_1 = (undefined8 *)*param_1;\n          }\n        }\n        uVar5 = 0xd;\n        goto LAB_00162039;\n      }" { (expression_statement "local_70 = (undefined8 *)&stack0x00000008;" (assignment_expression "local_70 = (undefined8 *)&stack0x00000008" identifier = (cast_expression "(undefined8 *)&stack0x00000008" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&stack0x00000008" & identifier))) ;) (expression_statement "local_78 = 8;" (assignment_expression "local_78 = 8" identifier = number_literal) ;) (expression_statement "iVar4 = uVar8 - 1;" (assignment_expression "iVar4 = uVar8 - 1" identifier = (binary_expression "uVar8 - 1" identifier - number_literal)) ;) (if_statement "if (uVar8 != 0) {\n          uVar9 = uVar8 & 3;\n          if (uVar9 == 0) goto LAB_001621c6;\n          if (uVar9 != 1) {\n            if (uVar9 != 2) {\n              (**(code **)(puVar3 + 0x20))(*param_1);\n              local_78 = 0x10;\n              iVar4 = uVar8 - 2;\n              param_1 = local_50;\n            }\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = (undefined8 *)&stack0x00000010;\n            }\n            param_1 = (undefined8 *)*param_1;\n            iVar4 = iVar4 + -1;\n          }\n          (**(code **)(puVar3 + 0x20))(*param_1);\n          if (local_78 < 0x30) {\n            uVar6 = (ulong)local_78;\n            local_78 = local_78 + 8;\n            param_1 = (undefined8 *)((long)&local_58 + uVar6);\n          }\n          else {\n            param_1 = local_70;\n            local_70 = local_70 + 1;\n          }\n          param_1 = (undefined8 *)*param_1;\n          for (iVar4 = iVar4 + -1; iVar4 != -1; iVar4 = iVar4 + -4) {\nLAB_001621c6:\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            uVar6 = (ulong)local_78;\n            if (local_78 < 0x30) {\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = local_70 + 1;\n            }\n            param_1 = (undefined8 *)*param_1;\n          }\n        }" if (parenthesized_expression "(uVar8 != 0)" ( (binary_expression "uVar8 != 0" identifier != number_literal) )) (compound_statement "{\n          uVar9 = uVar8 & 3;\n          if (uVar9 == 0) goto LAB_001621c6;\n          if (uVar9 != 1) {\n            if (uVar9 != 2) {\n              (**(code **)(puVar3 + 0x20))(*param_1);\n              local_78 = 0x10;\n              iVar4 = uVar8 - 2;\n              param_1 = local_50;\n            }\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = (undefined8 *)&stack0x00000010;\n            }\n            param_1 = (undefined8 *)*param_1;\n            iVar4 = iVar4 + -1;\n          }\n          (**(code **)(puVar3 + 0x20))(*param_1);\n          if (local_78 < 0x30) {\n            uVar6 = (ulong)local_78;\n            local_78 = local_78 + 8;\n            param_1 = (undefined8 *)((long)&local_58 + uVar6);\n          }\n          else {\n            param_1 = local_70;\n            local_70 = local_70 + 1;\n          }\n          param_1 = (undefined8 *)*param_1;\n          for (iVar4 = iVar4 + -1; iVar4 != -1; iVar4 = iVar4 + -4) {\nLAB_001621c6:\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            uVar6 = (ulong)local_78;\n            if (local_78 < 0x30) {\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = local_70 + 1;\n            }\n            param_1 = (undefined8 *)*param_1;\n          }\n        }" { (expression_statement "uVar9 = uVar8 & 3;" (assignment_expression "uVar9 = uVar8 & 3" identifier = (binary_expression "uVar8 & 3" identifier & number_literal)) ;) (if_statement "if (uVar9 == 0) goto LAB_001621c6;" if (parenthesized_expression "(uVar9 == 0)" ( (binary_expression "uVar9 == 0" identifier == number_literal) )) (goto_statement "goto LAB_001621c6;" goto statement_identifier ;)) (if_statement "if (uVar9 != 1) {\n            if (uVar9 != 2) {\n              (**(code **)(puVar3 + 0x20))(*param_1);\n              local_78 = 0x10;\n              iVar4 = uVar8 - 2;\n              param_1 = local_50;\n            }\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = (undefined8 *)&stack0x00000010;\n            }\n            param_1 = (undefined8 *)*param_1;\n            iVar4 = iVar4 + -1;\n          }" if (parenthesized_expression "(uVar9 != 1)" ( (binary_expression "uVar9 != 1" identifier != number_literal) )) (compound_statement "{\n            if (uVar9 != 2) {\n              (**(code **)(puVar3 + 0x20))(*param_1);\n              local_78 = 0x10;\n              iVar4 = uVar8 - 2;\n              param_1 = local_50;\n            }\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = (undefined8 *)&stack0x00000010;\n            }\n            param_1 = (undefined8 *)*param_1;\n            iVar4 = iVar4 + -1;\n          }" { (if_statement "if (uVar9 != 2) {\n              (**(code **)(puVar3 + 0x20))(*param_1);\n              local_78 = 0x10;\n              iVar4 = uVar8 - 2;\n              param_1 = local_50;\n            }" if (parenthesized_expression "(uVar9 != 2)" ( (binary_expression "uVar9 != 2" identifier != number_literal) )) (compound_statement "{\n              (**(code **)(puVar3 + 0x20))(*param_1);\n              local_78 = 0x10;\n              iVar4 = uVar8 - 2;\n              param_1 = local_50;\n            }" { (expression_statement "(**(code **)(puVar3 + 0x20))(*param_1);" (call_expression "(**(code **)(puVar3 + 0x20))(*param_1)" (parenthesized_expression "(**(code **)(puVar3 + 0x20))" ( (pointer_expression "**(code **)(puVar3 + 0x20)" * (pointer_expression "*(code **)(puVar3 + 0x20)" * (cast_expression "(code **)(puVar3 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + 0x20)" ( (binary_expression "puVar3 + 0x20" identifier + number_literal) ))))) )) (argument_list "(*param_1)" ( (pointer_expression "*param_1" * identifier) ))) ;) (expression_statement "local_78 = 0x10;" (assignment_expression "local_78 = 0x10" identifier = number_literal) ;) (expression_statement "iVar4 = uVar8 - 2;" (assignment_expression "iVar4 = uVar8 - 2" identifier = (binary_expression "uVar8 - 2" identifier - number_literal)) ;) (expression_statement "param_1 = local_50;" (assignment_expression "param_1 = local_50" identifier = identifier) ;) })) (expression_statement "(**(code **)(puVar3 + 0x20))(*param_1);" (call_expression "(**(code **)(puVar3 + 0x20))(*param_1)" (parenthesized_expression "(**(code **)(puVar3 + 0x20))" ( (pointer_expression "**(code **)(puVar3 + 0x20)" * (pointer_expression "*(code **)(puVar3 + 0x20)" * (cast_expression "(code **)(puVar3 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + 0x20)" ( (binary_expression "puVar3 + 0x20" identifier + number_literal) ))))) )) (argument_list "(*param_1)" ( (pointer_expression "*param_1" * identifier) ))) ;) (if_statement "if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = (undefined8 *)&stack0x00000010;\n            }" if (parenthesized_expression "(local_78 < 0x30)" ( (binary_expression "local_78 < 0x30" identifier < number_literal) )) (compound_statement "{\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }" { (expression_statement "uVar6 = (ulong)local_78;" (assignment_expression "uVar6 = (ulong)local_78" identifier = (cast_expression "(ulong)local_78" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "local_78 = local_78 + 8;" (assignment_expression "local_78 = local_78 + 8" identifier = (binary_expression "local_78 + 8" identifier + number_literal)) ;) (expression_statement "param_1 = (undefined8 *)((long)&local_58 + uVar6);" (assignment_expression "param_1 = (undefined8 *)((long)&local_58 + uVar6)" identifier = (cast_expression "(undefined8 *)((long)&local_58 + uVar6)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&local_58 + uVar6)" ( (binary_expression "(long)&local_58 + uVar6" (cast_expression "(long)&local_58" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&local_58" & identifier)) + identifier) )))) ;) }) (else_clause "else {\n              param_1 = local_70;\n              local_70 = (undefined8 *)&stack0x00000010;\n            }" else (compound_statement "{\n              param_1 = local_70;\n              local_70 = (undefined8 *)&stack0x00000010;\n            }" { (expression_statement "param_1 = local_70;" (assignment_expression "param_1 = local_70" identifier = identifier) ;) (expression_statement "local_70 = (undefined8 *)&stack0x00000010;" (assignment_expression "local_70 = (undefined8 *)&stack0x00000010" identifier = (cast_expression "(undefined8 *)&stack0x00000010" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&stack0x00000010" & identifier))) ;) }))) (expression_statement "param_1 = (undefined8 *)*param_1;" (assignment_expression "param_1 = (undefined8 *)*param_1" identifier = (cast_expression "(undefined8 *)*param_1" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ;) })) (expression_statement "(**(code **)(puVar3 + 0x20))(*param_1);" (call_expression "(**(code **)(puVar3 + 0x20))(*param_1)" (parenthesized_expression "(**(code **)(puVar3 + 0x20))" ( (pointer_expression "**(code **)(puVar3 + 0x20)" * (pointer_expression "*(code **)(puVar3 + 0x20)" * (cast_expression "(code **)(puVar3 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + 0x20)" ( (binary_expression "puVar3 + 0x20" identifier + number_literal) ))))) )) (argument_list "(*param_1)" ( (pointer_expression "*param_1" * identifier) ))) ;) (if_statement "if (local_78 < 0x30) {\n            uVar6 = (ulong)local_78;\n            local_78 = local_78 + 8;\n            param_1 = (undefined8 *)((long)&local_58 + uVar6);\n          }\n          else {\n            param_1 = local_70;\n            local_70 = local_70 + 1;\n          }" if (parenthesized_expression "(local_78 < 0x30)" ( (binary_expression "local_78 < 0x30" identifier < number_literal) )) (compound_statement "{\n            uVar6 = (ulong)local_78;\n            local_78 = local_78 + 8;\n            param_1 = (undefined8 *)((long)&local_58 + uVar6);\n          }" { (expression_statement "uVar6 = (ulong)local_78;" (assignment_expression "uVar6 = (ulong)local_78" identifier = (cast_expression "(ulong)local_78" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "local_78 = local_78 + 8;" (assignment_expression "local_78 = local_78 + 8" identifier = (binary_expression "local_78 + 8" identifier + number_literal)) ;) (expression_statement "param_1 = (undefined8 *)((long)&local_58 + uVar6);" (assignment_expression "param_1 = (undefined8 *)((long)&local_58 + uVar6)" identifier = (cast_expression "(undefined8 *)((long)&local_58 + uVar6)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&local_58 + uVar6)" ( (binary_expression "(long)&local_58 + uVar6" (cast_expression "(long)&local_58" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&local_58" & identifier)) + identifier) )))) ;) }) (else_clause "else {\n            param_1 = local_70;\n            local_70 = local_70 + 1;\n          }" else (compound_statement "{\n            param_1 = local_70;\n            local_70 = local_70 + 1;\n          }" { (expression_statement "param_1 = local_70;" (assignment_expression "param_1 = local_70" identifier = identifier) ;) (expression_statement "local_70 = local_70 + 1;" (assignment_expression "local_70 = local_70 + 1" identifier = (binary_expression "local_70 + 1" identifier + number_literal)) ;) }))) (expression_statement "param_1 = (undefined8 *)*param_1;" (assignment_expression "param_1 = (undefined8 *)*param_1" identifier = (cast_expression "(undefined8 *)*param_1" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (for_statement "for (iVar4 = iVar4 + -1; iVar4 != -1; iVar4 = iVar4 + -4) {\nLAB_001621c6:\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            uVar6 = (ulong)local_78;\n            if (local_78 < 0x30) {\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = local_70 + 1;\n            }\n            param_1 = (undefined8 *)*param_1;\n          }" for ( (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ; (binary_expression "iVar4 != -1" identifier != number_literal) ; (assignment_expression "iVar4 = iVar4 + -4" identifier = (binary_expression "iVar4 + -4" identifier + number_literal)) ) (compound_statement "{\nLAB_001621c6:\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            uVar6 = (ulong)local_78;\n            if (local_78 < 0x30) {\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = local_70 + 1;\n            }\n            param_1 = (undefined8 *)*param_1;\n          }" { (labeled_statement "LAB_001621c6:\n            (**(code **)(puVar3 + 0x20))(*param_1);" statement_identifier : (expression_statement "(**(code **)(puVar3 + 0x20))(*param_1);" (call_expression "(**(code **)(puVar3 + 0x20))(*param_1)" (parenthesized_expression "(**(code **)(puVar3 + 0x20))" ( (pointer_expression "**(code **)(puVar3 + 0x20)" * (pointer_expression "*(code **)(puVar3 + 0x20)" * (cast_expression "(code **)(puVar3 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + 0x20)" ( (binary_expression "puVar3 + 0x20" identifier + number_literal) ))))) )) (argument_list "(*param_1)" ( (pointer_expression "*param_1" * identifier) ))) ;)) (expression_statement "uVar6 = (ulong)local_78;" (assignment_expression "uVar6 = (ulong)local_78" identifier = (cast_expression "(ulong)local_78" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (if_statement "if (local_78 < 0x30) {\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }" if (parenthesized_expression "(local_78 < 0x30)" ( (binary_expression "local_78 < 0x30" identifier < number_literal) )) (compound_statement "{\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }" { (expression_statement "local_78 = local_78 + 8;" (assignment_expression "local_78 = local_78 + 8" identifier = (binary_expression "local_78 + 8" identifier + number_literal)) ;) (expression_statement "puVar7 = (undefined8 *)((long)&local_58 + uVar6);" (assignment_expression "puVar7 = (undefined8 *)((long)&local_58 + uVar6)" identifier = (cast_expression "(undefined8 *)((long)&local_58 + uVar6)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&local_58 + uVar6)" ( (binary_expression "(long)&local_58 + uVar6" (cast_expression "(long)&local_58" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&local_58" & identifier)) + identifier) )))) ;) }) (else_clause "else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }" else (compound_statement "{\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }" { (expression_statement "puVar7 = local_70;" (assignment_expression "puVar7 = local_70" identifier = identifier) ;) (expression_statement "local_70 = local_70 + 1;" (assignment_expression "local_70 = local_70 + 1" identifier = (binary_expression "local_70 + 1" identifier + number_literal)) ;) }))) (expression_statement "(**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);" (call_expression "(**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7)" (parenthesized_expression "(**(code **)(puVar3 + 0x20))" ( (pointer_expression "**(code **)(puVar3 + 0x20)" * (pointer_expression "*(code **)(puVar3 + 0x20)" * (cast_expression "(code **)(puVar3 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + 0x20)" ( (binary_expression "puVar3 + 0x20" identifier + number_literal) ))))) )) (argument_list "(*(undefined8 *)*puVar7)" ( (pointer_expression "*(undefined8 *)*puVar7" * (cast_expression "(undefined8 *)*puVar7" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar7" * identifier))) ))) ;) (if_statement "if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }" if (parenthesized_expression "(local_78 < 0x30)" ( (binary_expression "local_78 < 0x30" identifier < number_literal) )) (compound_statement "{\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }" { (expression_statement "uVar6 = (ulong)local_78;" (assignment_expression "uVar6 = (ulong)local_78" identifier = (cast_expression "(ulong)local_78" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "local_78 = local_78 + 8;" (assignment_expression "local_78 = local_78 + 8" identifier = (binary_expression "local_78 + 8" identifier + number_literal)) ;) (expression_statement "puVar7 = (undefined8 *)((long)&local_58 + uVar6);" (assignment_expression "puVar7 = (undefined8 *)((long)&local_58 + uVar6)" identifier = (cast_expression "(undefined8 *)((long)&local_58 + uVar6)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&local_58 + uVar6)" ( (binary_expression "(long)&local_58 + uVar6" (cast_expression "(long)&local_58" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&local_58" & identifier)) + identifier) )))) ;) }) (else_clause "else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }" else (compound_statement "{\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }" { (expression_statement "puVar7 = local_70;" (assignment_expression "puVar7 = local_70" identifier = identifier) ;) (expression_statement "local_70 = local_70 + 1;" (assignment_expression "local_70 = local_70 + 1" identifier = (binary_expression "local_70 + 1" identifier + number_literal)) ;) }))) (expression_statement "(**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);" (call_expression "(**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7)" (parenthesized_expression "(**(code **)(puVar3 + 0x20))" ( (pointer_expression "**(code **)(puVar3 + 0x20)" * (pointer_expression "*(code **)(puVar3 + 0x20)" * (cast_expression "(code **)(puVar3 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + 0x20)" ( (binary_expression "puVar3 + 0x20" identifier + number_literal) ))))) )) (argument_list "(*(undefined8 *)*puVar7)" ( (pointer_expression "*(undefined8 *)*puVar7" * (cast_expression "(undefined8 *)*puVar7" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar7" * identifier))) ))) ;) (if_statement "if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }" if (parenthesized_expression "(local_78 < 0x30)" ( (binary_expression "local_78 < 0x30" identifier < number_literal) )) (compound_statement "{\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }" { (expression_statement "uVar6 = (ulong)local_78;" (assignment_expression "uVar6 = (ulong)local_78" identifier = (cast_expression "(ulong)local_78" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "local_78 = local_78 + 8;" (assignment_expression "local_78 = local_78 + 8" identifier = (binary_expression "local_78 + 8" identifier + number_literal)) ;) (expression_statement "puVar7 = (undefined8 *)((long)&local_58 + uVar6);" (assignment_expression "puVar7 = (undefined8 *)((long)&local_58 + uVar6)" identifier = (cast_expression "(undefined8 *)((long)&local_58 + uVar6)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&local_58 + uVar6)" ( (binary_expression "(long)&local_58 + uVar6" (cast_expression "(long)&local_58" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&local_58" & identifier)) + identifier) )))) ;) }) (else_clause "else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }" else (compound_statement "{\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }" { (expression_statement "puVar7 = local_70;" (assignment_expression "puVar7 = local_70" identifier = identifier) ;) (expression_statement "local_70 = local_70 + 1;" (assignment_expression "local_70 = local_70 + 1" identifier = (binary_expression "local_70 + 1" identifier + number_literal)) ;) }))) (expression_statement "(**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);" (call_expression "(**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7)" (parenthesized_expression "(**(code **)(puVar3 + 0x20))" ( (pointer_expression "**(code **)(puVar3 + 0x20)" * (pointer_expression "*(code **)(puVar3 + 0x20)" * (cast_expression "(code **)(puVar3 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + 0x20)" ( (binary_expression "puVar3 + 0x20" identifier + number_literal) ))))) )) (argument_list "(*(undefined8 *)*puVar7)" ( (pointer_expression "*(undefined8 *)*puVar7" * (cast_expression "(undefined8 *)*puVar7" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar7" * identifier))) ))) ;) (if_statement "if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = local_70 + 1;\n            }" if (parenthesized_expression "(local_78 < 0x30)" ( (binary_expression "local_78 < 0x30" identifier < number_literal) )) (compound_statement "{\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }" { (expression_statement "uVar6 = (ulong)local_78;" (assignment_expression "uVar6 = (ulong)local_78" identifier = (cast_expression "(ulong)local_78" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "local_78 = local_78 + 8;" (assignment_expression "local_78 = local_78 + 8" identifier = (binary_expression "local_78 + 8" identifier + number_literal)) ;) (expression_statement "param_1 = (undefined8 *)((long)&local_58 + uVar6);" (assignment_expression "param_1 = (undefined8 *)((long)&local_58 + uVar6)" identifier = (cast_expression "(undefined8 *)((long)&local_58 + uVar6)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&local_58 + uVar6)" ( (binary_expression "(long)&local_58 + uVar6" (cast_expression "(long)&local_58" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&local_58" & identifier)) + identifier) )))) ;) }) (else_clause "else {\n              param_1 = local_70;\n              local_70 = local_70 + 1;\n            }" else (compound_statement "{\n              param_1 = local_70;\n              local_70 = local_70 + 1;\n            }" { (expression_statement "param_1 = local_70;" (assignment_expression "param_1 = local_70" identifier = identifier) ;) (expression_statement "local_70 = local_70 + 1;" (assignment_expression "local_70 = local_70 + 1" identifier = (binary_expression "local_70 + 1" identifier + number_literal)) ;) }))) (expression_statement "param_1 = (undefined8 *)*param_1;" (assignment_expression "param_1 = (undefined8 *)*param_1" identifier = (cast_expression "(undefined8 *)*param_1" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) })) })) (expression_statement "uVar5 = 0xd;" (assignment_expression "uVar5 = 0xd" identifier = number_literal) ;) (goto_statement "goto LAB_00162039;" goto statement_identifier ;) })) (expression_statement "uVar6 = (ulong)local_90;" (assignment_expression "uVar6 = (ulong)local_90" identifier = (cast_expression "(ulong)local_90" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "uVar8 = uVar8 + 1;" (assignment_expression "uVar8 = uVar8 + 1" identifier = (binary_expression "uVar8 + 1" identifier + number_literal)) ;) (if_statement "if (local_90 < 0x30) {\n        local_90 = local_90 + 8;\n        lVar2 = *(long *)((long)&local_58 + uVar6);\n      }\n      else {\n        lVar2 = *local_88;\n        local_88 = local_88 + 1;\n      }" if (parenthesized_expression "(local_90 < 0x30)" ( (binary_expression "local_90 < 0x30" identifier < number_literal) )) (compound_statement "{\n        local_90 = local_90 + 8;\n        lVar2 = *(long *)((long)&local_58 + uVar6);\n      }" { (expression_statement "local_90 = local_90 + 8;" (assignment_expression "local_90 = local_90 + 8" identifier = (binary_expression "local_90 + 8" identifier + number_literal)) ;) (expression_statement "lVar2 = *(long *)((long)&local_58 + uVar6);" (assignment_expression "lVar2 = *(long *)((long)&local_58 + uVar6)" identifier = (pointer_expression "*(long *)((long)&local_58 + uVar6)" * (cast_expression "(long *)((long)&local_58 + uVar6)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&local_58 + uVar6)" ( (binary_expression "(long)&local_58 + uVar6" (cast_expression "(long)&local_58" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&local_58" & identifier)) + identifier) ))))) ;) }) (else_clause "else {\n        lVar2 = *local_88;\n        local_88 = local_88 + 1;\n      }" else (compound_statement "{\n        lVar2 = *local_88;\n        local_88 = local_88 + 1;\n      }" { (expression_statement "lVar2 = *local_88;" (assignment_expression "lVar2 = *local_88" identifier = (pointer_expression "*local_88" * identifier)) ;) (expression_statement "local_88 = local_88 + 1;" (assignment_expression "local_88 = local_88 + 1" identifier = (binary_expression "local_88 + 1" identifier + number_literal)) ;) }))) }) while (parenthesized_expression "(lVar2 != 0)" ( (binary_expression "lVar2 != 0" identifier != number_literal) )) ;) })) (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00162039:\n  if (lVar1 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" statement_identifier : (if_statement "if (lVar1 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" if (parenthesized_expression "(lVar1 != *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "lVar1 != *(long *)(in_FS_OFFSET + 0x28)" identifier != (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" { comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return uVar5;" return identifier ;) })))
(translation_unit "/* WARNING: Removing unreachable block (ram,0x001620b4) */\n/* WARNING: Heritage AFTER dead removal. Example location: s0xffffffffffffffb0 : 0x001620c2 */\n/* WARNING: Restarted to delay deadcode elimination for space: stack */\n\nint ltc_init_multi(void **a,...)\n\n{\n  long lVar1;\n  long lVar2;\n  undefined *puVar3;\n  int iVar4;\n  undefined8 in_RCX;\n  ulong uVar5;\n  undefined8 in_RDX;\n  undefined8 *puVar6;\n  uint uVar7;\n  uint uVar8;\n  void **in_RSI;\n  undefined8 in_R8;\n  undefined8 in_R9;\n  long in_FS_OFFSET;\n  va_list args;\n  va_list clean_list;\n  long local_58;\n  void **local_50;\n  undefined8 local_48;\n  undefined8 local_40;\n  undefined8 local_38;\n  undefined8 local_30;\n  \n  puVar3 = PTR_ltc_mp_001ddec0;\n  lVar1 = *(long *)(in_FS_OFFSET + 0x28);\n  args[0].overflow_arg_area = &stack0x00000008;\n  args[0].gp_offset = 8;\n  local_50 = in_RSI;\n  local_48 = in_RDX;\n  local_40 = in_RCX;\n  local_38 = in_R8;\n  local_30 = in_R9;\n  if (a != (void **)0x0) {\n    uVar7 = 0;\n    do {\n      iVar4 = (**(code **)(puVar3 + 0x10))();\n      if (iVar4 != 0) {\n        clean_list[0].overflow_arg_area = &stack0x00000008;\n        clean_list[0].gp_offset = 8;\n        iVar4 = uVar7 - 1;\n        if (uVar7 != 0) {\n          uVar8 = uVar7 & 3;\n          if (uVar8 == 0) goto LAB_001621c6;\n          if (uVar8 != 1) {\n            if (uVar8 != 2) {\n              (**(code **)(puVar3 + 0x20))(*a);\n              clean_list[0].gp_offset = 0x10;\n              iVar4 = uVar7 - 2;\n              a = local_50;\n            }\n            (**(code **)(puVar3 + 0x20))(*a);\n            if (clean_list[0].gp_offset < 0x30) {\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = &stack0x00000010;\n            }\n            a = (void **)*puVar6;\n            iVar4 = iVar4 + -1;\n          }\n          (**(code **)(puVar3 + 0x20))(*a);\n          if (clean_list[0].gp_offset < 0x30) {\n            uVar5 = (ulong)clean_list[0].gp_offset;\n            clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n            puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n          }\n          else {\n            puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n            clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n          }\n          a = (void **)*puVar6;\n          for (iVar4 = iVar4 + -1; iVar4 != -1; iVar4 = iVar4 + -4) {\nLAB_001621c6:\n            (**(code **)(puVar3 + 0x20))(*a);\n            uVar5 = (ulong)clean_list[0].gp_offset;\n            if (clean_list[0].gp_offset < 0x30) {\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar6);\n            if (clean_list[0].gp_offset < 0x30) {\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar6);\n            if (clean_list[0].gp_offset < 0x30) {\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar6);\n            if (clean_list[0].gp_offset < 0x30) {\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }\n            a = (void **)*puVar6;\n          }\n        }\n        iVar4 = 0xd;\n        goto LAB_00162039;\n      }\n      uVar5 = (ulong)args[0].gp_offset;\n      uVar7 = uVar7 + 1;\n      if (args[0].gp_offset < 0x30) {\n        args[0].gp_offset = args[0].gp_offset + 8;\n        lVar2 = *(long *)((long)&local_58 + uVar5);\n      }\n      else {\n                    /* WARNING: Load size is inaccurate */\n        lVar2 = *args[0].overflow_arg_area;\n        args[0].overflow_arg_area = (void *)((long)args[0].overflow_arg_area + 8);\n      }\n    } while (lVar2 != 0);\n  }\n  iVar4 = 0;\nLAB_00162039:\n  if (lVar1 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return iVar4;\n}\n\n" comment comment comment (function_definition "int ltc_init_multi(void **a,...)\n\n{\n  long lVar1;\n  long lVar2;\n  undefined *puVar3;\n  int iVar4;\n  undefined8 in_RCX;\n  ulong uVar5;\n  undefined8 in_RDX;\n  undefined8 *puVar6;\n  uint uVar7;\n  uint uVar8;\n  void **in_RSI;\n  undefined8 in_R8;\n  undefined8 in_R9;\n  long in_FS_OFFSET;\n  va_list args;\n  va_list clean_list;\n  long local_58;\n  void **local_50;\n  undefined8 local_48;\n  undefined8 local_40;\n  undefined8 local_38;\n  undefined8 local_30;\n  \n  puVar3 = PTR_ltc_mp_001ddec0;\n  lVar1 = *(long *)(in_FS_OFFSET + 0x28);\n  args[0].overflow_arg_area = &stack0x00000008;\n  args[0].gp_offset = 8;\n  local_50 = in_RSI;\n  local_48 = in_RDX;\n  local_40 = in_RCX;\n  local_38 = in_R8;\n  local_30 = in_R9;\n  if (a != (void **)0x0) {\n    uVar7 = 0;\n    do {\n      iVar4 = (**(code **)(puVar3 + 0x10))();\n      if (iVar4 != 0) {\n        clean_list[0].overflow_arg_area = &stack0x00000008;\n        clean_list[0].gp_offset = 8;\n        iVar4 = uVar7 - 1;\n        if (uVar7 != 0) {\n          uVar8 = uVar7 & 3;\n          if (uVar8 == 0) goto LAB_001621c6;\n          if (uVar8 != 1) {\n            if (uVar8 != 2) {\n              (**(code **)(puVar3 + 0x20))(*a);\n              clean_list[0].gp_offset = 0x10;\n              iVar4 = uVar7 - 2;\n              a = local_50;\n            }\n            (**(code **)(puVar3 + 0x20))(*a);\n            if (clean_list[0].gp_offset < 0x30) {\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = &stack0x00000010;\n            }\n            a = (void **)*puVar6;\n            iVar4 = iVar4 + -1;\n          }\n          (**(code **)(puVar3 + 0x20))(*a);\n          if (clean_list[0].gp_offset < 0x30) {\n            uVar5 = (ulong)clean_list[0].gp_offset;\n            clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n            puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n          }\n          else {\n            puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n            clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n          }\n          a = (void **)*puVar6;\n          for (iVar4 = iVar4 + -1; iVar4 != -1; iVar4 = iVar4 + -4) {\nLAB_001621c6:\n            (**(code **)(puVar3 + 0x20))(*a);\n            uVar5 = (ulong)clean_list[0].gp_offset;\n            if (clean_list[0].gp_offset < 0x30) {\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar6);\n            if (clean_list[0].gp_offset < 0x30) {\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar6);\n            if (clean_list[0].gp_offset < 0x30) {\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar6);\n            if (clean_list[0].gp_offset < 0x30) {\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }\n            a = (void **)*puVar6;\n          }\n        }\n        iVar4 = 0xd;\n        goto LAB_00162039;\n      }\n      uVar5 = (ulong)args[0].gp_offset;\n      uVar7 = uVar7 + 1;\n      if (args[0].gp_offset < 0x30) {\n        args[0].gp_offset = args[0].gp_offset + 8;\n        lVar2 = *(long *)((long)&local_58 + uVar5);\n      }\n      else {\n                    /* WARNING: Load size is inaccurate */\n        lVar2 = *args[0].overflow_arg_area;\n        args[0].overflow_arg_area = (void *)((long)args[0].overflow_arg_area + 8);\n      }\n    } while (lVar2 != 0);\n  }\n  iVar4 = 0;\nLAB_00162039:\n  if (lVar1 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return iVar4;\n}" primitive_type (function_declarator "ltc_init_multi(void **a,...)" identifier (parameter_list "(void **a,...)" ( (parameter_declaration "void **a" primitive_type (pointer_declarator "**a" * (pointer_declarator "*a" * identifier))) , (variadic_parameter "..." ...) ))) (compound_statement "{\n  long lVar1;\n  long lVar2;\n  undefined *puVar3;\n  int iVar4;\n  undefined8 in_RCX;\n  ulong uVar5;\n  undefined8 in_RDX;\n  undefined8 *puVar6;\n  uint uVar7;\n  uint uVar8;\n  void **in_RSI;\n  undefined8 in_R8;\n  undefined8 in_R9;\n  long in_FS_OFFSET;\n  va_list args;\n  va_list clean_list;\n  long local_58;\n  void **local_50;\n  undefined8 local_48;\n  undefined8 local_40;\n  undefined8 local_38;\n  undefined8 local_30;\n  \n  puVar3 = PTR_ltc_mp_001ddec0;\n  lVar1 = *(long *)(in_FS_OFFSET + 0x28);\n  args[0].overflow_arg_area = &stack0x00000008;\n  args[0].gp_offset = 8;\n  local_50 = in_RSI;\n  local_48 = in_RDX;\n  local_40 = in_RCX;\n  local_38 = in_R8;\n  local_30 = in_R9;\n  if (a != (void **)0x0) {\n    uVar7 = 0;\n    do {\n      iVar4 = (**(code **)(puVar3 + 0x10))();\n      if (iVar4 != 0) {\n        clean_list[0].overflow_arg_area = &stack0x00000008;\n        clean_list[0].gp_offset = 8;\n        iVar4 = uVar7 - 1;\n        if (uVar7 != 0) {\n          uVar8 = uVar7 & 3;\n          if (uVar8 == 0) goto LAB_001621c6;\n          if (uVar8 != 1) {\n            if (uVar8 != 2) {\n              (**(code **)(puVar3 + 0x20))(*a);\n              clean_list[0].gp_offset = 0x10;\n              iVar4 = uVar7 - 2;\n              a = local_50;\n            }\n            (**(code **)(puVar3 + 0x20))(*a);\n            if (clean_list[0].gp_offset < 0x30) {\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = &stack0x00000010;\n            }\n            a = (void **)*puVar6;\n            iVar4 = iVar4 + -1;\n          }\n          (**(code **)(puVar3 + 0x20))(*a);\n          if (clean_list[0].gp_offset < 0x30) {\n            uVar5 = (ulong)clean_list[0].gp_offset;\n            clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n            puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n          }\n          else {\n            puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n            clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n          }\n          a = (void **)*puVar6;\n          for (iVar4 = iVar4 + -1; iVar4 != -1; iVar4 = iVar4 + -4) {\nLAB_001621c6:\n            (**(code **)(puVar3 + 0x20))(*a);\n            uVar5 = (ulong)clean_list[0].gp_offset;\n            if (clean_list[0].gp_offset < 0x30) {\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar6);\n            if (clean_list[0].gp_offset < 0x30) {\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar6);\n            if (clean_list[0].gp_offset < 0x30) {\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar6);\n            if (clean_list[0].gp_offset < 0x30) {\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }\n            a = (void **)*puVar6;\n          }\n        }\n        iVar4 = 0xd;\n        goto LAB_00162039;\n      }\n      uVar5 = (ulong)args[0].gp_offset;\n      uVar7 = uVar7 + 1;\n      if (args[0].gp_offset < 0x30) {\n        args[0].gp_offset = args[0].gp_offset + 8;\n        lVar2 = *(long *)((long)&local_58 + uVar5);\n      }\n      else {\n                    /* WARNING: Load size is inaccurate */\n        lVar2 = *args[0].overflow_arg_area;\n        args[0].overflow_arg_area = (void *)((long)args[0].overflow_arg_area + 8);\n      }\n    } while (lVar2 != 0);\n  }\n  iVar4 = 0;\nLAB_00162039:\n  if (lVar1 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return iVar4;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined8 in_RCX;" type_identifier identifier ;) (declaration "ulong uVar5;" type_identifier identifier ;) (declaration "undefined8 in_RDX;" type_identifier identifier ;) (declaration "undefined8 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "void **in_RSI;" primitive_type (pointer_declarator "**in_RSI" * (pointer_declarator "*in_RSI" * identifier)) ;) (declaration "undefined8 in_R8;" type_identifier identifier ;) (declaration "undefined8 in_R9;" type_identifier identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "va_list args;" type_identifier identifier ;) (declaration "va_list clean_list;" type_identifier identifier ;) (declaration "long local_58;" (sized_type_specifier "long" long) identifier ;) (declaration "void **local_50;" primitive_type (pointer_declarator "**local_50" * (pointer_declarator "*local_50" * identifier)) ;) (declaration "undefined8 local_48;" type_identifier identifier ;) (declaration "undefined8 local_40;" type_identifier identifier ;) (declaration "undefined8 local_38;" type_identifier identifier ;) (declaration "undefined8 local_30;" type_identifier identifier ;) (expression_statement "puVar3 = PTR_ltc_mp_001ddec0;" (assignment_expression "puVar3 = PTR_ltc_mp_001ddec0" identifier = identifier) ;) (expression_statement "lVar1 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "lVar1 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (expression_statement "args[0].overflow_arg_area = &stack0x00000008;" (assignment_expression "args[0].overflow_arg_area = &stack0x00000008" (field_expression "args[0].overflow_arg_area" (subscript_expression "args[0]" identifier [ number_literal ]) . field_identifier) = (pointer_expression "&stack0x00000008" & identifier)) ;) (expression_statement "args[0].gp_offset = 8;" (assignment_expression "args[0].gp_offset = 8" (field_expression "args[0].gp_offset" (subscript_expression "args[0]" identifier [ number_literal ]) . field_identifier) = number_literal) ;) (expression_statement "local_50 = in_RSI;" (assignment_expression "local_50 = in_RSI" identifier = identifier) ;) (expression_statement "local_48 = in_RDX;" (assignment_expression "local_48 = in_RDX" identifier = identifier) ;) (expression_statement "local_40 = in_RCX;" (assignment_expression "local_40 = in_RCX" identifier = identifier) ;) (expression_statement "local_38 = in_R8;" (assignment_expression "local_38 = in_R8" identifier = identifier) ;) (expression_statement "local_30 = in_R9;" (assignment_expression "local_30 = in_R9" identifier = identifier) ;) (if_statement "if (a != (void **)0x0) {\n    uVar7 = 0;\n    do {\n      iVar4 = (**(code **)(puVar3 + 0x10))();\n      if (iVar4 != 0) {\n        clean_list[0].overflow_arg_area = &stack0x00000008;\n        clean_list[0].gp_offset = 8;\n        iVar4 = uVar7 - 1;\n        if (uVar7 != 0) {\n          uVar8 = uVar7 & 3;\n          if (uVar8 == 0) goto LAB_001621c6;\n          if (uVar8 != 1) {\n            if (uVar8 != 2) {\n              (**(code **)(puVar3 + 0x20))(*a);\n              clean_list[0].gp_offset = 0x10;\n              iVar4 = uVar7 - 2;\n              a = local_50;\n            }\n            (**(code **)(puVar3 + 0x20))(*a);\n            if (clean_list[0].gp_offset < 0x30) {\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = &stack0x00000010;\n            }\n            a = (void **)*puVar6;\n            iVar4 = iVar4 + -1;\n          }\n          (**(code **)(puVar3 + 0x20))(*a);\n          if (clean_list[0].gp_offset < 0x30) {\n            uVar5 = (ulong)clean_list[0].gp_offset;\n            clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n            puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n          }\n          else {\n            puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n            clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n          }\n          a = (void **)*puVar6;\n          for (iVar4 = iVar4 + -1; iVar4 != -1; iVar4 = iVar4 + -4) {\nLAB_001621c6:\n            (**(code **)(puVar3 + 0x20))(*a);\n            uVar5 = (ulong)clean_list[0].gp_offset;\n            if (clean_list[0].gp_offset < 0x30) {\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar6);\n            if (clean_list[0].gp_offset < 0x30) {\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar6);\n            if (clean_list[0].gp_offset < 0x30) {\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar6);\n            if (clean_list[0].gp_offset < 0x30) {\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }\n            a = (void **)*puVar6;\n          }\n        }\n        iVar4 = 0xd;\n        goto LAB_00162039;\n      }\n      uVar5 = (ulong)args[0].gp_offset;\n      uVar7 = uVar7 + 1;\n      if (args[0].gp_offset < 0x30) {\n        args[0].gp_offset = args[0].gp_offset + 8;\n        lVar2 = *(long *)((long)&local_58 + uVar5);\n      }\n      else {\n                    /* WARNING: Load size is inaccurate */\n        lVar2 = *args[0].overflow_arg_area;\n        args[0].overflow_arg_area = (void *)((long)args[0].overflow_arg_area + 8);\n      }\n    } while (lVar2 != 0);\n  }" if (parenthesized_expression "(a != (void **)0x0)" ( (binary_expression "a != (void **)0x0" identifier != (cast_expression "(void **)0x0" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\n    uVar7 = 0;\n    do {\n      iVar4 = (**(code **)(puVar3 + 0x10))();\n      if (iVar4 != 0) {\n        clean_list[0].overflow_arg_area = &stack0x00000008;\n        clean_list[0].gp_offset = 8;\n        iVar4 = uVar7 - 1;\n        if (uVar7 != 0) {\n          uVar8 = uVar7 & 3;\n          if (uVar8 == 0) goto LAB_001621c6;\n          if (uVar8 != 1) {\n            if (uVar8 != 2) {\n              (**(code **)(puVar3 + 0x20))(*a);\n              clean_list[0].gp_offset = 0x10;\n              iVar4 = uVar7 - 2;\n              a = local_50;\n            }\n            (**(code **)(puVar3 + 0x20))(*a);\n            if (clean_list[0].gp_offset < 0x30) {\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = &stack0x00000010;\n            }\n            a = (void **)*puVar6;\n            iVar4 = iVar4 + -1;\n          }\n          (**(code **)(puVar3 + 0x20))(*a);\n          if (clean_list[0].gp_offset < 0x30) {\n            uVar5 = (ulong)clean_list[0].gp_offset;\n            clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n            puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n          }\n          else {\n            puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n            clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n          }\n          a = (void **)*puVar6;\n          for (iVar4 = iVar4 + -1; iVar4 != -1; iVar4 = iVar4 + -4) {\nLAB_001621c6:\n            (**(code **)(puVar3 + 0x20))(*a);\n            uVar5 = (ulong)clean_list[0].gp_offset;\n            if (clean_list[0].gp_offset < 0x30) {\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar6);\n            if (clean_list[0].gp_offset < 0x30) {\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar6);\n            if (clean_list[0].gp_offset < 0x30) {\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar6);\n            if (clean_list[0].gp_offset < 0x30) {\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }\n            a = (void **)*puVar6;\n          }\n        }\n        iVar4 = 0xd;\n        goto LAB_00162039;\n      }\n      uVar5 = (ulong)args[0].gp_offset;\n      uVar7 = uVar7 + 1;\n      if (args[0].gp_offset < 0x30) {\n        args[0].gp_offset = args[0].gp_offset + 8;\n        lVar2 = *(long *)((long)&local_58 + uVar5);\n      }\n      else {\n                    /* WARNING: Load size is inaccurate */\n        lVar2 = *args[0].overflow_arg_area;\n        args[0].overflow_arg_area = (void *)((long)args[0].overflow_arg_area + 8);\n      }\n    } while (lVar2 != 0);\n  }" { (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (do_statement "do {\n      iVar4 = (**(code **)(puVar3 + 0x10))();\n      if (iVar4 != 0) {\n        clean_list[0].overflow_arg_area = &stack0x00000008;\n        clean_list[0].gp_offset = 8;\n        iVar4 = uVar7 - 1;\n        if (uVar7 != 0) {\n          uVar8 = uVar7 & 3;\n          if (uVar8 == 0) goto LAB_001621c6;\n          if (uVar8 != 1) {\n            if (uVar8 != 2) {\n              (**(code **)(puVar3 + 0x20))(*a);\n              clean_list[0].gp_offset = 0x10;\n              iVar4 = uVar7 - 2;\n              a = local_50;\n            }\n            (**(code **)(puVar3 + 0x20))(*a);\n            if (clean_list[0].gp_offset < 0x30) {\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = &stack0x00000010;\n            }\n            a = (void **)*puVar6;\n            iVar4 = iVar4 + -1;\n          }\n          (**(code **)(puVar3 + 0x20))(*a);\n          if (clean_list[0].gp_offset < 0x30) {\n            uVar5 = (ulong)clean_list[0].gp_offset;\n            clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n            puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n          }\n          else {\n            puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n            clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n          }\n          a = (void **)*puVar6;\n          for (iVar4 = iVar4 + -1; iVar4 != -1; iVar4 = iVar4 + -4) {\nLAB_001621c6:\n            (**(code **)(puVar3 + 0x20))(*a);\n            uVar5 = (ulong)clean_list[0].gp_offset;\n            if (clean_list[0].gp_offset < 0x30) {\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar6);\n            if (clean_list[0].gp_offset < 0x30) {\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar6);\n            if (clean_list[0].gp_offset < 0x30) {\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar6);\n            if (clean_list[0].gp_offset < 0x30) {\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }\n            a = (void **)*puVar6;\n          }\n        }\n        iVar4 = 0xd;\n        goto LAB_00162039;\n      }\n      uVar5 = (ulong)args[0].gp_offset;\n      uVar7 = uVar7 + 1;\n      if (args[0].gp_offset < 0x30) {\n        args[0].gp_offset = args[0].gp_offset + 8;\n        lVar2 = *(long *)((long)&local_58 + uVar5);\n      }\n      else {\n                    /* WARNING: Load size is inaccurate */\n        lVar2 = *args[0].overflow_arg_area;\n        args[0].overflow_arg_area = (void *)((long)args[0].overflow_arg_area + 8);\n      }\n    } while (lVar2 != 0);" do (compound_statement "{\n      iVar4 = (**(code **)(puVar3 + 0x10))();\n      if (iVar4 != 0) {\n        clean_list[0].overflow_arg_area = &stack0x00000008;\n        clean_list[0].gp_offset = 8;\n        iVar4 = uVar7 - 1;\n        if (uVar7 != 0) {\n          uVar8 = uVar7 & 3;\n          if (uVar8 == 0) goto LAB_001621c6;\n          if (uVar8 != 1) {\n            if (uVar8 != 2) {\n              (**(code **)(puVar3 + 0x20))(*a);\n              clean_list[0].gp_offset = 0x10;\n              iVar4 = uVar7 - 2;\n              a = local_50;\n            }\n            (**(code **)(puVar3 + 0x20))(*a);\n            if (clean_list[0].gp_offset < 0x30) {\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = &stack0x00000010;\n            }\n            a = (void **)*puVar6;\n            iVar4 = iVar4 + -1;\n          }\n          (**(code **)(puVar3 + 0x20))(*a);\n          if (clean_list[0].gp_offset < 0x30) {\n            uVar5 = (ulong)clean_list[0].gp_offset;\n            clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n            puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n          }\n          else {\n            puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n            clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n          }\n          a = (void **)*puVar6;\n          for (iVar4 = iVar4 + -1; iVar4 != -1; iVar4 = iVar4 + -4) {\nLAB_001621c6:\n            (**(code **)(puVar3 + 0x20))(*a);\n            uVar5 = (ulong)clean_list[0].gp_offset;\n            if (clean_list[0].gp_offset < 0x30) {\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar6);\n            if (clean_list[0].gp_offset < 0x30) {\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar6);\n            if (clean_list[0].gp_offset < 0x30) {\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar6);\n            if (clean_list[0].gp_offset < 0x30) {\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }\n            a = (void **)*puVar6;\n          }\n        }\n        iVar4 = 0xd;\n        goto LAB_00162039;\n      }\n      uVar5 = (ulong)args[0].gp_offset;\n      uVar7 = uVar7 + 1;\n      if (args[0].gp_offset < 0x30) {\n        args[0].gp_offset = args[0].gp_offset + 8;\n        lVar2 = *(long *)((long)&local_58 + uVar5);\n      }\n      else {\n                    /* WARNING: Load size is inaccurate */\n        lVar2 = *args[0].overflow_arg_area;\n        args[0].overflow_arg_area = (void *)((long)args[0].overflow_arg_area + 8);\n      }\n    }" { (expression_statement "iVar4 = (**(code **)(puVar3 + 0x10))();" (assignment_expression "iVar4 = (**(code **)(puVar3 + 0x10))()" identifier = (call_expression "(**(code **)(puVar3 + 0x10))()" (parenthesized_expression "(**(code **)(puVar3 + 0x10))" ( (pointer_expression "**(code **)(puVar3 + 0x10)" * (pointer_expression "*(code **)(puVar3 + 0x10)" * (cast_expression "(code **)(puVar3 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + 0x10)" ( (binary_expression "puVar3 + 0x10" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) (if_statement "if (iVar4 != 0) {\n        clean_list[0].overflow_arg_area = &stack0x00000008;\n        clean_list[0].gp_offset = 8;\n        iVar4 = uVar7 - 1;\n        if (uVar7 != 0) {\n          uVar8 = uVar7 & 3;\n          if (uVar8 == 0) goto LAB_001621c6;\n          if (uVar8 != 1) {\n            if (uVar8 != 2) {\n              (**(code **)(puVar3 + 0x20))(*a);\n              clean_list[0].gp_offset = 0x10;\n              iVar4 = uVar7 - 2;\n              a = local_50;\n            }\n            (**(code **)(puVar3 + 0x20))(*a);\n            if (clean_list[0].gp_offset < 0x30) {\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = &stack0x00000010;\n            }\n            a = (void **)*puVar6;\n            iVar4 = iVar4 + -1;\n          }\n          (**(code **)(puVar3 + 0x20))(*a);\n          if (clean_list[0].gp_offset < 0x30) {\n            uVar5 = (ulong)clean_list[0].gp_offset;\n            clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n            puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n          }\n          else {\n            puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n            clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n          }\n          a = (void **)*puVar6;\n          for (iVar4 = iVar4 + -1; iVar4 != -1; iVar4 = iVar4 + -4) {\nLAB_001621c6:\n            (**(code **)(puVar3 + 0x20))(*a);\n            uVar5 = (ulong)clean_list[0].gp_offset;\n            if (clean_list[0].gp_offset < 0x30) {\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar6);\n            if (clean_list[0].gp_offset < 0x30) {\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar6);\n            if (clean_list[0].gp_offset < 0x30) {\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar6);\n            if (clean_list[0].gp_offset < 0x30) {\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }\n            a = (void **)*puVar6;\n          }\n        }\n        iVar4 = 0xd;\n        goto LAB_00162039;\n      }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n        clean_list[0].overflow_arg_area = &stack0x00000008;\n        clean_list[0].gp_offset = 8;\n        iVar4 = uVar7 - 1;\n        if (uVar7 != 0) {\n          uVar8 = uVar7 & 3;\n          if (uVar8 == 0) goto LAB_001621c6;\n          if (uVar8 != 1) {\n            if (uVar8 != 2) {\n              (**(code **)(puVar3 + 0x20))(*a);\n              clean_list[0].gp_offset = 0x10;\n              iVar4 = uVar7 - 2;\n              a = local_50;\n            }\n            (**(code **)(puVar3 + 0x20))(*a);\n            if (clean_list[0].gp_offset < 0x30) {\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = &stack0x00000010;\n            }\n            a = (void **)*puVar6;\n            iVar4 = iVar4 + -1;\n          }\n          (**(code **)(puVar3 + 0x20))(*a);\n          if (clean_list[0].gp_offset < 0x30) {\n            uVar5 = (ulong)clean_list[0].gp_offset;\n            clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n            puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n          }\n          else {\n            puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n            clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n          }\n          a = (void **)*puVar6;\n          for (iVar4 = iVar4 + -1; iVar4 != -1; iVar4 = iVar4 + -4) {\nLAB_001621c6:\n            (**(code **)(puVar3 + 0x20))(*a);\n            uVar5 = (ulong)clean_list[0].gp_offset;\n            if (clean_list[0].gp_offset < 0x30) {\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar6);\n            if (clean_list[0].gp_offset < 0x30) {\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar6);\n            if (clean_list[0].gp_offset < 0x30) {\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar6);\n            if (clean_list[0].gp_offset < 0x30) {\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }\n            a = (void **)*puVar6;\n          }\n        }\n        iVar4 = 0xd;\n        goto LAB_00162039;\n      }" { (expression_statement "clean_list[0].overflow_arg_area = &stack0x00000008;" (assignment_expression "clean_list[0].overflow_arg_area = &stack0x00000008" (field_expression "clean_list[0].overflow_arg_area" (subscript_expression "clean_list[0]" identifier [ number_literal ]) . field_identifier) = (pointer_expression "&stack0x00000008" & identifier)) ;) (expression_statement "clean_list[0].gp_offset = 8;" (assignment_expression "clean_list[0].gp_offset = 8" (field_expression "clean_list[0].gp_offset" (subscript_expression "clean_list[0]" identifier [ number_literal ]) . field_identifier) = number_literal) ;) (expression_statement "iVar4 = uVar7 - 1;" (assignment_expression "iVar4 = uVar7 - 1" identifier = (binary_expression "uVar7 - 1" identifier - number_literal)) ;) (if_statement "if (uVar7 != 0) {\n          uVar8 = uVar7 & 3;\n          if (uVar8 == 0) goto LAB_001621c6;\n          if (uVar8 != 1) {\n            if (uVar8 != 2) {\n              (**(code **)(puVar3 + 0x20))(*a);\n              clean_list[0].gp_offset = 0x10;\n              iVar4 = uVar7 - 2;\n              a = local_50;\n            }\n            (**(code **)(puVar3 + 0x20))(*a);\n            if (clean_list[0].gp_offset < 0x30) {\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = &stack0x00000010;\n            }\n            a = (void **)*puVar6;\n            iVar4 = iVar4 + -1;\n          }\n          (**(code **)(puVar3 + 0x20))(*a);\n          if (clean_list[0].gp_offset < 0x30) {\n            uVar5 = (ulong)clean_list[0].gp_offset;\n            clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n            puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n          }\n          else {\n            puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n            clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n          }\n          a = (void **)*puVar6;\n          for (iVar4 = iVar4 + -1; iVar4 != -1; iVar4 = iVar4 + -4) {\nLAB_001621c6:\n            (**(code **)(puVar3 + 0x20))(*a);\n            uVar5 = (ulong)clean_list[0].gp_offset;\n            if (clean_list[0].gp_offset < 0x30) {\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar6);\n            if (clean_list[0].gp_offset < 0x30) {\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar6);\n            if (clean_list[0].gp_offset < 0x30) {\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar6);\n            if (clean_list[0].gp_offset < 0x30) {\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }\n            a = (void **)*puVar6;\n          }\n        }" if (parenthesized_expression "(uVar7 != 0)" ( (binary_expression "uVar7 != 0" identifier != number_literal) )) (compound_statement "{\n          uVar8 = uVar7 & 3;\n          if (uVar8 == 0) goto LAB_001621c6;\n          if (uVar8 != 1) {\n            if (uVar8 != 2) {\n              (**(code **)(puVar3 + 0x20))(*a);\n              clean_list[0].gp_offset = 0x10;\n              iVar4 = uVar7 - 2;\n              a = local_50;\n            }\n            (**(code **)(puVar3 + 0x20))(*a);\n            if (clean_list[0].gp_offset < 0x30) {\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = &stack0x00000010;\n            }\n            a = (void **)*puVar6;\n            iVar4 = iVar4 + -1;\n          }\n          (**(code **)(puVar3 + 0x20))(*a);\n          if (clean_list[0].gp_offset < 0x30) {\n            uVar5 = (ulong)clean_list[0].gp_offset;\n            clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n            puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n          }\n          else {\n            puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n            clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n          }\n          a = (void **)*puVar6;\n          for (iVar4 = iVar4 + -1; iVar4 != -1; iVar4 = iVar4 + -4) {\nLAB_001621c6:\n            (**(code **)(puVar3 + 0x20))(*a);\n            uVar5 = (ulong)clean_list[0].gp_offset;\n            if (clean_list[0].gp_offset < 0x30) {\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar6);\n            if (clean_list[0].gp_offset < 0x30) {\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar6);\n            if (clean_list[0].gp_offset < 0x30) {\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar6);\n            if (clean_list[0].gp_offset < 0x30) {\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }\n            a = (void **)*puVar6;\n          }\n        }" { (expression_statement "uVar8 = uVar7 & 3;" (assignment_expression "uVar8 = uVar7 & 3" identifier = (binary_expression "uVar7 & 3" identifier & number_literal)) ;) (if_statement "if (uVar8 == 0) goto LAB_001621c6;" if (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) (goto_statement "goto LAB_001621c6;" goto statement_identifier ;)) (if_statement "if (uVar8 != 1) {\n            if (uVar8 != 2) {\n              (**(code **)(puVar3 + 0x20))(*a);\n              clean_list[0].gp_offset = 0x10;\n              iVar4 = uVar7 - 2;\n              a = local_50;\n            }\n            (**(code **)(puVar3 + 0x20))(*a);\n            if (clean_list[0].gp_offset < 0x30) {\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = &stack0x00000010;\n            }\n            a = (void **)*puVar6;\n            iVar4 = iVar4 + -1;\n          }" if (parenthesized_expression "(uVar8 != 1)" ( (binary_expression "uVar8 != 1" identifier != number_literal) )) (compound_statement "{\n            if (uVar8 != 2) {\n              (**(code **)(puVar3 + 0x20))(*a);\n              clean_list[0].gp_offset = 0x10;\n              iVar4 = uVar7 - 2;\n              a = local_50;\n            }\n            (**(code **)(puVar3 + 0x20))(*a);\n            if (clean_list[0].gp_offset < 0x30) {\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = &stack0x00000010;\n            }\n            a = (void **)*puVar6;\n            iVar4 = iVar4 + -1;\n          }" { (if_statement "if (uVar8 != 2) {\n              (**(code **)(puVar3 + 0x20))(*a);\n              clean_list[0].gp_offset = 0x10;\n              iVar4 = uVar7 - 2;\n              a = local_50;\n            }" if (parenthesized_expression "(uVar8 != 2)" ( (binary_expression "uVar8 != 2" identifier != number_literal) )) (compound_statement "{\n              (**(code **)(puVar3 + 0x20))(*a);\n              clean_list[0].gp_offset = 0x10;\n              iVar4 = uVar7 - 2;\n              a = local_50;\n            }" { (expression_statement "(**(code **)(puVar3 + 0x20))(*a);" (call_expression "(**(code **)(puVar3 + 0x20))(*a)" (parenthesized_expression "(**(code **)(puVar3 + 0x20))" ( (pointer_expression "**(code **)(puVar3 + 0x20)" * (pointer_expression "*(code **)(puVar3 + 0x20)" * (cast_expression "(code **)(puVar3 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + 0x20)" ( (binary_expression "puVar3 + 0x20" identifier + number_literal) ))))) )) (argument_list "(*a)" ( (pointer_expression "*a" * identifier) ))) ;) (expression_statement "clean_list[0].gp_offset = 0x10;" (assignment_expression "clean_list[0].gp_offset = 0x10" (field_expression "clean_list[0].gp_offset" (subscript_expression "clean_list[0]" identifier [ number_literal ]) . field_identifier) = number_literal) ;) (expression_statement "iVar4 = uVar7 - 2;" (assignment_expression "iVar4 = uVar7 - 2" identifier = (binary_expression "uVar7 - 2" identifier - number_literal)) ;) (expression_statement "a = local_50;" (assignment_expression "a = local_50" identifier = identifier) ;) })) (expression_statement "(**(code **)(puVar3 + 0x20))(*a);" (call_expression "(**(code **)(puVar3 + 0x20))(*a)" (parenthesized_expression "(**(code **)(puVar3 + 0x20))" ( (pointer_expression "**(code **)(puVar3 + 0x20)" * (pointer_expression "*(code **)(puVar3 + 0x20)" * (cast_expression "(code **)(puVar3 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + 0x20)" ( (binary_expression "puVar3 + 0x20" identifier + number_literal) ))))) )) (argument_list "(*a)" ( (pointer_expression "*a" * identifier) ))) ;) (if_statement "if (clean_list[0].gp_offset < 0x30) {\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = &stack0x00000010;\n            }" if (parenthesized_expression "(clean_list[0].gp_offset < 0x30)" ( (binary_expression "clean_list[0].gp_offset < 0x30" (field_expression "clean_list[0].gp_offset" (subscript_expression "clean_list[0]" identifier [ number_literal ]) . field_identifier) < number_literal) )) (compound_statement "{\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }" { (expression_statement "uVar5 = (ulong)clean_list[0].gp_offset;" (assignment_expression "uVar5 = (ulong)clean_list[0].gp_offset" identifier = (cast_expression "(ulong)clean_list[0].gp_offset" ( (type_descriptor "ulong" type_identifier) ) (field_expression "clean_list[0].gp_offset" (subscript_expression "clean_list[0]" identifier [ number_literal ]) . field_identifier))) ;) (expression_statement "clean_list[0].gp_offset = clean_list[0].gp_offset + 8;" (assignment_expression "clean_list[0].gp_offset = clean_list[0].gp_offset + 8" (field_expression "clean_list[0].gp_offset" (subscript_expression "clean_list[0]" identifier [ number_literal ]) . field_identifier) = (binary_expression "clean_list[0].gp_offset + 8" (field_expression "clean_list[0].gp_offset" (subscript_expression "clean_list[0]" identifier [ number_literal ]) . field_identifier) + number_literal)) ;) (expression_statement "puVar6 = (undefined8 *)((long)&local_58 + uVar5);" (assignment_expression "puVar6 = (undefined8 *)((long)&local_58 + uVar5)" identifier = (cast_expression "(undefined8 *)((long)&local_58 + uVar5)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&local_58 + uVar5)" ( (binary_expression "(long)&local_58 + uVar5" (cast_expression "(long)&local_58" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&local_58" & identifier)) + identifier) )))) ;) }) (else_clause "else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = &stack0x00000010;\n            }" else (compound_statement "{\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = &stack0x00000010;\n            }" { (expression_statement "puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;" (assignment_expression "puVar6 = (undefined8 *)clean_list[0].overflow_arg_area" identifier = (cast_expression "(undefined8 *)clean_list[0].overflow_arg_area" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "clean_list[0].overflow_arg_area" (subscript_expression "clean_list[0]" identifier [ number_literal ]) . field_identifier))) ;) (expression_statement "clean_list[0].overflow_arg_area = &stack0x00000010;" (assignment_expression "clean_list[0].overflow_arg_area = &stack0x00000010" (field_expression "clean_list[0].overflow_arg_area" (subscript_expression "clean_list[0]" identifier [ number_literal ]) . field_identifier) = (pointer_expression "&stack0x00000010" & identifier)) ;) }))) (expression_statement "a = (void **)*puVar6;" (assignment_expression "a = (void **)*puVar6" identifier = (cast_expression "(void **)*puVar6" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "*puVar6" * identifier))) ;) (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ;) })) (expression_statement "(**(code **)(puVar3 + 0x20))(*a);" (call_expression "(**(code **)(puVar3 + 0x20))(*a)" (parenthesized_expression "(**(code **)(puVar3 + 0x20))" ( (pointer_expression "**(code **)(puVar3 + 0x20)" * (pointer_expression "*(code **)(puVar3 + 0x20)" * (cast_expression "(code **)(puVar3 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + 0x20)" ( (binary_expression "puVar3 + 0x20" identifier + number_literal) ))))) )) (argument_list "(*a)" ( (pointer_expression "*a" * identifier) ))) ;) (if_statement "if (clean_list[0].gp_offset < 0x30) {\n            uVar5 = (ulong)clean_list[0].gp_offset;\n            clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n            puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n          }\n          else {\n            puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n            clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n          }" if (parenthesized_expression "(clean_list[0].gp_offset < 0x30)" ( (binary_expression "clean_list[0].gp_offset < 0x30" (field_expression "clean_list[0].gp_offset" (subscript_expression "clean_list[0]" identifier [ number_literal ]) . field_identifier) < number_literal) )) (compound_statement "{\n            uVar5 = (ulong)clean_list[0].gp_offset;\n            clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n            puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n          }" { (expression_statement "uVar5 = (ulong)clean_list[0].gp_offset;" (assignment_expression "uVar5 = (ulong)clean_list[0].gp_offset" identifier = (cast_expression "(ulong)clean_list[0].gp_offset" ( (type_descriptor "ulong" type_identifier) ) (field_expression "clean_list[0].gp_offset" (subscript_expression "clean_list[0]" identifier [ number_literal ]) . field_identifier))) ;) (expression_statement "clean_list[0].gp_offset = clean_list[0].gp_offset + 8;" (assignment_expression "clean_list[0].gp_offset = clean_list[0].gp_offset + 8" (field_expression "clean_list[0].gp_offset" (subscript_expression "clean_list[0]" identifier [ number_literal ]) . field_identifier) = (binary_expression "clean_list[0].gp_offset + 8" (field_expression "clean_list[0].gp_offset" (subscript_expression "clean_list[0]" identifier [ number_literal ]) . field_identifier) + number_literal)) ;) (expression_statement "puVar6 = (undefined8 *)((long)&local_58 + uVar5);" (assignment_expression "puVar6 = (undefined8 *)((long)&local_58 + uVar5)" identifier = (cast_expression "(undefined8 *)((long)&local_58 + uVar5)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&local_58 + uVar5)" ( (binary_expression "(long)&local_58 + uVar5" (cast_expression "(long)&local_58" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&local_58" & identifier)) + identifier) )))) ;) }) (else_clause "else {\n            puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n            clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n          }" else (compound_statement "{\n            puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n            clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n          }" { (expression_statement "puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;" (assignment_expression "puVar6 = (undefined8 *)clean_list[0].overflow_arg_area" identifier = (cast_expression "(undefined8 *)clean_list[0].overflow_arg_area" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "clean_list[0].overflow_arg_area" (subscript_expression "clean_list[0]" identifier [ number_literal ]) . field_identifier))) ;) (expression_statement "clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);" (assignment_expression "clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8)" (field_expression "clean_list[0].overflow_arg_area" (subscript_expression "clean_list[0]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(void *)((long)clean_list[0].overflow_arg_area + 8)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)clean_list[0].overflow_arg_area + 8)" ( (binary_expression "(long)clean_list[0].overflow_arg_area + 8" (cast_expression "(long)clean_list[0].overflow_arg_area" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "clean_list[0].overflow_arg_area" (subscript_expression "clean_list[0]" identifier [ number_literal ]) . field_identifier)) + number_literal) )))) ;) }))) (expression_statement "a = (void **)*puVar6;" (assignment_expression "a = (void **)*puVar6" identifier = (cast_expression "(void **)*puVar6" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "*puVar6" * identifier))) ;) (for_statement "for (iVar4 = iVar4 + -1; iVar4 != -1; iVar4 = iVar4 + -4) {\nLAB_001621c6:\n            (**(code **)(puVar3 + 0x20))(*a);\n            uVar5 = (ulong)clean_list[0].gp_offset;\n            if (clean_list[0].gp_offset < 0x30) {\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar6);\n            if (clean_list[0].gp_offset < 0x30) {\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar6);\n            if (clean_list[0].gp_offset < 0x30) {\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar6);\n            if (clean_list[0].gp_offset < 0x30) {\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }\n            a = (void **)*puVar6;\n          }" for ( (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ; (binary_expression "iVar4 != -1" identifier != number_literal) ; (assignment_expression "iVar4 = iVar4 + -4" identifier = (binary_expression "iVar4 + -4" identifier + number_literal)) ) (compound_statement "{\nLAB_001621c6:\n            (**(code **)(puVar3 + 0x20))(*a);\n            uVar5 = (ulong)clean_list[0].gp_offset;\n            if (clean_list[0].gp_offset < 0x30) {\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar6);\n            if (clean_list[0].gp_offset < 0x30) {\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar6);\n            if (clean_list[0].gp_offset < 0x30) {\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar6);\n            if (clean_list[0].gp_offset < 0x30) {\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }\n            a = (void **)*puVar6;\n          }" { (labeled_statement "LAB_001621c6:\n            (**(code **)(puVar3 + 0x20))(*a);" statement_identifier : (expression_statement "(**(code **)(puVar3 + 0x20))(*a);" (call_expression "(**(code **)(puVar3 + 0x20))(*a)" (parenthesized_expression "(**(code **)(puVar3 + 0x20))" ( (pointer_expression "**(code **)(puVar3 + 0x20)" * (pointer_expression "*(code **)(puVar3 + 0x20)" * (cast_expression "(code **)(puVar3 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + 0x20)" ( (binary_expression "puVar3 + 0x20" identifier + number_literal) ))))) )) (argument_list "(*a)" ( (pointer_expression "*a" * identifier) ))) ;)) (expression_statement "uVar5 = (ulong)clean_list[0].gp_offset;" (assignment_expression "uVar5 = (ulong)clean_list[0].gp_offset" identifier = (cast_expression "(ulong)clean_list[0].gp_offset" ( (type_descriptor "ulong" type_identifier) ) (field_expression "clean_list[0].gp_offset" (subscript_expression "clean_list[0]" identifier [ number_literal ]) . field_identifier))) ;) (if_statement "if (clean_list[0].gp_offset < 0x30) {\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }" if (parenthesized_expression "(clean_list[0].gp_offset < 0x30)" ( (binary_expression "clean_list[0].gp_offset < 0x30" (field_expression "clean_list[0].gp_offset" (subscript_expression "clean_list[0]" identifier [ number_literal ]) . field_identifier) < number_literal) )) (compound_statement "{\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }" { (expression_statement "clean_list[0].gp_offset = clean_list[0].gp_offset + 8;" (assignment_expression "clean_list[0].gp_offset = clean_list[0].gp_offset + 8" (field_expression "clean_list[0].gp_offset" (subscript_expression "clean_list[0]" identifier [ number_literal ]) . field_identifier) = (binary_expression "clean_list[0].gp_offset + 8" (field_expression "clean_list[0].gp_offset" (subscript_expression "clean_list[0]" identifier [ number_literal ]) . field_identifier) + number_literal)) ;) (expression_statement "puVar6 = (undefined8 *)((long)&local_58 + uVar5);" (assignment_expression "puVar6 = (undefined8 *)((long)&local_58 + uVar5)" identifier = (cast_expression "(undefined8 *)((long)&local_58 + uVar5)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&local_58 + uVar5)" ( (binary_expression "(long)&local_58 + uVar5" (cast_expression "(long)&local_58" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&local_58" & identifier)) + identifier) )))) ;) }) (else_clause "else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }" else (compound_statement "{\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }" { (expression_statement "puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;" (assignment_expression "puVar6 = (undefined8 *)clean_list[0].overflow_arg_area" identifier = (cast_expression "(undefined8 *)clean_list[0].overflow_arg_area" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "clean_list[0].overflow_arg_area" (subscript_expression "clean_list[0]" identifier [ number_literal ]) . field_identifier))) ;) (expression_statement "clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);" (assignment_expression "clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8)" (field_expression "clean_list[0].overflow_arg_area" (subscript_expression "clean_list[0]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(void *)((long)clean_list[0].overflow_arg_area + 8)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)clean_list[0].overflow_arg_area + 8)" ( (binary_expression "(long)clean_list[0].overflow_arg_area + 8" (cast_expression "(long)clean_list[0].overflow_arg_area" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "clean_list[0].overflow_arg_area" (subscript_expression "clean_list[0]" identifier [ number_literal ]) . field_identifier)) + number_literal) )))) ;) }))) (expression_statement "(**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar6);" (call_expression "(**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar6)" (parenthesized_expression "(**(code **)(puVar3 + 0x20))" ( (pointer_expression "**(code **)(puVar3 + 0x20)" * (pointer_expression "*(code **)(puVar3 + 0x20)" * (cast_expression "(code **)(puVar3 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + 0x20)" ( (binary_expression "puVar3 + 0x20" identifier + number_literal) ))))) )) (argument_list "(*(undefined8 *)*puVar6)" ( (pointer_expression "*(undefined8 *)*puVar6" * (cast_expression "(undefined8 *)*puVar6" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar6" * identifier))) ))) ;) (if_statement "if (clean_list[0].gp_offset < 0x30) {\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }" if (parenthesized_expression "(clean_list[0].gp_offset < 0x30)" ( (binary_expression "clean_list[0].gp_offset < 0x30" (field_expression "clean_list[0].gp_offset" (subscript_expression "clean_list[0]" identifier [ number_literal ]) . field_identifier) < number_literal) )) (compound_statement "{\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }" { (expression_statement "uVar5 = (ulong)clean_list[0].gp_offset;" (assignment_expression "uVar5 = (ulong)clean_list[0].gp_offset" identifier = (cast_expression "(ulong)clean_list[0].gp_offset" ( (type_descriptor "ulong" type_identifier) ) (field_expression "clean_list[0].gp_offset" (subscript_expression "clean_list[0]" identifier [ number_literal ]) . field_identifier))) ;) (expression_statement "clean_list[0].gp_offset = clean_list[0].gp_offset + 8;" (assignment_expression "clean_list[0].gp_offset = clean_list[0].gp_offset + 8" (field_expression "clean_list[0].gp_offset" (subscript_expression "clean_list[0]" identifier [ number_literal ]) . field_identifier) = (binary_expression "clean_list[0].gp_offset + 8" (field_expression "clean_list[0].gp_offset" (subscript_expression "clean_list[0]" identifier [ number_literal ]) . field_identifier) + number_literal)) ;) (expression_statement "puVar6 = (undefined8 *)((long)&local_58 + uVar5);" (assignment_expression "puVar6 = (undefined8 *)((long)&local_58 + uVar5)" identifier = (cast_expression "(undefined8 *)((long)&local_58 + uVar5)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&local_58 + uVar5)" ( (binary_expression "(long)&local_58 + uVar5" (cast_expression "(long)&local_58" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&local_58" & identifier)) + identifier) )))) ;) }) (else_clause "else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }" else (compound_statement "{\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }" { (expression_statement "puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;" (assignment_expression "puVar6 = (undefined8 *)clean_list[0].overflow_arg_area" identifier = (cast_expression "(undefined8 *)clean_list[0].overflow_arg_area" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "clean_list[0].overflow_arg_area" (subscript_expression "clean_list[0]" identifier [ number_literal ]) . field_identifier))) ;) (expression_statement "clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);" (assignment_expression "clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8)" (field_expression "clean_list[0].overflow_arg_area" (subscript_expression "clean_list[0]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(void *)((long)clean_list[0].overflow_arg_area + 8)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)clean_list[0].overflow_arg_area + 8)" ( (binary_expression "(long)clean_list[0].overflow_arg_area + 8" (cast_expression "(long)clean_list[0].overflow_arg_area" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "clean_list[0].overflow_arg_area" (subscript_expression "clean_list[0]" identifier [ number_literal ]) . field_identifier)) + number_literal) )))) ;) }))) (expression_statement "(**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar6);" (call_expression "(**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar6)" (parenthesized_expression "(**(code **)(puVar3 + 0x20))" ( (pointer_expression "**(code **)(puVar3 + 0x20)" * (pointer_expression "*(code **)(puVar3 + 0x20)" * (cast_expression "(code **)(puVar3 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + 0x20)" ( (binary_expression "puVar3 + 0x20" identifier + number_literal) ))))) )) (argument_list "(*(undefined8 *)*puVar6)" ( (pointer_expression "*(undefined8 *)*puVar6" * (cast_expression "(undefined8 *)*puVar6" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar6" * identifier))) ))) ;) (if_statement "if (clean_list[0].gp_offset < 0x30) {\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }" if (parenthesized_expression "(clean_list[0].gp_offset < 0x30)" ( (binary_expression "clean_list[0].gp_offset < 0x30" (field_expression "clean_list[0].gp_offset" (subscript_expression "clean_list[0]" identifier [ number_literal ]) . field_identifier) < number_literal) )) (compound_statement "{\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }" { (expression_statement "uVar5 = (ulong)clean_list[0].gp_offset;" (assignment_expression "uVar5 = (ulong)clean_list[0].gp_offset" identifier = (cast_expression "(ulong)clean_list[0].gp_offset" ( (type_descriptor "ulong" type_identifier) ) (field_expression "clean_list[0].gp_offset" (subscript_expression "clean_list[0]" identifier [ number_literal ]) . field_identifier))) ;) (expression_statement "clean_list[0].gp_offset = clean_list[0].gp_offset + 8;" (assignment_expression "clean_list[0].gp_offset = clean_list[0].gp_offset + 8" (field_expression "clean_list[0].gp_offset" (subscript_expression "clean_list[0]" identifier [ number_literal ]) . field_identifier) = (binary_expression "clean_list[0].gp_offset + 8" (field_expression "clean_list[0].gp_offset" (subscript_expression "clean_list[0]" identifier [ number_literal ]) . field_identifier) + number_literal)) ;) (expression_statement "puVar6 = (undefined8 *)((long)&local_58 + uVar5);" (assignment_expression "puVar6 = (undefined8 *)((long)&local_58 + uVar5)" identifier = (cast_expression "(undefined8 *)((long)&local_58 + uVar5)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&local_58 + uVar5)" ( (binary_expression "(long)&local_58 + uVar5" (cast_expression "(long)&local_58" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&local_58" & identifier)) + identifier) )))) ;) }) (else_clause "else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }" else (compound_statement "{\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }" { (expression_statement "puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;" (assignment_expression "puVar6 = (undefined8 *)clean_list[0].overflow_arg_area" identifier = (cast_expression "(undefined8 *)clean_list[0].overflow_arg_area" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "clean_list[0].overflow_arg_area" (subscript_expression "clean_list[0]" identifier [ number_literal ]) . field_identifier))) ;) (expression_statement "clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);" (assignment_expression "clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8)" (field_expression "clean_list[0].overflow_arg_area" (subscript_expression "clean_list[0]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(void *)((long)clean_list[0].overflow_arg_area + 8)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)clean_list[0].overflow_arg_area + 8)" ( (binary_expression "(long)clean_list[0].overflow_arg_area + 8" (cast_expression "(long)clean_list[0].overflow_arg_area" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "clean_list[0].overflow_arg_area" (subscript_expression "clean_list[0]" identifier [ number_literal ]) . field_identifier)) + number_literal) )))) ;) }))) (expression_statement "(**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar6);" (call_expression "(**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar6)" (parenthesized_expression "(**(code **)(puVar3 + 0x20))" ( (pointer_expression "**(code **)(puVar3 + 0x20)" * (pointer_expression "*(code **)(puVar3 + 0x20)" * (cast_expression "(code **)(puVar3 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + 0x20)" ( (binary_expression "puVar3 + 0x20" identifier + number_literal) ))))) )) (argument_list "(*(undefined8 *)*puVar6)" ( (pointer_expression "*(undefined8 *)*puVar6" * (cast_expression "(undefined8 *)*puVar6" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar6" * identifier))) ))) ;) (if_statement "if (clean_list[0].gp_offset < 0x30) {\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }\n            else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }" if (parenthesized_expression "(clean_list[0].gp_offset < 0x30)" ( (binary_expression "clean_list[0].gp_offset < 0x30" (field_expression "clean_list[0].gp_offset" (subscript_expression "clean_list[0]" identifier [ number_literal ]) . field_identifier) < number_literal) )) (compound_statement "{\n              uVar5 = (ulong)clean_list[0].gp_offset;\n              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;\n              puVar6 = (undefined8 *)((long)&local_58 + uVar5);\n            }" { (expression_statement "uVar5 = (ulong)clean_list[0].gp_offset;" (assignment_expression "uVar5 = (ulong)clean_list[0].gp_offset" identifier = (cast_expression "(ulong)clean_list[0].gp_offset" ( (type_descriptor "ulong" type_identifier) ) (field_expression "clean_list[0].gp_offset" (subscript_expression "clean_list[0]" identifier [ number_literal ]) . field_identifier))) ;) (expression_statement "clean_list[0].gp_offset = clean_list[0].gp_offset + 8;" (assignment_expression "clean_list[0].gp_offset = clean_list[0].gp_offset + 8" (field_expression "clean_list[0].gp_offset" (subscript_expression "clean_list[0]" identifier [ number_literal ]) . field_identifier) = (binary_expression "clean_list[0].gp_offset + 8" (field_expression "clean_list[0].gp_offset" (subscript_expression "clean_list[0]" identifier [ number_literal ]) . field_identifier) + number_literal)) ;) (expression_statement "puVar6 = (undefined8 *)((long)&local_58 + uVar5);" (assignment_expression "puVar6 = (undefined8 *)((long)&local_58 + uVar5)" identifier = (cast_expression "(undefined8 *)((long)&local_58 + uVar5)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&local_58 + uVar5)" ( (binary_expression "(long)&local_58 + uVar5" (cast_expression "(long)&local_58" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&local_58" & identifier)) + identifier) )))) ;) }) (else_clause "else {\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }" else (compound_statement "{\n              puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;\n              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);\n            }" { (expression_statement "puVar6 = (undefined8 *)clean_list[0].overflow_arg_area;" (assignment_expression "puVar6 = (undefined8 *)clean_list[0].overflow_arg_area" identifier = (cast_expression "(undefined8 *)clean_list[0].overflow_arg_area" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "clean_list[0].overflow_arg_area" (subscript_expression "clean_list[0]" identifier [ number_literal ]) . field_identifier))) ;) (expression_statement "clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);" (assignment_expression "clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8)" (field_expression "clean_list[0].overflow_arg_area" (subscript_expression "clean_list[0]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(void *)((long)clean_list[0].overflow_arg_area + 8)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)clean_list[0].overflow_arg_area + 8)" ( (binary_expression "(long)clean_list[0].overflow_arg_area + 8" (cast_expression "(long)clean_list[0].overflow_arg_area" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "clean_list[0].overflow_arg_area" (subscript_expression "clean_list[0]" identifier [ number_literal ]) . field_identifier)) + number_literal) )))) ;) }))) (expression_statement "a = (void **)*puVar6;" (assignment_expression "a = (void **)*puVar6" identifier = (cast_expression "(void **)*puVar6" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "*puVar6" * identifier))) ;) })) })) (expression_statement "iVar4 = 0xd;" (assignment_expression "iVar4 = 0xd" identifier = number_literal) ;) (goto_statement "goto LAB_00162039;" goto statement_identifier ;) })) (expression_statement "uVar5 = (ulong)args[0].gp_offset;" (assignment_expression "uVar5 = (ulong)args[0].gp_offset" identifier = (cast_expression "(ulong)args[0].gp_offset" ( (type_descriptor "ulong" type_identifier) ) (field_expression "args[0].gp_offset" (subscript_expression "args[0]" identifier [ number_literal ]) . field_identifier))) ;) (expression_statement "uVar7 = uVar7 + 1;" (assignment_expression "uVar7 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) (if_statement "if (args[0].gp_offset < 0x30) {\n        args[0].gp_offset = args[0].gp_offset + 8;\n        lVar2 = *(long *)((long)&local_58 + uVar5);\n      }\n      else {\n                    /* WARNING: Load size is inaccurate */\n        lVar2 = *args[0].overflow_arg_area;\n        args[0].overflow_arg_area = (void *)((long)args[0].overflow_arg_area + 8);\n      }" if (parenthesized_expression "(args[0].gp_offset < 0x30)" ( (binary_expression "args[0].gp_offset < 0x30" (field_expression "args[0].gp_offset" (subscript_expression "args[0]" identifier [ number_literal ]) . field_identifier) < number_literal) )) (compound_statement "{\n        args[0].gp_offset = args[0].gp_offset + 8;\n        lVar2 = *(long *)((long)&local_58 + uVar5);\n      }" { (expression_statement "args[0].gp_offset = args[0].gp_offset + 8;" (assignment_expression "args[0].gp_offset = args[0].gp_offset + 8" (field_expression "args[0].gp_offset" (subscript_expression "args[0]" identifier [ number_literal ]) . field_identifier) = (binary_expression "args[0].gp_offset + 8" (field_expression "args[0].gp_offset" (subscript_expression "args[0]" identifier [ number_literal ]) . field_identifier) + number_literal)) ;) (expression_statement "lVar2 = *(long *)((long)&local_58 + uVar5);" (assignment_expression "lVar2 = *(long *)((long)&local_58 + uVar5)" identifier = (pointer_expression "*(long *)((long)&local_58 + uVar5)" * (cast_expression "(long *)((long)&local_58 + uVar5)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&local_58 + uVar5)" ( (binary_expression "(long)&local_58 + uVar5" (cast_expression "(long)&local_58" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&local_58" & identifier)) + identifier) ))))) ;) }) (else_clause "else {\n                    /* WARNING: Load size is inaccurate */\n        lVar2 = *args[0].overflow_arg_area;\n        args[0].overflow_arg_area = (void *)((long)args[0].overflow_arg_area + 8);\n      }" else (compound_statement "{\n                    /* WARNING: Load size is inaccurate */\n        lVar2 = *args[0].overflow_arg_area;\n        args[0].overflow_arg_area = (void *)((long)args[0].overflow_arg_area + 8);\n      }" { comment (expression_statement "lVar2 = *args[0].overflow_arg_area;" (assignment_expression "lVar2 = *args[0].overflow_arg_area" identifier = (pointer_expression "*args[0].overflow_arg_area" * (field_expression "args[0].overflow_arg_area" (subscript_expression "args[0]" identifier [ number_literal ]) . field_identifier))) ;) (expression_statement "args[0].overflow_arg_area = (void *)((long)args[0].overflow_arg_area + 8);" (assignment_expression "args[0].overflow_arg_area = (void *)((long)args[0].overflow_arg_area + 8)" (field_expression "args[0].overflow_arg_area" (subscript_expression "args[0]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(void *)((long)args[0].overflow_arg_area + 8)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)args[0].overflow_arg_area + 8)" ( (binary_expression "(long)args[0].overflow_arg_area + 8" (cast_expression "(long)args[0].overflow_arg_area" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "args[0].overflow_arg_area" (subscript_expression "args[0]" identifier [ number_literal ]) . field_identifier)) + number_literal) )))) ;) }))) }) while (parenthesized_expression "(lVar2 != 0)" ( (binary_expression "lVar2 != 0" identifier != number_literal) )) ;) })) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00162039:\n  if (lVar1 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" statement_identifier : (if_statement "if (lVar1 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" if (parenthesized_expression "(lVar1 != *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "lVar1 != *(long *)(in_FS_OFFSET + 0x28)" identifier != (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" { comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return iVar4;" return identifier ;) })))
(translation_unit "undefined8\nltc_init_multi(undefined8 *param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4,\n              undefined8 param_5,undefined8 param_6)\n\n{\n  long lVar1;\n  long lVar2;\n  undefined *puVar3;\n  int iVar4;\n  undefined8 uVar5;\n  ulong uVar6;\n  undefined8 *puVar7;\n  uint uVar8;\n  uint uVar9;\n  long in_FS_OFFSET;\n  uint local_90;\n  long *local_88;\n  uint local_78;\n  undefined8 *local_70;\n  long local_58;\n  undefined8 *local_50;\n  undefined8 local_48;\n  undefined8 local_40;\n  undefined8 local_38;\n  undefined8 local_30;\n  \n  puVar3 = PTR_ltc_mp_001ddec0;\n  lVar1 = *(long *)(in_FS_OFFSET + 0x28);\n  local_88 = (long *)&stack0x00000008;\n  local_90 = 8;\n  local_50 = param_2;\n  local_48 = param_3;\n  local_40 = param_4;\n  local_38 = param_5;\n  local_30 = param_6;\n  if (param_1 != (undefined8 *)0x0) {\n    uVar8 = 0;\n    do {\n      iVar4 = (**(code **)(puVar3 + 0x10))();\n      if (iVar4 != 0) {\n        local_70 = (undefined8 *)&stack0x00000008;\n        local_78 = 8;\n        iVar4 = uVar8 - 1;\n        if (uVar8 != 0) {\n          uVar9 = uVar8 & 3;\n          if (uVar9 == 0) goto LAB_001621c6;\n          if (uVar9 != 1) {\n            if (uVar9 != 2) {\n              (**(code **)(puVar3 + 0x20))(*param_1);\n              local_78 = 0x10;\n              iVar4 = uVar8 - 2;\n              param_1 = local_50;\n            }\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = (undefined8 *)&stack0x00000010;\n            }\n            param_1 = (undefined8 *)*param_1;\n            iVar4 = iVar4 + -1;\n          }\n          (**(code **)(puVar3 + 0x20))(*param_1);\n          if (local_78 < 0x30) {\n            uVar6 = (ulong)local_78;\n            local_78 = local_78 + 8;\n            param_1 = (undefined8 *)((long)&local_58 + uVar6);\n          }\n          else {\n            param_1 = local_70;\n            local_70 = local_70 + 1;\n          }\n          param_1 = (undefined8 *)*param_1;\n          for (iVar4 = iVar4 + -1; iVar4 != -1; iVar4 = iVar4 + -4) {\nLAB_001621c6:\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            uVar6 = (ulong)local_78;\n            if (local_78 < 0x30) {\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = local_70 + 1;\n            }\n            param_1 = (undefined8 *)*param_1;\n          }\n        }\n        uVar5 = 0xd;\n        goto LAB_00162039;\n      }\n      uVar6 = (ulong)local_90;\n      uVar8 = uVar8 + 1;\n      if (local_90 < 0x30) {\n        local_90 = local_90 + 8;\n        lVar2 = *(long *)((long)&local_58 + uVar6);\n      }\n      else {\n        lVar2 = *local_88;\n        local_88 = local_88 + 1;\n      }\n    } while (lVar2 != 0);\n  }\n  uVar5 = 0;\nLAB_00162039:\n  if (lVar1 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return uVar5;\n}\n\n" (function_definition "undefined8\nltc_init_multi(undefined8 *param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4,\n              undefined8 param_5,undefined8 param_6)\n\n{\n  long lVar1;\n  long lVar2;\n  undefined *puVar3;\n  int iVar4;\n  undefined8 uVar5;\n  ulong uVar6;\n  undefined8 *puVar7;\n  uint uVar8;\n  uint uVar9;\n  long in_FS_OFFSET;\n  uint local_90;\n  long *local_88;\n  uint local_78;\n  undefined8 *local_70;\n  long local_58;\n  undefined8 *local_50;\n  undefined8 local_48;\n  undefined8 local_40;\n  undefined8 local_38;\n  undefined8 local_30;\n  \n  puVar3 = PTR_ltc_mp_001ddec0;\n  lVar1 = *(long *)(in_FS_OFFSET + 0x28);\n  local_88 = (long *)&stack0x00000008;\n  local_90 = 8;\n  local_50 = param_2;\n  local_48 = param_3;\n  local_40 = param_4;\n  local_38 = param_5;\n  local_30 = param_6;\n  if (param_1 != (undefined8 *)0x0) {\n    uVar8 = 0;\n    do {\n      iVar4 = (**(code **)(puVar3 + 0x10))();\n      if (iVar4 != 0) {\n        local_70 = (undefined8 *)&stack0x00000008;\n        local_78 = 8;\n        iVar4 = uVar8 - 1;\n        if (uVar8 != 0) {\n          uVar9 = uVar8 & 3;\n          if (uVar9 == 0) goto LAB_001621c6;\n          if (uVar9 != 1) {\n            if (uVar9 != 2) {\n              (**(code **)(puVar3 + 0x20))(*param_1);\n              local_78 = 0x10;\n              iVar4 = uVar8 - 2;\n              param_1 = local_50;\n            }\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = (undefined8 *)&stack0x00000010;\n            }\n            param_1 = (undefined8 *)*param_1;\n            iVar4 = iVar4 + -1;\n          }\n          (**(code **)(puVar3 + 0x20))(*param_1);\n          if (local_78 < 0x30) {\n            uVar6 = (ulong)local_78;\n            local_78 = local_78 + 8;\n            param_1 = (undefined8 *)((long)&local_58 + uVar6);\n          }\n          else {\n            param_1 = local_70;\n            local_70 = local_70 + 1;\n          }\n          param_1 = (undefined8 *)*param_1;\n          for (iVar4 = iVar4 + -1; iVar4 != -1; iVar4 = iVar4 + -4) {\nLAB_001621c6:\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            uVar6 = (ulong)local_78;\n            if (local_78 < 0x30) {\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = local_70 + 1;\n            }\n            param_1 = (undefined8 *)*param_1;\n          }\n        }\n        uVar5 = 0xd;\n        goto LAB_00162039;\n      }\n      uVar6 = (ulong)local_90;\n      uVar8 = uVar8 + 1;\n      if (local_90 < 0x30) {\n        local_90 = local_90 + 8;\n        lVar2 = *(long *)((long)&local_58 + uVar6);\n      }\n      else {\n        lVar2 = *local_88;\n        local_88 = local_88 + 1;\n      }\n    } while (lVar2 != 0);\n  }\n  uVar5 = 0;\nLAB_00162039:\n  if (lVar1 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return uVar5;\n}" type_identifier (function_declarator "ltc_init_multi(undefined8 *param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4,\n              undefined8 param_5,undefined8 param_6)" identifier (parameter_list "(undefined8 *param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4,\n              undefined8 param_5,undefined8 param_6)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined8 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined8 param_3" type_identifier identifier) , (parameter_declaration "undefined8 param_4" type_identifier identifier) , (parameter_declaration "undefined8 param_5" type_identifier identifier) , (parameter_declaration "undefined8 param_6" type_identifier identifier) ))) (compound_statement "{\n  long lVar1;\n  long lVar2;\n  undefined *puVar3;\n  int iVar4;\n  undefined8 uVar5;\n  ulong uVar6;\n  undefined8 *puVar7;\n  uint uVar8;\n  uint uVar9;\n  long in_FS_OFFSET;\n  uint local_90;\n  long *local_88;\n  uint local_78;\n  undefined8 *local_70;\n  long local_58;\n  undefined8 *local_50;\n  undefined8 local_48;\n  undefined8 local_40;\n  undefined8 local_38;\n  undefined8 local_30;\n  \n  puVar3 = PTR_ltc_mp_001ddec0;\n  lVar1 = *(long *)(in_FS_OFFSET + 0x28);\n  local_88 = (long *)&stack0x00000008;\n  local_90 = 8;\n  local_50 = param_2;\n  local_48 = param_3;\n  local_40 = param_4;\n  local_38 = param_5;\n  local_30 = param_6;\n  if (param_1 != (undefined8 *)0x0) {\n    uVar8 = 0;\n    do {\n      iVar4 = (**(code **)(puVar3 + 0x10))();\n      if (iVar4 != 0) {\n        local_70 = (undefined8 *)&stack0x00000008;\n        local_78 = 8;\n        iVar4 = uVar8 - 1;\n        if (uVar8 != 0) {\n          uVar9 = uVar8 & 3;\n          if (uVar9 == 0) goto LAB_001621c6;\n          if (uVar9 != 1) {\n            if (uVar9 != 2) {\n              (**(code **)(puVar3 + 0x20))(*param_1);\n              local_78 = 0x10;\n              iVar4 = uVar8 - 2;\n              param_1 = local_50;\n            }\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = (undefined8 *)&stack0x00000010;\n            }\n            param_1 = (undefined8 *)*param_1;\n            iVar4 = iVar4 + -1;\n          }\n          (**(code **)(puVar3 + 0x20))(*param_1);\n          if (local_78 < 0x30) {\n            uVar6 = (ulong)local_78;\n            local_78 = local_78 + 8;\n            param_1 = (undefined8 *)((long)&local_58 + uVar6);\n          }\n          else {\n            param_1 = local_70;\n            local_70 = local_70 + 1;\n          }\n          param_1 = (undefined8 *)*param_1;\n          for (iVar4 = iVar4 + -1; iVar4 != -1; iVar4 = iVar4 + -4) {\nLAB_001621c6:\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            uVar6 = (ulong)local_78;\n            if (local_78 < 0x30) {\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = local_70 + 1;\n            }\n            param_1 = (undefined8 *)*param_1;\n          }\n        }\n        uVar5 = 0xd;\n        goto LAB_00162039;\n      }\n      uVar6 = (ulong)local_90;\n      uVar8 = uVar8 + 1;\n      if (local_90 < 0x30) {\n        local_90 = local_90 + 8;\n        lVar2 = *(long *)((long)&local_58 + uVar6);\n      }\n      else {\n        lVar2 = *local_88;\n        local_88 = local_88 + 1;\n      }\n    } while (lVar2 != 0);\n  }\n  uVar5 = 0;\nLAB_00162039:\n  if (lVar1 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return uVar5;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined8 uVar5;" type_identifier identifier ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "undefined8 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "uint local_90;" type_identifier identifier ;) (declaration "long *local_88;" (sized_type_specifier "long" long) (pointer_declarator "*local_88" * identifier) ;) (declaration "uint local_78;" type_identifier identifier ;) (declaration "undefined8 *local_70;" type_identifier (pointer_declarator "*local_70" * identifier) ;) (declaration "long local_58;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *local_50;" type_identifier (pointer_declarator "*local_50" * identifier) ;) (declaration "undefined8 local_48;" type_identifier identifier ;) (declaration "undefined8 local_40;" type_identifier identifier ;) (declaration "undefined8 local_38;" type_identifier identifier ;) (declaration "undefined8 local_30;" type_identifier identifier ;) (expression_statement "puVar3 = PTR_ltc_mp_001ddec0;" (assignment_expression "puVar3 = PTR_ltc_mp_001ddec0" identifier = identifier) ;) (expression_statement "lVar1 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "lVar1 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (expression_statement "local_88 = (long *)&stack0x00000008;" (assignment_expression "local_88 = (long *)&stack0x00000008" identifier = (cast_expression "(long *)&stack0x00000008" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "&stack0x00000008" & identifier))) ;) (expression_statement "local_90 = 8;" (assignment_expression "local_90 = 8" identifier = number_literal) ;) (expression_statement "local_50 = param_2;" (assignment_expression "local_50 = param_2" identifier = identifier) ;) (expression_statement "local_48 = param_3;" (assignment_expression "local_48 = param_3" identifier = identifier) ;) (expression_statement "local_40 = param_4;" (assignment_expression "local_40 = param_4" identifier = identifier) ;) (expression_statement "local_38 = param_5;" (assignment_expression "local_38 = param_5" identifier = identifier) ;) (expression_statement "local_30 = param_6;" (assignment_expression "local_30 = param_6" identifier = identifier) ;) (if_statement "if (param_1 != (undefined8 *)0x0) {\n    uVar8 = 0;\n    do {\n      iVar4 = (**(code **)(puVar3 + 0x10))();\n      if (iVar4 != 0) {\n        local_70 = (undefined8 *)&stack0x00000008;\n        local_78 = 8;\n        iVar4 = uVar8 - 1;\n        if (uVar8 != 0) {\n          uVar9 = uVar8 & 3;\n          if (uVar9 == 0) goto LAB_001621c6;\n          if (uVar9 != 1) {\n            if (uVar9 != 2) {\n              (**(code **)(puVar3 + 0x20))(*param_1);\n              local_78 = 0x10;\n              iVar4 = uVar8 - 2;\n              param_1 = local_50;\n            }\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = (undefined8 *)&stack0x00000010;\n            }\n            param_1 = (undefined8 *)*param_1;\n            iVar4 = iVar4 + -1;\n          }\n          (**(code **)(puVar3 + 0x20))(*param_1);\n          if (local_78 < 0x30) {\n            uVar6 = (ulong)local_78;\n            local_78 = local_78 + 8;\n            param_1 = (undefined8 *)((long)&local_58 + uVar6);\n          }\n          else {\n            param_1 = local_70;\n            local_70 = local_70 + 1;\n          }\n          param_1 = (undefined8 *)*param_1;\n          for (iVar4 = iVar4 + -1; iVar4 != -1; iVar4 = iVar4 + -4) {\nLAB_001621c6:\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            uVar6 = (ulong)local_78;\n            if (local_78 < 0x30) {\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = local_70 + 1;\n            }\n            param_1 = (undefined8 *)*param_1;\n          }\n        }\n        uVar5 = 0xd;\n        goto LAB_00162039;\n      }\n      uVar6 = (ulong)local_90;\n      uVar8 = uVar8 + 1;\n      if (local_90 < 0x30) {\n        local_90 = local_90 + 8;\n        lVar2 = *(long *)((long)&local_58 + uVar6);\n      }\n      else {\n        lVar2 = *local_88;\n        local_88 = local_88 + 1;\n      }\n    } while (lVar2 != 0);\n  }" if (parenthesized_expression "(param_1 != (undefined8 *)0x0)" ( (binary_expression "param_1 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar8 = 0;\n    do {\n      iVar4 = (**(code **)(puVar3 + 0x10))();\n      if (iVar4 != 0) {\n        local_70 = (undefined8 *)&stack0x00000008;\n        local_78 = 8;\n        iVar4 = uVar8 - 1;\n        if (uVar8 != 0) {\n          uVar9 = uVar8 & 3;\n          if (uVar9 == 0) goto LAB_001621c6;\n          if (uVar9 != 1) {\n            if (uVar9 != 2) {\n              (**(code **)(puVar3 + 0x20))(*param_1);\n              local_78 = 0x10;\n              iVar4 = uVar8 - 2;\n              param_1 = local_50;\n            }\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = (undefined8 *)&stack0x00000010;\n            }\n            param_1 = (undefined8 *)*param_1;\n            iVar4 = iVar4 + -1;\n          }\n          (**(code **)(puVar3 + 0x20))(*param_1);\n          if (local_78 < 0x30) {\n            uVar6 = (ulong)local_78;\n            local_78 = local_78 + 8;\n            param_1 = (undefined8 *)((long)&local_58 + uVar6);\n          }\n          else {\n            param_1 = local_70;\n            local_70 = local_70 + 1;\n          }\n          param_1 = (undefined8 *)*param_1;\n          for (iVar4 = iVar4 + -1; iVar4 != -1; iVar4 = iVar4 + -4) {\nLAB_001621c6:\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            uVar6 = (ulong)local_78;\n            if (local_78 < 0x30) {\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = local_70 + 1;\n            }\n            param_1 = (undefined8 *)*param_1;\n          }\n        }\n        uVar5 = 0xd;\n        goto LAB_00162039;\n      }\n      uVar6 = (ulong)local_90;\n      uVar8 = uVar8 + 1;\n      if (local_90 < 0x30) {\n        local_90 = local_90 + 8;\n        lVar2 = *(long *)((long)&local_58 + uVar6);\n      }\n      else {\n        lVar2 = *local_88;\n        local_88 = local_88 + 1;\n      }\n    } while (lVar2 != 0);\n  }" { (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (do_statement "do {\n      iVar4 = (**(code **)(puVar3 + 0x10))();\n      if (iVar4 != 0) {\n        local_70 = (undefined8 *)&stack0x00000008;\n        local_78 = 8;\n        iVar4 = uVar8 - 1;\n        if (uVar8 != 0) {\n          uVar9 = uVar8 & 3;\n          if (uVar9 == 0) goto LAB_001621c6;\n          if (uVar9 != 1) {\n            if (uVar9 != 2) {\n              (**(code **)(puVar3 + 0x20))(*param_1);\n              local_78 = 0x10;\n              iVar4 = uVar8 - 2;\n              param_1 = local_50;\n            }\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = (undefined8 *)&stack0x00000010;\n            }\n            param_1 = (undefined8 *)*param_1;\n            iVar4 = iVar4 + -1;\n          }\n          (**(code **)(puVar3 + 0x20))(*param_1);\n          if (local_78 < 0x30) {\n            uVar6 = (ulong)local_78;\n            local_78 = local_78 + 8;\n            param_1 = (undefined8 *)((long)&local_58 + uVar6);\n          }\n          else {\n            param_1 = local_70;\n            local_70 = local_70 + 1;\n          }\n          param_1 = (undefined8 *)*param_1;\n          for (iVar4 = iVar4 + -1; iVar4 != -1; iVar4 = iVar4 + -4) {\nLAB_001621c6:\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            uVar6 = (ulong)local_78;\n            if (local_78 < 0x30) {\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = local_70 + 1;\n            }\n            param_1 = (undefined8 *)*param_1;\n          }\n        }\n        uVar5 = 0xd;\n        goto LAB_00162039;\n      }\n      uVar6 = (ulong)local_90;\n      uVar8 = uVar8 + 1;\n      if (local_90 < 0x30) {\n        local_90 = local_90 + 8;\n        lVar2 = *(long *)((long)&local_58 + uVar6);\n      }\n      else {\n        lVar2 = *local_88;\n        local_88 = local_88 + 1;\n      }\n    } while (lVar2 != 0);" do (compound_statement "{\n      iVar4 = (**(code **)(puVar3 + 0x10))();\n      if (iVar4 != 0) {\n        local_70 = (undefined8 *)&stack0x00000008;\n        local_78 = 8;\n        iVar4 = uVar8 - 1;\n        if (uVar8 != 0) {\n          uVar9 = uVar8 & 3;\n          if (uVar9 == 0) goto LAB_001621c6;\n          if (uVar9 != 1) {\n            if (uVar9 != 2) {\n              (**(code **)(puVar3 + 0x20))(*param_1);\n              local_78 = 0x10;\n              iVar4 = uVar8 - 2;\n              param_1 = local_50;\n            }\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = (undefined8 *)&stack0x00000010;\n            }\n            param_1 = (undefined8 *)*param_1;\n            iVar4 = iVar4 + -1;\n          }\n          (**(code **)(puVar3 + 0x20))(*param_1);\n          if (local_78 < 0x30) {\n            uVar6 = (ulong)local_78;\n            local_78 = local_78 + 8;\n            param_1 = (undefined8 *)((long)&local_58 + uVar6);\n          }\n          else {\n            param_1 = local_70;\n            local_70 = local_70 + 1;\n          }\n          param_1 = (undefined8 *)*param_1;\n          for (iVar4 = iVar4 + -1; iVar4 != -1; iVar4 = iVar4 + -4) {\nLAB_001621c6:\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            uVar6 = (ulong)local_78;\n            if (local_78 < 0x30) {\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = local_70 + 1;\n            }\n            param_1 = (undefined8 *)*param_1;\n          }\n        }\n        uVar5 = 0xd;\n        goto LAB_00162039;\n      }\n      uVar6 = (ulong)local_90;\n      uVar8 = uVar8 + 1;\n      if (local_90 < 0x30) {\n        local_90 = local_90 + 8;\n        lVar2 = *(long *)((long)&local_58 + uVar6);\n      }\n      else {\n        lVar2 = *local_88;\n        local_88 = local_88 + 1;\n      }\n    }" { (expression_statement "iVar4 = (**(code **)(puVar3 + 0x10))();" (assignment_expression "iVar4 = (**(code **)(puVar3 + 0x10))()" identifier = (call_expression "(**(code **)(puVar3 + 0x10))()" (parenthesized_expression "(**(code **)(puVar3 + 0x10))" ( (pointer_expression "**(code **)(puVar3 + 0x10)" * (pointer_expression "*(code **)(puVar3 + 0x10)" * (cast_expression "(code **)(puVar3 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + 0x10)" ( (binary_expression "puVar3 + 0x10" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) (if_statement "if (iVar4 != 0) {\n        local_70 = (undefined8 *)&stack0x00000008;\n        local_78 = 8;\n        iVar4 = uVar8 - 1;\n        if (uVar8 != 0) {\n          uVar9 = uVar8 & 3;\n          if (uVar9 == 0) goto LAB_001621c6;\n          if (uVar9 != 1) {\n            if (uVar9 != 2) {\n              (**(code **)(puVar3 + 0x20))(*param_1);\n              local_78 = 0x10;\n              iVar4 = uVar8 - 2;\n              param_1 = local_50;\n            }\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = (undefined8 *)&stack0x00000010;\n            }\n            param_1 = (undefined8 *)*param_1;\n            iVar4 = iVar4 + -1;\n          }\n          (**(code **)(puVar3 + 0x20))(*param_1);\n          if (local_78 < 0x30) {\n            uVar6 = (ulong)local_78;\n            local_78 = local_78 + 8;\n            param_1 = (undefined8 *)((long)&local_58 + uVar6);\n          }\n          else {\n            param_1 = local_70;\n            local_70 = local_70 + 1;\n          }\n          param_1 = (undefined8 *)*param_1;\n          for (iVar4 = iVar4 + -1; iVar4 != -1; iVar4 = iVar4 + -4) {\nLAB_001621c6:\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            uVar6 = (ulong)local_78;\n            if (local_78 < 0x30) {\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = local_70 + 1;\n            }\n            param_1 = (undefined8 *)*param_1;\n          }\n        }\n        uVar5 = 0xd;\n        goto LAB_00162039;\n      }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n        local_70 = (undefined8 *)&stack0x00000008;\n        local_78 = 8;\n        iVar4 = uVar8 - 1;\n        if (uVar8 != 0) {\n          uVar9 = uVar8 & 3;\n          if (uVar9 == 0) goto LAB_001621c6;\n          if (uVar9 != 1) {\n            if (uVar9 != 2) {\n              (**(code **)(puVar3 + 0x20))(*param_1);\n              local_78 = 0x10;\n              iVar4 = uVar8 - 2;\n              param_1 = local_50;\n            }\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = (undefined8 *)&stack0x00000010;\n            }\n            param_1 = (undefined8 *)*param_1;\n            iVar4 = iVar4 + -1;\n          }\n          (**(code **)(puVar3 + 0x20))(*param_1);\n          if (local_78 < 0x30) {\n            uVar6 = (ulong)local_78;\n            local_78 = local_78 + 8;\n            param_1 = (undefined8 *)((long)&local_58 + uVar6);\n          }\n          else {\n            param_1 = local_70;\n            local_70 = local_70 + 1;\n          }\n          param_1 = (undefined8 *)*param_1;\n          for (iVar4 = iVar4 + -1; iVar4 != -1; iVar4 = iVar4 + -4) {\nLAB_001621c6:\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            uVar6 = (ulong)local_78;\n            if (local_78 < 0x30) {\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = local_70 + 1;\n            }\n            param_1 = (undefined8 *)*param_1;\n          }\n        }\n        uVar5 = 0xd;\n        goto LAB_00162039;\n      }" { (expression_statement "local_70 = (undefined8 *)&stack0x00000008;" (assignment_expression "local_70 = (undefined8 *)&stack0x00000008" identifier = (cast_expression "(undefined8 *)&stack0x00000008" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&stack0x00000008" & identifier))) ;) (expression_statement "local_78 = 8;" (assignment_expression "local_78 = 8" identifier = number_literal) ;) (expression_statement "iVar4 = uVar8 - 1;" (assignment_expression "iVar4 = uVar8 - 1" identifier = (binary_expression "uVar8 - 1" identifier - number_literal)) ;) (if_statement "if (uVar8 != 0) {\n          uVar9 = uVar8 & 3;\n          if (uVar9 == 0) goto LAB_001621c6;\n          if (uVar9 != 1) {\n            if (uVar9 != 2) {\n              (**(code **)(puVar3 + 0x20))(*param_1);\n              local_78 = 0x10;\n              iVar4 = uVar8 - 2;\n              param_1 = local_50;\n            }\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = (undefined8 *)&stack0x00000010;\n            }\n            param_1 = (undefined8 *)*param_1;\n            iVar4 = iVar4 + -1;\n          }\n          (**(code **)(puVar3 + 0x20))(*param_1);\n          if (local_78 < 0x30) {\n            uVar6 = (ulong)local_78;\n            local_78 = local_78 + 8;\n            param_1 = (undefined8 *)((long)&local_58 + uVar6);\n          }\n          else {\n            param_1 = local_70;\n            local_70 = local_70 + 1;\n          }\n          param_1 = (undefined8 *)*param_1;\n          for (iVar4 = iVar4 + -1; iVar4 != -1; iVar4 = iVar4 + -4) {\nLAB_001621c6:\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            uVar6 = (ulong)local_78;\n            if (local_78 < 0x30) {\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = local_70 + 1;\n            }\n            param_1 = (undefined8 *)*param_1;\n          }\n        }" if (parenthesized_expression "(uVar8 != 0)" ( (binary_expression "uVar8 != 0" identifier != number_literal) )) (compound_statement "{\n          uVar9 = uVar8 & 3;\n          if (uVar9 == 0) goto LAB_001621c6;\n          if (uVar9 != 1) {\n            if (uVar9 != 2) {\n              (**(code **)(puVar3 + 0x20))(*param_1);\n              local_78 = 0x10;\n              iVar4 = uVar8 - 2;\n              param_1 = local_50;\n            }\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = (undefined8 *)&stack0x00000010;\n            }\n            param_1 = (undefined8 *)*param_1;\n            iVar4 = iVar4 + -1;\n          }\n          (**(code **)(puVar3 + 0x20))(*param_1);\n          if (local_78 < 0x30) {\n            uVar6 = (ulong)local_78;\n            local_78 = local_78 + 8;\n            param_1 = (undefined8 *)((long)&local_58 + uVar6);\n          }\n          else {\n            param_1 = local_70;\n            local_70 = local_70 + 1;\n          }\n          param_1 = (undefined8 *)*param_1;\n          for (iVar4 = iVar4 + -1; iVar4 != -1; iVar4 = iVar4 + -4) {\nLAB_001621c6:\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            uVar6 = (ulong)local_78;\n            if (local_78 < 0x30) {\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = local_70 + 1;\n            }\n            param_1 = (undefined8 *)*param_1;\n          }\n        }" { (expression_statement "uVar9 = uVar8 & 3;" (assignment_expression "uVar9 = uVar8 & 3" identifier = (binary_expression "uVar8 & 3" identifier & number_literal)) ;) (if_statement "if (uVar9 == 0) goto LAB_001621c6;" if (parenthesized_expression "(uVar9 == 0)" ( (binary_expression "uVar9 == 0" identifier == number_literal) )) (goto_statement "goto LAB_001621c6;" goto statement_identifier ;)) (if_statement "if (uVar9 != 1) {\n            if (uVar9 != 2) {\n              (**(code **)(puVar3 + 0x20))(*param_1);\n              local_78 = 0x10;\n              iVar4 = uVar8 - 2;\n              param_1 = local_50;\n            }\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = (undefined8 *)&stack0x00000010;\n            }\n            param_1 = (undefined8 *)*param_1;\n            iVar4 = iVar4 + -1;\n          }" if (parenthesized_expression "(uVar9 != 1)" ( (binary_expression "uVar9 != 1" identifier != number_literal) )) (compound_statement "{\n            if (uVar9 != 2) {\n              (**(code **)(puVar3 + 0x20))(*param_1);\n              local_78 = 0x10;\n              iVar4 = uVar8 - 2;\n              param_1 = local_50;\n            }\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = (undefined8 *)&stack0x00000010;\n            }\n            param_1 = (undefined8 *)*param_1;\n            iVar4 = iVar4 + -1;\n          }" { (if_statement "if (uVar9 != 2) {\n              (**(code **)(puVar3 + 0x20))(*param_1);\n              local_78 = 0x10;\n              iVar4 = uVar8 - 2;\n              param_1 = local_50;\n            }" if (parenthesized_expression "(uVar9 != 2)" ( (binary_expression "uVar9 != 2" identifier != number_literal) )) (compound_statement "{\n              (**(code **)(puVar3 + 0x20))(*param_1);\n              local_78 = 0x10;\n              iVar4 = uVar8 - 2;\n              param_1 = local_50;\n            }" { (expression_statement "(**(code **)(puVar3 + 0x20))(*param_1);" (call_expression "(**(code **)(puVar3 + 0x20))(*param_1)" (parenthesized_expression "(**(code **)(puVar3 + 0x20))" ( (pointer_expression "**(code **)(puVar3 + 0x20)" * (pointer_expression "*(code **)(puVar3 + 0x20)" * (cast_expression "(code **)(puVar3 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + 0x20)" ( (binary_expression "puVar3 + 0x20" identifier + number_literal) ))))) )) (argument_list "(*param_1)" ( (pointer_expression "*param_1" * identifier) ))) ;) (expression_statement "local_78 = 0x10;" (assignment_expression "local_78 = 0x10" identifier = number_literal) ;) (expression_statement "iVar4 = uVar8 - 2;" (assignment_expression "iVar4 = uVar8 - 2" identifier = (binary_expression "uVar8 - 2" identifier - number_literal)) ;) (expression_statement "param_1 = local_50;" (assignment_expression "param_1 = local_50" identifier = identifier) ;) })) (expression_statement "(**(code **)(puVar3 + 0x20))(*param_1);" (call_expression "(**(code **)(puVar3 + 0x20))(*param_1)" (parenthesized_expression "(**(code **)(puVar3 + 0x20))" ( (pointer_expression "**(code **)(puVar3 + 0x20)" * (pointer_expression "*(code **)(puVar3 + 0x20)" * (cast_expression "(code **)(puVar3 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + 0x20)" ( (binary_expression "puVar3 + 0x20" identifier + number_literal) ))))) )) (argument_list "(*param_1)" ( (pointer_expression "*param_1" * identifier) ))) ;) (if_statement "if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = (undefined8 *)&stack0x00000010;\n            }" if (parenthesized_expression "(local_78 < 0x30)" ( (binary_expression "local_78 < 0x30" identifier < number_literal) )) (compound_statement "{\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }" { (expression_statement "uVar6 = (ulong)local_78;" (assignment_expression "uVar6 = (ulong)local_78" identifier = (cast_expression "(ulong)local_78" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "local_78 = local_78 + 8;" (assignment_expression "local_78 = local_78 + 8" identifier = (binary_expression "local_78 + 8" identifier + number_literal)) ;) (expression_statement "param_1 = (undefined8 *)((long)&local_58 + uVar6);" (assignment_expression "param_1 = (undefined8 *)((long)&local_58 + uVar6)" identifier = (cast_expression "(undefined8 *)((long)&local_58 + uVar6)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&local_58 + uVar6)" ( (binary_expression "(long)&local_58 + uVar6" (cast_expression "(long)&local_58" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&local_58" & identifier)) + identifier) )))) ;) }) (else_clause "else {\n              param_1 = local_70;\n              local_70 = (undefined8 *)&stack0x00000010;\n            }" else (compound_statement "{\n              param_1 = local_70;\n              local_70 = (undefined8 *)&stack0x00000010;\n            }" { (expression_statement "param_1 = local_70;" (assignment_expression "param_1 = local_70" identifier = identifier) ;) (expression_statement "local_70 = (undefined8 *)&stack0x00000010;" (assignment_expression "local_70 = (undefined8 *)&stack0x00000010" identifier = (cast_expression "(undefined8 *)&stack0x00000010" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&stack0x00000010" & identifier))) ;) }))) (expression_statement "param_1 = (undefined8 *)*param_1;" (assignment_expression "param_1 = (undefined8 *)*param_1" identifier = (cast_expression "(undefined8 *)*param_1" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ;) })) (expression_statement "(**(code **)(puVar3 + 0x20))(*param_1);" (call_expression "(**(code **)(puVar3 + 0x20))(*param_1)" (parenthesized_expression "(**(code **)(puVar3 + 0x20))" ( (pointer_expression "**(code **)(puVar3 + 0x20)" * (pointer_expression "*(code **)(puVar3 + 0x20)" * (cast_expression "(code **)(puVar3 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + 0x20)" ( (binary_expression "puVar3 + 0x20" identifier + number_literal) ))))) )) (argument_list "(*param_1)" ( (pointer_expression "*param_1" * identifier) ))) ;) (if_statement "if (local_78 < 0x30) {\n            uVar6 = (ulong)local_78;\n            local_78 = local_78 + 8;\n            param_1 = (undefined8 *)((long)&local_58 + uVar6);\n          }\n          else {\n            param_1 = local_70;\n            local_70 = local_70 + 1;\n          }" if (parenthesized_expression "(local_78 < 0x30)" ( (binary_expression "local_78 < 0x30" identifier < number_literal) )) (compound_statement "{\n            uVar6 = (ulong)local_78;\n            local_78 = local_78 + 8;\n            param_1 = (undefined8 *)((long)&local_58 + uVar6);\n          }" { (expression_statement "uVar6 = (ulong)local_78;" (assignment_expression "uVar6 = (ulong)local_78" identifier = (cast_expression "(ulong)local_78" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "local_78 = local_78 + 8;" (assignment_expression "local_78 = local_78 + 8" identifier = (binary_expression "local_78 + 8" identifier + number_literal)) ;) (expression_statement "param_1 = (undefined8 *)((long)&local_58 + uVar6);" (assignment_expression "param_1 = (undefined8 *)((long)&local_58 + uVar6)" identifier = (cast_expression "(undefined8 *)((long)&local_58 + uVar6)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&local_58 + uVar6)" ( (binary_expression "(long)&local_58 + uVar6" (cast_expression "(long)&local_58" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&local_58" & identifier)) + identifier) )))) ;) }) (else_clause "else {\n            param_1 = local_70;\n            local_70 = local_70 + 1;\n          }" else (compound_statement "{\n            param_1 = local_70;\n            local_70 = local_70 + 1;\n          }" { (expression_statement "param_1 = local_70;" (assignment_expression "param_1 = local_70" identifier = identifier) ;) (expression_statement "local_70 = local_70 + 1;" (assignment_expression "local_70 = local_70 + 1" identifier = (binary_expression "local_70 + 1" identifier + number_literal)) ;) }))) (expression_statement "param_1 = (undefined8 *)*param_1;" (assignment_expression "param_1 = (undefined8 *)*param_1" identifier = (cast_expression "(undefined8 *)*param_1" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (for_statement "for (iVar4 = iVar4 + -1; iVar4 != -1; iVar4 = iVar4 + -4) {\nLAB_001621c6:\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            uVar6 = (ulong)local_78;\n            if (local_78 < 0x30) {\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = local_70 + 1;\n            }\n            param_1 = (undefined8 *)*param_1;\n          }" for ( (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ; (binary_expression "iVar4 != -1" identifier != number_literal) ; (assignment_expression "iVar4 = iVar4 + -4" identifier = (binary_expression "iVar4 + -4" identifier + number_literal)) ) (compound_statement "{\nLAB_001621c6:\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            uVar6 = (ulong)local_78;\n            if (local_78 < 0x30) {\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = local_70 + 1;\n            }\n            param_1 = (undefined8 *)*param_1;\n          }" { (labeled_statement "LAB_001621c6:\n            (**(code **)(puVar3 + 0x20))(*param_1);" statement_identifier : (expression_statement "(**(code **)(puVar3 + 0x20))(*param_1);" (call_expression "(**(code **)(puVar3 + 0x20))(*param_1)" (parenthesized_expression "(**(code **)(puVar3 + 0x20))" ( (pointer_expression "**(code **)(puVar3 + 0x20)" * (pointer_expression "*(code **)(puVar3 + 0x20)" * (cast_expression "(code **)(puVar3 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + 0x20)" ( (binary_expression "puVar3 + 0x20" identifier + number_literal) ))))) )) (argument_list "(*param_1)" ( (pointer_expression "*param_1" * identifier) ))) ;)) (expression_statement "uVar6 = (ulong)local_78;" (assignment_expression "uVar6 = (ulong)local_78" identifier = (cast_expression "(ulong)local_78" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (if_statement "if (local_78 < 0x30) {\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }" if (parenthesized_expression "(local_78 < 0x30)" ( (binary_expression "local_78 < 0x30" identifier < number_literal) )) (compound_statement "{\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }" { (expression_statement "local_78 = local_78 + 8;" (assignment_expression "local_78 = local_78 + 8" identifier = (binary_expression "local_78 + 8" identifier + number_literal)) ;) (expression_statement "puVar7 = (undefined8 *)((long)&local_58 + uVar6);" (assignment_expression "puVar7 = (undefined8 *)((long)&local_58 + uVar6)" identifier = (cast_expression "(undefined8 *)((long)&local_58 + uVar6)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&local_58 + uVar6)" ( (binary_expression "(long)&local_58 + uVar6" (cast_expression "(long)&local_58" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&local_58" & identifier)) + identifier) )))) ;) }) (else_clause "else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }" else (compound_statement "{\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }" { (expression_statement "puVar7 = local_70;" (assignment_expression "puVar7 = local_70" identifier = identifier) ;) (expression_statement "local_70 = local_70 + 1;" (assignment_expression "local_70 = local_70 + 1" identifier = (binary_expression "local_70 + 1" identifier + number_literal)) ;) }))) (expression_statement "(**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);" (call_expression "(**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7)" (parenthesized_expression "(**(code **)(puVar3 + 0x20))" ( (pointer_expression "**(code **)(puVar3 + 0x20)" * (pointer_expression "*(code **)(puVar3 + 0x20)" * (cast_expression "(code **)(puVar3 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + 0x20)" ( (binary_expression "puVar3 + 0x20" identifier + number_literal) ))))) )) (argument_list "(*(undefined8 *)*puVar7)" ( (pointer_expression "*(undefined8 *)*puVar7" * (cast_expression "(undefined8 *)*puVar7" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar7" * identifier))) ))) ;) (if_statement "if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }" if (parenthesized_expression "(local_78 < 0x30)" ( (binary_expression "local_78 < 0x30" identifier < number_literal) )) (compound_statement "{\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }" { (expression_statement "uVar6 = (ulong)local_78;" (assignment_expression "uVar6 = (ulong)local_78" identifier = (cast_expression "(ulong)local_78" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "local_78 = local_78 + 8;" (assignment_expression "local_78 = local_78 + 8" identifier = (binary_expression "local_78 + 8" identifier + number_literal)) ;) (expression_statement "puVar7 = (undefined8 *)((long)&local_58 + uVar6);" (assignment_expression "puVar7 = (undefined8 *)((long)&local_58 + uVar6)" identifier = (cast_expression "(undefined8 *)((long)&local_58 + uVar6)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&local_58 + uVar6)" ( (binary_expression "(long)&local_58 + uVar6" (cast_expression "(long)&local_58" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&local_58" & identifier)) + identifier) )))) ;) }) (else_clause "else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }" else (compound_statement "{\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }" { (expression_statement "puVar7 = local_70;" (assignment_expression "puVar7 = local_70" identifier = identifier) ;) (expression_statement "local_70 = local_70 + 1;" (assignment_expression "local_70 = local_70 + 1" identifier = (binary_expression "local_70 + 1" identifier + number_literal)) ;) }))) (expression_statement "(**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);" (call_expression "(**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7)" (parenthesized_expression "(**(code **)(puVar3 + 0x20))" ( (pointer_expression "**(code **)(puVar3 + 0x20)" * (pointer_expression "*(code **)(puVar3 + 0x20)" * (cast_expression "(code **)(puVar3 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + 0x20)" ( (binary_expression "puVar3 + 0x20" identifier + number_literal) ))))) )) (argument_list "(*(undefined8 *)*puVar7)" ( (pointer_expression "*(undefined8 *)*puVar7" * (cast_expression "(undefined8 *)*puVar7" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar7" * identifier))) ))) ;) (if_statement "if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }" if (parenthesized_expression "(local_78 < 0x30)" ( (binary_expression "local_78 < 0x30" identifier < number_literal) )) (compound_statement "{\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }" { (expression_statement "uVar6 = (ulong)local_78;" (assignment_expression "uVar6 = (ulong)local_78" identifier = (cast_expression "(ulong)local_78" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "local_78 = local_78 + 8;" (assignment_expression "local_78 = local_78 + 8" identifier = (binary_expression "local_78 + 8" identifier + number_literal)) ;) (expression_statement "puVar7 = (undefined8 *)((long)&local_58 + uVar6);" (assignment_expression "puVar7 = (undefined8 *)((long)&local_58 + uVar6)" identifier = (cast_expression "(undefined8 *)((long)&local_58 + uVar6)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&local_58 + uVar6)" ( (binary_expression "(long)&local_58 + uVar6" (cast_expression "(long)&local_58" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&local_58" & identifier)) + identifier) )))) ;) }) (else_clause "else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }" else (compound_statement "{\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }" { (expression_statement "puVar7 = local_70;" (assignment_expression "puVar7 = local_70" identifier = identifier) ;) (expression_statement "local_70 = local_70 + 1;" (assignment_expression "local_70 = local_70 + 1" identifier = (binary_expression "local_70 + 1" identifier + number_literal)) ;) }))) (expression_statement "(**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);" (call_expression "(**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7)" (parenthesized_expression "(**(code **)(puVar3 + 0x20))" ( (pointer_expression "**(code **)(puVar3 + 0x20)" * (pointer_expression "*(code **)(puVar3 + 0x20)" * (cast_expression "(code **)(puVar3 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + 0x20)" ( (binary_expression "puVar3 + 0x20" identifier + number_literal) ))))) )) (argument_list "(*(undefined8 *)*puVar7)" ( (pointer_expression "*(undefined8 *)*puVar7" * (cast_expression "(undefined8 *)*puVar7" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar7" * identifier))) ))) ;) (if_statement "if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = local_70 + 1;\n            }" if (parenthesized_expression "(local_78 < 0x30)" ( (binary_expression "local_78 < 0x30" identifier < number_literal) )) (compound_statement "{\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }" { (expression_statement "uVar6 = (ulong)local_78;" (assignment_expression "uVar6 = (ulong)local_78" identifier = (cast_expression "(ulong)local_78" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "local_78 = local_78 + 8;" (assignment_expression "local_78 = local_78 + 8" identifier = (binary_expression "local_78 + 8" identifier + number_literal)) ;) (expression_statement "param_1 = (undefined8 *)((long)&local_58 + uVar6);" (assignment_expression "param_1 = (undefined8 *)((long)&local_58 + uVar6)" identifier = (cast_expression "(undefined8 *)((long)&local_58 + uVar6)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&local_58 + uVar6)" ( (binary_expression "(long)&local_58 + uVar6" (cast_expression "(long)&local_58" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&local_58" & identifier)) + identifier) )))) ;) }) (else_clause "else {\n              param_1 = local_70;\n              local_70 = local_70 + 1;\n            }" else (compound_statement "{\n              param_1 = local_70;\n              local_70 = local_70 + 1;\n            }" { (expression_statement "param_1 = local_70;" (assignment_expression "param_1 = local_70" identifier = identifier) ;) (expression_statement "local_70 = local_70 + 1;" (assignment_expression "local_70 = local_70 + 1" identifier = (binary_expression "local_70 + 1" identifier + number_literal)) ;) }))) (expression_statement "param_1 = (undefined8 *)*param_1;" (assignment_expression "param_1 = (undefined8 *)*param_1" identifier = (cast_expression "(undefined8 *)*param_1" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) })) })) (expression_statement "uVar5 = 0xd;" (assignment_expression "uVar5 = 0xd" identifier = number_literal) ;) (goto_statement "goto LAB_00162039;" goto statement_identifier ;) })) (expression_statement "uVar6 = (ulong)local_90;" (assignment_expression "uVar6 = (ulong)local_90" identifier = (cast_expression "(ulong)local_90" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "uVar8 = uVar8 + 1;" (assignment_expression "uVar8 = uVar8 + 1" identifier = (binary_expression "uVar8 + 1" identifier + number_literal)) ;) (if_statement "if (local_90 < 0x30) {\n        local_90 = local_90 + 8;\n        lVar2 = *(long *)((long)&local_58 + uVar6);\n      }\n      else {\n        lVar2 = *local_88;\n        local_88 = local_88 + 1;\n      }" if (parenthesized_expression "(local_90 < 0x30)" ( (binary_expression "local_90 < 0x30" identifier < number_literal) )) (compound_statement "{\n        local_90 = local_90 + 8;\n        lVar2 = *(long *)((long)&local_58 + uVar6);\n      }" { (expression_statement "local_90 = local_90 + 8;" (assignment_expression "local_90 = local_90 + 8" identifier = (binary_expression "local_90 + 8" identifier + number_literal)) ;) (expression_statement "lVar2 = *(long *)((long)&local_58 + uVar6);" (assignment_expression "lVar2 = *(long *)((long)&local_58 + uVar6)" identifier = (pointer_expression "*(long *)((long)&local_58 + uVar6)" * (cast_expression "(long *)((long)&local_58 + uVar6)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&local_58 + uVar6)" ( (binary_expression "(long)&local_58 + uVar6" (cast_expression "(long)&local_58" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&local_58" & identifier)) + identifier) ))))) ;) }) (else_clause "else {\n        lVar2 = *local_88;\n        local_88 = local_88 + 1;\n      }" else (compound_statement "{\n        lVar2 = *local_88;\n        local_88 = local_88 + 1;\n      }" { (expression_statement "lVar2 = *local_88;" (assignment_expression "lVar2 = *local_88" identifier = (pointer_expression "*local_88" * identifier)) ;) (expression_statement "local_88 = local_88 + 1;" (assignment_expression "local_88 = local_88 + 1" identifier = (binary_expression "local_88 + 1" identifier + number_literal)) ;) }))) }) while (parenthesized_expression "(lVar2 != 0)" ( (binary_expression "lVar2 != 0" identifier != number_literal) )) ;) })) (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00162039:\n  if (lVar1 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }" statement_identifier : (if_statement "if (lVar1 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }" if (parenthesized_expression "(lVar1 != *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "lVar1 != *(long *)(in_FS_OFFSET + 0x28)" identifier != (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n                    \n    __stack_chk_fail();\n  }" { (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return uVar5;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression & IDENT))) ;) (expression_statement (assignment_expression IDENT = 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) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (pointer_expression * IDENT) ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (pointer_expression * IDENT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (pointer_expression & IDENT)) + IDENT) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT))) ;) }))) (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 (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (pointer_expression * IDENT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (pointer_expression & IDENT)) + IDENT) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (for_statement for ( (assignment_expression IDENT = (binary_expression IDENT + LIT)) ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (pointer_expression * IDENT) ))) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (pointer_expression & IDENT)) + IDENT) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (pointer_expression & IDENT)) + IDENT) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (pointer_expression & IDENT)) + IDENT) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (pointer_expression & IDENT)) + IDENT) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) })) })) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (pointer_expression & IDENT)) + IDENT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (return_statement return IDENT ;) })))
(function_definition "undefined8\nltc_init_multi(undefined8 *param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4,\n              undefined8 param_5,undefined8 param_6)\n\n{\n  long lVar1;\n  long lVar2;\n  undefined *puVar3;\n  int iVar4;\n  undefined8 uVar5;\n  ulong uVar6;\n  undefined8 *puVar7;\n  uint uVar8;\n  uint uVar9;\n  long in_FS_OFFSET;\n  uint local_90;\n  long *local_88;\n  uint local_78;\n  undefined8 *local_70;\n  long local_58;\n  undefined8 *local_50;\n  undefined8 local_48;\n  undefined8 local_40;\n  undefined8 local_38;\n  undefined8 local_30;\n  \n  puVar3 = PTR_ltc_mp_001ddec0;\n  lVar1 = *(long *)(in_FS_OFFSET + 0x28);\n  local_88 = (long *)&stack0x00000008;\n  local_90 = 8;\n  local_50 = param_2;\n  local_48 = param_3;\n  local_40 = param_4;\n  local_38 = param_5;\n  local_30 = param_6;\n  if (param_1 != (undefined8 *)0x0) {\n    uVar8 = 0;\n    do {\n      iVar4 = (**(code **)(puVar3 + 0x10))();\n      if (iVar4 != 0) {\n        local_70 = (undefined8 *)&stack0x00000008;\n        local_78 = 8;\n        iVar4 = uVar8 - 1;\n        if (uVar8 != 0) {\n          uVar9 = uVar8 & 3;\n          if (uVar9 == 0) goto LAB_001621c6;\n          if (uVar9 != 1) {\n            if (uVar9 != 2) {\n              (**(code **)(puVar3 + 0x20))(*param_1);\n              local_78 = 0x10;\n              iVar4 = uVar8 - 2;\n              param_1 = local_50;\n            }\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = (undefined8 *)&stack0x00000010;\n            }\n            param_1 = (undefined8 *)*param_1;\n            iVar4 = iVar4 + -1;\n          }\n          (**(code **)(puVar3 + 0x20))(*param_1);\n          if (local_78 < 0x30) {\n            uVar6 = (ulong)local_78;\n            local_78 = local_78 + 8;\n            param_1 = (undefined8 *)((long)&local_58 + uVar6);\n          }\n          else {\n            param_1 = local_70;\n            local_70 = local_70 + 1;\n          }\n          param_1 = (undefined8 *)*param_1;\n          for (iVar4 = iVar4 + -1; iVar4 != -1; iVar4 = iVar4 + -4) {\nLAB_001621c6:\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            uVar6 = (ulong)local_78;\n            if (local_78 < 0x30) {\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = local_70 + 1;\n            }\n            param_1 = (undefined8 *)*param_1;\n          }\n        }\n        uVar5 = 0xd;\n        goto LAB_00162039;\n      }\n      uVar6 = (ulong)local_90;\n      uVar8 = uVar8 + 1;\n      if (local_90 < 0x30) {\n        local_90 = local_90 + 8;\n        lVar2 = *(long *)((long)&local_58 + uVar6);\n      }\n      else {\n        lVar2 = *local_88;\n        local_88 = local_88 + 1;\n      }\n    } while (lVar2 != 0);\n  }\n  uVar5 = 0;\nLAB_00162039:\n  if (lVar1 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return uVar5;\n}" (type_identifier "undefined8") (function_declarator "ltc_init_multi(undefined8 *param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4,\n              undefined8 param_5,undefined8 param_6)" (identifier "ltc_init_multi") (parameter_list "(undefined8 *param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4,\n              undefined8 param_5,undefined8 param_6)" (( "(") (parameter_declaration "undefined8 *param_1" (type_identifier "undefined8") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined8 *param_2" (type_identifier "undefined8") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "undefined8 param_3" (type_identifier "undefined8") (identifier "param_3")) (, ",") (parameter_declaration "undefined8 param_4" (type_identifier "undefined8") (identifier "param_4")) (, ",") (parameter_declaration "undefined8 param_5" (type_identifier "undefined8") (identifier "param_5")) (, ",") (parameter_declaration "undefined8 param_6" (type_identifier "undefined8") (identifier "param_6")) () ")"))) (compound_statement "{\n  long lVar1;\n  long lVar2;\n  undefined *puVar3;\n  int iVar4;\n  undefined8 uVar5;\n  ulong uVar6;\n  undefined8 *puVar7;\n  uint uVar8;\n  uint uVar9;\n  long in_FS_OFFSET;\n  uint local_90;\n  long *local_88;\n  uint local_78;\n  undefined8 *local_70;\n  long local_58;\n  undefined8 *local_50;\n  undefined8 local_48;\n  undefined8 local_40;\n  undefined8 local_38;\n  undefined8 local_30;\n  \n  puVar3 = PTR_ltc_mp_001ddec0;\n  lVar1 = *(long *)(in_FS_OFFSET + 0x28);\n  local_88 = (long *)&stack0x00000008;\n  local_90 = 8;\n  local_50 = param_2;\n  local_48 = param_3;\n  local_40 = param_4;\n  local_38 = param_5;\n  local_30 = param_6;\n  if (param_1 != (undefined8 *)0x0) {\n    uVar8 = 0;\n    do {\n      iVar4 = (**(code **)(puVar3 + 0x10))();\n      if (iVar4 != 0) {\n        local_70 = (undefined8 *)&stack0x00000008;\n        local_78 = 8;\n        iVar4 = uVar8 - 1;\n        if (uVar8 != 0) {\n          uVar9 = uVar8 & 3;\n          if (uVar9 == 0) goto LAB_001621c6;\n          if (uVar9 != 1) {\n            if (uVar9 != 2) {\n              (**(code **)(puVar3 + 0x20))(*param_1);\n              local_78 = 0x10;\n              iVar4 = uVar8 - 2;\n              param_1 = local_50;\n            }\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = (undefined8 *)&stack0x00000010;\n            }\n            param_1 = (undefined8 *)*param_1;\n            iVar4 = iVar4 + -1;\n          }\n          (**(code **)(puVar3 + 0x20))(*param_1);\n          if (local_78 < 0x30) {\n            uVar6 = (ulong)local_78;\n            local_78 = local_78 + 8;\n            param_1 = (undefined8 *)((long)&local_58 + uVar6);\n          }\n          else {\n            param_1 = local_70;\n            local_70 = local_70 + 1;\n          }\n          param_1 = (undefined8 *)*param_1;\n          for (iVar4 = iVar4 + -1; iVar4 != -1; iVar4 = iVar4 + -4) {\nLAB_001621c6:\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            uVar6 = (ulong)local_78;\n            if (local_78 < 0x30) {\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = local_70 + 1;\n            }\n            param_1 = (undefined8 *)*param_1;\n          }\n        }\n        uVar5 = 0xd;\n        goto LAB_00162039;\n      }\n      uVar6 = (ulong)local_90;\n      uVar8 = uVar8 + 1;\n      if (local_90 < 0x30) {\n        local_90 = local_90 + 8;\n        lVar2 = *(long *)((long)&local_58 + uVar6);\n      }\n      else {\n        lVar2 = *local_88;\n        local_88 = local_88 + 1;\n      }\n    } while (lVar2 != 0);\n  }\n  uVar5 = 0;\nLAB_00162039:\n  if (lVar1 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return uVar5;\n}" ({ "{") (declaration "long lVar1;" (sized_type_specifier "long" (long "long")) (identifier "lVar1") (; ";")) (declaration "long lVar2;" (sized_type_specifier "long" (long "long")) (identifier "lVar2") (; ";")) (declaration "undefined *puVar3;" (type_identifier "undefined") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "undefined8 uVar5;" (type_identifier "undefined8") (identifier "uVar5") (; ";")) (declaration "ulong uVar6;" (type_identifier "ulong") (identifier "uVar6") (; ";")) (declaration "undefined8 *puVar7;" (type_identifier "undefined8") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "uint uVar9;" (type_identifier "uint") (identifier "uVar9") (; ";")) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" (long "long")) (identifier "in_FS_OFFSET") (; ";")) (declaration "uint local_90;" (type_identifier "uint") (identifier "local_90") (; ";")) (declaration "long *local_88;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*local_88" (* "*") (identifier "local_88")) (; ";")) (declaration "uint local_78;" (type_identifier "uint") (identifier "local_78") (; ";")) (declaration "undefined8 *local_70;" (type_identifier "undefined8") (pointer_declarator "*local_70" (* "*") (identifier "local_70")) (; ";")) (declaration "long local_58;" (sized_type_specifier "long" (long "long")) (identifier "local_58") (; ";")) (declaration "undefined8 *local_50;" (type_identifier "undefined8") (pointer_declarator "*local_50" (* "*") (identifier "local_50")) (; ";")) (declaration "undefined8 local_48;" (type_identifier "undefined8") (identifier "local_48") (; ";")) (declaration "undefined8 local_40;" (type_identifier "undefined8") (identifier "local_40") (; ";")) (declaration "undefined8 local_38;" (type_identifier "undefined8") (identifier "local_38") (; ";")) (declaration "undefined8 local_30;" (type_identifier "undefined8") (identifier "local_30") (; ";")) (expression_statement "puVar3 = PTR_ltc_mp_001ddec0;" (assignment_expression "puVar3 = PTR_ltc_mp_001ddec0" (identifier "puVar3") (= "=") (identifier "PTR_ltc_mp_001ddec0")) (; ";")) (expression_statement "lVar1 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "lVar1 = *(long *)(in_FS_OFFSET + 0x28)" (identifier "lVar1") (= "=") (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" (* "*") (cast_expression "(long *)(in_FS_OFFSET + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_FS_OFFSET + 0x28)" (( "(") (binary_expression "in_FS_OFFSET + 0x28" (identifier "in_FS_OFFSET") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "local_88 = (long *)&stack0x00000008;" (assignment_expression "local_88 = (long *)&stack0x00000008" (identifier "local_88") (= "=") (cast_expression "(long *)&stack0x00000008" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&stack0x00000008" (& "&") (identifier "stack0x00000008")))) (; ";")) (expression_statement "local_90 = 8;" (assignment_expression "local_90 = 8" (identifier "local_90") (= "=") (number_literal "8")) (; ";")) (expression_statement "local_50 = param_2;" (assignment_expression "local_50 = param_2" (identifier "local_50") (= "=") (identifier "param_2")) (; ";")) (expression_statement "local_48 = param_3;" (assignment_expression "local_48 = param_3" (identifier "local_48") (= "=") (identifier "param_3")) (; ";")) (expression_statement "local_40 = param_4;" (assignment_expression "local_40 = param_4" (identifier "local_40") (= "=") (identifier "param_4")) (; ";")) (expression_statement "local_38 = param_5;" (assignment_expression "local_38 = param_5" (identifier "local_38") (= "=") (identifier "param_5")) (; ";")) (expression_statement "local_30 = param_6;" (assignment_expression "local_30 = param_6" (identifier "local_30") (= "=") (identifier "param_6")) (; ";")) (if_statement "if (param_1 != (undefined8 *)0x0) {\n    uVar8 = 0;\n    do {\n      iVar4 = (**(code **)(puVar3 + 0x10))();\n      if (iVar4 != 0) {\n        local_70 = (undefined8 *)&stack0x00000008;\n        local_78 = 8;\n        iVar4 = uVar8 - 1;\n        if (uVar8 != 0) {\n          uVar9 = uVar8 & 3;\n          if (uVar9 == 0) goto LAB_001621c6;\n          if (uVar9 != 1) {\n            if (uVar9 != 2) {\n              (**(code **)(puVar3 + 0x20))(*param_1);\n              local_78 = 0x10;\n              iVar4 = uVar8 - 2;\n              param_1 = local_50;\n            }\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = (undefined8 *)&stack0x00000010;\n            }\n            param_1 = (undefined8 *)*param_1;\n            iVar4 = iVar4 + -1;\n          }\n          (**(code **)(puVar3 + 0x20))(*param_1);\n          if (local_78 < 0x30) {\n            uVar6 = (ulong)local_78;\n            local_78 = local_78 + 8;\n            param_1 = (undefined8 *)((long)&local_58 + uVar6);\n          }\n          else {\n            param_1 = local_70;\n            local_70 = local_70 + 1;\n          }\n          param_1 = (undefined8 *)*param_1;\n          for (iVar4 = iVar4 + -1; iVar4 != -1; iVar4 = iVar4 + -4) {\nLAB_001621c6:\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            uVar6 = (ulong)local_78;\n            if (local_78 < 0x30) {\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = local_70 + 1;\n            }\n            param_1 = (undefined8 *)*param_1;\n          }\n        }\n        uVar5 = 0xd;\n        goto LAB_00162039;\n      }\n      uVar6 = (ulong)local_90;\n      uVar8 = uVar8 + 1;\n      if (local_90 < 0x30) {\n        local_90 = local_90 + 8;\n        lVar2 = *(long *)((long)&local_58 + uVar6);\n      }\n      else {\n        lVar2 = *local_88;\n        local_88 = local_88 + 1;\n      }\n    } while (lVar2 != 0);\n  }" (if "if") (parenthesized_expression "(param_1 != (undefined8 *)0x0)" (( "(") (binary_expression "param_1 != (undefined8 *)0x0" (identifier "param_1") (!= "!=") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    uVar8 = 0;\n    do {\n      iVar4 = (**(code **)(puVar3 + 0x10))();\n      if (iVar4 != 0) {\n        local_70 = (undefined8 *)&stack0x00000008;\n        local_78 = 8;\n        iVar4 = uVar8 - 1;\n        if (uVar8 != 0) {\n          uVar9 = uVar8 & 3;\n          if (uVar9 == 0) goto LAB_001621c6;\n          if (uVar9 != 1) {\n            if (uVar9 != 2) {\n              (**(code **)(puVar3 + 0x20))(*param_1);\n              local_78 = 0x10;\n              iVar4 = uVar8 - 2;\n              param_1 = local_50;\n            }\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = (undefined8 *)&stack0x00000010;\n            }\n            param_1 = (undefined8 *)*param_1;\n            iVar4 = iVar4 + -1;\n          }\n          (**(code **)(puVar3 + 0x20))(*param_1);\n          if (local_78 < 0x30) {\n            uVar6 = (ulong)local_78;\n            local_78 = local_78 + 8;\n            param_1 = (undefined8 *)((long)&local_58 + uVar6);\n          }\n          else {\n            param_1 = local_70;\n            local_70 = local_70 + 1;\n          }\n          param_1 = (undefined8 *)*param_1;\n          for (iVar4 = iVar4 + -1; iVar4 != -1; iVar4 = iVar4 + -4) {\nLAB_001621c6:\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            uVar6 = (ulong)local_78;\n            if (local_78 < 0x30) {\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = local_70 + 1;\n            }\n            param_1 = (undefined8 *)*param_1;\n          }\n        }\n        uVar5 = 0xd;\n        goto LAB_00162039;\n      }\n      uVar6 = (ulong)local_90;\n      uVar8 = uVar8 + 1;\n      if (local_90 < 0x30) {\n        local_90 = local_90 + 8;\n        lVar2 = *(long *)((long)&local_58 + uVar6);\n      }\n      else {\n        lVar2 = *local_88;\n        local_88 = local_88 + 1;\n      }\n    } while (lVar2 != 0);\n  }" ({ "{") (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" (identifier "uVar8") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n      iVar4 = (**(code **)(puVar3 + 0x10))();\n      if (iVar4 != 0) {\n        local_70 = (undefined8 *)&stack0x00000008;\n        local_78 = 8;\n        iVar4 = uVar8 - 1;\n        if (uVar8 != 0) {\n          uVar9 = uVar8 & 3;\n          if (uVar9 == 0) goto LAB_001621c6;\n          if (uVar9 != 1) {\n            if (uVar9 != 2) {\n              (**(code **)(puVar3 + 0x20))(*param_1);\n              local_78 = 0x10;\n              iVar4 = uVar8 - 2;\n              param_1 = local_50;\n            }\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = (undefined8 *)&stack0x00000010;\n            }\n            param_1 = (undefined8 *)*param_1;\n            iVar4 = iVar4 + -1;\n          }\n          (**(code **)(puVar3 + 0x20))(*param_1);\n          if (local_78 < 0x30) {\n            uVar6 = (ulong)local_78;\n            local_78 = local_78 + 8;\n            param_1 = (undefined8 *)((long)&local_58 + uVar6);\n          }\n          else {\n            param_1 = local_70;\n            local_70 = local_70 + 1;\n          }\n          param_1 = (undefined8 *)*param_1;\n          for (iVar4 = iVar4 + -1; iVar4 != -1; iVar4 = iVar4 + -4) {\nLAB_001621c6:\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            uVar6 = (ulong)local_78;\n            if (local_78 < 0x30) {\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = local_70 + 1;\n            }\n            param_1 = (undefined8 *)*param_1;\n          }\n        }\n        uVar5 = 0xd;\n        goto LAB_00162039;\n      }\n      uVar6 = (ulong)local_90;\n      uVar8 = uVar8 + 1;\n      if (local_90 < 0x30) {\n        local_90 = local_90 + 8;\n        lVar2 = *(long *)((long)&local_58 + uVar6);\n      }\n      else {\n        lVar2 = *local_88;\n        local_88 = local_88 + 1;\n      }\n    } while (lVar2 != 0);" (do "do") (compound_statement "{\n      iVar4 = (**(code **)(puVar3 + 0x10))();\n      if (iVar4 != 0) {\n        local_70 = (undefined8 *)&stack0x00000008;\n        local_78 = 8;\n        iVar4 = uVar8 - 1;\n        if (uVar8 != 0) {\n          uVar9 = uVar8 & 3;\n          if (uVar9 == 0) goto LAB_001621c6;\n          if (uVar9 != 1) {\n            if (uVar9 != 2) {\n              (**(code **)(puVar3 + 0x20))(*param_1);\n              local_78 = 0x10;\n              iVar4 = uVar8 - 2;\n              param_1 = local_50;\n            }\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = (undefined8 *)&stack0x00000010;\n            }\n            param_1 = (undefined8 *)*param_1;\n            iVar4 = iVar4 + -1;\n          }\n          (**(code **)(puVar3 + 0x20))(*param_1);\n          if (local_78 < 0x30) {\n            uVar6 = (ulong)local_78;\n            local_78 = local_78 + 8;\n            param_1 = (undefined8 *)((long)&local_58 + uVar6);\n          }\n          else {\n            param_1 = local_70;\n            local_70 = local_70 + 1;\n          }\n          param_1 = (undefined8 *)*param_1;\n          for (iVar4 = iVar4 + -1; iVar4 != -1; iVar4 = iVar4 + -4) {\nLAB_001621c6:\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            uVar6 = (ulong)local_78;\n            if (local_78 < 0x30) {\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = local_70 + 1;\n            }\n            param_1 = (undefined8 *)*param_1;\n          }\n        }\n        uVar5 = 0xd;\n        goto LAB_00162039;\n      }\n      uVar6 = (ulong)local_90;\n      uVar8 = uVar8 + 1;\n      if (local_90 < 0x30) {\n        local_90 = local_90 + 8;\n        lVar2 = *(long *)((long)&local_58 + uVar6);\n      }\n      else {\n        lVar2 = *local_88;\n        local_88 = local_88 + 1;\n      }\n    }" ({ "{") (expression_statement "iVar4 = (**(code **)(puVar3 + 0x10))();" (assignment_expression "iVar4 = (**(code **)(puVar3 + 0x10))()" (identifier "iVar4") (= "=") (call_expression "(**(code **)(puVar3 + 0x10))()" (parenthesized_expression "(**(code **)(puVar3 + 0x10))" (( "(") (pointer_expression "**(code **)(puVar3 + 0x10)" (* "*") (pointer_expression "*(code **)(puVar3 + 0x10)" (* "*") (cast_expression "(code **)(puVar3 + 0x10)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar3 + 0x10)" (( "(") (binary_expression "puVar3 + 0x10" (identifier "puVar3") (+ "+") (number_literal "0x10")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar4 != 0) {\n        local_70 = (undefined8 *)&stack0x00000008;\n        local_78 = 8;\n        iVar4 = uVar8 - 1;\n        if (uVar8 != 0) {\n          uVar9 = uVar8 & 3;\n          if (uVar9 == 0) goto LAB_001621c6;\n          if (uVar9 != 1) {\n            if (uVar9 != 2) {\n              (**(code **)(puVar3 + 0x20))(*param_1);\n              local_78 = 0x10;\n              iVar4 = uVar8 - 2;\n              param_1 = local_50;\n            }\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = (undefined8 *)&stack0x00000010;\n            }\n            param_1 = (undefined8 *)*param_1;\n            iVar4 = iVar4 + -1;\n          }\n          (**(code **)(puVar3 + 0x20))(*param_1);\n          if (local_78 < 0x30) {\n            uVar6 = (ulong)local_78;\n            local_78 = local_78 + 8;\n            param_1 = (undefined8 *)((long)&local_58 + uVar6);\n          }\n          else {\n            param_1 = local_70;\n            local_70 = local_70 + 1;\n          }\n          param_1 = (undefined8 *)*param_1;\n          for (iVar4 = iVar4 + -1; iVar4 != -1; iVar4 = iVar4 + -4) {\nLAB_001621c6:\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            uVar6 = (ulong)local_78;\n            if (local_78 < 0x30) {\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = local_70 + 1;\n            }\n            param_1 = (undefined8 *)*param_1;\n          }\n        }\n        uVar5 = 0xd;\n        goto LAB_00162039;\n      }" (if "if") (parenthesized_expression "(iVar4 != 0)" (( "(") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        local_70 = (undefined8 *)&stack0x00000008;\n        local_78 = 8;\n        iVar4 = uVar8 - 1;\n        if (uVar8 != 0) {\n          uVar9 = uVar8 & 3;\n          if (uVar9 == 0) goto LAB_001621c6;\n          if (uVar9 != 1) {\n            if (uVar9 != 2) {\n              (**(code **)(puVar3 + 0x20))(*param_1);\n              local_78 = 0x10;\n              iVar4 = uVar8 - 2;\n              param_1 = local_50;\n            }\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = (undefined8 *)&stack0x00000010;\n            }\n            param_1 = (undefined8 *)*param_1;\n            iVar4 = iVar4 + -1;\n          }\n          (**(code **)(puVar3 + 0x20))(*param_1);\n          if (local_78 < 0x30) {\n            uVar6 = (ulong)local_78;\n            local_78 = local_78 + 8;\n            param_1 = (undefined8 *)((long)&local_58 + uVar6);\n          }\n          else {\n            param_1 = local_70;\n            local_70 = local_70 + 1;\n          }\n          param_1 = (undefined8 *)*param_1;\n          for (iVar4 = iVar4 + -1; iVar4 != -1; iVar4 = iVar4 + -4) {\nLAB_001621c6:\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            uVar6 = (ulong)local_78;\n            if (local_78 < 0x30) {\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = local_70 + 1;\n            }\n            param_1 = (undefined8 *)*param_1;\n          }\n        }\n        uVar5 = 0xd;\n        goto LAB_00162039;\n      }" ({ "{") (expression_statement "local_70 = (undefined8 *)&stack0x00000008;" (assignment_expression "local_70 = (undefined8 *)&stack0x00000008" (identifier "local_70") (= "=") (cast_expression "(undefined8 *)&stack0x00000008" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&stack0x00000008" (& "&") (identifier "stack0x00000008")))) (; ";")) (expression_statement "local_78 = 8;" (assignment_expression "local_78 = 8" (identifier "local_78") (= "=") (number_literal "8")) (; ";")) (expression_statement "iVar4 = uVar8 - 1;" (assignment_expression "iVar4 = uVar8 - 1" (identifier "iVar4") (= "=") (binary_expression "uVar8 - 1" (identifier "uVar8") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar8 != 0) {\n          uVar9 = uVar8 & 3;\n          if (uVar9 == 0) goto LAB_001621c6;\n          if (uVar9 != 1) {\n            if (uVar9 != 2) {\n              (**(code **)(puVar3 + 0x20))(*param_1);\n              local_78 = 0x10;\n              iVar4 = uVar8 - 2;\n              param_1 = local_50;\n            }\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = (undefined8 *)&stack0x00000010;\n            }\n            param_1 = (undefined8 *)*param_1;\n            iVar4 = iVar4 + -1;\n          }\n          (**(code **)(puVar3 + 0x20))(*param_1);\n          if (local_78 < 0x30) {\n            uVar6 = (ulong)local_78;\n            local_78 = local_78 + 8;\n            param_1 = (undefined8 *)((long)&local_58 + uVar6);\n          }\n          else {\n            param_1 = local_70;\n            local_70 = local_70 + 1;\n          }\n          param_1 = (undefined8 *)*param_1;\n          for (iVar4 = iVar4 + -1; iVar4 != -1; iVar4 = iVar4 + -4) {\nLAB_001621c6:\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            uVar6 = (ulong)local_78;\n            if (local_78 < 0x30) {\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = local_70 + 1;\n            }\n            param_1 = (undefined8 *)*param_1;\n          }\n        }" (if "if") (parenthesized_expression "(uVar8 != 0)" (( "(") (binary_expression "uVar8 != 0" (identifier "uVar8") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          uVar9 = uVar8 & 3;\n          if (uVar9 == 0) goto LAB_001621c6;\n          if (uVar9 != 1) {\n            if (uVar9 != 2) {\n              (**(code **)(puVar3 + 0x20))(*param_1);\n              local_78 = 0x10;\n              iVar4 = uVar8 - 2;\n              param_1 = local_50;\n            }\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = (undefined8 *)&stack0x00000010;\n            }\n            param_1 = (undefined8 *)*param_1;\n            iVar4 = iVar4 + -1;\n          }\n          (**(code **)(puVar3 + 0x20))(*param_1);\n          if (local_78 < 0x30) {\n            uVar6 = (ulong)local_78;\n            local_78 = local_78 + 8;\n            param_1 = (undefined8 *)((long)&local_58 + uVar6);\n          }\n          else {\n            param_1 = local_70;\n            local_70 = local_70 + 1;\n          }\n          param_1 = (undefined8 *)*param_1;\n          for (iVar4 = iVar4 + -1; iVar4 != -1; iVar4 = iVar4 + -4) {\nLAB_001621c6:\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            uVar6 = (ulong)local_78;\n            if (local_78 < 0x30) {\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = local_70 + 1;\n            }\n            param_1 = (undefined8 *)*param_1;\n          }\n        }" ({ "{") (expression_statement "uVar9 = uVar8 & 3;" (assignment_expression "uVar9 = uVar8 & 3" (identifier "uVar9") (= "=") (binary_expression "uVar8 & 3" (identifier "uVar8") (& "&") (number_literal "3"))) (; ";")) (if_statement "if (uVar9 == 0) goto LAB_001621c6;" (if "if") (parenthesized_expression "(uVar9 == 0)" (( "(") (binary_expression "uVar9 == 0" (identifier "uVar9") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_001621c6;" (goto "goto") (statement_identifier "LAB_001621c6") (; ";"))) (if_statement "if (uVar9 != 1) {\n            if (uVar9 != 2) {\n              (**(code **)(puVar3 + 0x20))(*param_1);\n              local_78 = 0x10;\n              iVar4 = uVar8 - 2;\n              param_1 = local_50;\n            }\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = (undefined8 *)&stack0x00000010;\n            }\n            param_1 = (undefined8 *)*param_1;\n            iVar4 = iVar4 + -1;\n          }" (if "if") (parenthesized_expression "(uVar9 != 1)" (( "(") (binary_expression "uVar9 != 1" (identifier "uVar9") (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n            if (uVar9 != 2) {\n              (**(code **)(puVar3 + 0x20))(*param_1);\n              local_78 = 0x10;\n              iVar4 = uVar8 - 2;\n              param_1 = local_50;\n            }\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = (undefined8 *)&stack0x00000010;\n            }\n            param_1 = (undefined8 *)*param_1;\n            iVar4 = iVar4 + -1;\n          }" ({ "{") (if_statement "if (uVar9 != 2) {\n              (**(code **)(puVar3 + 0x20))(*param_1);\n              local_78 = 0x10;\n              iVar4 = uVar8 - 2;\n              param_1 = local_50;\n            }" (if "if") (parenthesized_expression "(uVar9 != 2)" (( "(") (binary_expression "uVar9 != 2" (identifier "uVar9") (!= "!=") (number_literal "2")) () ")")) (compound_statement "{\n              (**(code **)(puVar3 + 0x20))(*param_1);\n              local_78 = 0x10;\n              iVar4 = uVar8 - 2;\n              param_1 = local_50;\n            }" ({ "{") (expression_statement "(**(code **)(puVar3 + 0x20))(*param_1);" (call_expression "(**(code **)(puVar3 + 0x20))(*param_1)" (parenthesized_expression "(**(code **)(puVar3 + 0x20))" (( "(") (pointer_expression "**(code **)(puVar3 + 0x20)" (* "*") (pointer_expression "*(code **)(puVar3 + 0x20)" (* "*") (cast_expression "(code **)(puVar3 + 0x20)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar3 + 0x20)" (( "(") (binary_expression "puVar3 + 0x20" (identifier "puVar3") (+ "+") (number_literal "0x20")) () ")"))))) () ")")) (argument_list "(*param_1)" (( "(") (pointer_expression "*param_1" (* "*") (identifier "param_1")) () ")"))) (; ";")) (expression_statement "local_78 = 0x10;" (assignment_expression "local_78 = 0x10" (identifier "local_78") (= "=") (number_literal "0x10")) (; ";")) (expression_statement "iVar4 = uVar8 - 2;" (assignment_expression "iVar4 = uVar8 - 2" (identifier "iVar4") (= "=") (binary_expression "uVar8 - 2" (identifier "uVar8") (- "-") (number_literal "2"))) (; ";")) (expression_statement "param_1 = local_50;" (assignment_expression "param_1 = local_50" (identifier "param_1") (= "=") (identifier "local_50")) (; ";")) (} "}"))) (expression_statement "(**(code **)(puVar3 + 0x20))(*param_1);" (call_expression "(**(code **)(puVar3 + 0x20))(*param_1)" (parenthesized_expression "(**(code **)(puVar3 + 0x20))" (( "(") (pointer_expression "**(code **)(puVar3 + 0x20)" (* "*") (pointer_expression "*(code **)(puVar3 + 0x20)" (* "*") (cast_expression "(code **)(puVar3 + 0x20)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar3 + 0x20)" (( "(") (binary_expression "puVar3 + 0x20" (identifier "puVar3") (+ "+") (number_literal "0x20")) () ")"))))) () ")")) (argument_list "(*param_1)" (( "(") (pointer_expression "*param_1" (* "*") (identifier "param_1")) () ")"))) (; ";")) (if_statement "if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = (undefined8 *)&stack0x00000010;\n            }" (if "if") (parenthesized_expression "(local_78 < 0x30)" (( "(") (binary_expression "local_78 < 0x30" (identifier "local_78") (< "<") (number_literal "0x30")) () ")")) (compound_statement "{\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }" ({ "{") (expression_statement "uVar6 = (ulong)local_78;" (assignment_expression "uVar6 = (ulong)local_78" (identifier "uVar6") (= "=") (cast_expression "(ulong)local_78" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "local_78"))) (; ";")) (expression_statement "local_78 = local_78 + 8;" (assignment_expression "local_78 = local_78 + 8" (identifier "local_78") (= "=") (binary_expression "local_78 + 8" (identifier "local_78") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "param_1 = (undefined8 *)((long)&local_58 + uVar6);" (assignment_expression "param_1 = (undefined8 *)((long)&local_58 + uVar6)" (identifier "param_1") (= "=") (cast_expression "(undefined8 *)((long)&local_58 + uVar6)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)&local_58 + uVar6)" (( "(") (binary_expression "(long)&local_58 + uVar6" (cast_expression "(long)&local_58" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "&local_58" (& "&") (identifier "local_58"))) (+ "+") (identifier "uVar6")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n              param_1 = local_70;\n              local_70 = (undefined8 *)&stack0x00000010;\n            }" (else "else") (compound_statement "{\n              param_1 = local_70;\n              local_70 = (undefined8 *)&stack0x00000010;\n            }" ({ "{") (expression_statement "param_1 = local_70;" (assignment_expression "param_1 = local_70" (identifier "param_1") (= "=") (identifier "local_70")) (; ";")) (expression_statement "local_70 = (undefined8 *)&stack0x00000010;" (assignment_expression "local_70 = (undefined8 *)&stack0x00000010" (identifier "local_70") (= "=") (cast_expression "(undefined8 *)&stack0x00000010" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&stack0x00000010" (& "&") (identifier "stack0x00000010")))) (; ";")) (} "}")))) (expression_statement "param_1 = (undefined8 *)*param_1;" (assignment_expression "param_1 = (undefined8 *)*param_1" (identifier "param_1") (= "=") (cast_expression "(undefined8 *)*param_1" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" (identifier "iVar4") (= "=") (binary_expression "iVar4 + -1" (identifier "iVar4") (+ "+") (number_literal "-1"))) (; ";")) (} "}"))) (expression_statement "(**(code **)(puVar3 + 0x20))(*param_1);" (call_expression "(**(code **)(puVar3 + 0x20))(*param_1)" (parenthesized_expression "(**(code **)(puVar3 + 0x20))" (( "(") (pointer_expression "**(code **)(puVar3 + 0x20)" (* "*") (pointer_expression "*(code **)(puVar3 + 0x20)" (* "*") (cast_expression "(code **)(puVar3 + 0x20)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar3 + 0x20)" (( "(") (binary_expression "puVar3 + 0x20" (identifier "puVar3") (+ "+") (number_literal "0x20")) () ")"))))) () ")")) (argument_list "(*param_1)" (( "(") (pointer_expression "*param_1" (* "*") (identifier "param_1")) () ")"))) (; ";")) (if_statement "if (local_78 < 0x30) {\n            uVar6 = (ulong)local_78;\n            local_78 = local_78 + 8;\n            param_1 = (undefined8 *)((long)&local_58 + uVar6);\n          }\n          else {\n            param_1 = local_70;\n            local_70 = local_70 + 1;\n          }" (if "if") (parenthesized_expression "(local_78 < 0x30)" (( "(") (binary_expression "local_78 < 0x30" (identifier "local_78") (< "<") (number_literal "0x30")) () ")")) (compound_statement "{\n            uVar6 = (ulong)local_78;\n            local_78 = local_78 + 8;\n            param_1 = (undefined8 *)((long)&local_58 + uVar6);\n          }" ({ "{") (expression_statement "uVar6 = (ulong)local_78;" (assignment_expression "uVar6 = (ulong)local_78" (identifier "uVar6") (= "=") (cast_expression "(ulong)local_78" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "local_78"))) (; ";")) (expression_statement "local_78 = local_78 + 8;" (assignment_expression "local_78 = local_78 + 8" (identifier "local_78") (= "=") (binary_expression "local_78 + 8" (identifier "local_78") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "param_1 = (undefined8 *)((long)&local_58 + uVar6);" (assignment_expression "param_1 = (undefined8 *)((long)&local_58 + uVar6)" (identifier "param_1") (= "=") (cast_expression "(undefined8 *)((long)&local_58 + uVar6)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)&local_58 + uVar6)" (( "(") (binary_expression "(long)&local_58 + uVar6" (cast_expression "(long)&local_58" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "&local_58" (& "&") (identifier "local_58"))) (+ "+") (identifier "uVar6")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n            param_1 = local_70;\n            local_70 = local_70 + 1;\n          }" (else "else") (compound_statement "{\n            param_1 = local_70;\n            local_70 = local_70 + 1;\n          }" ({ "{") (expression_statement "param_1 = local_70;" (assignment_expression "param_1 = local_70" (identifier "param_1") (= "=") (identifier "local_70")) (; ";")) (expression_statement "local_70 = local_70 + 1;" (assignment_expression "local_70 = local_70 + 1" (identifier "local_70") (= "=") (binary_expression "local_70 + 1" (identifier "local_70") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (expression_statement "param_1 = (undefined8 *)*param_1;" (assignment_expression "param_1 = (undefined8 *)*param_1" (identifier "param_1") (= "=") (cast_expression "(undefined8 *)*param_1" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (for_statement "for (iVar4 = iVar4 + -1; iVar4 != -1; iVar4 = iVar4 + -4) {\nLAB_001621c6:\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            uVar6 = (ulong)local_78;\n            if (local_78 < 0x30) {\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = local_70 + 1;\n            }\n            param_1 = (undefined8 *)*param_1;\n          }" (for "for") (( "(") (assignment_expression "iVar4 = iVar4 + -1" (identifier "iVar4") (= "=") (binary_expression "iVar4 + -1" (identifier "iVar4") (+ "+") (number_literal "-1"))) (; ";") (binary_expression "iVar4 != -1" (identifier "iVar4") (!= "!=") (number_literal "-1")) (; ";") (assignment_expression "iVar4 = iVar4 + -4" (identifier "iVar4") (= "=") (binary_expression "iVar4 + -4" (identifier "iVar4") (+ "+") (number_literal "-4"))) () ")") (compound_statement "{\nLAB_001621c6:\n            (**(code **)(puVar3 + 0x20))(*param_1);\n            uVar6 = (ulong)local_78;\n            if (local_78 < 0x30) {\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }\n            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);\n            if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = local_70 + 1;\n            }\n            param_1 = (undefined8 *)*param_1;\n          }" ({ "{") (labeled_statement "LAB_001621c6:\n            (**(code **)(puVar3 + 0x20))(*param_1);" (statement_identifier "LAB_001621c6") (: ":") (expression_statement "(**(code **)(puVar3 + 0x20))(*param_1);" (call_expression "(**(code **)(puVar3 + 0x20))(*param_1)" (parenthesized_expression "(**(code **)(puVar3 + 0x20))" (( "(") (pointer_expression "**(code **)(puVar3 + 0x20)" (* "*") (pointer_expression "*(code **)(puVar3 + 0x20)" (* "*") (cast_expression "(code **)(puVar3 + 0x20)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar3 + 0x20)" (( "(") (binary_expression "puVar3 + 0x20" (identifier "puVar3") (+ "+") (number_literal "0x20")) () ")"))))) () ")")) (argument_list "(*param_1)" (( "(") (pointer_expression "*param_1" (* "*") (identifier "param_1")) () ")"))) (; ";"))) (expression_statement "uVar6 = (ulong)local_78;" (assignment_expression "uVar6 = (ulong)local_78" (identifier "uVar6") (= "=") (cast_expression "(ulong)local_78" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "local_78"))) (; ";")) (if_statement "if (local_78 < 0x30) {\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }" (if "if") (parenthesized_expression "(local_78 < 0x30)" (( "(") (binary_expression "local_78 < 0x30" (identifier "local_78") (< "<") (number_literal "0x30")) () ")")) (compound_statement "{\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }" ({ "{") (expression_statement "local_78 = local_78 + 8;" (assignment_expression "local_78 = local_78 + 8" (identifier "local_78") (= "=") (binary_expression "local_78 + 8" (identifier "local_78") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "puVar7 = (undefined8 *)((long)&local_58 + uVar6);" (assignment_expression "puVar7 = (undefined8 *)((long)&local_58 + uVar6)" (identifier "puVar7") (= "=") (cast_expression "(undefined8 *)((long)&local_58 + uVar6)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)&local_58 + uVar6)" (( "(") (binary_expression "(long)&local_58 + uVar6" (cast_expression "(long)&local_58" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "&local_58" (& "&") (identifier "local_58"))) (+ "+") (identifier "uVar6")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }" (else "else") (compound_statement "{\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }" ({ "{") (expression_statement "puVar7 = local_70;" (assignment_expression "puVar7 = local_70" (identifier "puVar7") (= "=") (identifier "local_70")) (; ";")) (expression_statement "local_70 = local_70 + 1;" (assignment_expression "local_70 = local_70 + 1" (identifier "local_70") (= "=") (binary_expression "local_70 + 1" (identifier "local_70") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (expression_statement "(**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);" (call_expression "(**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7)" (parenthesized_expression "(**(code **)(puVar3 + 0x20))" (( "(") (pointer_expression "**(code **)(puVar3 + 0x20)" (* "*") (pointer_expression "*(code **)(puVar3 + 0x20)" (* "*") (cast_expression "(code **)(puVar3 + 0x20)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar3 + 0x20)" (( "(") (binary_expression "puVar3 + 0x20" (identifier "puVar3") (+ "+") (number_literal "0x20")) () ")"))))) () ")")) (argument_list "(*(undefined8 *)*puVar7)" (( "(") (pointer_expression "*(undefined8 *)*puVar7" (* "*") (cast_expression "(undefined8 *)*puVar7" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar7" (* "*") (identifier "puVar7")))) () ")"))) (; ";")) (if_statement "if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }" (if "if") (parenthesized_expression "(local_78 < 0x30)" (( "(") (binary_expression "local_78 < 0x30" (identifier "local_78") (< "<") (number_literal "0x30")) () ")")) (compound_statement "{\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }" ({ "{") (expression_statement "uVar6 = (ulong)local_78;" (assignment_expression "uVar6 = (ulong)local_78" (identifier "uVar6") (= "=") (cast_expression "(ulong)local_78" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "local_78"))) (; ";")) (expression_statement "local_78 = local_78 + 8;" (assignment_expression "local_78 = local_78 + 8" (identifier "local_78") (= "=") (binary_expression "local_78 + 8" (identifier "local_78") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "puVar7 = (undefined8 *)((long)&local_58 + uVar6);" (assignment_expression "puVar7 = (undefined8 *)((long)&local_58 + uVar6)" (identifier "puVar7") (= "=") (cast_expression "(undefined8 *)((long)&local_58 + uVar6)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)&local_58 + uVar6)" (( "(") (binary_expression "(long)&local_58 + uVar6" (cast_expression "(long)&local_58" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "&local_58" (& "&") (identifier "local_58"))) (+ "+") (identifier "uVar6")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }" (else "else") (compound_statement "{\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }" ({ "{") (expression_statement "puVar7 = local_70;" (assignment_expression "puVar7 = local_70" (identifier "puVar7") (= "=") (identifier "local_70")) (; ";")) (expression_statement "local_70 = local_70 + 1;" (assignment_expression "local_70 = local_70 + 1" (identifier "local_70") (= "=") (binary_expression "local_70 + 1" (identifier "local_70") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (expression_statement "(**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);" (call_expression "(**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7)" (parenthesized_expression "(**(code **)(puVar3 + 0x20))" (( "(") (pointer_expression "**(code **)(puVar3 + 0x20)" (* "*") (pointer_expression "*(code **)(puVar3 + 0x20)" (* "*") (cast_expression "(code **)(puVar3 + 0x20)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar3 + 0x20)" (( "(") (binary_expression "puVar3 + 0x20" (identifier "puVar3") (+ "+") (number_literal "0x20")) () ")"))))) () ")")) (argument_list "(*(undefined8 *)*puVar7)" (( "(") (pointer_expression "*(undefined8 *)*puVar7" (* "*") (cast_expression "(undefined8 *)*puVar7" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar7" (* "*") (identifier "puVar7")))) () ")"))) (; ";")) (if_statement "if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }" (if "if") (parenthesized_expression "(local_78 < 0x30)" (( "(") (binary_expression "local_78 < 0x30" (identifier "local_78") (< "<") (number_literal "0x30")) () ")")) (compound_statement "{\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              puVar7 = (undefined8 *)((long)&local_58 + uVar6);\n            }" ({ "{") (expression_statement "uVar6 = (ulong)local_78;" (assignment_expression "uVar6 = (ulong)local_78" (identifier "uVar6") (= "=") (cast_expression "(ulong)local_78" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "local_78"))) (; ";")) (expression_statement "local_78 = local_78 + 8;" (assignment_expression "local_78 = local_78 + 8" (identifier "local_78") (= "=") (binary_expression "local_78 + 8" (identifier "local_78") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "puVar7 = (undefined8 *)((long)&local_58 + uVar6);" (assignment_expression "puVar7 = (undefined8 *)((long)&local_58 + uVar6)" (identifier "puVar7") (= "=") (cast_expression "(undefined8 *)((long)&local_58 + uVar6)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)&local_58 + uVar6)" (( "(") (binary_expression "(long)&local_58 + uVar6" (cast_expression "(long)&local_58" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "&local_58" (& "&") (identifier "local_58"))) (+ "+") (identifier "uVar6")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }" (else "else") (compound_statement "{\n              puVar7 = local_70;\n              local_70 = local_70 + 1;\n            }" ({ "{") (expression_statement "puVar7 = local_70;" (assignment_expression "puVar7 = local_70" (identifier "puVar7") (= "=") (identifier "local_70")) (; ";")) (expression_statement "local_70 = local_70 + 1;" (assignment_expression "local_70 = local_70 + 1" (identifier "local_70") (= "=") (binary_expression "local_70 + 1" (identifier "local_70") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (expression_statement "(**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);" (call_expression "(**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7)" (parenthesized_expression "(**(code **)(puVar3 + 0x20))" (( "(") (pointer_expression "**(code **)(puVar3 + 0x20)" (* "*") (pointer_expression "*(code **)(puVar3 + 0x20)" (* "*") (cast_expression "(code **)(puVar3 + 0x20)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar3 + 0x20)" (( "(") (binary_expression "puVar3 + 0x20" (identifier "puVar3") (+ "+") (number_literal "0x20")) () ")"))))) () ")")) (argument_list "(*(undefined8 *)*puVar7)" (( "(") (pointer_expression "*(undefined8 *)*puVar7" (* "*") (cast_expression "(undefined8 *)*puVar7" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar7" (* "*") (identifier "puVar7")))) () ")"))) (; ";")) (if_statement "if (local_78 < 0x30) {\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }\n            else {\n              param_1 = local_70;\n              local_70 = local_70 + 1;\n            }" (if "if") (parenthesized_expression "(local_78 < 0x30)" (( "(") (binary_expression "local_78 < 0x30" (identifier "local_78") (< "<") (number_literal "0x30")) () ")")) (compound_statement "{\n              uVar6 = (ulong)local_78;\n              local_78 = local_78 + 8;\n              param_1 = (undefined8 *)((long)&local_58 + uVar6);\n            }" ({ "{") (expression_statement "uVar6 = (ulong)local_78;" (assignment_expression "uVar6 = (ulong)local_78" (identifier "uVar6") (= "=") (cast_expression "(ulong)local_78" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "local_78"))) (; ";")) (expression_statement "local_78 = local_78 + 8;" (assignment_expression "local_78 = local_78 + 8" (identifier "local_78") (= "=") (binary_expression "local_78 + 8" (identifier "local_78") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "param_1 = (undefined8 *)((long)&local_58 + uVar6);" (assignment_expression "param_1 = (undefined8 *)((long)&local_58 + uVar6)" (identifier "param_1") (= "=") (cast_expression "(undefined8 *)((long)&local_58 + uVar6)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)&local_58 + uVar6)" (( "(") (binary_expression "(long)&local_58 + uVar6" (cast_expression "(long)&local_58" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "&local_58" (& "&") (identifier "local_58"))) (+ "+") (identifier "uVar6")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n              param_1 = local_70;\n              local_70 = local_70 + 1;\n            }" (else "else") (compound_statement "{\n              param_1 = local_70;\n              local_70 = local_70 + 1;\n            }" ({ "{") (expression_statement "param_1 = local_70;" (assignment_expression "param_1 = local_70" (identifier "param_1") (= "=") (identifier "local_70")) (; ";")) (expression_statement "local_70 = local_70 + 1;" (assignment_expression "local_70 = local_70 + 1" (identifier "local_70") (= "=") (binary_expression "local_70 + 1" (identifier "local_70") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (expression_statement "param_1 = (undefined8 *)*param_1;" (assignment_expression "param_1 = (undefined8 *)*param_1" (identifier "param_1") (= "=") (cast_expression "(undefined8 *)*param_1" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (} "}"))) (} "}"))) (expression_statement "uVar5 = 0xd;" (assignment_expression "uVar5 = 0xd" (identifier "uVar5") (= "=") (number_literal "0xd")) (; ";")) (goto_statement "goto LAB_00162039;" (goto "goto") (statement_identifier "LAB_00162039") (; ";")) (} "}"))) (expression_statement "uVar6 = (ulong)local_90;" (assignment_expression "uVar6 = (ulong)local_90" (identifier "uVar6") (= "=") (cast_expression "(ulong)local_90" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "local_90"))) (; ";")) (expression_statement "uVar8 = uVar8 + 1;" (assignment_expression "uVar8 = uVar8 + 1" (identifier "uVar8") (= "=") (binary_expression "uVar8 + 1" (identifier "uVar8") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (local_90 < 0x30) {\n        local_90 = local_90 + 8;\n        lVar2 = *(long *)((long)&local_58 + uVar6);\n      }\n      else {\n        lVar2 = *local_88;\n        local_88 = local_88 + 1;\n      }" (if "if") (parenthesized_expression "(local_90 < 0x30)" (( "(") (binary_expression "local_90 < 0x30" (identifier "local_90") (< "<") (number_literal "0x30")) () ")")) (compound_statement "{\n        local_90 = local_90 + 8;\n        lVar2 = *(long *)((long)&local_58 + uVar6);\n      }" ({ "{") (expression_statement "local_90 = local_90 + 8;" (assignment_expression "local_90 = local_90 + 8" (identifier "local_90") (= "=") (binary_expression "local_90 + 8" (identifier "local_90") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "lVar2 = *(long *)((long)&local_58 + uVar6);" (assignment_expression "lVar2 = *(long *)((long)&local_58 + uVar6)" (identifier "lVar2") (= "=") (pointer_expression "*(long *)((long)&local_58 + uVar6)" (* "*") (cast_expression "(long *)((long)&local_58 + uVar6)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)&local_58 + uVar6)" (( "(") (binary_expression "(long)&local_58 + uVar6" (cast_expression "(long)&local_58" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "&local_58" (& "&") (identifier "local_58"))) (+ "+") (identifier "uVar6")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n        lVar2 = *local_88;\n        local_88 = local_88 + 1;\n      }" (else "else") (compound_statement "{\n        lVar2 = *local_88;\n        local_88 = local_88 + 1;\n      }" ({ "{") (expression_statement "lVar2 = *local_88;" (assignment_expression "lVar2 = *local_88" (identifier "lVar2") (= "=") (pointer_expression "*local_88" (* "*") (identifier "local_88"))) (; ";")) (expression_statement "local_88 = local_88 + 1;" (assignment_expression "local_88 = local_88 + 1" (identifier "local_88") (= "=") (binary_expression "local_88 + 1" (identifier "local_88") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (} "}")) (while "while") (parenthesized_expression "(lVar2 != 0)" (( "(") (binary_expression "lVar2 != 0" (identifier "lVar2") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}"))) (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" (identifier "uVar5") (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_00162039:\n  if (lVar1 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }" (statement_identifier "LAB_00162039") (: ":") (if_statement "if (lVar1 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }" (if "if") (parenthesized_expression "(lVar1 != *(long *)(in_FS_OFFSET + 0x28))" (( "(") (binary_expression "lVar1 != *(long *)(in_FS_OFFSET + 0x28)" (identifier "lVar1") (!= "!=") (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" (* "*") (cast_expression "(long *)(in_FS_OFFSET + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_FS_OFFSET + 0x28)" (( "(") (binary_expression "in_FS_OFFSET + 0x28" (identifier "in_FS_OFFSET") (+ "+") (number_literal "0x28")) () ")"))))) () ")")) (compound_statement "{\n                    \n    __stack_chk_fail();\n  }" ({ "{") (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" (identifier "__stack_chk_fail") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (return_statement "return uVar5;" (return "return") (identifier "uVar5") (; ";")) (} "}")))

/* WARNING: Removing unreachable block (ram,0x001620b4) */
/* WARNING: Heritage AFTER dead removal. Example location: s0xffffffffffffffb0 : 0x001620c2 */
/* WARNING: Restarted to delay deadcode elimination for space: stack */

int function_1(void **var_2,...)

{
  long var_9;
  long var_8;
  type_1 *var_3;
  int var_4;
  type_2 in_RCX;
  type_3 var_7;
  type_2 in_RDX;
  type_2 *puVar6;
  type_4 var_5;
  type_4 var_6;
  void **in_RSI;
  type_2 in_R8;
  type_2 in_R9;
  long var_1;
  type_5 args;
  type_5 clean_list;
  long local_58;
  void **local_50;
  type_2 local_48;
  type_2 local_40;
  type_2 local_38;
  type_2 local_30;
  
  var_3 = PTR_ltc_mp_001ddec0;
  var_9 = *(long *)(var_1 + 0x28);
  args[0].overflow_arg_area = &stack0x00000008;
  args[0].gp_offset = 8;
  local_50 = in_RSI;
  local_48 = in_RDX;
  local_40 = in_RCX;
  local_38 = in_R8;
  local_30 = in_R9;
  if (var_2 != (void **)0x0) {
    var_5 = 0;
    do {
      var_4 = (**(type_6 **)(var_3 + 0x10))();
      if (var_4 != 0) {
        clean_list[0].overflow_arg_area = &stack0x00000008;
        clean_list[0].gp_offset = 8;
        var_4 = var_5 - 1;
        if (var_5 != 0) {
          var_6 = var_5 & 3;
          if (var_6 == 0) goto LAB_001621c6;
          if (var_6 != 1) {
            if (var_6 != 2) {
              (**(type_6 **)(var_3 + 0x20))(*var_2);
              clean_list[0].gp_offset = 0x10;
              var_4 = var_5 - 2;
              var_2 = local_50;
            }
            (**(type_6 **)(var_3 + 0x20))(*var_2);
            if (clean_list[0].gp_offset < 0x30) {
              var_7 = (type_3)clean_list[0].gp_offset;
              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;
              puVar6 = (type_2 *)((long)&local_58 + var_7);
            }
            else {
              puVar6 = (type_2 *)clean_list[0].overflow_arg_area;
              clean_list[0].overflow_arg_area = &stack0x00000010;
            }
            var_2 = (void **)*puVar6;
            var_4 = var_4 + -1;
          }
          (**(type_6 **)(var_3 + 0x20))(*var_2);
          if (clean_list[0].gp_offset < 0x30) {
            var_7 = (type_3)clean_list[0].gp_offset;
            clean_list[0].gp_offset = clean_list[0].gp_offset + 8;
            puVar6 = (type_2 *)((long)&local_58 + var_7);
          }
          else {
            puVar6 = (type_2 *)clean_list[0].overflow_arg_area;
            clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);
          }
          var_2 = (void **)*puVar6;
          for (var_4 = var_4 + -1; var_4 != -1; var_4 = var_4 + -4) {
LAB_001621c6:
            (**(type_6 **)(var_3 + 0x20))(*var_2);
            var_7 = (type_3)clean_list[0].gp_offset;
            if (clean_list[0].gp_offset < 0x30) {
              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;
              puVar6 = (type_2 *)((long)&local_58 + var_7);
            }
            else {
              puVar6 = (type_2 *)clean_list[0].overflow_arg_area;
              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);
            }
            (**(type_6 **)(var_3 + 0x20))(*(type_2 *)*puVar6);
            if (clean_list[0].gp_offset < 0x30) {
              var_7 = (type_3)clean_list[0].gp_offset;
              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;
              puVar6 = (type_2 *)((long)&local_58 + var_7);
            }
            else {
              puVar6 = (type_2 *)clean_list[0].overflow_arg_area;
              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);
            }
            (**(type_6 **)(var_3 + 0x20))(*(type_2 *)*puVar6);
            if (clean_list[0].gp_offset < 0x30) {
              var_7 = (type_3)clean_list[0].gp_offset;
              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;
              puVar6 = (type_2 *)((long)&local_58 + var_7);
            }
            else {
              puVar6 = (type_2 *)clean_list[0].overflow_arg_area;
              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);
            }
            (**(type_6 **)(var_3 + 0x20))(*(type_2 *)*puVar6);
            if (clean_list[0].gp_offset < 0x30) {
              var_7 = (type_3)clean_list[0].gp_offset;
              clean_list[0].gp_offset = clean_list[0].gp_offset + 8;
              puVar6 = (type_2 *)((long)&local_58 + var_7);
            }
            else {
              puVar6 = (type_2 *)clean_list[0].overflow_arg_area;
              clean_list[0].overflow_arg_area = (void *)((long)clean_list[0].overflow_arg_area + 8);
            }
            var_2 = (void **)*puVar6;
          }
        }
        var_4 = 0xd;
        goto LAB_00162039;
      }
      var_7 = (type_3)args[0].gp_offset;
      var_5 = var_5 + 1;
      if (args[0].gp_offset < 0x30) {
        args[0].gp_offset = args[0].gp_offset + 8;
        var_8 = *(long *)((long)&local_58 + var_7);
      }
      else {
                    /* WARNING: Load size is inaccurate */
        var_8 = *args[0].overflow_arg_area;
        args[0].overflow_arg_area = (void *)((long)args[0].overflow_arg_area + 8);
      }
    } while (var_8 != 0);
  }
  var_4 = 0;
LAB_00162039:
  if (var_9 != *(long *)(var_1 + 0x28)) {
                    /* WARNING: Subroutine does not return */
    var_10();
  }
  return var_4;
}


(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: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) 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: (type_identifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_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: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (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: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (pointer_expression argument: (identifier))))) (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))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (pointer_expression argument: (identifier))) right: (identifier))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) 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 (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (pointer_expression argument: (identifier))) right: (identifier))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (for_statement initializer: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) condition: (binary_expression left: (identifier) right: (number_literal)) update: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) body: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (pointer_expression argument: (identifier))) right: (identifier))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (pointer_expression argument: (identifier))) right: (identifier))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (pointer_expression argument: (identifier))) right: (identifier))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (pointer_expression argument: (identifier))) right: (identifier))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (pointer_expression argument: (identifier))) right: (identifier)))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list)))))) (return_statement (identifier)))))

/* WARNING: Removing unreachable block (ram,0x001620b4) */
/* WARNING: Heritage AFTER dead removal. Example location: s0xffffffffffffffb0 : 0x001620c2 */
/* WARNING: Restarted to delay deadcode elimination for space: stack */

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

{
  long lVar1;
  long lVar2;
  undefined *puVar3;
  int iVar4;
  undefined8 uVar5;
  ulong uVar6;
  undefined8 *puVar7;
  uint uVar8;
  uint uVar9;
  long in_FS_OFFSET;
  uint local_90;
  long *local_88;
  uint local_78;
  undefined8 *local_70;
  long local_58;
  undefined8 *local_50;
  undefined8 local_48;
  undefined8 local_40;
  undefined8 local_38;
  undefined8 local_30;
  
  puVar3 = PTR_ltc_mp_001ddec0;
  lVar1 = *(long *)(in_FS_OFFSET + 0x28);
  local_88 = (long *)&stack0x00000008;
  local_90 = 8;
  local_50 = param_2;
  local_48 = param_3;
  local_40 = param_4;
  local_38 = param_5;
  local_30 = param_6;
  if (param_1 != (undefined8 *)0x0) {
    uVar8 = 0;
    do {
      iVar4 = (**(code **)(puVar3 + 0x10))();
      if (iVar4 != 0) {
        local_70 = (undefined8 *)&stack0x00000008;
        local_78 = 8;
        iVar4 = uVar8 - 1;
        if (uVar8 != 0) {
          uVar9 = uVar8 & 3;
          if (uVar9 == 0) goto LAB_001621c6;
          if (uVar9 != 1) {
            if (uVar9 != 2) {
              (**(code **)(puVar3 + 0x20))(*param_1);
              local_78 = 0x10;
              iVar4 = uVar8 - 2;
              param_1 = local_50;
            }
            (**(code **)(puVar3 + 0x20))(*param_1);
            if (local_78 < 0x30) {
              uVar6 = (ulong)local_78;
              local_78 = local_78 + 8;
              param_1 = (undefined8 *)((long)&local_58 + uVar6);
            }
            else {
              param_1 = local_70;
              local_70 = (undefined8 *)&stack0x00000010;
            }
            param_1 = (undefined8 *)*param_1;
            iVar4 = iVar4 + -1;
          }
          (**(code **)(puVar3 + 0x20))(*param_1);
          if (local_78 < 0x30) {
            uVar6 = (ulong)local_78;
            local_78 = local_78 + 8;
            param_1 = (undefined8 *)((long)&local_58 + uVar6);
          }
          else {
            param_1 = local_70;
            local_70 = local_70 + 1;
          }
          param_1 = (undefined8 *)*param_1;
          for (iVar4 = iVar4 + -1; iVar4 != -1; iVar4 = iVar4 + -4) {
LAB_001621c6:
            (**(code **)(puVar3 + 0x20))(*param_1);
            uVar6 = (ulong)local_78;
            if (local_78 < 0x30) {
              local_78 = local_78 + 8;
              puVar7 = (undefined8 *)((long)&local_58 + uVar6);
            }
            else {
              puVar7 = local_70;
              local_70 = local_70 + 1;
            }
            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);
            if (local_78 < 0x30) {
              uVar6 = (ulong)local_78;
              local_78 = local_78 + 8;
              puVar7 = (undefined8 *)((long)&local_58 + uVar6);
            }
            else {
              puVar7 = local_70;
              local_70 = local_70 + 1;
            }
            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);
            if (local_78 < 0x30) {
              uVar6 = (ulong)local_78;
              local_78 = local_78 + 8;
              puVar7 = (undefined8 *)((long)&local_58 + uVar6);
            }
            else {
              puVar7 = local_70;
              local_70 = local_70 + 1;
            }
            (**(code **)(puVar3 + 0x20))(*(undefined8 *)*puVar7);
            if (local_78 < 0x30) {
              uVar6 = (ulong)local_78;
              local_78 = local_78 + 8;
              param_1 = (undefined8 *)((long)&local_58 + uVar6);
            }
            else {
              param_1 = local_70;
              local_70 = local_70 + 1;
            }
            param_1 = (undefined8 *)*param_1;
          }
        }
        uVar5 = 0xd;
        goto LAB_00162039;
      }
      uVar6 = (ulong)local_90;
      uVar8 = uVar8 + 1;
      if (local_90 < 0x30) {
        local_90 = local_90 + 8;
        lVar2 = *(long *)((long)&local_58 + uVar6);
      }
      else {
        lVar2 = *local_88;
        local_88 = local_88 + 1;
      }
    } while (lVar2 != 0);
  }
  uVar5 = 0;
LAB_00162039:
  if (lVar1 != *(long *)(in_FS_OFFSET + 0x28)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail();
  }
  return uVar5;
}

