
/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */

BcStatus zbc_num_p(BcNum *a,BcNum *b,BcNum *c,size_t scale)

{
  ulong pow;
  BcNum copy;
  BcNum one;
  BcDig num [2];
  
}



/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */
/* WARNING: Type propagation algorithm not settling */

int __regparm3 FUN_00021cde(int param_1,undefined4 *param_2,undefined4 *param_3,uint *param_4)

{
  uint *puVar1;
  undefined1 *puVar2;
  int iVar3;
  int iVar4;
  uint uVar5;
  char *pcVar6;
  uint **ppuVar7;
  uint **ppuVar8;
  uint **ppuVar9;
  uint *puVar10;
  char *pcVar11;
  int in_GS_OFFSET;
  char cStackY_81;
  uint *puStackY_80;
  uint *local_70 [3];
  char cStack_61;
  undefined **local_60;
  uint *local_54 [2];
  uint local_4c;
  undefined4 local_48;
  undefined4 local_44;
  uint local_40;
  undefined1 local_3c;
  undefined1 *local_38;
  undefined4 local_34;
  undefined4 local_30;
  undefined4 local_2c;
  undefined1 local_28;
  undefined1 local_22 [2];
  undefined4 local_20;
  
  ppuVar9 = local_70 + 1;
  local_70[0] = (uint *)0x21cea;
  local_60 = &__DT_PLTGOT;
  local_20 = *(undefined4 *)(in_GS_OFFSET + 0x14);
  iVar3 = param_2[1];
  if (iVar3 != 0) {
    pcVar11 = (char *)*param_2;
    if (*pcVar11 == '\0') {
      pcVar6 = pcVar11 + iVar3;
      do {
        pcVar11 = pcVar11 + 1;
        if (pcVar6 == pcVar11) goto LAB_00021d4d;
      } while (*pcVar11 == '\0');
    }
    iVar3 = FUN_0001e002(&DAT_000ccedf,"not an integer");
    ppuVar9 = local_70 + 1;
    goto LAB_00021f63;
  }
LAB_00021d4d:
  if (param_2[2] == 0) {
    *(undefined1 *)(param_3 + 4) = 0;
    param_3[1] = 0;
    param_3[2] = 1;
    *(undefined1 *)*param_3 = 1;
    ppuVar9 = local_70 + 1;
    iVar3 = 0;
    goto LAB_00021f63;
  }
  if (*(int *)(param_1 + 8) == 0) {
    param_3[2] = 0;
    *(undefined1 *)(param_3 + 4) = 0;
    param_3[1] = param_4;
    ppuVar9 = local_70 + 1;
    iVar3 = 0;
    goto LAB_00021f63;
  }
  cStack_61 = *(char *)(param_2 + 4);
  if (((param_2[2] == 1) && (iVar3 == 0)) && (*(char *)*param_2 == '\x01')) {
    if (cStack_61 == '\0') {
      local_70[0] = (uint *)0x21db5;
      FUN_0001e38b();
      ppuVar9 = local_70 + 1;
      iVar3 = 0;
    }
    else {
      local_2c = 2;
      local_38 = local_22;
      local_28 = 0;
      local_34 = 0;
      local_30 = 1;
      local_22[0] = 1;
      iVar3 = FUN_00021c86(param_4);
      ppuVar9 = local_70;
    }
    goto LAB_00021f63;
  }
  local_70[0] = (uint *)0x21dc5;
  iVar4 = FUN_0001e0f3();
  iVar3 = iVar4;
  if (iVar4 != 0) goto LAB_00021f63;
  local_70[1] = *(uint **)(param_1 + 8);
  if (local_70[1] < 0x10) {
    local_70[1] = (uint *)0x10;
  }
  local_70[0] = (uint *)0x21de5;
  local_4c = FUN_00019b1c();
  local_40 = (uint)local_70[1];
  local_48 = 0;
  local_44 = 0;
  local_3c = 0;
  local_70[1] = (uint *)(local_54 + 2);
  local_70[0] = (uint *)0x21e13;
  FUN_0001e38b();
  puVar10 = *(uint **)(param_1 + 4);
  ppuVar8 = local_70 + 1;
  if (cStack_61 == '\0') {
    if (puVar10 < param_4) {
      ppuVar8 = local_70 + 1;
      if ((uint *)((int)puVar10 * (int)local_54[1]) < param_4) goto LAB_00021e32;
    }
    else {
      ppuVar8 = local_70 + 1;
      param_4 = puVar10;
      if ((uint *)((int)puVar10 * (int)local_54[1]) < puVar10) {
LAB_00021e32:
        param_4 = (uint *)((int)puVar10 * (int)local_54[1]);
        ppuVar8 = local_70 + 1;
      }
    }
  }
  while (((uint)local_54[1] & 1) == 0) {
    puVar10 = (uint *)((int)puVar10 * 2);
    ppuVar8[0xfffffffc] = puVar10;
    ppuVar8[0xfffffffb] = (uint *)0x21e4b;
    iVar3 = FUN_00021bb2();
    ppuVar9 = ppuVar8 + 0xffffffff;
    if (iVar3 != 0) goto LAB_00021f50;
    local_54[1] = (uint *)((uint)ppuVar8[6] >> 1);
    ppuVar8[6] = local_54[1];
    ppuVar8 = ppuVar8 + 0xffffffff;
  }
  ppuVar8[0xffffffff] = (uint *)0x21e80;
  FUN_0001e38b();
  puVar1 = ppuVar8[7];
  ppuVar8[7] = (uint *)((uint)puVar1 >> 1);
  if ((uint *)((uint)puVar1 >> 1) != (uint *)0x0) {
    ppuVar8[1] = puVar10;
    ppuVar7 = ppuVar8;
    do {
      puVar10 = (uint *)((int)puVar10 * 2);
      ((int *)ppuVar7)[-4] = (int)puVar10;
      ((int *)ppuVar7)[-5] = 0x21ea3;
      iVar3 = FUN_00021bb2();
      ppuVar9 = (uint **)((int *)ppuVar7 + -1);
      ppuVar8 = (uint **)((int *)ppuVar7 + -1);
      if (iVar3 != 0) goto LAB_00021f50;
      uVar5 = ((int *)ppuVar7)[6];
      if ((uVar5 & 1) != 0) {
        *ppuVar7 = (uint *)((int)*ppuVar7 + (int)puVar10);
        ((int *)ppuVar7)[-5] = (int)*ppuVar7;
        ((int *)ppuVar7)[-6] = 0x21ecb;
        iVar3 = FUN_00021bb2();
        ppuVar9 = (uint **)((int *)ppuVar7 + -2);
        ppuVar8 = (uint **)((int *)ppuVar7 + -2);
        if (iVar3 != 0) goto LAB_00021f50;
        uVar5 = ((int *)ppuVar7)[5];
      }
      *(uint *)((int)ppuVar8 + 0x1c) = uVar5 >> 1;
      ppuVar7 = ppuVar8;
    } while (uVar5 >> 1 != 0);
  }
  puVar2 = (undefined1 *)ppuVar8;
  if (*(char *)((int)ppuVar8 + 0xb) == '\0') {
LAB_00021f2b:
    ppuVar9 = (uint **)puVar2;
    if (param_4 < (uint *)param_3[1]) {
      *(undefined4 *)((int)ppuVar9 + -4) = 0x21f3b;
      FUN_0001d62a();
    }
    if (param_3[2] == 0) {
LAB_00021f42:
      param_3[2] = 0;
      *(undefined1 *)(param_3 + 4) = 0;
      param_3[1] = param_4;
      iVar3 = iVar4;
    }
    else {
      pcVar11 = (char *)*param_3;
      iVar3 = iVar4;
      if (*pcVar11 == '\0') {
        pcVar6 = pcVar11 + param_3[2];
        do {
          pcVar11 = pcVar11 + 1;
          if (pcVar6 == pcVar11) goto LAB_00021f42;
        } while (*pcVar11 == '\0');
      }
    }
  }
  else {
    *(undefined4 *)((int)ppuVar8 + 0x40) = 2;
    *(undefined1 **)((int)ppuVar8 + 0x34) = (undefined1 *)((int)ppuVar8 + 0x4a);
    *(undefined1 *)((int)ppuVar8 + 0x44) = 0;
    *(undefined4 *)((int)ppuVar8 + 0x38) = 0;
    *(undefined4 *)((int)ppuVar8 + 0x3c) = 1;
    *(undefined1 *)((int)ppuVar8 + 0x4a) = 1;
    *(uint **)((int)ppuVar8 + -0x10) = param_4;
    *(undefined4 *)((int)ppuVar8 + -0x14) = 0x21f20;
    iVar3 = FUN_00021c86();
    ppuVar9 = (uint **)((int)ppuVar8 + -4);
    puVar2 = (undefined1 *)((int)ppuVar8 + -4);
    if (iVar3 == 0) goto LAB_00021f2b;
  }
LAB_00021f50:
  *(undefined4 *)((int)ppuVar9 + -0x10) = *(undefined4 *)((int)ppuVar9 + 0x20);
  *(undefined4 *)((int)ppuVar9 + -0x14) = 0x21f60;
  free(*(void **)((int)ppuVar9 + -0x10));
LAB_00021f63:
  if (ppuVar9[0x13] != *(uint **)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    ppuVar9[0xffffffff] = (uint *)0x21f81;
    FUN_00017e10();
  }
  return iVar3;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x5c
CALL 0x00018a3c
ADD ESI,0xaed36
MOV dword ptr [ESP + 0xc],ESI
MOV ESI,EAX
MOV EAX,EDX
MOV EBX,ECX
MOV EBP,dword ptr [ESP + 0x70]
MOV ECX,dword ptr GS:[0x14]
MOV dword ptr [ESP + 0x4c],ECX
XOR ECX,ECX
MOV ECX,dword ptr [EDX + 0x4]
TEST ECX,ECX
JZ 0x00021d4d
MOV EDX,dword ptr [EDX]
CMP byte ptr [EDX],0x0
JNZ 0x00021d29
LEA EDI,[EDX + 0x1]
ADD EDX,ECX
CMP EDX,EDI
JZ 0x00021d4d
INC EDI
CMP byte ptr [EDI + -0x1],0x0
JZ 0x00021d1e
SUB ESP,0x8
MOV ECX,dword ptr [ESP + 0x14]
LEA EAX,[ECX + 0xffff30bf]
PUSH EAX
LEA EAX,[ECX + 0xffffc4bf]
PUSH EAX
CALL 0x0001e002
MOV EDI,EAX
ADD ESP,0x10
JMP 0x00021f63
MOV EDI,dword ptr [EAX + 0x8]
TEST EDI,EDI
JNZ 0x00021d70
MOV byte ptr [EBX + 0x10],0x0
MOV dword ptr [EBX + 0x4],0x0
MOV dword ptr [EBX + 0x8],0x1
MOV EAX,dword ptr [EBX]
MOV byte ptr [EAX],0x1
JMP 0x00021f63
MOV EDX,dword ptr [ESI + 0x8]
TEST EDX,EDX
JNZ 0x00021d8c
MOV dword ptr [EBX + 0x8],0x0
MOV byte ptr [EBX + 0x10],0x0
MOV dword ptr [EBX + 0x4],EBP
XOR EDI,EDI
JMP 0x00021f63
MOV DL,byte ptr [EAX + 0x10]
MOV byte ptr [ESP + 0xb],DL
DEC EDI
JNZ 0x00021dbc
TEST ECX,ECX
JNZ 0x00021dbc
MOV EDX,dword ptr [EAX]
CMP byte ptr [EDX],0x1
JNZ 0x00021dbc
CMP byte ptr [ESP + 0xb],0x0
JNZ 0x00021fa9
MOV EDX,ESI
MOV EAX,EBX
CALL 0x0001e38b
XOR EDI,EDI
JMP 0x00021f63
LEA EDX,[ESP + 0x1c]
CALL 0x0001e0f3
MOV EDI,EAX
TEST EAX,EAX
JNZ 0x00021f63
MOV EDX,dword ptr [ESI + 0x8]
CMP EDX,0x10
JC 0x00021e5d
MOV EAX,EDX
MOV dword ptr [ESP],EDX
CALL 0x00019b1c
MOV dword ptr [ESP + 0x20],EAX
MOV EDX,dword ptr [ESP]
MOV dword ptr [ESP + 0x2c],EDX
MOV dword ptr [ESP + 0x24],0x0
MOV dword ptr [ESP + 0x28],0x0
MOV byte ptr [ESP + 0x30],0x0
LEA EAX,[ESP + 0x20]
MOV dword ptr [ESP],EAX
MOV EDX,ESI
CALL 0x0001e38b
MOV ESI,dword ptr [ESI + 0x4]
MOV EAX,dword ptr [ESP + 0x1c]
CMP byte ptr [ESP + 0xb],0x0
JNZ 0x00021e34
MOV ECX,ESI
CMP ESI,EBP
JC 0x00021e67
MOV EDX,ESI
IMUL EDX,EAX
MOV EBP,ECX
CMP ECX,EDX
JBE 0x00021e34
MOV EBP,EDX
TEST AL,0x1
JNZ 0x00021e76
ADD ESI,ESI
SUB ESP,0xc
PUSH ESI
MOV EAX,dword ptr [ESP + 0x10]
MOV ECX,EAX
MOV EDX,EAX
CALL 0x00021bb2
ADD ESP,0xc
TEST EAX,EAX
JZ 0x00021f9a
MOV EDI,EAX
JMP 0x00021f50
MOV EDX,0x10
JMP 0x00021ddb
MOV ECX,EBP
MOV EDX,ESI
IMUL EDX,EAX
MOV EBP,ECX
CMP ECX,EDX
JBE 0x00021e34
JMP 0x00021e32
MOV EDX,dword ptr [ESP]
MOV EAX,EBX
CALL 0x0001e38b
MOV EAX,dword ptr [ESP + 0x1c]
SHR EAX,0x1
MOV dword ptr [ESP + 0x1c],EAX
JZ 0x00021ede
MOV dword ptr [ESP + 0x4],ESI
ADD ESI,ESI
SUB ESP,0xc
PUSH ESI
MOV EAX,dword ptr [ESP + 0x10]
MOV ECX,EAX
MOV EDX,EAX
CALL 0x00021bb2
ADD ESP,0xc
TEST EAX,EAX
JNZ 0x00021e56
MOV EAX,dword ptr [ESP + 0x1c]
TEST AL,0x1
JZ 0x00021ed6
ADD dword ptr [ESP + 0x4],ESI
MOV ECX,dword ptr [ESP + 0x4]
SUB ESP,0xc
PUSH ECX
MOV ECX,EBX
MOV EDX,dword ptr [ESP + 0x10]
MOV EAX,EBX
CALL 0x00021bb2
ADD ESP,0xc
TEST EAX,EAX
JNZ 0x00021e56
MOV EAX,dword ptr [ESP + 0x1c]
SHR EAX,0x1
MOV dword ptr [ESP + 0x1c],EAX
JNZ 0x00021e90
CMP byte ptr [ESP + 0xb],0x0
JZ 0x00021f2b
MOV dword ptr [ESP + 0x40],0x2
LEA EAX,[ESP + 0x4a]
MOV dword ptr [ESP + 0x34],EAX
MOV byte ptr [ESP + 0x44],0x0
MOV dword ptr [ESP + 0x38],0x0
MOV dword ptr [ESP + 0x3c],0x1
MOV byte ptr [ESP + 0x4a],0x1
LEA EAX,[ESP + 0x34]
SUB ESP,0xc
PUSH EBP
MOV ECX,EBX
MOV EDX,EBX
CALL 0x00021c86
ADD ESP,0xc
TEST EAX,EAX
JNZ 0x00021e56
MOV EDX,dword ptr [EBX + 0x4]
CMP EDX,EBP
JBE 0x00021f3b
SUB EDX,EBP
MOV EAX,EBX
CALL 0x0001d62a
MOV ECX,dword ptr [EBX + 0x8]
TEST ECX,ECX
JNZ 0x00021f81
MOV dword ptr [EBX + 0x8],0x0
MOV byte ptr [EBX + 0x10],0x0
MOV dword ptr [EBX + 0x4],EBP
SUB ESP,0xc
PUSH dword ptr [ESP + 0x2c]
MOV EBX,dword ptr [ESP + 0x1c]
CALL 0x000175a0
ADD ESP,0x10
MOV EAX,EDI
MOV ESI,dword ptr [ESP + 0x4c]
XOR ESI,dword ptr GS:[0x14]
JNZ 0x00021f7c
ADD ESP,0x5c
POP EBX
POP ESI
POP EDI
POP EBP
RET 0x4
CALL 0x00017e10
MOV EAX,dword ptr [EBX]
CMP byte ptr [EAX],0x0
JNZ 0x00021f50
LEA EDX,[EAX + 0x1]
ADD EAX,ECX
CMP EAX,EDX
JZ 0x00021f42
INC EDX
CMP byte ptr [EDX + -0x1],0x0
JNZ 0x00021f50
JMP 0x00021f8d
MOV EAX,dword ptr [ESP + 0x1c]
SHR EAX,0x1
MOV dword ptr [ESP + 0x1c],EAX
JMP 0x00021e34
MOV dword ptr [ESP + 0x40],0x2
LEA EAX,[ESP + 0x4a]
MOV dword ptr [ESP + 0x34],EAX
MOV byte ptr [ESP + 0x44],0x0
MOV dword ptr [ESP + 0x38],0x0
MOV dword ptr [ESP + 0x3c],0x1
MOV byte ptr [ESP + 0x4a],0x1
LEA EAX,[ESP + 0x34]
SUB ESP,0xc
PUSH EBP
MOV ECX,EBX
MOV EDX,ESI
CALL 0x00021c86
MOV EDI,EAX
ADD ESP,0xc
JMP 0x00021f63
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */\n/* WARNING: Type propagation algorithm not settling */\n\nint __regparm3 FUN_00021cde(int param_1,undefined4 *param_2,undefined4 *param_3,uint *param_4)\n\n{\n  uint *puVar1;\n  undefined1 *puVar2;\n  int iVar3;\n  int iVar4;\n  uint uVar5;\n  char *pcVar6;\n  uint **ppuVar7;\n  uint **ppuVar8;\n  uint **ppuVar9;\n  uint *puVar10;\n  char *pcVar11;\n  int in_GS_OFFSET;\n  char cStackY_81;\n  uint *puStackY_80;\n  uint *local_70 [3];\n  char cStack_61;\n  undefined **local_60;\n  uint *local_54 [2];\n  uint local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  uint local_40;\n  undefined1 local_3c;\n  undefined1 *local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined1 local_28;\n  undefined1 local_22 [2];\n  undefined4 local_20;\n  \n  ppuVar9 = local_70 + 1;\n  local_70[0] = (uint *)0x21cea;\n  local_60 = &__DT_PLTGOT;\n  local_20 = *(undefined4 *)(in_GS_OFFSET + 0x14);\n  iVar3 = param_2[1];\n  if (iVar3 != 0) {\n    pcVar11 = (char *)*param_2;\n    if (*pcVar11 == '\0') {\n      pcVar6 = pcVar11 + iVar3;\n      do {\n        pcVar11 = pcVar11 + 1;\n        if (pcVar6 == pcVar11) goto LAB_00021d4d;\n      } while (*pcVar11 == '\0');\n    }\n    iVar3 = FUN_0001e002(&DAT_000ccedf,"not an integer");\n    ppuVar9 = local_70 + 1;\n    goto LAB_00021f63;\n  }\nLAB_00021d4d:\n  if (param_2[2] == 0) {\n    *(undefined1 *)(param_3 + 4) = 0;\n    param_3[1] = 0;\n    param_3[2] = 1;\n    *(undefined1 *)*param_3 = 1;\n    ppuVar9 = local_70 + 1;\n    iVar3 = 0;\n    goto LAB_00021f63;\n  }\n  if (*(int *)(param_1 + 8) == 0) {\n    param_3[2] = 0;\n    *(undefined1 *)(param_3 + 4) = 0;\n    param_3[1] = param_4;\n    ppuVar9 = local_70 + 1;\n    iVar3 = 0;\n    goto LAB_00021f63;\n  }\n  cStack_61 = *(char *)(param_2 + 4);\n  if (((param_2[2] == 1) && (iVar3 == 0)) && (*(char *)*param_2 == '\x01')) {\n    if (cStack_61 == '\0') {\n      local_70[0] = (uint *)0x21db5;\n      FUN_0001e38b();\n      ppuVar9 = local_70 + 1;\n      iVar3 = 0;\n    }\n    else {\n      local_2c = 2;\n      local_38 = local_22;\n      local_28 = 0;\n      local_34 = 0;\n      local_30 = 1;\n      local_22[0] = 1;\n      iVar3 = FUN_00021c86(param_4);\n      ppuVar9 = local_70;\n    }\n    goto LAB_00021f63;\n  }\n  local_70[0] = (uint *)0x21dc5;\n  iVar4 = FUN_0001e0f3();\n  iVar3 = iVar4;\n  if (iVar4 != 0) goto LAB_00021f63;\n  local_70[1] = *(uint **)(param_1 + 8);\n  if (local_70[1] < 0x10) {\n    local_70[1] = (uint *)0x10;\n  }\n  local_70[0] = (uint *)0x21de5;\n  local_4c = FUN_00019b1c();\n  local_40 = (uint)local_70[1];\n  local_48 = 0;\n  local_44 = 0;\n  local_3c = 0;\n  local_70[1] = (uint *)(local_54 + 2);\n  local_70[0] = (uint *)0x21e13;\n  FUN_0001e38b();\n  puVar10 = *(uint **)(param_1 + 4);\n  ppuVar8 = local_70 + 1;\n  if (cStack_61 == '\0') {\n    if (puVar10 < param_4) {\n      ppuVar8 = local_70 + 1;\n      if ((uint *)((int)puVar10 * (int)local_54[1]) < param_4) goto LAB_00021e32;\n    }\n    else {\n      ppuVar8 = local_70 + 1;\n      param_4 = puVar10;\n      if ((uint *)((int)puVar10 * (int)local_54[1]) < puVar10) {\nLAB_00021e32:\n        param_4 = (uint *)((int)puVar10 * (int)local_54[1]);\n        ppuVar8 = local_70 + 1;\n      }\n    }\n  }\n  while (((uint)local_54[1] & 1) == 0) {\n    puVar10 = (uint *)((int)puVar10 * 2);\n    ppuVar8[0xfffffffc] = puVar10;\n    ppuVar8[0xfffffffb] = (uint *)0x21e4b;\n    iVar3 = FUN_00021bb2();\n    ppuVar9 = ppuVar8 + 0xffffffff;\n    if (iVar3 != 0) goto LAB_00021f50;\n    local_54[1] = (uint *)((uint)ppuVar8[6] >> 1);\n    ppuVar8[6] = local_54[1];\n    ppuVar8 = ppuVar8 + 0xffffffff;\n  }\n  ppuVar8[0xffffffff] = (uint *)0x21e80;\n  FUN_0001e38b();\n  puVar1 = ppuVar8[7];\n  ppuVar8[7] = (uint *)((uint)puVar1 >> 1);\n  if ((uint *)((uint)puVar1 >> 1) != (uint *)0x0) {\n    ppuVar8[1] = puVar10;\n    ppuVar7 = ppuVar8;\n    do {\n      puVar10 = (uint *)((int)puVar10 * 2);\n      ((int *)ppuVar7)[-4] = (int)puVar10;\n      ((int *)ppuVar7)[-5] = 0x21ea3;\n      iVar3 = FUN_00021bb2();\n      ppuVar9 = (uint **)((int *)ppuVar7 + -1);\n      ppuVar8 = (uint **)((int *)ppuVar7 + -1);\n      if (iVar3 != 0) goto LAB_00021f50;\n      uVar5 = ((int *)ppuVar7)[6];\n      if ((uVar5 & 1) != 0) {\n        *ppuVar7 = (uint *)((int)*ppuVar7 + (int)puVar10);\n        ((int *)ppuVar7)[-5] = (int)*ppuVar7;\n        ((int *)ppuVar7)[-6] = 0x21ecb;\n        iVar3 = FUN_00021bb2();\n        ppuVar9 = (uint **)((int *)ppuVar7 + -2);\n        ppuVar8 = (uint **)((int *)ppuVar7 + -2);\n        if (iVar3 != 0) goto LAB_00021f50;\n        uVar5 = ((int *)ppuVar7)[5];\n      }\n      *(uint *)((int)ppuVar8 + 0x1c) = uVar5 >> 1;\n      ppuVar7 = ppuVar8;\n    } while (uVar5 >> 1 != 0);\n  }\n  puVar2 = (undefined1 *)ppuVar8;\n  if (*(char *)((int)ppuVar8 + 0xb) == '\0') {\nLAB_00021f2b:\n    ppuVar9 = (uint **)puVar2;\n    if (param_4 < (uint *)param_3[1]) {\n      *(undefined4 *)((int)ppuVar9 + -4) = 0x21f3b;\n      FUN_0001d62a();\n    }\n    if (param_3[2] == 0) {\nLAB_00021f42:\n      param_3[2] = 0;\n      *(undefined1 *)(param_3 + 4) = 0;\n      param_3[1] = param_4;\n      iVar3 = iVar4;\n    }\n    else {\n      pcVar11 = (char *)*param_3;\n      iVar3 = iVar4;\n      if (*pcVar11 == '\0') {\n        pcVar6 = pcVar11 + param_3[2];\n        do {\n          pcVar11 = pcVar11 + 1;\n          if (pcVar6 == pcVar11) goto LAB_00021f42;\n        } while (*pcVar11 == '\0');\n      }\n    }\n  }\n  else {\n    *(undefined4 *)((int)ppuVar8 + 0x40) = 2;\n    *(undefined1 **)((int)ppuVar8 + 0x34) = (undefined1 *)((int)ppuVar8 + 0x4a);\n    *(undefined1 *)((int)ppuVar8 + 0x44) = 0;\n    *(undefined4 *)((int)ppuVar8 + 0x38) = 0;\n    *(undefined4 *)((int)ppuVar8 + 0x3c) = 1;\n    *(undefined1 *)((int)ppuVar8 + 0x4a) = 1;\n    *(uint **)((int)ppuVar8 + -0x10) = param_4;\n    *(undefined4 *)((int)ppuVar8 + -0x14) = 0x21f20;\n    iVar3 = FUN_00021c86();\n    ppuVar9 = (uint **)((int)ppuVar8 + -4);\n    puVar2 = (undefined1 *)((int)ppuVar8 + -4);\n    if (iVar3 == 0) goto LAB_00021f2b;\n  }\nLAB_00021f50:\n  *(undefined4 *)((int)ppuVar9 + -0x10) = *(undefined4 *)((int)ppuVar9 + 0x20);\n  *(undefined4 *)((int)ppuVar9 + -0x14) = 0x21f60;\n  free(*(void **)((int)ppuVar9 + -0x10));\nLAB_00021f63:\n  if (ppuVar9[0x13] != *(uint **)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    ppuVar9[0xffffffff] = (uint *)0x21f81;\n    FUN_00017e10();\n  }\n  return iVar3;\n}\n\n" comment comment (function_definition "int __regparm3 FUN_00021cde(int param_1,undefined4 *param_2,undefined4 *param_3,uint *param_4)\n\n{\n  uint *puVar1;\n  undefined1 *puVar2;\n  int iVar3;\n  int iVar4;\n  uint uVar5;\n  char *pcVar6;\n  uint **ppuVar7;\n  uint **ppuVar8;\n  uint **ppuVar9;\n  uint *puVar10;\n  char *pcVar11;\n  int in_GS_OFFSET;\n  char cStackY_81;\n  uint *puStackY_80;\n  uint *local_70 [3];\n  char cStack_61;\n  undefined **local_60;\n  uint *local_54 [2];\n  uint local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  uint local_40;\n  undefined1 local_3c;\n  undefined1 *local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined1 local_28;\n  undefined1 local_22 [2];\n  undefined4 local_20;\n  \n  ppuVar9 = local_70 + 1;\n  local_70[0] = (uint *)0x21cea;\n  local_60 = &__DT_PLTGOT;\n  local_20 = *(undefined4 *)(in_GS_OFFSET + 0x14);\n  iVar3 = param_2[1];\n  if (iVar3 != 0) {\n    pcVar11 = (char *)*param_2;\n    if (*pcVar11 == '\0') {\n      pcVar6 = pcVar11 + iVar3;\n      do {\n        pcVar11 = pcVar11 + 1;\n        if (pcVar6 == pcVar11) goto LAB_00021d4d;\n      } while (*pcVar11 == '\0');\n    }\n    iVar3 = FUN_0001e002(&DAT_000ccedf,"not an integer");\n    ppuVar9 = local_70 + 1;\n    goto LAB_00021f63;\n  }\nLAB_00021d4d:\n  if (param_2[2] == 0) {\n    *(undefined1 *)(param_3 + 4) = 0;\n    param_3[1] = 0;\n    param_3[2] = 1;\n    *(undefined1 *)*param_3 = 1;\n    ppuVar9 = local_70 + 1;\n    iVar3 = 0;\n    goto LAB_00021f63;\n  }\n  if (*(int *)(param_1 + 8) == 0) {\n    param_3[2] = 0;\n    *(undefined1 *)(param_3 + 4) = 0;\n    param_3[1] = param_4;\n    ppuVar9 = local_70 + 1;\n    iVar3 = 0;\n    goto LAB_00021f63;\n  }\n  cStack_61 = *(char *)(param_2 + 4);\n  if (((param_2[2] == 1) && (iVar3 == 0)) && (*(char *)*param_2 == '\x01')) {\n    if (cStack_61 == '\0') {\n      local_70[0] = (uint *)0x21db5;\n      FUN_0001e38b();\n      ppuVar9 = local_70 + 1;\n      iVar3 = 0;\n    }\n    else {\n      local_2c = 2;\n      local_38 = local_22;\n      local_28 = 0;\n      local_34 = 0;\n      local_30 = 1;\n      local_22[0] = 1;\n      iVar3 = FUN_00021c86(param_4);\n      ppuVar9 = local_70;\n    }\n    goto LAB_00021f63;\n  }\n  local_70[0] = (uint *)0x21dc5;\n  iVar4 = FUN_0001e0f3();\n  iVar3 = iVar4;\n  if (iVar4 != 0) goto LAB_00021f63;\n  local_70[1] = *(uint **)(param_1 + 8);\n  if (local_70[1] < 0x10) {\n    local_70[1] = (uint *)0x10;\n  }\n  local_70[0] = (uint *)0x21de5;\n  local_4c = FUN_00019b1c();\n  local_40 = (uint)local_70[1];\n  local_48 = 0;\n  local_44 = 0;\n  local_3c = 0;\n  local_70[1] = (uint *)(local_54 + 2);\n  local_70[0] = (uint *)0x21e13;\n  FUN_0001e38b();\n  puVar10 = *(uint **)(param_1 + 4);\n  ppuVar8 = local_70 + 1;\n  if (cStack_61 == '\0') {\n    if (puVar10 < param_4) {\n      ppuVar8 = local_70 + 1;\n      if ((uint *)((int)puVar10 * (int)local_54[1]) < param_4) goto LAB_00021e32;\n    }\n    else {\n      ppuVar8 = local_70 + 1;\n      param_4 = puVar10;\n      if ((uint *)((int)puVar10 * (int)local_54[1]) < puVar10) {\nLAB_00021e32:\n        param_4 = (uint *)((int)puVar10 * (int)local_54[1]);\n        ppuVar8 = local_70 + 1;\n      }\n    }\n  }\n  while (((uint)local_54[1] & 1) == 0) {\n    puVar10 = (uint *)((int)puVar10 * 2);\n    ppuVar8[0xfffffffc] = puVar10;\n    ppuVar8[0xfffffffb] = (uint *)0x21e4b;\n    iVar3 = FUN_00021bb2();\n    ppuVar9 = ppuVar8 + 0xffffffff;\n    if (iVar3 != 0) goto LAB_00021f50;\n    local_54[1] = (uint *)((uint)ppuVar8[6] >> 1);\n    ppuVar8[6] = local_54[1];\n    ppuVar8 = ppuVar8 + 0xffffffff;\n  }\n  ppuVar8[0xffffffff] = (uint *)0x21e80;\n  FUN_0001e38b();\n  puVar1 = ppuVar8[7];\n  ppuVar8[7] = (uint *)((uint)puVar1 >> 1);\n  if ((uint *)((uint)puVar1 >> 1) != (uint *)0x0) {\n    ppuVar8[1] = puVar10;\n    ppuVar7 = ppuVar8;\n    do {\n      puVar10 = (uint *)((int)puVar10 * 2);\n      ((int *)ppuVar7)[-4] = (int)puVar10;\n      ((int *)ppuVar7)[-5] = 0x21ea3;\n      iVar3 = FUN_00021bb2();\n      ppuVar9 = (uint **)((int *)ppuVar7 + -1);\n      ppuVar8 = (uint **)((int *)ppuVar7 + -1);\n      if (iVar3 != 0) goto LAB_00021f50;\n      uVar5 = ((int *)ppuVar7)[6];\n      if ((uVar5 & 1) != 0) {\n        *ppuVar7 = (uint *)((int)*ppuVar7 + (int)puVar10);\n        ((int *)ppuVar7)[-5] = (int)*ppuVar7;\n        ((int *)ppuVar7)[-6] = 0x21ecb;\n        iVar3 = FUN_00021bb2();\n        ppuVar9 = (uint **)((int *)ppuVar7 + -2);\n        ppuVar8 = (uint **)((int *)ppuVar7 + -2);\n        if (iVar3 != 0) goto LAB_00021f50;\n        uVar5 = ((int *)ppuVar7)[5];\n      }\n      *(uint *)((int)ppuVar8 + 0x1c) = uVar5 >> 1;\n      ppuVar7 = ppuVar8;\n    } while (uVar5 >> 1 != 0);\n  }\n  puVar2 = (undefined1 *)ppuVar8;\n  if (*(char *)((int)ppuVar8 + 0xb) == '\0') {\nLAB_00021f2b:\n    ppuVar9 = (uint **)puVar2;\n    if (param_4 < (uint *)param_3[1]) {\n      *(undefined4 *)((int)ppuVar9 + -4) = 0x21f3b;\n      FUN_0001d62a();\n    }\n    if (param_3[2] == 0) {\nLAB_00021f42:\n      param_3[2] = 0;\n      *(undefined1 *)(param_3 + 4) = 0;\n      param_3[1] = param_4;\n      iVar3 = iVar4;\n    }\n    else {\n      pcVar11 = (char *)*param_3;\n      iVar3 = iVar4;\n      if (*pcVar11 == '\0') {\n        pcVar6 = pcVar11 + param_3[2];\n        do {\n          pcVar11 = pcVar11 + 1;\n          if (pcVar6 == pcVar11) goto LAB_00021f42;\n        } while (*pcVar11 == '\0');\n      }\n    }\n  }\n  else {\n    *(undefined4 *)((int)ppuVar8 + 0x40) = 2;\n    *(undefined1 **)((int)ppuVar8 + 0x34) = (undefined1 *)((int)ppuVar8 + 0x4a);\n    *(undefined1 *)((int)ppuVar8 + 0x44) = 0;\n    *(undefined4 *)((int)ppuVar8 + 0x38) = 0;\n    *(undefined4 *)((int)ppuVar8 + 0x3c) = 1;\n    *(undefined1 *)((int)ppuVar8 + 0x4a) = 1;\n    *(uint **)((int)ppuVar8 + -0x10) = param_4;\n    *(undefined4 *)((int)ppuVar8 + -0x14) = 0x21f20;\n    iVar3 = FUN_00021c86();\n    ppuVar9 = (uint **)((int)ppuVar8 + -4);\n    puVar2 = (undefined1 *)((int)ppuVar8 + -4);\n    if (iVar3 == 0) goto LAB_00021f2b;\n  }\nLAB_00021f50:\n  *(undefined4 *)((int)ppuVar9 + -0x10) = *(undefined4 *)((int)ppuVar9 + 0x20);\n  *(undefined4 *)((int)ppuVar9 + -0x14) = 0x21f60;\n  free(*(void **)((int)ppuVar9 + -0x10));\nLAB_00021f63:\n  if (ppuVar9[0x13] != *(uint **)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    ppuVar9[0xffffffff] = (uint *)0x21f81;\n    FUN_00017e10();\n  }\n  return iVar3;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_00021cde(int param_1,undefined4 *param_2,undefined4 *param_3,uint *param_4)" identifier (parameter_list "(int param_1,undefined4 *param_2,undefined4 *param_3,uint *param_4)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined4 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "uint *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) ))) (compound_statement "{\n  uint *puVar1;\n  undefined1 *puVar2;\n  int iVar3;\n  int iVar4;\n  uint uVar5;\n  char *pcVar6;\n  uint **ppuVar7;\n  uint **ppuVar8;\n  uint **ppuVar9;\n  uint *puVar10;\n  char *pcVar11;\n  int in_GS_OFFSET;\n  char cStackY_81;\n  uint *puStackY_80;\n  uint *local_70 [3];\n  char cStack_61;\n  undefined **local_60;\n  uint *local_54 [2];\n  uint local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  uint local_40;\n  undefined1 local_3c;\n  undefined1 *local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined1 local_28;\n  undefined1 local_22 [2];\n  undefined4 local_20;\n  \n  ppuVar9 = local_70 + 1;\n  local_70[0] = (uint *)0x21cea;\n  local_60 = &__DT_PLTGOT;\n  local_20 = *(undefined4 *)(in_GS_OFFSET + 0x14);\n  iVar3 = param_2[1];\n  if (iVar3 != 0) {\n    pcVar11 = (char *)*param_2;\n    if (*pcVar11 == '\0') {\n      pcVar6 = pcVar11 + iVar3;\n      do {\n        pcVar11 = pcVar11 + 1;\n        if (pcVar6 == pcVar11) goto LAB_00021d4d;\n      } while (*pcVar11 == '\0');\n    }\n    iVar3 = FUN_0001e002(&DAT_000ccedf,"not an integer");\n    ppuVar9 = local_70 + 1;\n    goto LAB_00021f63;\n  }\nLAB_00021d4d:\n  if (param_2[2] == 0) {\n    *(undefined1 *)(param_3 + 4) = 0;\n    param_3[1] = 0;\n    param_3[2] = 1;\n    *(undefined1 *)*param_3 = 1;\n    ppuVar9 = local_70 + 1;\n    iVar3 = 0;\n    goto LAB_00021f63;\n  }\n  if (*(int *)(param_1 + 8) == 0) {\n    param_3[2] = 0;\n    *(undefined1 *)(param_3 + 4) = 0;\n    param_3[1] = param_4;\n    ppuVar9 = local_70 + 1;\n    iVar3 = 0;\n    goto LAB_00021f63;\n  }\n  cStack_61 = *(char *)(param_2 + 4);\n  if (((param_2[2] == 1) && (iVar3 == 0)) && (*(char *)*param_2 == '\x01')) {\n    if (cStack_61 == '\0') {\n      local_70[0] = (uint *)0x21db5;\n      FUN_0001e38b();\n      ppuVar9 = local_70 + 1;\n      iVar3 = 0;\n    }\n    else {\n      local_2c = 2;\n      local_38 = local_22;\n      local_28 = 0;\n      local_34 = 0;\n      local_30 = 1;\n      local_22[0] = 1;\n      iVar3 = FUN_00021c86(param_4);\n      ppuVar9 = local_70;\n    }\n    goto LAB_00021f63;\n  }\n  local_70[0] = (uint *)0x21dc5;\n  iVar4 = FUN_0001e0f3();\n  iVar3 = iVar4;\n  if (iVar4 != 0) goto LAB_00021f63;\n  local_70[1] = *(uint **)(param_1 + 8);\n  if (local_70[1] < 0x10) {\n    local_70[1] = (uint *)0x10;\n  }\n  local_70[0] = (uint *)0x21de5;\n  local_4c = FUN_00019b1c();\n  local_40 = (uint)local_70[1];\n  local_48 = 0;\n  local_44 = 0;\n  local_3c = 0;\n  local_70[1] = (uint *)(local_54 + 2);\n  local_70[0] = (uint *)0x21e13;\n  FUN_0001e38b();\n  puVar10 = *(uint **)(param_1 + 4);\n  ppuVar8 = local_70 + 1;\n  if (cStack_61 == '\0') {\n    if (puVar10 < param_4) {\n      ppuVar8 = local_70 + 1;\n      if ((uint *)((int)puVar10 * (int)local_54[1]) < param_4) goto LAB_00021e32;\n    }\n    else {\n      ppuVar8 = local_70 + 1;\n      param_4 = puVar10;\n      if ((uint *)((int)puVar10 * (int)local_54[1]) < puVar10) {\nLAB_00021e32:\n        param_4 = (uint *)((int)puVar10 * (int)local_54[1]);\n        ppuVar8 = local_70 + 1;\n      }\n    }\n  }\n  while (((uint)local_54[1] & 1) == 0) {\n    puVar10 = (uint *)((int)puVar10 * 2);\n    ppuVar8[0xfffffffc] = puVar10;\n    ppuVar8[0xfffffffb] = (uint *)0x21e4b;\n    iVar3 = FUN_00021bb2();\n    ppuVar9 = ppuVar8 + 0xffffffff;\n    if (iVar3 != 0) goto LAB_00021f50;\n    local_54[1] = (uint *)((uint)ppuVar8[6] >> 1);\n    ppuVar8[6] = local_54[1];\n    ppuVar8 = ppuVar8 + 0xffffffff;\n  }\n  ppuVar8[0xffffffff] = (uint *)0x21e80;\n  FUN_0001e38b();\n  puVar1 = ppuVar8[7];\n  ppuVar8[7] = (uint *)((uint)puVar1 >> 1);\n  if ((uint *)((uint)puVar1 >> 1) != (uint *)0x0) {\n    ppuVar8[1] = puVar10;\n    ppuVar7 = ppuVar8;\n    do {\n      puVar10 = (uint *)((int)puVar10 * 2);\n      ((int *)ppuVar7)[-4] = (int)puVar10;\n      ((int *)ppuVar7)[-5] = 0x21ea3;\n      iVar3 = FUN_00021bb2();\n      ppuVar9 = (uint **)((int *)ppuVar7 + -1);\n      ppuVar8 = (uint **)((int *)ppuVar7 + -1);\n      if (iVar3 != 0) goto LAB_00021f50;\n      uVar5 = ((int *)ppuVar7)[6];\n      if ((uVar5 & 1) != 0) {\n        *ppuVar7 = (uint *)((int)*ppuVar7 + (int)puVar10);\n        ((int *)ppuVar7)[-5] = (int)*ppuVar7;\n        ((int *)ppuVar7)[-6] = 0x21ecb;\n        iVar3 = FUN_00021bb2();\n        ppuVar9 = (uint **)((int *)ppuVar7 + -2);\n        ppuVar8 = (uint **)((int *)ppuVar7 + -2);\n        if (iVar3 != 0) goto LAB_00021f50;\n        uVar5 = ((int *)ppuVar7)[5];\n      }\n      *(uint *)((int)ppuVar8 + 0x1c) = uVar5 >> 1;\n      ppuVar7 = ppuVar8;\n    } while (uVar5 >> 1 != 0);\n  }\n  puVar2 = (undefined1 *)ppuVar8;\n  if (*(char *)((int)ppuVar8 + 0xb) == '\0') {\nLAB_00021f2b:\n    ppuVar9 = (uint **)puVar2;\n    if (param_4 < (uint *)param_3[1]) {\n      *(undefined4 *)((int)ppuVar9 + -4) = 0x21f3b;\n      FUN_0001d62a();\n    }\n    if (param_3[2] == 0) {\nLAB_00021f42:\n      param_3[2] = 0;\n      *(undefined1 *)(param_3 + 4) = 0;\n      param_3[1] = param_4;\n      iVar3 = iVar4;\n    }\n    else {\n      pcVar11 = (char *)*param_3;\n      iVar3 = iVar4;\n      if (*pcVar11 == '\0') {\n        pcVar6 = pcVar11 + param_3[2];\n        do {\n          pcVar11 = pcVar11 + 1;\n          if (pcVar6 == pcVar11) goto LAB_00021f42;\n        } while (*pcVar11 == '\0');\n      }\n    }\n  }\n  else {\n    *(undefined4 *)((int)ppuVar8 + 0x40) = 2;\n    *(undefined1 **)((int)ppuVar8 + 0x34) = (undefined1 *)((int)ppuVar8 + 0x4a);\n    *(undefined1 *)((int)ppuVar8 + 0x44) = 0;\n    *(undefined4 *)((int)ppuVar8 + 0x38) = 0;\n    *(undefined4 *)((int)ppuVar8 + 0x3c) = 1;\n    *(undefined1 *)((int)ppuVar8 + 0x4a) = 1;\n    *(uint **)((int)ppuVar8 + -0x10) = param_4;\n    *(undefined4 *)((int)ppuVar8 + -0x14) = 0x21f20;\n    iVar3 = FUN_00021c86();\n    ppuVar9 = (uint **)((int)ppuVar8 + -4);\n    puVar2 = (undefined1 *)((int)ppuVar8 + -4);\n    if (iVar3 == 0) goto LAB_00021f2b;\n  }\nLAB_00021f50:\n  *(undefined4 *)((int)ppuVar9 + -0x10) = *(undefined4 *)((int)ppuVar9 + 0x20);\n  *(undefined4 *)((int)ppuVar9 + -0x14) = 0x21f60;\n  free(*(void **)((int)ppuVar9 + -0x10));\nLAB_00021f63:\n  if (ppuVar9[0x13] != *(uint **)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    ppuVar9[0xffffffff] = (uint *)0x21f81;\n    FUN_00017e10();\n  }\n  return iVar3;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined1 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "uint **ppuVar7;" type_identifier (pointer_declarator "**ppuVar7" * (pointer_declarator "*ppuVar7" * identifier)) ;) (declaration "uint **ppuVar8;" type_identifier (pointer_declarator "**ppuVar8" * (pointer_declarator "*ppuVar8" * identifier)) ;) (declaration "uint **ppuVar9;" type_identifier (pointer_declarator "**ppuVar9" * (pointer_declarator "*ppuVar9" * identifier)) ;) (declaration "uint *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "char *pcVar11;" primitive_type (pointer_declarator "*pcVar11" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "char cStackY_81;" primitive_type identifier ;) (declaration "uint *puStackY_80;" type_identifier (pointer_declarator "*puStackY_80" * identifier) ;) (declaration "uint *local_70 [3];" type_identifier (pointer_declarator "*local_70 [3]" * (array_declarator "local_70 [3]" identifier [ number_literal ])) ;) (declaration "char cStack_61;" primitive_type identifier ;) (declaration "undefined **local_60;" type_identifier (pointer_declarator "**local_60" * (pointer_declarator "*local_60" * identifier)) ;) (declaration "uint *local_54 [2];" type_identifier (pointer_declarator "*local_54 [2]" * (array_declarator "local_54 [2]" identifier [ number_literal ])) ;) (declaration "uint local_4c;" type_identifier identifier ;) (declaration "undefined4 local_48;" type_identifier identifier ;) (declaration "undefined4 local_44;" type_identifier identifier ;) (declaration "uint local_40;" type_identifier identifier ;) (declaration "undefined1 local_3c;" type_identifier identifier ;) (declaration "undefined1 *local_38;" type_identifier (pointer_declarator "*local_38" * identifier) ;) (declaration "undefined4 local_34;" type_identifier identifier ;) (declaration "undefined4 local_30;" type_identifier identifier ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "undefined1 local_28;" type_identifier identifier ;) (declaration "undefined1 local_22 [2];" type_identifier (array_declarator "local_22 [2]" identifier [ number_literal ]) ;) (declaration "undefined4 local_20;" type_identifier identifier ;) (expression_statement "ppuVar9 = local_70 + 1;" (assignment_expression "ppuVar9 = local_70 + 1" identifier = (binary_expression "local_70 + 1" identifier + number_literal)) ;) (expression_statement "local_70[0] = (uint *)0x21cea;" (assignment_expression "local_70[0] = (uint *)0x21cea" (subscript_expression "local_70[0]" identifier [ number_literal ]) = (cast_expression "(uint *)0x21cea" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_60 = &__DT_PLTGOT;" (assignment_expression "local_60 = &__DT_PLTGOT" identifier = (pointer_expression "&__DT_PLTGOT" & identifier)) ;) (expression_statement "local_20 = *(undefined4 *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(undefined4 *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(undefined4 *)(in_GS_OFFSET + 0x14)" * (cast_expression "(undefined4 *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "iVar3 = param_2[1];" (assignment_expression "iVar3 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (if_statement "if (iVar3 != 0) {\n    pcVar11 = (char *)*param_2;\n    if (*pcVar11 == '\0') {\n      pcVar6 = pcVar11 + iVar3;\n      do {\n        pcVar11 = pcVar11 + 1;\n        if (pcVar6 == pcVar11) goto LAB_00021d4d;\n      } while (*pcVar11 == '\0');\n    }\n    iVar3 = FUN_0001e002(&DAT_000ccedf,"not an integer");\n    ppuVar9 = local_70 + 1;\n    goto LAB_00021f63;\n  }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n    pcVar11 = (char *)*param_2;\n    if (*pcVar11 == '\0') {\n      pcVar6 = pcVar11 + iVar3;\n      do {\n        pcVar11 = pcVar11 + 1;\n        if (pcVar6 == pcVar11) goto LAB_00021d4d;\n      } while (*pcVar11 == '\0');\n    }\n    iVar3 = FUN_0001e002(&DAT_000ccedf,"not an integer");\n    ppuVar9 = local_70 + 1;\n    goto LAB_00021f63;\n  }" { (expression_statement "pcVar11 = (char *)*param_2;" (assignment_expression "pcVar11 = (char *)*param_2" identifier = (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (if_statement "if (*pcVar11 == '\0') {\n      pcVar6 = pcVar11 + iVar3;\n      do {\n        pcVar11 = pcVar11 + 1;\n        if (pcVar6 == pcVar11) goto LAB_00021d4d;\n      } while (*pcVar11 == '\0');\n    }" if (parenthesized_expression "(*pcVar11 == '\0')" ( (binary_expression "*pcVar11 == '\0'" (pointer_expression "*pcVar11" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      pcVar6 = pcVar11 + iVar3;\n      do {\n        pcVar11 = pcVar11 + 1;\n        if (pcVar6 == pcVar11) goto LAB_00021d4d;\n      } while (*pcVar11 == '\0');\n    }" { (expression_statement "pcVar6 = pcVar11 + iVar3;" (assignment_expression "pcVar6 = pcVar11 + iVar3" identifier = (binary_expression "pcVar11 + iVar3" identifier + identifier)) ;) (do_statement "do {\n        pcVar11 = pcVar11 + 1;\n        if (pcVar6 == pcVar11) goto LAB_00021d4d;\n      } while (*pcVar11 == '\0');" do (compound_statement "{\n        pcVar11 = pcVar11 + 1;\n        if (pcVar6 == pcVar11) goto LAB_00021d4d;\n      }" { (expression_statement "pcVar11 = pcVar11 + 1;" (assignment_expression "pcVar11 = pcVar11 + 1" identifier = (binary_expression "pcVar11 + 1" identifier + number_literal)) ;) (if_statement "if (pcVar6 == pcVar11) goto LAB_00021d4d;" if (parenthesized_expression "(pcVar6 == pcVar11)" ( (binary_expression "pcVar6 == pcVar11" identifier == identifier) )) (goto_statement "goto LAB_00021d4d;" goto statement_identifier ;)) }) while (parenthesized_expression "(*pcVar11 == '\0')" ( (binary_expression "*pcVar11 == '\0'" (pointer_expression "*pcVar11" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) ;) })) (expression_statement "iVar3 = FUN_0001e002(&DAT_000ccedf,"not an integer");" (assignment_expression "iVar3 = FUN_0001e002(&DAT_000ccedf,"not an integer")" identifier = (call_expression "FUN_0001e002(&DAT_000ccedf,"not an integer")" identifier (argument_list "(&DAT_000ccedf,"not an integer")" ( (pointer_expression "&DAT_000ccedf" & identifier) , (string_literal ""not an integer"" " string_content ") )))) ;) (expression_statement "ppuVar9 = local_70 + 1;" (assignment_expression "ppuVar9 = local_70 + 1" identifier = (binary_expression "local_70 + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_00021f63;" goto statement_identifier ;) })) (labeled_statement "LAB_00021d4d:\n  if (param_2[2] == 0) {\n    *(undefined1 *)(param_3 + 4) = 0;\n    param_3[1] = 0;\n    param_3[2] = 1;\n    *(undefined1 *)*param_3 = 1;\n    ppuVar9 = local_70 + 1;\n    iVar3 = 0;\n    goto LAB_00021f63;\n  }" statement_identifier : (if_statement "if (param_2[2] == 0) {\n    *(undefined1 *)(param_3 + 4) = 0;\n    param_3[1] = 0;\n    param_3[2] = 1;\n    *(undefined1 *)*param_3 = 1;\n    ppuVar9 = local_70 + 1;\n    iVar3 = 0;\n    goto LAB_00021f63;\n  }" if (parenthesized_expression "(param_2[2] == 0)" ( (binary_expression "param_2[2] == 0" (subscript_expression "param_2[2]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n    *(undefined1 *)(param_3 + 4) = 0;\n    param_3[1] = 0;\n    param_3[2] = 1;\n    *(undefined1 *)*param_3 = 1;\n    ppuVar9 = local_70 + 1;\n    iVar3 = 0;\n    goto LAB_00021f63;\n  }" { (expression_statement "*(undefined1 *)(param_3 + 4) = 0;" (assignment_expression "*(undefined1 *)(param_3 + 4) = 0" (pointer_expression "*(undefined1 *)(param_3 + 4)" * (cast_expression "(undefined1 *)(param_3 + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "param_3[1] = 0;" (assignment_expression "param_3[1] = 0" (subscript_expression "param_3[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_3[2] = 1;" (assignment_expression "param_3[2] = 1" (subscript_expression "param_3[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)*param_3 = 1;" (assignment_expression "*(undefined1 *)*param_3 = 1" (pointer_expression "*(undefined1 *)*param_3" * (cast_expression "(undefined1 *)*param_3" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_3" * identifier))) = number_literal) ;) (expression_statement "ppuVar9 = local_70 + 1;" (assignment_expression "ppuVar9 = local_70 + 1" identifier = (binary_expression "local_70 + 1" identifier + number_literal)) ;) (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00021f63;" goto statement_identifier ;) }))) (if_statement "if (*(int *)(param_1 + 8) == 0) {\n    param_3[2] = 0;\n    *(undefined1 *)(param_3 + 4) = 0;\n    param_3[1] = param_4;\n    ppuVar9 = local_70 + 1;\n    iVar3 = 0;\n    goto LAB_00021f63;\n  }" if (parenthesized_expression "(*(int *)(param_1 + 8) == 0)" ( (binary_expression "*(int *)(param_1 + 8) == 0" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    param_3[2] = 0;\n    *(undefined1 *)(param_3 + 4) = 0;\n    param_3[1] = param_4;\n    ppuVar9 = local_70 + 1;\n    iVar3 = 0;\n    goto LAB_00021f63;\n  }" { (expression_statement "param_3[2] = 0;" (assignment_expression "param_3[2] = 0" (subscript_expression "param_3[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)(param_3 + 4) = 0;" (assignment_expression "*(undefined1 *)(param_3 + 4) = 0" (pointer_expression "*(undefined1 *)(param_3 + 4)" * (cast_expression "(undefined1 *)(param_3 + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "param_3[1] = param_4;" (assignment_expression "param_3[1] = param_4" (subscript_expression "param_3[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "ppuVar9 = local_70 + 1;" (assignment_expression "ppuVar9 = local_70 + 1" identifier = (binary_expression "local_70 + 1" identifier + number_literal)) ;) (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00021f63;" goto statement_identifier ;) })) (expression_statement "cStack_61 = *(char *)(param_2 + 4);" (assignment_expression "cStack_61 = *(char *)(param_2 + 4)" identifier = (pointer_expression "*(char *)(param_2 + 4)" * (cast_expression "(char *)(param_2 + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) ;) (if_statement "if (((param_2[2] == 1) && (iVar3 == 0)) && (*(char *)*param_2 == '\x01')) {\n    if (cStack_61 == '\0') {\n      local_70[0] = (uint *)0x21db5;\n      FUN_0001e38b();\n      ppuVar9 = local_70 + 1;\n      iVar3 = 0;\n    }\n    else {\n      local_2c = 2;\n      local_38 = local_22;\n      local_28 = 0;\n      local_34 = 0;\n      local_30 = 1;\n      local_22[0] = 1;\n      iVar3 = FUN_00021c86(param_4);\n      ppuVar9 = local_70;\n    }\n    goto LAB_00021f63;\n  }" if (parenthesized_expression "(((param_2[2] == 1) && (iVar3 == 0)) && (*(char *)*param_2 == '\x01'))" ( (binary_expression "((param_2[2] == 1) && (iVar3 == 0)) && (*(char *)*param_2 == '\x01')" (parenthesized_expression "((param_2[2] == 1) && (iVar3 == 0))" ( (binary_expression "(param_2[2] == 1) && (iVar3 == 0)" (parenthesized_expression "(param_2[2] == 1)" ( (binary_expression "param_2[2] == 1" (subscript_expression "param_2[2]" identifier [ number_literal ]) == number_literal) )) && (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) ))) )) && (parenthesized_expression "(*(char *)*param_2 == '\x01')" ( (binary_expression "*(char *)*param_2 == '\x01'" (pointer_expression "*(char *)*param_2" * (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) == (char_literal "'\x01'" ' escape_sequence ')) ))) )) (compound_statement "{\n    if (cStack_61 == '\0') {\n      local_70[0] = (uint *)0x21db5;\n      FUN_0001e38b();\n      ppuVar9 = local_70 + 1;\n      iVar3 = 0;\n    }\n    else {\n      local_2c = 2;\n      local_38 = local_22;\n      local_28 = 0;\n      local_34 = 0;\n      local_30 = 1;\n      local_22[0] = 1;\n      iVar3 = FUN_00021c86(param_4);\n      ppuVar9 = local_70;\n    }\n    goto LAB_00021f63;\n  }" { (if_statement "if (cStack_61 == '\0') {\n      local_70[0] = (uint *)0x21db5;\n      FUN_0001e38b();\n      ppuVar9 = local_70 + 1;\n      iVar3 = 0;\n    }\n    else {\n      local_2c = 2;\n      local_38 = local_22;\n      local_28 = 0;\n      local_34 = 0;\n      local_30 = 1;\n      local_22[0] = 1;\n      iVar3 = FUN_00021c86(param_4);\n      ppuVar9 = local_70;\n    }" if (parenthesized_expression "(cStack_61 == '\0')" ( (binary_expression "cStack_61 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      local_70[0] = (uint *)0x21db5;\n      FUN_0001e38b();\n      ppuVar9 = local_70 + 1;\n      iVar3 = 0;\n    }" { (expression_statement "local_70[0] = (uint *)0x21db5;" (assignment_expression "local_70[0] = (uint *)0x21db5" (subscript_expression "local_70[0]" identifier [ number_literal ]) = (cast_expression "(uint *)0x21db5" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "FUN_0001e38b();" (call_expression "FUN_0001e38b()" identifier (argument_list "()" ( ))) ;) (expression_statement "ppuVar9 = local_70 + 1;" (assignment_expression "ppuVar9 = local_70 + 1" identifier = (binary_expression "local_70 + 1" identifier + number_literal)) ;) (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      local_2c = 2;\n      local_38 = local_22;\n      local_28 = 0;\n      local_34 = 0;\n      local_30 = 1;\n      local_22[0] = 1;\n      iVar3 = FUN_00021c86(param_4);\n      ppuVar9 = local_70;\n    }" else (compound_statement "{\n      local_2c = 2;\n      local_38 = local_22;\n      local_28 = 0;\n      local_34 = 0;\n      local_30 = 1;\n      local_22[0] = 1;\n      iVar3 = FUN_00021c86(param_4);\n      ppuVar9 = local_70;\n    }" { (expression_statement "local_2c = 2;" (assignment_expression "local_2c = 2" identifier = number_literal) ;) (expression_statement "local_38 = local_22;" (assignment_expression "local_38 = local_22" identifier = identifier) ;) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" identifier = number_literal) ;) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" identifier = number_literal) ;) (expression_statement "local_30 = 1;" (assignment_expression "local_30 = 1" identifier = number_literal) ;) (expression_statement "local_22[0] = 1;" (assignment_expression "local_22[0] = 1" (subscript_expression "local_22[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar3 = FUN_00021c86(param_4);" (assignment_expression "iVar3 = FUN_00021c86(param_4)" identifier = (call_expression "FUN_00021c86(param_4)" identifier (argument_list "(param_4)" ( identifier )))) ;) (expression_statement "ppuVar9 = local_70;" (assignment_expression "ppuVar9 = local_70" identifier = identifier) ;) }))) (goto_statement "goto LAB_00021f63;" goto statement_identifier ;) })) (expression_statement "local_70[0] = (uint *)0x21dc5;" (assignment_expression "local_70[0] = (uint *)0x21dc5" (subscript_expression "local_70[0]" identifier [ number_literal ]) = (cast_expression "(uint *)0x21dc5" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar4 = FUN_0001e0f3();" (assignment_expression "iVar4 = FUN_0001e0f3()" identifier = (call_expression "FUN_0001e0f3()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar3 = iVar4;" (assignment_expression "iVar3 = iVar4" identifier = identifier) ;) (if_statement "if (iVar4 != 0) goto LAB_00021f63;" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00021f63;" goto statement_identifier ;)) (expression_statement "local_70[1] = *(uint **)(param_1 + 8);" (assignment_expression "local_70[1] = *(uint **)(param_1 + 8)" (subscript_expression "local_70[1]" identifier [ number_literal ]) = (pointer_expression "*(uint **)(param_1 + 8)" * (cast_expression "(uint **)(param_1 + 8)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (if_statement "if (local_70[1] < 0x10) {\n    local_70[1] = (uint *)0x10;\n  }" if (parenthesized_expression "(local_70[1] < 0x10)" ( (binary_expression "local_70[1] < 0x10" (subscript_expression "local_70[1]" identifier [ number_literal ]) < number_literal) )) (compound_statement "{\n    local_70[1] = (uint *)0x10;\n  }" { (expression_statement "local_70[1] = (uint *)0x10;" (assignment_expression "local_70[1] = (uint *)0x10" (subscript_expression "local_70[1]" identifier [ number_literal ]) = (cast_expression "(uint *)0x10" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "local_70[0] = (uint *)0x21de5;" (assignment_expression "local_70[0] = (uint *)0x21de5" (subscript_expression "local_70[0]" identifier [ number_literal ]) = (cast_expression "(uint *)0x21de5" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_4c = FUN_00019b1c();" (assignment_expression "local_4c = FUN_00019b1c()" identifier = (call_expression "FUN_00019b1c()" identifier (argument_list "()" ( )))) ;) (expression_statement "local_40 = (uint)local_70[1];" (assignment_expression "local_40 = (uint)local_70[1]" identifier = (cast_expression "(uint)local_70[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "local_70[1]" identifier [ number_literal ]))) ;) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" identifier = number_literal) ;) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (expression_statement "local_70[1] = (uint *)(local_54 + 2);" (assignment_expression "local_70[1] = (uint *)(local_54 + 2)" (subscript_expression "local_70[1]" identifier [ number_literal ]) = (cast_expression "(uint *)(local_54 + 2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_54 + 2)" ( (binary_expression "local_54 + 2" identifier + number_literal) )))) ;) (expression_statement "local_70[0] = (uint *)0x21e13;" (assignment_expression "local_70[0] = (uint *)0x21e13" (subscript_expression "local_70[0]" identifier [ number_literal ]) = (cast_expression "(uint *)0x21e13" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "FUN_0001e38b();" (call_expression "FUN_0001e38b()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar10 = *(uint **)(param_1 + 4);" (assignment_expression "puVar10 = *(uint **)(param_1 + 4)" identifier = (pointer_expression "*(uint **)(param_1 + 4)" * (cast_expression "(uint **)(param_1 + 4)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (expression_statement "ppuVar8 = local_70 + 1;" (assignment_expression "ppuVar8 = local_70 + 1" identifier = (binary_expression "local_70 + 1" identifier + number_literal)) ;) (if_statement "if (cStack_61 == '\0') {\n    if (puVar10 < param_4) {\n      ppuVar8 = local_70 + 1;\n      if ((uint *)((int)puVar10 * (int)local_54[1]) < param_4) goto LAB_00021e32;\n    }\n    else {\n      ppuVar8 = local_70 + 1;\n      param_4 = puVar10;\n      if ((uint *)((int)puVar10 * (int)local_54[1]) < puVar10) {\nLAB_00021e32:\n        param_4 = (uint *)((int)puVar10 * (int)local_54[1]);\n        ppuVar8 = local_70 + 1;\n      }\n    }\n  }" if (parenthesized_expression "(cStack_61 == '\0')" ( (binary_expression "cStack_61 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    if (puVar10 < param_4) {\n      ppuVar8 = local_70 + 1;\n      if ((uint *)((int)puVar10 * (int)local_54[1]) < param_4) goto LAB_00021e32;\n    }\n    else {\n      ppuVar8 = local_70 + 1;\n      param_4 = puVar10;\n      if ((uint *)((int)puVar10 * (int)local_54[1]) < puVar10) {\nLAB_00021e32:\n        param_4 = (uint *)((int)puVar10 * (int)local_54[1]);\n        ppuVar8 = local_70 + 1;\n      }\n    }\n  }" { (if_statement "if (puVar10 < param_4) {\n      ppuVar8 = local_70 + 1;\n      if ((uint *)((int)puVar10 * (int)local_54[1]) < param_4) goto LAB_00021e32;\n    }\n    else {\n      ppuVar8 = local_70 + 1;\n      param_4 = puVar10;\n      if ((uint *)((int)puVar10 * (int)local_54[1]) < puVar10) {\nLAB_00021e32:\n        param_4 = (uint *)((int)puVar10 * (int)local_54[1]);\n        ppuVar8 = local_70 + 1;\n      }\n    }" if (parenthesized_expression "(puVar10 < param_4)" ( (binary_expression "puVar10 < param_4" identifier < identifier) )) (compound_statement "{\n      ppuVar8 = local_70 + 1;\n      if ((uint *)((int)puVar10 * (int)local_54[1]) < param_4) goto LAB_00021e32;\n    }" { (expression_statement "ppuVar8 = local_70 + 1;" (assignment_expression "ppuVar8 = local_70 + 1" identifier = (binary_expression "local_70 + 1" identifier + number_literal)) ;) (if_statement "if ((uint *)((int)puVar10 * (int)local_54[1]) < param_4) goto LAB_00021e32;" if (parenthesized_expression "((uint *)((int)puVar10 * (int)local_54[1]) < param_4)" ( (binary_expression "(uint *)((int)puVar10 * (int)local_54[1]) < param_4" (cast_expression "(uint *)((int)puVar10 * (int)local_54[1])" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 * (int)local_54[1])" ( (binary_expression "(int)puVar10 * (int)local_54[1]" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) * (cast_expression "(int)local_54[1]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "local_54[1]" identifier [ number_literal ]))) ))) < identifier) )) (goto_statement "goto LAB_00021e32;" goto statement_identifier ;)) }) (else_clause "else {\n      ppuVar8 = local_70 + 1;\n      param_4 = puVar10;\n      if ((uint *)((int)puVar10 * (int)local_54[1]) < puVar10) {\nLAB_00021e32:\n        param_4 = (uint *)((int)puVar10 * (int)local_54[1]);\n        ppuVar8 = local_70 + 1;\n      }\n    }" else (compound_statement "{\n      ppuVar8 = local_70 + 1;\n      param_4 = puVar10;\n      if ((uint *)((int)puVar10 * (int)local_54[1]) < puVar10) {\nLAB_00021e32:\n        param_4 = (uint *)((int)puVar10 * (int)local_54[1]);\n        ppuVar8 = local_70 + 1;\n      }\n    }" { (expression_statement "ppuVar8 = local_70 + 1;" (assignment_expression "ppuVar8 = local_70 + 1" identifier = (binary_expression "local_70 + 1" identifier + number_literal)) ;) (expression_statement "param_4 = puVar10;" (assignment_expression "param_4 = puVar10" identifier = identifier) ;) (if_statement "if ((uint *)((int)puVar10 * (int)local_54[1]) < puVar10) {\nLAB_00021e32:\n        param_4 = (uint *)((int)puVar10 * (int)local_54[1]);\n        ppuVar8 = local_70 + 1;\n      }" if (parenthesized_expression "((uint *)((int)puVar10 * (int)local_54[1]) < puVar10)" ( (binary_expression "(uint *)((int)puVar10 * (int)local_54[1]) < puVar10" (cast_expression "(uint *)((int)puVar10 * (int)local_54[1])" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 * (int)local_54[1])" ( (binary_expression "(int)puVar10 * (int)local_54[1]" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) * (cast_expression "(int)local_54[1]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "local_54[1]" identifier [ number_literal ]))) ))) < identifier) )) (compound_statement "{\nLAB_00021e32:\n        param_4 = (uint *)((int)puVar10 * (int)local_54[1]);\n        ppuVar8 = local_70 + 1;\n      }" { (labeled_statement "LAB_00021e32:\n        param_4 = (uint *)((int)puVar10 * (int)local_54[1]);" statement_identifier : (expression_statement "param_4 = (uint *)((int)puVar10 * (int)local_54[1]);" (assignment_expression "param_4 = (uint *)((int)puVar10 * (int)local_54[1])" identifier = (cast_expression "(uint *)((int)puVar10 * (int)local_54[1])" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 * (int)local_54[1])" ( (binary_expression "(int)puVar10 * (int)local_54[1]" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) * (cast_expression "(int)local_54[1]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "local_54[1]" identifier [ number_literal ]))) )))) ;)) (expression_statement "ppuVar8 = local_70 + 1;" (assignment_expression "ppuVar8 = local_70 + 1" identifier = (binary_expression "local_70 + 1" identifier + number_literal)) ;) })) }))) })) (while_statement "while (((uint)local_54[1] & 1) == 0) {\n    puVar10 = (uint *)((int)puVar10 * 2);\n    ppuVar8[0xfffffffc] = puVar10;\n    ppuVar8[0xfffffffb] = (uint *)0x21e4b;\n    iVar3 = FUN_00021bb2();\n    ppuVar9 = ppuVar8 + 0xffffffff;\n    if (iVar3 != 0) goto LAB_00021f50;\n    local_54[1] = (uint *)((uint)ppuVar8[6] >> 1);\n    ppuVar8[6] = local_54[1];\n    ppuVar8 = ppuVar8 + 0xffffffff;\n  }" while (parenthesized_expression "(((uint)local_54[1] & 1) == 0)" ( (binary_expression "((uint)local_54[1] & 1) == 0" (parenthesized_expression "((uint)local_54[1] & 1)" ( (binary_expression "(uint)local_54[1] & 1" (cast_expression "(uint)local_54[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "local_54[1]" identifier [ number_literal ])) & number_literal) )) == number_literal) )) (compound_statement "{\n    puVar10 = (uint *)((int)puVar10 * 2);\n    ppuVar8[0xfffffffc] = puVar10;\n    ppuVar8[0xfffffffb] = (uint *)0x21e4b;\n    iVar3 = FUN_00021bb2();\n    ppuVar9 = ppuVar8 + 0xffffffff;\n    if (iVar3 != 0) goto LAB_00021f50;\n    local_54[1] = (uint *)((uint)ppuVar8[6] >> 1);\n    ppuVar8[6] = local_54[1];\n    ppuVar8 = ppuVar8 + 0xffffffff;\n  }" { (expression_statement "puVar10 = (uint *)((int)puVar10 * 2);" (assignment_expression "puVar10 = (uint *)((int)puVar10 * 2)" identifier = (cast_expression "(uint *)((int)puVar10 * 2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 * 2)" ( (binary_expression "(int)puVar10 * 2" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) ;) (expression_statement "ppuVar8[0xfffffffc] = puVar10;" (assignment_expression "ppuVar8[0xfffffffc] = puVar10" (subscript_expression "ppuVar8[0xfffffffc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "ppuVar8[0xfffffffb] = (uint *)0x21e4b;" (assignment_expression "ppuVar8[0xfffffffb] = (uint *)0x21e4b" (subscript_expression "ppuVar8[0xfffffffb]" identifier [ number_literal ]) = (cast_expression "(uint *)0x21e4b" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar3 = FUN_00021bb2();" (assignment_expression "iVar3 = FUN_00021bb2()" identifier = (call_expression "FUN_00021bb2()" identifier (argument_list "()" ( )))) ;) (expression_statement "ppuVar9 = ppuVar8 + 0xffffffff;" (assignment_expression "ppuVar9 = ppuVar8 + 0xffffffff" identifier = (binary_expression "ppuVar8 + 0xffffffff" identifier + number_literal)) ;) (if_statement "if (iVar3 != 0) goto LAB_00021f50;" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00021f50;" goto statement_identifier ;)) (expression_statement "local_54[1] = (uint *)((uint)ppuVar8[6] >> 1);" (assignment_expression "local_54[1] = (uint *)((uint)ppuVar8[6] >> 1)" (subscript_expression "local_54[1]" identifier [ number_literal ]) = (cast_expression "(uint *)((uint)ppuVar8[6] >> 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)ppuVar8[6] >> 1)" ( (binary_expression "(uint)ppuVar8[6] >> 1" (cast_expression "(uint)ppuVar8[6]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "ppuVar8[6]" identifier [ number_literal ])) >> number_literal) )))) ;) (expression_statement "ppuVar8[6] = local_54[1];" (assignment_expression "ppuVar8[6] = local_54[1]" (subscript_expression "ppuVar8[6]" identifier [ number_literal ]) = (subscript_expression "local_54[1]" identifier [ number_literal ])) ;) (expression_statement "ppuVar8 = ppuVar8 + 0xffffffff;" (assignment_expression "ppuVar8 = ppuVar8 + 0xffffffff" identifier = (binary_expression "ppuVar8 + 0xffffffff" identifier + number_literal)) ;) })) (expression_statement "ppuVar8[0xffffffff] = (uint *)0x21e80;" (assignment_expression "ppuVar8[0xffffffff] = (uint *)0x21e80" (subscript_expression "ppuVar8[0xffffffff]" identifier [ number_literal ]) = (cast_expression "(uint *)0x21e80" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "FUN_0001e38b();" (call_expression "FUN_0001e38b()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar1 = ppuVar8[7];" (assignment_expression "puVar1 = ppuVar8[7]" identifier = (subscript_expression "ppuVar8[7]" identifier [ number_literal ])) ;) (expression_statement "ppuVar8[7] = (uint *)((uint)puVar1 >> 1);" (assignment_expression "ppuVar8[7] = (uint *)((uint)puVar1 >> 1)" (subscript_expression "ppuVar8[7]" identifier [ number_literal ]) = (cast_expression "(uint *)((uint)puVar1 >> 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)puVar1 >> 1)" ( (binary_expression "(uint)puVar1 >> 1" (cast_expression "(uint)puVar1" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if ((uint *)((uint)puVar1 >> 1) != (uint *)0x0) {\n    ppuVar8[1] = puVar10;\n    ppuVar7 = ppuVar8;\n    do {\n      puVar10 = (uint *)((int)puVar10 * 2);\n      ((int *)ppuVar7)[-4] = (int)puVar10;\n      ((int *)ppuVar7)[-5] = 0x21ea3;\n      iVar3 = FUN_00021bb2();\n      ppuVar9 = (uint **)((int *)ppuVar7 + -1);\n      ppuVar8 = (uint **)((int *)ppuVar7 + -1);\n      if (iVar3 != 0) goto LAB_00021f50;\n      uVar5 = ((int *)ppuVar7)[6];\n      if ((uVar5 & 1) != 0) {\n        *ppuVar7 = (uint *)((int)*ppuVar7 + (int)puVar10);\n        ((int *)ppuVar7)[-5] = (int)*ppuVar7;\n        ((int *)ppuVar7)[-6] = 0x21ecb;\n        iVar3 = FUN_00021bb2();\n        ppuVar9 = (uint **)((int *)ppuVar7 + -2);\n        ppuVar8 = (uint **)((int *)ppuVar7 + -2);\n        if (iVar3 != 0) goto LAB_00021f50;\n        uVar5 = ((int *)ppuVar7)[5];\n      }\n      *(uint *)((int)ppuVar8 + 0x1c) = uVar5 >> 1;\n      ppuVar7 = ppuVar8;\n    } while (uVar5 >> 1 != 0);\n  }" if (parenthesized_expression "((uint *)((uint)puVar1 >> 1) != (uint *)0x0)" ( (binary_expression "(uint *)((uint)puVar1 >> 1) != (uint *)0x0" (cast_expression "(uint *)((uint)puVar1 >> 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)puVar1 >> 1)" ( (binary_expression "(uint)puVar1 >> 1" (cast_expression "(uint)puVar1" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) ))) != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    ppuVar8[1] = puVar10;\n    ppuVar7 = ppuVar8;\n    do {\n      puVar10 = (uint *)((int)puVar10 * 2);\n      ((int *)ppuVar7)[-4] = (int)puVar10;\n      ((int *)ppuVar7)[-5] = 0x21ea3;\n      iVar3 = FUN_00021bb2();\n      ppuVar9 = (uint **)((int *)ppuVar7 + -1);\n      ppuVar8 = (uint **)((int *)ppuVar7 + -1);\n      if (iVar3 != 0) goto LAB_00021f50;\n      uVar5 = ((int *)ppuVar7)[6];\n      if ((uVar5 & 1) != 0) {\n        *ppuVar7 = (uint *)((int)*ppuVar7 + (int)puVar10);\n        ((int *)ppuVar7)[-5] = (int)*ppuVar7;\n        ((int *)ppuVar7)[-6] = 0x21ecb;\n        iVar3 = FUN_00021bb2();\n        ppuVar9 = (uint **)((int *)ppuVar7 + -2);\n        ppuVar8 = (uint **)((int *)ppuVar7 + -2);\n        if (iVar3 != 0) goto LAB_00021f50;\n        uVar5 = ((int *)ppuVar7)[5];\n      }\n      *(uint *)((int)ppuVar8 + 0x1c) = uVar5 >> 1;\n      ppuVar7 = ppuVar8;\n    } while (uVar5 >> 1 != 0);\n  }" { (expression_statement "ppuVar8[1] = puVar10;" (assignment_expression "ppuVar8[1] = puVar10" (subscript_expression "ppuVar8[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "ppuVar7 = ppuVar8;" (assignment_expression "ppuVar7 = ppuVar8" identifier = identifier) ;) (do_statement "do {\n      puVar10 = (uint *)((int)puVar10 * 2);\n      ((int *)ppuVar7)[-4] = (int)puVar10;\n      ((int *)ppuVar7)[-5] = 0x21ea3;\n      iVar3 = FUN_00021bb2();\n      ppuVar9 = (uint **)((int *)ppuVar7 + -1);\n      ppuVar8 = (uint **)((int *)ppuVar7 + -1);\n      if (iVar3 != 0) goto LAB_00021f50;\n      uVar5 = ((int *)ppuVar7)[6];\n      if ((uVar5 & 1) != 0) {\n        *ppuVar7 = (uint *)((int)*ppuVar7 + (int)puVar10);\n        ((int *)ppuVar7)[-5] = (int)*ppuVar7;\n        ((int *)ppuVar7)[-6] = 0x21ecb;\n        iVar3 = FUN_00021bb2();\n        ppuVar9 = (uint **)((int *)ppuVar7 + -2);\n        ppuVar8 = (uint **)((int *)ppuVar7 + -2);\n        if (iVar3 != 0) goto LAB_00021f50;\n        uVar5 = ((int *)ppuVar7)[5];\n      }\n      *(uint *)((int)ppuVar8 + 0x1c) = uVar5 >> 1;\n      ppuVar7 = ppuVar8;\n    } while (uVar5 >> 1 != 0);" do (compound_statement "{\n      puVar10 = (uint *)((int)puVar10 * 2);\n      ((int *)ppuVar7)[-4] = (int)puVar10;\n      ((int *)ppuVar7)[-5] = 0x21ea3;\n      iVar3 = FUN_00021bb2();\n      ppuVar9 = (uint **)((int *)ppuVar7 + -1);\n      ppuVar8 = (uint **)((int *)ppuVar7 + -1);\n      if (iVar3 != 0) goto LAB_00021f50;\n      uVar5 = ((int *)ppuVar7)[6];\n      if ((uVar5 & 1) != 0) {\n        *ppuVar7 = (uint *)((int)*ppuVar7 + (int)puVar10);\n        ((int *)ppuVar7)[-5] = (int)*ppuVar7;\n        ((int *)ppuVar7)[-6] = 0x21ecb;\n        iVar3 = FUN_00021bb2();\n        ppuVar9 = (uint **)((int *)ppuVar7 + -2);\n        ppuVar8 = (uint **)((int *)ppuVar7 + -2);\n        if (iVar3 != 0) goto LAB_00021f50;\n        uVar5 = ((int *)ppuVar7)[5];\n      }\n      *(uint *)((int)ppuVar8 + 0x1c) = uVar5 >> 1;\n      ppuVar7 = ppuVar8;\n    }" { (expression_statement "puVar10 = (uint *)((int)puVar10 * 2);" (assignment_expression "puVar10 = (uint *)((int)puVar10 * 2)" identifier = (cast_expression "(uint *)((int)puVar10 * 2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 * 2)" ( (binary_expression "(int)puVar10 * 2" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) ;) (expression_statement "((int *)ppuVar7)[-4] = (int)puVar10;" (assignment_expression "((int *)ppuVar7)[-4] = (int)puVar10" (subscript_expression "((int *)ppuVar7)[-4]" (parenthesized_expression "((int *)ppuVar7)" ( (cast_expression "(int *)ppuVar7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )) [ number_literal ]) = (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "((int *)ppuVar7)[-5] = 0x21ea3;" (assignment_expression "((int *)ppuVar7)[-5] = 0x21ea3" (subscript_expression "((int *)ppuVar7)[-5]" (parenthesized_expression "((int *)ppuVar7)" ( (cast_expression "(int *)ppuVar7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )) [ number_literal ]) = number_literal) ;) (expression_statement "iVar3 = FUN_00021bb2();" (assignment_expression "iVar3 = FUN_00021bb2()" identifier = (call_expression "FUN_00021bb2()" identifier (argument_list "()" ( )))) ;) (expression_statement "ppuVar9 = (uint **)((int *)ppuVar7 + -1);" (assignment_expression "ppuVar9 = (uint **)((int *)ppuVar7 + -1)" identifier = (cast_expression "(uint **)((int *)ppuVar7 + -1)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int *)ppuVar7 + -1)" ( (binary_expression "(int *)ppuVar7 + -1" (cast_expression "(int *)ppuVar7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) + number_literal) )))) ;) (expression_statement "ppuVar8 = (uint **)((int *)ppuVar7 + -1);" (assignment_expression "ppuVar8 = (uint **)((int *)ppuVar7 + -1)" identifier = (cast_expression "(uint **)((int *)ppuVar7 + -1)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int *)ppuVar7 + -1)" ( (binary_expression "(int *)ppuVar7 + -1" (cast_expression "(int *)ppuVar7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) + number_literal) )))) ;) (if_statement "if (iVar3 != 0) goto LAB_00021f50;" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00021f50;" goto statement_identifier ;)) (expression_statement "uVar5 = ((int *)ppuVar7)[6];" (assignment_expression "uVar5 = ((int *)ppuVar7)[6]" identifier = (subscript_expression "((int *)ppuVar7)[6]" (parenthesized_expression "((int *)ppuVar7)" ( (cast_expression "(int *)ppuVar7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )) [ number_literal ])) ;) (if_statement "if ((uVar5 & 1) != 0) {\n        *ppuVar7 = (uint *)((int)*ppuVar7 + (int)puVar10);\n        ((int *)ppuVar7)[-5] = (int)*ppuVar7;\n        ((int *)ppuVar7)[-6] = 0x21ecb;\n        iVar3 = FUN_00021bb2();\n        ppuVar9 = (uint **)((int *)ppuVar7 + -2);\n        ppuVar8 = (uint **)((int *)ppuVar7 + -2);\n        if (iVar3 != 0) goto LAB_00021f50;\n        uVar5 = ((int *)ppuVar7)[5];\n      }" if (parenthesized_expression "((uVar5 & 1) != 0)" ( (binary_expression "(uVar5 & 1) != 0" (parenthesized_expression "(uVar5 & 1)" ( (binary_expression "uVar5 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        *ppuVar7 = (uint *)((int)*ppuVar7 + (int)puVar10);\n        ((int *)ppuVar7)[-5] = (int)*ppuVar7;\n        ((int *)ppuVar7)[-6] = 0x21ecb;\n        iVar3 = FUN_00021bb2();\n        ppuVar9 = (uint **)((int *)ppuVar7 + -2);\n        ppuVar8 = (uint **)((int *)ppuVar7 + -2);\n        if (iVar3 != 0) goto LAB_00021f50;\n        uVar5 = ((int *)ppuVar7)[5];\n      }" { (expression_statement "*ppuVar7 = (uint *)((int)*ppuVar7 + (int)puVar10);" (assignment_expression "*ppuVar7 = (uint *)((int)*ppuVar7 + (int)puVar10)" (pointer_expression "*ppuVar7" * identifier) = (cast_expression "(uint *)((int)*ppuVar7 + (int)puVar10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)*ppuVar7 + (int)puVar10)" ( (binary_expression "(int)*ppuVar7 + (int)puVar10" (cast_expression "(int)*ppuVar7" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*ppuVar7" * identifier)) + (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "((int *)ppuVar7)[-5] = (int)*ppuVar7;" (assignment_expression "((int *)ppuVar7)[-5] = (int)*ppuVar7" (subscript_expression "((int *)ppuVar7)[-5]" (parenthesized_expression "((int *)ppuVar7)" ( (cast_expression "(int *)ppuVar7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )) [ number_literal ]) = (cast_expression "(int)*ppuVar7" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*ppuVar7" * identifier))) ;) (expression_statement "((int *)ppuVar7)[-6] = 0x21ecb;" (assignment_expression "((int *)ppuVar7)[-6] = 0x21ecb" (subscript_expression "((int *)ppuVar7)[-6]" (parenthesized_expression "((int *)ppuVar7)" ( (cast_expression "(int *)ppuVar7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )) [ number_literal ]) = number_literal) ;) (expression_statement "iVar3 = FUN_00021bb2();" (assignment_expression "iVar3 = FUN_00021bb2()" identifier = (call_expression "FUN_00021bb2()" identifier (argument_list "()" ( )))) ;) (expression_statement "ppuVar9 = (uint **)((int *)ppuVar7 + -2);" (assignment_expression "ppuVar9 = (uint **)((int *)ppuVar7 + -2)" identifier = (cast_expression "(uint **)((int *)ppuVar7 + -2)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int *)ppuVar7 + -2)" ( (binary_expression "(int *)ppuVar7 + -2" (cast_expression "(int *)ppuVar7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) + number_literal) )))) ;) (expression_statement "ppuVar8 = (uint **)((int *)ppuVar7 + -2);" (assignment_expression "ppuVar8 = (uint **)((int *)ppuVar7 + -2)" identifier = (cast_expression "(uint **)((int *)ppuVar7 + -2)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int *)ppuVar7 + -2)" ( (binary_expression "(int *)ppuVar7 + -2" (cast_expression "(int *)ppuVar7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) + number_literal) )))) ;) (if_statement "if (iVar3 != 0) goto LAB_00021f50;" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00021f50;" goto statement_identifier ;)) (expression_statement "uVar5 = ((int *)ppuVar7)[5];" (assignment_expression "uVar5 = ((int *)ppuVar7)[5]" identifier = (subscript_expression "((int *)ppuVar7)[5]" (parenthesized_expression "((int *)ppuVar7)" ( (cast_expression "(int *)ppuVar7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )) [ number_literal ])) ;) })) (expression_statement "*(uint *)((int)ppuVar8 + 0x1c) = uVar5 >> 1;" (assignment_expression "*(uint *)((int)ppuVar8 + 0x1c) = uVar5 >> 1" (pointer_expression "*(uint *)((int)ppuVar8 + 0x1c)" * (cast_expression "(uint *)((int)ppuVar8 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar8 + 0x1c)" ( (binary_expression "(int)ppuVar8 + 0x1c" (cast_expression "(int)ppuVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "uVar5 >> 1" identifier >> number_literal)) ;) (expression_statement "ppuVar7 = ppuVar8;" (assignment_expression "ppuVar7 = ppuVar8" identifier = identifier) ;) }) while (parenthesized_expression "(uVar5 >> 1 != 0)" ( (binary_expression "uVar5 >> 1 != 0" (binary_expression "uVar5 >> 1" identifier >> number_literal) != number_literal) )) ;) })) (expression_statement "puVar2 = (undefined1 *)ppuVar8;" (assignment_expression "puVar2 = (undefined1 *)ppuVar8" identifier = (cast_expression "(undefined1 *)ppuVar8" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (*(char *)((int)ppuVar8 + 0xb) == '\0') {\nLAB_00021f2b:\n    ppuVar9 = (uint **)puVar2;\n    if (param_4 < (uint *)param_3[1]) {\n      *(undefined4 *)((int)ppuVar9 + -4) = 0x21f3b;\n      FUN_0001d62a();\n    }\n    if (param_3[2] == 0) {\nLAB_00021f42:\n      param_3[2] = 0;\n      *(undefined1 *)(param_3 + 4) = 0;\n      param_3[1] = param_4;\n      iVar3 = iVar4;\n    }\n    else {\n      pcVar11 = (char *)*param_3;\n      iVar3 = iVar4;\n      if (*pcVar11 == '\0') {\n        pcVar6 = pcVar11 + param_3[2];\n        do {\n          pcVar11 = pcVar11 + 1;\n          if (pcVar6 == pcVar11) goto LAB_00021f42;\n        } while (*pcVar11 == '\0');\n      }\n    }\n  }\n  else {\n    *(undefined4 *)((int)ppuVar8 + 0x40) = 2;\n    *(undefined1 **)((int)ppuVar8 + 0x34) = (undefined1 *)((int)ppuVar8 + 0x4a);\n    *(undefined1 *)((int)ppuVar8 + 0x44) = 0;\n    *(undefined4 *)((int)ppuVar8 + 0x38) = 0;\n    *(undefined4 *)((int)ppuVar8 + 0x3c) = 1;\n    *(undefined1 *)((int)ppuVar8 + 0x4a) = 1;\n    *(uint **)((int)ppuVar8 + -0x10) = param_4;\n    *(undefined4 *)((int)ppuVar8 + -0x14) = 0x21f20;\n    iVar3 = FUN_00021c86();\n    ppuVar9 = (uint **)((int)ppuVar8 + -4);\n    puVar2 = (undefined1 *)((int)ppuVar8 + -4);\n    if (iVar3 == 0) goto LAB_00021f2b;\n  }" if (parenthesized_expression "(*(char *)((int)ppuVar8 + 0xb) == '\0')" ( (binary_expression "*(char *)((int)ppuVar8 + 0xb) == '\0'" (pointer_expression "*(char *)((int)ppuVar8 + 0xb)" * (cast_expression "(char *)((int)ppuVar8 + 0xb)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar8 + 0xb)" ( (binary_expression "(int)ppuVar8 + 0xb" (cast_expression "(int)ppuVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_00021f2b:\n    ppuVar9 = (uint **)puVar2;\n    if (param_4 < (uint *)param_3[1]) {\n      *(undefined4 *)((int)ppuVar9 + -4) = 0x21f3b;\n      FUN_0001d62a();\n    }\n    if (param_3[2] == 0) {\nLAB_00021f42:\n      param_3[2] = 0;\n      *(undefined1 *)(param_3 + 4) = 0;\n      param_3[1] = param_4;\n      iVar3 = iVar4;\n    }\n    else {\n      pcVar11 = (char *)*param_3;\n      iVar3 = iVar4;\n      if (*pcVar11 == '\0') {\n        pcVar6 = pcVar11 + param_3[2];\n        do {\n          pcVar11 = pcVar11 + 1;\n          if (pcVar6 == pcVar11) goto LAB_00021f42;\n        } while (*pcVar11 == '\0');\n      }\n    }\n  }" { (labeled_statement "LAB_00021f2b:\n    ppuVar9 = (uint **)puVar2;" statement_identifier : (expression_statement "ppuVar9 = (uint **)puVar2;" (assignment_expression "ppuVar9 = (uint **)puVar2" identifier = (cast_expression "(uint **)puVar2" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ;)) (if_statement "if (param_4 < (uint *)param_3[1]) {\n      *(undefined4 *)((int)ppuVar9 + -4) = 0x21f3b;\n      FUN_0001d62a();\n    }" if (parenthesized_expression "(param_4 < (uint *)param_3[1])" ( (binary_expression "param_4 < (uint *)param_3[1]" identifier < (cast_expression "(uint *)param_3[1]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[1]" identifier [ number_literal ]))) )) (compound_statement "{\n      *(undefined4 *)((int)ppuVar9 + -4) = 0x21f3b;\n      FUN_0001d62a();\n    }" { (expression_statement "*(undefined4 *)((int)ppuVar9 + -4) = 0x21f3b;" (assignment_expression "*(undefined4 *)((int)ppuVar9 + -4) = 0x21f3b" (pointer_expression "*(undefined4 *)((int)ppuVar9 + -4)" * (cast_expression "(undefined4 *)((int)ppuVar9 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar9 + -4)" ( (binary_expression "(int)ppuVar9 + -4" (cast_expression "(int)ppuVar9" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0001d62a();" (call_expression "FUN_0001d62a()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (param_3[2] == 0) {\nLAB_00021f42:\n      param_3[2] = 0;\n      *(undefined1 *)(param_3 + 4) = 0;\n      param_3[1] = param_4;\n      iVar3 = iVar4;\n    }\n    else {\n      pcVar11 = (char *)*param_3;\n      iVar3 = iVar4;\n      if (*pcVar11 == '\0') {\n        pcVar6 = pcVar11 + param_3[2];\n        do {\n          pcVar11 = pcVar11 + 1;\n          if (pcVar6 == pcVar11) goto LAB_00021f42;\n        } while (*pcVar11 == '\0');\n      }\n    }" if (parenthesized_expression "(param_3[2] == 0)" ( (binary_expression "param_3[2] == 0" (subscript_expression "param_3[2]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\nLAB_00021f42:\n      param_3[2] = 0;\n      *(undefined1 *)(param_3 + 4) = 0;\n      param_3[1] = param_4;\n      iVar3 = iVar4;\n    }" { (labeled_statement "LAB_00021f42:\n      param_3[2] = 0;" statement_identifier : (expression_statement "param_3[2] = 0;" (assignment_expression "param_3[2] = 0" (subscript_expression "param_3[2]" identifier [ number_literal ]) = number_literal) ;)) (expression_statement "*(undefined1 *)(param_3 + 4) = 0;" (assignment_expression "*(undefined1 *)(param_3 + 4) = 0" (pointer_expression "*(undefined1 *)(param_3 + 4)" * (cast_expression "(undefined1 *)(param_3 + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "param_3[1] = param_4;" (assignment_expression "param_3[1] = param_4" (subscript_expression "param_3[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar3 = iVar4;" (assignment_expression "iVar3 = iVar4" identifier = identifier) ;) }) (else_clause "else {\n      pcVar11 = (char *)*param_3;\n      iVar3 = iVar4;\n      if (*pcVar11 == '\0') {\n        pcVar6 = pcVar11 + param_3[2];\n        do {\n          pcVar11 = pcVar11 + 1;\n          if (pcVar6 == pcVar11) goto LAB_00021f42;\n        } while (*pcVar11 == '\0');\n      }\n    }" else (compound_statement "{\n      pcVar11 = (char *)*param_3;\n      iVar3 = iVar4;\n      if (*pcVar11 == '\0') {\n        pcVar6 = pcVar11 + param_3[2];\n        do {\n          pcVar11 = pcVar11 + 1;\n          if (pcVar6 == pcVar11) goto LAB_00021f42;\n        } while (*pcVar11 == '\0');\n      }\n    }" { (expression_statement "pcVar11 = (char *)*param_3;" (assignment_expression "pcVar11 = (char *)*param_3" identifier = (cast_expression "(char *)*param_3" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_3" * identifier))) ;) (expression_statement "iVar3 = iVar4;" (assignment_expression "iVar3 = iVar4" identifier = identifier) ;) (if_statement "if (*pcVar11 == '\0') {\n        pcVar6 = pcVar11 + param_3[2];\n        do {\n          pcVar11 = pcVar11 + 1;\n          if (pcVar6 == pcVar11) goto LAB_00021f42;\n        } while (*pcVar11 == '\0');\n      }" if (parenthesized_expression "(*pcVar11 == '\0')" ( (binary_expression "*pcVar11 == '\0'" (pointer_expression "*pcVar11" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        pcVar6 = pcVar11 + param_3[2];\n        do {\n          pcVar11 = pcVar11 + 1;\n          if (pcVar6 == pcVar11) goto LAB_00021f42;\n        } while (*pcVar11 == '\0');\n      }" { (expression_statement "pcVar6 = pcVar11 + param_3[2];" (assignment_expression "pcVar6 = pcVar11 + param_3[2]" identifier = (binary_expression "pcVar11 + param_3[2]" identifier + (subscript_expression "param_3[2]" identifier [ number_literal ]))) ;) (do_statement "do {\n          pcVar11 = pcVar11 + 1;\n          if (pcVar6 == pcVar11) goto LAB_00021f42;\n        } while (*pcVar11 == '\0');" do (compound_statement "{\n          pcVar11 = pcVar11 + 1;\n          if (pcVar6 == pcVar11) goto LAB_00021f42;\n        }" { (expression_statement "pcVar11 = pcVar11 + 1;" (assignment_expression "pcVar11 = pcVar11 + 1" identifier = (binary_expression "pcVar11 + 1" identifier + number_literal)) ;) (if_statement "if (pcVar6 == pcVar11) goto LAB_00021f42;" if (parenthesized_expression "(pcVar6 == pcVar11)" ( (binary_expression "pcVar6 == pcVar11" identifier == identifier) )) (goto_statement "goto LAB_00021f42;" goto statement_identifier ;)) }) while (parenthesized_expression "(*pcVar11 == '\0')" ( (binary_expression "*pcVar11 == '\0'" (pointer_expression "*pcVar11" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) ;) })) }))) }) (else_clause "else {\n    *(undefined4 *)((int)ppuVar8 + 0x40) = 2;\n    *(undefined1 **)((int)ppuVar8 + 0x34) = (undefined1 *)((int)ppuVar8 + 0x4a);\n    *(undefined1 *)((int)ppuVar8 + 0x44) = 0;\n    *(undefined4 *)((int)ppuVar8 + 0x38) = 0;\n    *(undefined4 *)((int)ppuVar8 + 0x3c) = 1;\n    *(undefined1 *)((int)ppuVar8 + 0x4a) = 1;\n    *(uint **)((int)ppuVar8 + -0x10) = param_4;\n    *(undefined4 *)((int)ppuVar8 + -0x14) = 0x21f20;\n    iVar3 = FUN_00021c86();\n    ppuVar9 = (uint **)((int)ppuVar8 + -4);\n    puVar2 = (undefined1 *)((int)ppuVar8 + -4);\n    if (iVar3 == 0) goto LAB_00021f2b;\n  }" else (compound_statement "{\n    *(undefined4 *)((int)ppuVar8 + 0x40) = 2;\n    *(undefined1 **)((int)ppuVar8 + 0x34) = (undefined1 *)((int)ppuVar8 + 0x4a);\n    *(undefined1 *)((int)ppuVar8 + 0x44) = 0;\n    *(undefined4 *)((int)ppuVar8 + 0x38) = 0;\n    *(undefined4 *)((int)ppuVar8 + 0x3c) = 1;\n    *(undefined1 *)((int)ppuVar8 + 0x4a) = 1;\n    *(uint **)((int)ppuVar8 + -0x10) = param_4;\n    *(undefined4 *)((int)ppuVar8 + -0x14) = 0x21f20;\n    iVar3 = FUN_00021c86();\n    ppuVar9 = (uint **)((int)ppuVar8 + -4);\n    puVar2 = (undefined1 *)((int)ppuVar8 + -4);\n    if (iVar3 == 0) goto LAB_00021f2b;\n  }" { (expression_statement "*(undefined4 *)((int)ppuVar8 + 0x40) = 2;" (assignment_expression "*(undefined4 *)((int)ppuVar8 + 0x40) = 2" (pointer_expression "*(undefined4 *)((int)ppuVar8 + 0x40)" * (cast_expression "(undefined4 *)((int)ppuVar8 + 0x40)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar8 + 0x40)" ( (binary_expression "(int)ppuVar8 + 0x40" (cast_expression "(int)ppuVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 **)((int)ppuVar8 + 0x34) = (undefined1 *)((int)ppuVar8 + 0x4a);" (assignment_expression "*(undefined1 **)((int)ppuVar8 + 0x34) = (undefined1 *)((int)ppuVar8 + 0x4a)" (pointer_expression "*(undefined1 **)((int)ppuVar8 + 0x34)" * (cast_expression "(undefined1 **)((int)ppuVar8 + 0x34)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppuVar8 + 0x34)" ( (binary_expression "(int)ppuVar8 + 0x34" (cast_expression "(int)ppuVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (cast_expression "(undefined1 *)((int)ppuVar8 + 0x4a)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar8 + 0x4a)" ( (binary_expression "(int)ppuVar8 + 0x4a" (cast_expression "(int)ppuVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*(undefined1 *)((int)ppuVar8 + 0x44) = 0;" (assignment_expression "*(undefined1 *)((int)ppuVar8 + 0x44) = 0" (pointer_expression "*(undefined1 *)((int)ppuVar8 + 0x44)" * (cast_expression "(undefined1 *)((int)ppuVar8 + 0x44)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar8 + 0x44)" ( (binary_expression "(int)ppuVar8 + 0x44" (cast_expression "(int)ppuVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)ppuVar8 + 0x38) = 0;" (assignment_expression "*(undefined4 *)((int)ppuVar8 + 0x38) = 0" (pointer_expression "*(undefined4 *)((int)ppuVar8 + 0x38)" * (cast_expression "(undefined4 *)((int)ppuVar8 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar8 + 0x38)" ( (binary_expression "(int)ppuVar8 + 0x38" (cast_expression "(int)ppuVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)ppuVar8 + 0x3c) = 1;" (assignment_expression "*(undefined4 *)((int)ppuVar8 + 0x3c) = 1" (pointer_expression "*(undefined4 *)((int)ppuVar8 + 0x3c)" * (cast_expression "(undefined4 *)((int)ppuVar8 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar8 + 0x3c)" ( (binary_expression "(int)ppuVar8 + 0x3c" (cast_expression "(int)ppuVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)((int)ppuVar8 + 0x4a) = 1;" (assignment_expression "*(undefined1 *)((int)ppuVar8 + 0x4a) = 1" (pointer_expression "*(undefined1 *)((int)ppuVar8 + 0x4a)" * (cast_expression "(undefined1 *)((int)ppuVar8 + 0x4a)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar8 + 0x4a)" ( (binary_expression "(int)ppuVar8 + 0x4a" (cast_expression "(int)ppuVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(uint **)((int)ppuVar8 + -0x10) = param_4;" (assignment_expression "*(uint **)((int)ppuVar8 + -0x10) = param_4" (pointer_expression "*(uint **)((int)ppuVar8 + -0x10)" * (cast_expression "(uint **)((int)ppuVar8 + -0x10)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppuVar8 + -0x10)" ( (binary_expression "(int)ppuVar8 + -0x10" (cast_expression "(int)ppuVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)ppuVar8 + -0x14) = 0x21f20;" (assignment_expression "*(undefined4 *)((int)ppuVar8 + -0x14) = 0x21f20" (pointer_expression "*(undefined4 *)((int)ppuVar8 + -0x14)" * (cast_expression "(undefined4 *)((int)ppuVar8 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar8 + -0x14)" ( (binary_expression "(int)ppuVar8 + -0x14" (cast_expression "(int)ppuVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "iVar3 = FUN_00021c86();" (assignment_expression "iVar3 = FUN_00021c86()" identifier = (call_expression "FUN_00021c86()" identifier (argument_list "()" ( )))) ;) (expression_statement "ppuVar9 = (uint **)((int)ppuVar8 + -4);" (assignment_expression "ppuVar9 = (uint **)((int)ppuVar8 + -4)" identifier = (cast_expression "(uint **)((int)ppuVar8 + -4)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppuVar8 + -4)" ( (binary_expression "(int)ppuVar8 + -4" (cast_expression "(int)ppuVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "puVar2 = (undefined1 *)((int)ppuVar8 + -4);" (assignment_expression "puVar2 = (undefined1 *)((int)ppuVar8 + -4)" identifier = (cast_expression "(undefined1 *)((int)ppuVar8 + -4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar8 + -4)" ( (binary_expression "(int)ppuVar8 + -4" (cast_expression "(int)ppuVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (iVar3 == 0) goto LAB_00021f2b;" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00021f2b;" goto statement_identifier ;)) }))) (labeled_statement "LAB_00021f50:\n  *(undefined4 *)((int)ppuVar9 + -0x10) = *(undefined4 *)((int)ppuVar9 + 0x20);" statement_identifier : (expression_statement "*(undefined4 *)((int)ppuVar9 + -0x10) = *(undefined4 *)((int)ppuVar9 + 0x20);" (assignment_expression "*(undefined4 *)((int)ppuVar9 + -0x10) = *(undefined4 *)((int)ppuVar9 + 0x20)" (pointer_expression "*(undefined4 *)((int)ppuVar9 + -0x10)" * (cast_expression "(undefined4 *)((int)ppuVar9 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar9 + -0x10)" ( (binary_expression "(int)ppuVar9 + -0x10" (cast_expression "(int)ppuVar9" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*(undefined4 *)((int)ppuVar9 + 0x20)" * (cast_expression "(undefined4 *)((int)ppuVar9 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar9 + 0x20)" ( (binary_expression "(int)ppuVar9 + 0x20" (cast_expression "(int)ppuVar9" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;)) (expression_statement "*(undefined4 *)((int)ppuVar9 + -0x14) = 0x21f60;" (assignment_expression "*(undefined4 *)((int)ppuVar9 + -0x14) = 0x21f60" (pointer_expression "*(undefined4 *)((int)ppuVar9 + -0x14)" * (cast_expression "(undefined4 *)((int)ppuVar9 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar9 + -0x14)" ( (binary_expression "(int)ppuVar9 + -0x14" (cast_expression "(int)ppuVar9" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "free(*(void **)((int)ppuVar9 + -0x10));" (call_expression "free(*(void **)((int)ppuVar9 + -0x10))" identifier (argument_list "(*(void **)((int)ppuVar9 + -0x10))" ( (pointer_expression "*(void **)((int)ppuVar9 + -0x10)" * (cast_expression "(void **)((int)ppuVar9 + -0x10)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppuVar9 + -0x10)" ( (binary_expression "(int)ppuVar9 + -0x10" (cast_expression "(int)ppuVar9" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ;) (labeled_statement "LAB_00021f63:\n  if (ppuVar9[0x13] != *(uint **)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    ppuVar9[0xffffffff] = (uint *)0x21f81;\n    FUN_00017e10();\n  }" statement_identifier : (if_statement "if (ppuVar9[0x13] != *(uint **)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    ppuVar9[0xffffffff] = (uint *)0x21f81;\n    FUN_00017e10();\n  }" if (parenthesized_expression "(ppuVar9[0x13] != *(uint **)(in_GS_OFFSET + 0x14))" ( (binary_expression "ppuVar9[0x13] != *(uint **)(in_GS_OFFSET + 0x14)" (subscript_expression "ppuVar9[0x13]" identifier [ number_literal ]) != (pointer_expression "*(uint **)(in_GS_OFFSET + 0x14)" * (cast_expression "(uint **)(in_GS_OFFSET + 0x14)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    ppuVar9[0xffffffff] = (uint *)0x21f81;\n    FUN_00017e10();\n  }" { comment (expression_statement "ppuVar9[0xffffffff] = (uint *)0x21f81;" (assignment_expression "ppuVar9[0xffffffff] = (uint *)0x21f81" (subscript_expression "ppuVar9[0xffffffff]" identifier [ number_literal ]) = (cast_expression "(uint *)0x21f81" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "FUN_00017e10();" (call_expression "FUN_00017e10()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return iVar3;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */\n\nBcStatus zbc_num_p(BcNum *a,BcNum *b,BcNum *c,size_t scale)\n\n{\n  ulong pow;\n  BcNum copy;\n  BcNum one;\n  BcDig num [2];\n  \n}\n\n" comment (function_definition "BcStatus zbc_num_p(BcNum *a,BcNum *b,BcNum *c,size_t scale)\n\n{\n  ulong pow;\n  BcNum copy;\n  BcNum one;\n  BcDig num [2];\n  \n}" type_identifier (function_declarator "zbc_num_p(BcNum *a,BcNum *b,BcNum *c,size_t scale)" identifier (parameter_list "(BcNum *a,BcNum *b,BcNum *c,size_t scale)" ( (parameter_declaration "BcNum *a" type_identifier (pointer_declarator "*a" * identifier)) , (parameter_declaration "BcNum *b" type_identifier (pointer_declarator "*b" * identifier)) , (parameter_declaration "BcNum *c" type_identifier (pointer_declarator "*c" * identifier)) , (parameter_declaration "size_t scale" primitive_type identifier) ))) (compound_statement "{\n  ulong pow;\n  BcNum copy;\n  BcNum one;\n  BcDig num [2];\n  \n}" { (declaration "ulong pow;" type_identifier identifier ;) (declaration "BcNum copy;" type_identifier identifier ;) (declaration "BcNum one;" type_identifier identifier ;) (declaration "BcDig num [2];" type_identifier (array_declarator "num [2]" identifier [ number_literal ]) ;) })))
(translation_unit "int __regparm3 FUN_00021cde(int param_1,undefined4 *param_2,undefined4 *param_3,uint *param_4)\n\n{\n  uint *puVar1;\n  undefined1 *puVar2;\n  int iVar3;\n  int iVar4;\n  uint uVar5;\n  char *pcVar6;\n  uint **ppuVar7;\n  uint **ppuVar8;\n  uint **ppuVar9;\n  uint *puVar10;\n  char *pcVar11;\n  int in_GS_OFFSET;\n  char cStackY_81;\n  uint *puStackY_80;\n  uint *local_70 [3];\n  char cStack_61;\n  undefined **local_60;\n  uint *local_54 [2];\n  uint local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  uint local_40;\n  undefined1 local_3c;\n  undefined1 *local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined1 local_28;\n  undefined1 local_22 [2];\n  undefined4 local_20;\n  \n  ppuVar9 = local_70 + 1;\n  local_70[0] = (uint *)0x21cea;\n  local_60 = &__DT_PLTGOT;\n  local_20 = *(undefined4 *)(in_GS_OFFSET + 0x14);\n  iVar3 = param_2[1];\n  if (iVar3 != 0) {\n    pcVar11 = (char *)*param_2;\n    if (*pcVar11 == '\0') {\n      pcVar6 = pcVar11 + iVar3;\n      do {\n        pcVar11 = pcVar11 + 1;\n        if (pcVar6 == pcVar11) goto LAB_00021d4d;\n      } while (*pcVar11 == '\0');\n    }\n    iVar3 = FUN_0001e002(&DAT_000ccedf,"not an integer");\n    ppuVar9 = local_70 + 1;\n    goto LAB_00021f63;\n  }\nLAB_00021d4d:\n  if (param_2[2] == 0) {\n    *(undefined1 *)(param_3 + 4) = 0;\n    param_3[1] = 0;\n    param_3[2] = 1;\n    *(undefined1 *)*param_3 = 1;\n    ppuVar9 = local_70 + 1;\n    iVar3 = 0;\n    goto LAB_00021f63;\n  }\n  if (*(int *)(param_1 + 8) == 0) {\n    param_3[2] = 0;\n    *(undefined1 *)(param_3 + 4) = 0;\n    param_3[1] = param_4;\n    ppuVar9 = local_70 + 1;\n    iVar3 = 0;\n    goto LAB_00021f63;\n  }\n  cStack_61 = *(char *)(param_2 + 4);\n  if (((param_2[2] == 1) && (iVar3 == 0)) && (*(char *)*param_2 == '\x01')) {\n    if (cStack_61 == '\0') {\n      local_70[0] = (uint *)0x21db5;\n      FUN_0001e38b();\n      ppuVar9 = local_70 + 1;\n      iVar3 = 0;\n    }\n    else {\n      local_2c = 2;\n      local_38 = local_22;\n      local_28 = 0;\n      local_34 = 0;\n      local_30 = 1;\n      local_22[0] = 1;\n      iVar3 = FUN_00021c86(param_4);\n      ppuVar9 = local_70;\n    }\n    goto LAB_00021f63;\n  }\n  local_70[0] = (uint *)0x21dc5;\n  iVar4 = FUN_0001e0f3();\n  iVar3 = iVar4;\n  if (iVar4 != 0) goto LAB_00021f63;\n  local_70[1] = *(uint **)(param_1 + 8);\n  if (local_70[1] < 0x10) {\n    local_70[1] = (uint *)0x10;\n  }\n  local_70[0] = (uint *)0x21de5;\n  local_4c = FUN_00019b1c();\n  local_40 = (uint)local_70[1];\n  local_48 = 0;\n  local_44 = 0;\n  local_3c = 0;\n  local_70[1] = (uint *)(local_54 + 2);\n  local_70[0] = (uint *)0x21e13;\n  FUN_0001e38b();\n  puVar10 = *(uint **)(param_1 + 4);\n  ppuVar8 = local_70 + 1;\n  if (cStack_61 == '\0') {\n    if (puVar10 < param_4) {\n      ppuVar8 = local_70 + 1;\n      if ((uint *)((int)puVar10 * (int)local_54[1]) < param_4) goto LAB_00021e32;\n    }\n    else {\n      ppuVar8 = local_70 + 1;\n      param_4 = puVar10;\n      if ((uint *)((int)puVar10 * (int)local_54[1]) < puVar10) {\nLAB_00021e32:\n        param_4 = (uint *)((int)puVar10 * (int)local_54[1]);\n        ppuVar8 = local_70 + 1;\n      }\n    }\n  }\n  while (((uint)local_54[1] & 1) == 0) {\n    puVar10 = (uint *)((int)puVar10 * 2);\n    ppuVar8[0xfffffffc] = puVar10;\n    ppuVar8[0xfffffffb] = (uint *)0x21e4b;\n    iVar3 = FUN_00021bb2();\n    ppuVar9 = ppuVar8 + 0xffffffff;\n    if (iVar3 != 0) goto LAB_00021f50;\n    local_54[1] = (uint *)((uint)ppuVar8[6] >> 1);\n    ppuVar8[6] = local_54[1];\n    ppuVar8 = ppuVar8 + 0xffffffff;\n  }\n  ppuVar8[0xffffffff] = (uint *)0x21e80;\n  FUN_0001e38b();\n  puVar1 = ppuVar8[7];\n  ppuVar8[7] = (uint *)((uint)puVar1 >> 1);\n  if ((uint *)((uint)puVar1 >> 1) != (uint *)0x0) {\n    ppuVar8[1] = puVar10;\n    ppuVar7 = ppuVar8;\n    do {\n      puVar10 = (uint *)((int)puVar10 * 2);\n      ((int *)ppuVar7)[-4] = (int)puVar10;\n      ((int *)ppuVar7)[-5] = 0x21ea3;\n      iVar3 = FUN_00021bb2();\n      ppuVar9 = (uint **)((int *)ppuVar7 + -1);\n      ppuVar8 = (uint **)((int *)ppuVar7 + -1);\n      if (iVar3 != 0) goto LAB_00021f50;\n      uVar5 = ((int *)ppuVar7)[6];\n      if ((uVar5 & 1) != 0) {\n        *ppuVar7 = (uint *)((int)*ppuVar7 + (int)puVar10);\n        ((int *)ppuVar7)[-5] = (int)*ppuVar7;\n        ((int *)ppuVar7)[-6] = 0x21ecb;\n        iVar3 = FUN_00021bb2();\n        ppuVar9 = (uint **)((int *)ppuVar7 + -2);\n        ppuVar8 = (uint **)((int *)ppuVar7 + -2);\n        if (iVar3 != 0) goto LAB_00021f50;\n        uVar5 = ((int *)ppuVar7)[5];\n      }\n      *(uint *)((int)ppuVar8 + 0x1c) = uVar5 >> 1;\n      ppuVar7 = ppuVar8;\n    } while (uVar5 >> 1 != 0);\n  }\n  puVar2 = (undefined1 *)ppuVar8;\n  if (*(char *)((int)ppuVar8 + 0xb) == '\0') {\nLAB_00021f2b:\n    ppuVar9 = (uint **)puVar2;\n    if (param_4 < (uint *)param_3[1]) {\n      *(undefined4 *)((int)ppuVar9 + -4) = 0x21f3b;\n      FUN_0001d62a();\n    }\n    if (param_3[2] == 0) {\nLAB_00021f42:\n      param_3[2] = 0;\n      *(undefined1 *)(param_3 + 4) = 0;\n      param_3[1] = param_4;\n      iVar3 = iVar4;\n    }\n    else {\n      pcVar11 = (char *)*param_3;\n      iVar3 = iVar4;\n      if (*pcVar11 == '\0') {\n        pcVar6 = pcVar11 + param_3[2];\n        do {\n          pcVar11 = pcVar11 + 1;\n          if (pcVar6 == pcVar11) goto LAB_00021f42;\n        } while (*pcVar11 == '\0');\n      }\n    }\n  }\n  else {\n    *(undefined4 *)((int)ppuVar8 + 0x40) = 2;\n    *(undefined1 **)((int)ppuVar8 + 0x34) = (undefined1 *)((int)ppuVar8 + 0x4a);\n    *(undefined1 *)((int)ppuVar8 + 0x44) = 0;\n    *(undefined4 *)((int)ppuVar8 + 0x38) = 0;\n    *(undefined4 *)((int)ppuVar8 + 0x3c) = 1;\n    *(undefined1 *)((int)ppuVar8 + 0x4a) = 1;\n    *(uint **)((int)ppuVar8 + -0x10) = param_4;\n    *(undefined4 *)((int)ppuVar8 + -0x14) = 0x21f20;\n    iVar3 = FUN_00021c86();\n    ppuVar9 = (uint **)((int)ppuVar8 + -4);\n    puVar2 = (undefined1 *)((int)ppuVar8 + -4);\n    if (iVar3 == 0) goto LAB_00021f2b;\n  }\nLAB_00021f50:\n  *(undefined4 *)((int)ppuVar9 + -0x10) = *(undefined4 *)((int)ppuVar9 + 0x20);\n  *(undefined4 *)((int)ppuVar9 + -0x14) = 0x21f60;\n  free(*(void **)((int)ppuVar9 + -0x10));\nLAB_00021f63:\n  if (ppuVar9[0x13] != *(uint **)(in_GS_OFFSET + 0x14)) {\n                    \n    ppuVar9[0xffffffff] = (uint *)0x21f81;\n    FUN_00017e10();\n  }\n  return iVar3;\n}\n\n" (function_definition "int __regparm3 FUN_00021cde(int param_1,undefined4 *param_2,undefined4 *param_3,uint *param_4)\n\n{\n  uint *puVar1;\n  undefined1 *puVar2;\n  int iVar3;\n  int iVar4;\n  uint uVar5;\n  char *pcVar6;\n  uint **ppuVar7;\n  uint **ppuVar8;\n  uint **ppuVar9;\n  uint *puVar10;\n  char *pcVar11;\n  int in_GS_OFFSET;\n  char cStackY_81;\n  uint *puStackY_80;\n  uint *local_70 [3];\n  char cStack_61;\n  undefined **local_60;\n  uint *local_54 [2];\n  uint local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  uint local_40;\n  undefined1 local_3c;\n  undefined1 *local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined1 local_28;\n  undefined1 local_22 [2];\n  undefined4 local_20;\n  \n  ppuVar9 = local_70 + 1;\n  local_70[0] = (uint *)0x21cea;\n  local_60 = &__DT_PLTGOT;\n  local_20 = *(undefined4 *)(in_GS_OFFSET + 0x14);\n  iVar3 = param_2[1];\n  if (iVar3 != 0) {\n    pcVar11 = (char *)*param_2;\n    if (*pcVar11 == '\0') {\n      pcVar6 = pcVar11 + iVar3;\n      do {\n        pcVar11 = pcVar11 + 1;\n        if (pcVar6 == pcVar11) goto LAB_00021d4d;\n      } while (*pcVar11 == '\0');\n    }\n    iVar3 = FUN_0001e002(&DAT_000ccedf,"not an integer");\n    ppuVar9 = local_70 + 1;\n    goto LAB_00021f63;\n  }\nLAB_00021d4d:\n  if (param_2[2] == 0) {\n    *(undefined1 *)(param_3 + 4) = 0;\n    param_3[1] = 0;\n    param_3[2] = 1;\n    *(undefined1 *)*param_3 = 1;\n    ppuVar9 = local_70 + 1;\n    iVar3 = 0;\n    goto LAB_00021f63;\n  }\n  if (*(int *)(param_1 + 8) == 0) {\n    param_3[2] = 0;\n    *(undefined1 *)(param_3 + 4) = 0;\n    param_3[1] = param_4;\n    ppuVar9 = local_70 + 1;\n    iVar3 = 0;\n    goto LAB_00021f63;\n  }\n  cStack_61 = *(char *)(param_2 + 4);\n  if (((param_2[2] == 1) && (iVar3 == 0)) && (*(char *)*param_2 == '\x01')) {\n    if (cStack_61 == '\0') {\n      local_70[0] = (uint *)0x21db5;\n      FUN_0001e38b();\n      ppuVar9 = local_70 + 1;\n      iVar3 = 0;\n    }\n    else {\n      local_2c = 2;\n      local_38 = local_22;\n      local_28 = 0;\n      local_34 = 0;\n      local_30 = 1;\n      local_22[0] = 1;\n      iVar3 = FUN_00021c86(param_4);\n      ppuVar9 = local_70;\n    }\n    goto LAB_00021f63;\n  }\n  local_70[0] = (uint *)0x21dc5;\n  iVar4 = FUN_0001e0f3();\n  iVar3 = iVar4;\n  if (iVar4 != 0) goto LAB_00021f63;\n  local_70[1] = *(uint **)(param_1 + 8);\n  if (local_70[1] < 0x10) {\n    local_70[1] = (uint *)0x10;\n  }\n  local_70[0] = (uint *)0x21de5;\n  local_4c = FUN_00019b1c();\n  local_40 = (uint)local_70[1];\n  local_48 = 0;\n  local_44 = 0;\n  local_3c = 0;\n  local_70[1] = (uint *)(local_54 + 2);\n  local_70[0] = (uint *)0x21e13;\n  FUN_0001e38b();\n  puVar10 = *(uint **)(param_1 + 4);\n  ppuVar8 = local_70 + 1;\n  if (cStack_61 == '\0') {\n    if (puVar10 < param_4) {\n      ppuVar8 = local_70 + 1;\n      if ((uint *)((int)puVar10 * (int)local_54[1]) < param_4) goto LAB_00021e32;\n    }\n    else {\n      ppuVar8 = local_70 + 1;\n      param_4 = puVar10;\n      if ((uint *)((int)puVar10 * (int)local_54[1]) < puVar10) {\nLAB_00021e32:\n        param_4 = (uint *)((int)puVar10 * (int)local_54[1]);\n        ppuVar8 = local_70 + 1;\n      }\n    }\n  }\n  while (((uint)local_54[1] & 1) == 0) {\n    puVar10 = (uint *)((int)puVar10 * 2);\n    ppuVar8[0xfffffffc] = puVar10;\n    ppuVar8[0xfffffffb] = (uint *)0x21e4b;\n    iVar3 = FUN_00021bb2();\n    ppuVar9 = ppuVar8 + 0xffffffff;\n    if (iVar3 != 0) goto LAB_00021f50;\n    local_54[1] = (uint *)((uint)ppuVar8[6] >> 1);\n    ppuVar8[6] = local_54[1];\n    ppuVar8 = ppuVar8 + 0xffffffff;\n  }\n  ppuVar8[0xffffffff] = (uint *)0x21e80;\n  FUN_0001e38b();\n  puVar1 = ppuVar8[7];\n  ppuVar8[7] = (uint *)((uint)puVar1 >> 1);\n  if ((uint *)((uint)puVar1 >> 1) != (uint *)0x0) {\n    ppuVar8[1] = puVar10;\n    ppuVar7 = ppuVar8;\n    do {\n      puVar10 = (uint *)((int)puVar10 * 2);\n      ((int *)ppuVar7)[-4] = (int)puVar10;\n      ((int *)ppuVar7)[-5] = 0x21ea3;\n      iVar3 = FUN_00021bb2();\n      ppuVar9 = (uint **)((int *)ppuVar7 + -1);\n      ppuVar8 = (uint **)((int *)ppuVar7 + -1);\n      if (iVar3 != 0) goto LAB_00021f50;\n      uVar5 = ((int *)ppuVar7)[6];\n      if ((uVar5 & 1) != 0) {\n        *ppuVar7 = (uint *)((int)*ppuVar7 + (int)puVar10);\n        ((int *)ppuVar7)[-5] = (int)*ppuVar7;\n        ((int *)ppuVar7)[-6] = 0x21ecb;\n        iVar3 = FUN_00021bb2();\n        ppuVar9 = (uint **)((int *)ppuVar7 + -2);\n        ppuVar8 = (uint **)((int *)ppuVar7 + -2);\n        if (iVar3 != 0) goto LAB_00021f50;\n        uVar5 = ((int *)ppuVar7)[5];\n      }\n      *(uint *)((int)ppuVar8 + 0x1c) = uVar5 >> 1;\n      ppuVar7 = ppuVar8;\n    } while (uVar5 >> 1 != 0);\n  }\n  puVar2 = (undefined1 *)ppuVar8;\n  if (*(char *)((int)ppuVar8 + 0xb) == '\0') {\nLAB_00021f2b:\n    ppuVar9 = (uint **)puVar2;\n    if (param_4 < (uint *)param_3[1]) {\n      *(undefined4 *)((int)ppuVar9 + -4) = 0x21f3b;\n      FUN_0001d62a();\n    }\n    if (param_3[2] == 0) {\nLAB_00021f42:\n      param_3[2] = 0;\n      *(undefined1 *)(param_3 + 4) = 0;\n      param_3[1] = param_4;\n      iVar3 = iVar4;\n    }\n    else {\n      pcVar11 = (char *)*param_3;\n      iVar3 = iVar4;\n      if (*pcVar11 == '\0') {\n        pcVar6 = pcVar11 + param_3[2];\n        do {\n          pcVar11 = pcVar11 + 1;\n          if (pcVar6 == pcVar11) goto LAB_00021f42;\n        } while (*pcVar11 == '\0');\n      }\n    }\n  }\n  else {\n    *(undefined4 *)((int)ppuVar8 + 0x40) = 2;\n    *(undefined1 **)((int)ppuVar8 + 0x34) = (undefined1 *)((int)ppuVar8 + 0x4a);\n    *(undefined1 *)((int)ppuVar8 + 0x44) = 0;\n    *(undefined4 *)((int)ppuVar8 + 0x38) = 0;\n    *(undefined4 *)((int)ppuVar8 + 0x3c) = 1;\n    *(undefined1 *)((int)ppuVar8 + 0x4a) = 1;\n    *(uint **)((int)ppuVar8 + -0x10) = param_4;\n    *(undefined4 *)((int)ppuVar8 + -0x14) = 0x21f20;\n    iVar3 = FUN_00021c86();\n    ppuVar9 = (uint **)((int)ppuVar8 + -4);\n    puVar2 = (undefined1 *)((int)ppuVar8 + -4);\n    if (iVar3 == 0) goto LAB_00021f2b;\n  }\nLAB_00021f50:\n  *(undefined4 *)((int)ppuVar9 + -0x10) = *(undefined4 *)((int)ppuVar9 + 0x20);\n  *(undefined4 *)((int)ppuVar9 + -0x14) = 0x21f60;\n  free(*(void **)((int)ppuVar9 + -0x10));\nLAB_00021f63:\n  if (ppuVar9[0x13] != *(uint **)(in_GS_OFFSET + 0x14)) {\n                    \n    ppuVar9[0xffffffff] = (uint *)0x21f81;\n    FUN_00017e10();\n  }\n  return iVar3;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_00021cde(int param_1,undefined4 *param_2,undefined4 *param_3,uint *param_4)" identifier (parameter_list "(int param_1,undefined4 *param_2,undefined4 *param_3,uint *param_4)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined4 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "uint *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) ))) (compound_statement "{\n  uint *puVar1;\n  undefined1 *puVar2;\n  int iVar3;\n  int iVar4;\n  uint uVar5;\n  char *pcVar6;\n  uint **ppuVar7;\n  uint **ppuVar8;\n  uint **ppuVar9;\n  uint *puVar10;\n  char *pcVar11;\n  int in_GS_OFFSET;\n  char cStackY_81;\n  uint *puStackY_80;\n  uint *local_70 [3];\n  char cStack_61;\n  undefined **local_60;\n  uint *local_54 [2];\n  uint local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  uint local_40;\n  undefined1 local_3c;\n  undefined1 *local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined1 local_28;\n  undefined1 local_22 [2];\n  undefined4 local_20;\n  \n  ppuVar9 = local_70 + 1;\n  local_70[0] = (uint *)0x21cea;\n  local_60 = &__DT_PLTGOT;\n  local_20 = *(undefined4 *)(in_GS_OFFSET + 0x14);\n  iVar3 = param_2[1];\n  if (iVar3 != 0) {\n    pcVar11 = (char *)*param_2;\n    if (*pcVar11 == '\0') {\n      pcVar6 = pcVar11 + iVar3;\n      do {\n        pcVar11 = pcVar11 + 1;\n        if (pcVar6 == pcVar11) goto LAB_00021d4d;\n      } while (*pcVar11 == '\0');\n    }\n    iVar3 = FUN_0001e002(&DAT_000ccedf,"not an integer");\n    ppuVar9 = local_70 + 1;\n    goto LAB_00021f63;\n  }\nLAB_00021d4d:\n  if (param_2[2] == 0) {\n    *(undefined1 *)(param_3 + 4) = 0;\n    param_3[1] = 0;\n    param_3[2] = 1;\n    *(undefined1 *)*param_3 = 1;\n    ppuVar9 = local_70 + 1;\n    iVar3 = 0;\n    goto LAB_00021f63;\n  }\n  if (*(int *)(param_1 + 8) == 0) {\n    param_3[2] = 0;\n    *(undefined1 *)(param_3 + 4) = 0;\n    param_3[1] = param_4;\n    ppuVar9 = local_70 + 1;\n    iVar3 = 0;\n    goto LAB_00021f63;\n  }\n  cStack_61 = *(char *)(param_2 + 4);\n  if (((param_2[2] == 1) && (iVar3 == 0)) && (*(char *)*param_2 == '\x01')) {\n    if (cStack_61 == '\0') {\n      local_70[0] = (uint *)0x21db5;\n      FUN_0001e38b();\n      ppuVar9 = local_70 + 1;\n      iVar3 = 0;\n    }\n    else {\n      local_2c = 2;\n      local_38 = local_22;\n      local_28 = 0;\n      local_34 = 0;\n      local_30 = 1;\n      local_22[0] = 1;\n      iVar3 = FUN_00021c86(param_4);\n      ppuVar9 = local_70;\n    }\n    goto LAB_00021f63;\n  }\n  local_70[0] = (uint *)0x21dc5;\n  iVar4 = FUN_0001e0f3();\n  iVar3 = iVar4;\n  if (iVar4 != 0) goto LAB_00021f63;\n  local_70[1] = *(uint **)(param_1 + 8);\n  if (local_70[1] < 0x10) {\n    local_70[1] = (uint *)0x10;\n  }\n  local_70[0] = (uint *)0x21de5;\n  local_4c = FUN_00019b1c();\n  local_40 = (uint)local_70[1];\n  local_48 = 0;\n  local_44 = 0;\n  local_3c = 0;\n  local_70[1] = (uint *)(local_54 + 2);\n  local_70[0] = (uint *)0x21e13;\n  FUN_0001e38b();\n  puVar10 = *(uint **)(param_1 + 4);\n  ppuVar8 = local_70 + 1;\n  if (cStack_61 == '\0') {\n    if (puVar10 < param_4) {\n      ppuVar8 = local_70 + 1;\n      if ((uint *)((int)puVar10 * (int)local_54[1]) < param_4) goto LAB_00021e32;\n    }\n    else {\n      ppuVar8 = local_70 + 1;\n      param_4 = puVar10;\n      if ((uint *)((int)puVar10 * (int)local_54[1]) < puVar10) {\nLAB_00021e32:\n        param_4 = (uint *)((int)puVar10 * (int)local_54[1]);\n        ppuVar8 = local_70 + 1;\n      }\n    }\n  }\n  while (((uint)local_54[1] & 1) == 0) {\n    puVar10 = (uint *)((int)puVar10 * 2);\n    ppuVar8[0xfffffffc] = puVar10;\n    ppuVar8[0xfffffffb] = (uint *)0x21e4b;\n    iVar3 = FUN_00021bb2();\n    ppuVar9 = ppuVar8 + 0xffffffff;\n    if (iVar3 != 0) goto LAB_00021f50;\n    local_54[1] = (uint *)((uint)ppuVar8[6] >> 1);\n    ppuVar8[6] = local_54[1];\n    ppuVar8 = ppuVar8 + 0xffffffff;\n  }\n  ppuVar8[0xffffffff] = (uint *)0x21e80;\n  FUN_0001e38b();\n  puVar1 = ppuVar8[7];\n  ppuVar8[7] = (uint *)((uint)puVar1 >> 1);\n  if ((uint *)((uint)puVar1 >> 1) != (uint *)0x0) {\n    ppuVar8[1] = puVar10;\n    ppuVar7 = ppuVar8;\n    do {\n      puVar10 = (uint *)((int)puVar10 * 2);\n      ((int *)ppuVar7)[-4] = (int)puVar10;\n      ((int *)ppuVar7)[-5] = 0x21ea3;\n      iVar3 = FUN_00021bb2();\n      ppuVar9 = (uint **)((int *)ppuVar7 + -1);\n      ppuVar8 = (uint **)((int *)ppuVar7 + -1);\n      if (iVar3 != 0) goto LAB_00021f50;\n      uVar5 = ((int *)ppuVar7)[6];\n      if ((uVar5 & 1) != 0) {\n        *ppuVar7 = (uint *)((int)*ppuVar7 + (int)puVar10);\n        ((int *)ppuVar7)[-5] = (int)*ppuVar7;\n        ((int *)ppuVar7)[-6] = 0x21ecb;\n        iVar3 = FUN_00021bb2();\n        ppuVar9 = (uint **)((int *)ppuVar7 + -2);\n        ppuVar8 = (uint **)((int *)ppuVar7 + -2);\n        if (iVar3 != 0) goto LAB_00021f50;\n        uVar5 = ((int *)ppuVar7)[5];\n      }\n      *(uint *)((int)ppuVar8 + 0x1c) = uVar5 >> 1;\n      ppuVar7 = ppuVar8;\n    } while (uVar5 >> 1 != 0);\n  }\n  puVar2 = (undefined1 *)ppuVar8;\n  if (*(char *)((int)ppuVar8 + 0xb) == '\0') {\nLAB_00021f2b:\n    ppuVar9 = (uint **)puVar2;\n    if (param_4 < (uint *)param_3[1]) {\n      *(undefined4 *)((int)ppuVar9 + -4) = 0x21f3b;\n      FUN_0001d62a();\n    }\n    if (param_3[2] == 0) {\nLAB_00021f42:\n      param_3[2] = 0;\n      *(undefined1 *)(param_3 + 4) = 0;\n      param_3[1] = param_4;\n      iVar3 = iVar4;\n    }\n    else {\n      pcVar11 = (char *)*param_3;\n      iVar3 = iVar4;\n      if (*pcVar11 == '\0') {\n        pcVar6 = pcVar11 + param_3[2];\n        do {\n          pcVar11 = pcVar11 + 1;\n          if (pcVar6 == pcVar11) goto LAB_00021f42;\n        } while (*pcVar11 == '\0');\n      }\n    }\n  }\n  else {\n    *(undefined4 *)((int)ppuVar8 + 0x40) = 2;\n    *(undefined1 **)((int)ppuVar8 + 0x34) = (undefined1 *)((int)ppuVar8 + 0x4a);\n    *(undefined1 *)((int)ppuVar8 + 0x44) = 0;\n    *(undefined4 *)((int)ppuVar8 + 0x38) = 0;\n    *(undefined4 *)((int)ppuVar8 + 0x3c) = 1;\n    *(undefined1 *)((int)ppuVar8 + 0x4a) = 1;\n    *(uint **)((int)ppuVar8 + -0x10) = param_4;\n    *(undefined4 *)((int)ppuVar8 + -0x14) = 0x21f20;\n    iVar3 = FUN_00021c86();\n    ppuVar9 = (uint **)((int)ppuVar8 + -4);\n    puVar2 = (undefined1 *)((int)ppuVar8 + -4);\n    if (iVar3 == 0) goto LAB_00021f2b;\n  }\nLAB_00021f50:\n  *(undefined4 *)((int)ppuVar9 + -0x10) = *(undefined4 *)((int)ppuVar9 + 0x20);\n  *(undefined4 *)((int)ppuVar9 + -0x14) = 0x21f60;\n  free(*(void **)((int)ppuVar9 + -0x10));\nLAB_00021f63:\n  if (ppuVar9[0x13] != *(uint **)(in_GS_OFFSET + 0x14)) {\n                    \n    ppuVar9[0xffffffff] = (uint *)0x21f81;\n    FUN_00017e10();\n  }\n  return iVar3;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined1 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "uint **ppuVar7;" type_identifier (pointer_declarator "**ppuVar7" * (pointer_declarator "*ppuVar7" * identifier)) ;) (declaration "uint **ppuVar8;" type_identifier (pointer_declarator "**ppuVar8" * (pointer_declarator "*ppuVar8" * identifier)) ;) (declaration "uint **ppuVar9;" type_identifier (pointer_declarator "**ppuVar9" * (pointer_declarator "*ppuVar9" * identifier)) ;) (declaration "uint *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "char *pcVar11;" primitive_type (pointer_declarator "*pcVar11" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "char cStackY_81;" primitive_type identifier ;) (declaration "uint *puStackY_80;" type_identifier (pointer_declarator "*puStackY_80" * identifier) ;) (declaration "uint *local_70 [3];" type_identifier (pointer_declarator "*local_70 [3]" * (array_declarator "local_70 [3]" identifier [ number_literal ])) ;) (declaration "char cStack_61;" primitive_type identifier ;) (declaration "undefined **local_60;" type_identifier (pointer_declarator "**local_60" * (pointer_declarator "*local_60" * identifier)) ;) (declaration "uint *local_54 [2];" type_identifier (pointer_declarator "*local_54 [2]" * (array_declarator "local_54 [2]" identifier [ number_literal ])) ;) (declaration "uint local_4c;" type_identifier identifier ;) (declaration "undefined4 local_48;" type_identifier identifier ;) (declaration "undefined4 local_44;" type_identifier identifier ;) (declaration "uint local_40;" type_identifier identifier ;) (declaration "undefined1 local_3c;" type_identifier identifier ;) (declaration "undefined1 *local_38;" type_identifier (pointer_declarator "*local_38" * identifier) ;) (declaration "undefined4 local_34;" type_identifier identifier ;) (declaration "undefined4 local_30;" type_identifier identifier ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "undefined1 local_28;" type_identifier identifier ;) (declaration "undefined1 local_22 [2];" type_identifier (array_declarator "local_22 [2]" identifier [ number_literal ]) ;) (declaration "undefined4 local_20;" type_identifier identifier ;) (expression_statement "ppuVar9 = local_70 + 1;" (assignment_expression "ppuVar9 = local_70 + 1" identifier = (binary_expression "local_70 + 1" identifier + number_literal)) ;) (expression_statement "local_70[0] = (uint *)0x21cea;" (assignment_expression "local_70[0] = (uint *)0x21cea" (subscript_expression "local_70[0]" identifier [ number_literal ]) = (cast_expression "(uint *)0x21cea" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_60 = &__DT_PLTGOT;" (assignment_expression "local_60 = &__DT_PLTGOT" identifier = (pointer_expression "&__DT_PLTGOT" & identifier)) ;) (expression_statement "local_20 = *(undefined4 *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(undefined4 *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(undefined4 *)(in_GS_OFFSET + 0x14)" * (cast_expression "(undefined4 *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "iVar3 = param_2[1];" (assignment_expression "iVar3 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (if_statement "if (iVar3 != 0) {\n    pcVar11 = (char *)*param_2;\n    if (*pcVar11 == '\0') {\n      pcVar6 = pcVar11 + iVar3;\n      do {\n        pcVar11 = pcVar11 + 1;\n        if (pcVar6 == pcVar11) goto LAB_00021d4d;\n      } while (*pcVar11 == '\0');\n    }\n    iVar3 = FUN_0001e002(&DAT_000ccedf,"not an integer");\n    ppuVar9 = local_70 + 1;\n    goto LAB_00021f63;\n  }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n    pcVar11 = (char *)*param_2;\n    if (*pcVar11 == '\0') {\n      pcVar6 = pcVar11 + iVar3;\n      do {\n        pcVar11 = pcVar11 + 1;\n        if (pcVar6 == pcVar11) goto LAB_00021d4d;\n      } while (*pcVar11 == '\0');\n    }\n    iVar3 = FUN_0001e002(&DAT_000ccedf,"not an integer");\n    ppuVar9 = local_70 + 1;\n    goto LAB_00021f63;\n  }" { (expression_statement "pcVar11 = (char *)*param_2;" (assignment_expression "pcVar11 = (char *)*param_2" identifier = (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (if_statement "if (*pcVar11 == '\0') {\n      pcVar6 = pcVar11 + iVar3;\n      do {\n        pcVar11 = pcVar11 + 1;\n        if (pcVar6 == pcVar11) goto LAB_00021d4d;\n      } while (*pcVar11 == '\0');\n    }" if (parenthesized_expression "(*pcVar11 == '\0')" ( (binary_expression "*pcVar11 == '\0'" (pointer_expression "*pcVar11" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      pcVar6 = pcVar11 + iVar3;\n      do {\n        pcVar11 = pcVar11 + 1;\n        if (pcVar6 == pcVar11) goto LAB_00021d4d;\n      } while (*pcVar11 == '\0');\n    }" { (expression_statement "pcVar6 = pcVar11 + iVar3;" (assignment_expression "pcVar6 = pcVar11 + iVar3" identifier = (binary_expression "pcVar11 + iVar3" identifier + identifier)) ;) (do_statement "do {\n        pcVar11 = pcVar11 + 1;\n        if (pcVar6 == pcVar11) goto LAB_00021d4d;\n      } while (*pcVar11 == '\0');" do (compound_statement "{\n        pcVar11 = pcVar11 + 1;\n        if (pcVar6 == pcVar11) goto LAB_00021d4d;\n      }" { (expression_statement "pcVar11 = pcVar11 + 1;" (assignment_expression "pcVar11 = pcVar11 + 1" identifier = (binary_expression "pcVar11 + 1" identifier + number_literal)) ;) (if_statement "if (pcVar6 == pcVar11) goto LAB_00021d4d;" if (parenthesized_expression "(pcVar6 == pcVar11)" ( (binary_expression "pcVar6 == pcVar11" identifier == identifier) )) (goto_statement "goto LAB_00021d4d;" goto statement_identifier ;)) }) while (parenthesized_expression "(*pcVar11 == '\0')" ( (binary_expression "*pcVar11 == '\0'" (pointer_expression "*pcVar11" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) ;) })) (expression_statement "iVar3 = FUN_0001e002(&DAT_000ccedf,"not an integer");" (assignment_expression "iVar3 = FUN_0001e002(&DAT_000ccedf,"not an integer")" identifier = (call_expression "FUN_0001e002(&DAT_000ccedf,"not an integer")" identifier (argument_list "(&DAT_000ccedf,"not an integer")" ( (pointer_expression "&DAT_000ccedf" & identifier) , (string_literal ""not an integer"" " string_content ") )))) ;) (expression_statement "ppuVar9 = local_70 + 1;" (assignment_expression "ppuVar9 = local_70 + 1" identifier = (binary_expression "local_70 + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_00021f63;" goto statement_identifier ;) })) (labeled_statement "LAB_00021d4d:\n  if (param_2[2] == 0) {\n    *(undefined1 *)(param_3 + 4) = 0;\n    param_3[1] = 0;\n    param_3[2] = 1;\n    *(undefined1 *)*param_3 = 1;\n    ppuVar9 = local_70 + 1;\n    iVar3 = 0;\n    goto LAB_00021f63;\n  }" statement_identifier : (if_statement "if (param_2[2] == 0) {\n    *(undefined1 *)(param_3 + 4) = 0;\n    param_3[1] = 0;\n    param_3[2] = 1;\n    *(undefined1 *)*param_3 = 1;\n    ppuVar9 = local_70 + 1;\n    iVar3 = 0;\n    goto LAB_00021f63;\n  }" if (parenthesized_expression "(param_2[2] == 0)" ( (binary_expression "param_2[2] == 0" (subscript_expression "param_2[2]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n    *(undefined1 *)(param_3 + 4) = 0;\n    param_3[1] = 0;\n    param_3[2] = 1;\n    *(undefined1 *)*param_3 = 1;\n    ppuVar9 = local_70 + 1;\n    iVar3 = 0;\n    goto LAB_00021f63;\n  }" { (expression_statement "*(undefined1 *)(param_3 + 4) = 0;" (assignment_expression "*(undefined1 *)(param_3 + 4) = 0" (pointer_expression "*(undefined1 *)(param_3 + 4)" * (cast_expression "(undefined1 *)(param_3 + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "param_3[1] = 0;" (assignment_expression "param_3[1] = 0" (subscript_expression "param_3[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_3[2] = 1;" (assignment_expression "param_3[2] = 1" (subscript_expression "param_3[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)*param_3 = 1;" (assignment_expression "*(undefined1 *)*param_3 = 1" (pointer_expression "*(undefined1 *)*param_3" * (cast_expression "(undefined1 *)*param_3" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_3" * identifier))) = number_literal) ;) (expression_statement "ppuVar9 = local_70 + 1;" (assignment_expression "ppuVar9 = local_70 + 1" identifier = (binary_expression "local_70 + 1" identifier + number_literal)) ;) (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00021f63;" goto statement_identifier ;) }))) (if_statement "if (*(int *)(param_1 + 8) == 0) {\n    param_3[2] = 0;\n    *(undefined1 *)(param_3 + 4) = 0;\n    param_3[1] = param_4;\n    ppuVar9 = local_70 + 1;\n    iVar3 = 0;\n    goto LAB_00021f63;\n  }" if (parenthesized_expression "(*(int *)(param_1 + 8) == 0)" ( (binary_expression "*(int *)(param_1 + 8) == 0" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    param_3[2] = 0;\n    *(undefined1 *)(param_3 + 4) = 0;\n    param_3[1] = param_4;\n    ppuVar9 = local_70 + 1;\n    iVar3 = 0;\n    goto LAB_00021f63;\n  }" { (expression_statement "param_3[2] = 0;" (assignment_expression "param_3[2] = 0" (subscript_expression "param_3[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)(param_3 + 4) = 0;" (assignment_expression "*(undefined1 *)(param_3 + 4) = 0" (pointer_expression "*(undefined1 *)(param_3 + 4)" * (cast_expression "(undefined1 *)(param_3 + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "param_3[1] = param_4;" (assignment_expression "param_3[1] = param_4" (subscript_expression "param_3[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "ppuVar9 = local_70 + 1;" (assignment_expression "ppuVar9 = local_70 + 1" identifier = (binary_expression "local_70 + 1" identifier + number_literal)) ;) (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00021f63;" goto statement_identifier ;) })) (expression_statement "cStack_61 = *(char *)(param_2 + 4);" (assignment_expression "cStack_61 = *(char *)(param_2 + 4)" identifier = (pointer_expression "*(char *)(param_2 + 4)" * (cast_expression "(char *)(param_2 + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) ;) (if_statement "if (((param_2[2] == 1) && (iVar3 == 0)) && (*(char *)*param_2 == '\x01')) {\n    if (cStack_61 == '\0') {\n      local_70[0] = (uint *)0x21db5;\n      FUN_0001e38b();\n      ppuVar9 = local_70 + 1;\n      iVar3 = 0;\n    }\n    else {\n      local_2c = 2;\n      local_38 = local_22;\n      local_28 = 0;\n      local_34 = 0;\n      local_30 = 1;\n      local_22[0] = 1;\n      iVar3 = FUN_00021c86(param_4);\n      ppuVar9 = local_70;\n    }\n    goto LAB_00021f63;\n  }" if (parenthesized_expression "(((param_2[2] == 1) && (iVar3 == 0)) && (*(char *)*param_2 == '\x01'))" ( (binary_expression "((param_2[2] == 1) && (iVar3 == 0)) && (*(char *)*param_2 == '\x01')" (parenthesized_expression "((param_2[2] == 1) && (iVar3 == 0))" ( (binary_expression "(param_2[2] == 1) && (iVar3 == 0)" (parenthesized_expression "(param_2[2] == 1)" ( (binary_expression "param_2[2] == 1" (subscript_expression "param_2[2]" identifier [ number_literal ]) == number_literal) )) && (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) ))) )) && (parenthesized_expression "(*(char *)*param_2 == '\x01')" ( (binary_expression "*(char *)*param_2 == '\x01'" (pointer_expression "*(char *)*param_2" * (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) == (char_literal "'\x01'" ' escape_sequence ')) ))) )) (compound_statement "{\n    if (cStack_61 == '\0') {\n      local_70[0] = (uint *)0x21db5;\n      FUN_0001e38b();\n      ppuVar9 = local_70 + 1;\n      iVar3 = 0;\n    }\n    else {\n      local_2c = 2;\n      local_38 = local_22;\n      local_28 = 0;\n      local_34 = 0;\n      local_30 = 1;\n      local_22[0] = 1;\n      iVar3 = FUN_00021c86(param_4);\n      ppuVar9 = local_70;\n    }\n    goto LAB_00021f63;\n  }" { (if_statement "if (cStack_61 == '\0') {\n      local_70[0] = (uint *)0x21db5;\n      FUN_0001e38b();\n      ppuVar9 = local_70 + 1;\n      iVar3 = 0;\n    }\n    else {\n      local_2c = 2;\n      local_38 = local_22;\n      local_28 = 0;\n      local_34 = 0;\n      local_30 = 1;\n      local_22[0] = 1;\n      iVar3 = FUN_00021c86(param_4);\n      ppuVar9 = local_70;\n    }" if (parenthesized_expression "(cStack_61 == '\0')" ( (binary_expression "cStack_61 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      local_70[0] = (uint *)0x21db5;\n      FUN_0001e38b();\n      ppuVar9 = local_70 + 1;\n      iVar3 = 0;\n    }" { (expression_statement "local_70[0] = (uint *)0x21db5;" (assignment_expression "local_70[0] = (uint *)0x21db5" (subscript_expression "local_70[0]" identifier [ number_literal ]) = (cast_expression "(uint *)0x21db5" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "FUN_0001e38b();" (call_expression "FUN_0001e38b()" identifier (argument_list "()" ( ))) ;) (expression_statement "ppuVar9 = local_70 + 1;" (assignment_expression "ppuVar9 = local_70 + 1" identifier = (binary_expression "local_70 + 1" identifier + number_literal)) ;) (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      local_2c = 2;\n      local_38 = local_22;\n      local_28 = 0;\n      local_34 = 0;\n      local_30 = 1;\n      local_22[0] = 1;\n      iVar3 = FUN_00021c86(param_4);\n      ppuVar9 = local_70;\n    }" else (compound_statement "{\n      local_2c = 2;\n      local_38 = local_22;\n      local_28 = 0;\n      local_34 = 0;\n      local_30 = 1;\n      local_22[0] = 1;\n      iVar3 = FUN_00021c86(param_4);\n      ppuVar9 = local_70;\n    }" { (expression_statement "local_2c = 2;" (assignment_expression "local_2c = 2" identifier = number_literal) ;) (expression_statement "local_38 = local_22;" (assignment_expression "local_38 = local_22" identifier = identifier) ;) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" identifier = number_literal) ;) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" identifier = number_literal) ;) (expression_statement "local_30 = 1;" (assignment_expression "local_30 = 1" identifier = number_literal) ;) (expression_statement "local_22[0] = 1;" (assignment_expression "local_22[0] = 1" (subscript_expression "local_22[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar3 = FUN_00021c86(param_4);" (assignment_expression "iVar3 = FUN_00021c86(param_4)" identifier = (call_expression "FUN_00021c86(param_4)" identifier (argument_list "(param_4)" ( identifier )))) ;) (expression_statement "ppuVar9 = local_70;" (assignment_expression "ppuVar9 = local_70" identifier = identifier) ;) }))) (goto_statement "goto LAB_00021f63;" goto statement_identifier ;) })) (expression_statement "local_70[0] = (uint *)0x21dc5;" (assignment_expression "local_70[0] = (uint *)0x21dc5" (subscript_expression "local_70[0]" identifier [ number_literal ]) = (cast_expression "(uint *)0x21dc5" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar4 = FUN_0001e0f3();" (assignment_expression "iVar4 = FUN_0001e0f3()" identifier = (call_expression "FUN_0001e0f3()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar3 = iVar4;" (assignment_expression "iVar3 = iVar4" identifier = identifier) ;) (if_statement "if (iVar4 != 0) goto LAB_00021f63;" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00021f63;" goto statement_identifier ;)) (expression_statement "local_70[1] = *(uint **)(param_1 + 8);" (assignment_expression "local_70[1] = *(uint **)(param_1 + 8)" (subscript_expression "local_70[1]" identifier [ number_literal ]) = (pointer_expression "*(uint **)(param_1 + 8)" * (cast_expression "(uint **)(param_1 + 8)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (if_statement "if (local_70[1] < 0x10) {\n    local_70[1] = (uint *)0x10;\n  }" if (parenthesized_expression "(local_70[1] < 0x10)" ( (binary_expression "local_70[1] < 0x10" (subscript_expression "local_70[1]" identifier [ number_literal ]) < number_literal) )) (compound_statement "{\n    local_70[1] = (uint *)0x10;\n  }" { (expression_statement "local_70[1] = (uint *)0x10;" (assignment_expression "local_70[1] = (uint *)0x10" (subscript_expression "local_70[1]" identifier [ number_literal ]) = (cast_expression "(uint *)0x10" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "local_70[0] = (uint *)0x21de5;" (assignment_expression "local_70[0] = (uint *)0x21de5" (subscript_expression "local_70[0]" identifier [ number_literal ]) = (cast_expression "(uint *)0x21de5" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_4c = FUN_00019b1c();" (assignment_expression "local_4c = FUN_00019b1c()" identifier = (call_expression "FUN_00019b1c()" identifier (argument_list "()" ( )))) ;) (expression_statement "local_40 = (uint)local_70[1];" (assignment_expression "local_40 = (uint)local_70[1]" identifier = (cast_expression "(uint)local_70[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "local_70[1]" identifier [ number_literal ]))) ;) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" identifier = number_literal) ;) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (expression_statement "local_70[1] = (uint *)(local_54 + 2);" (assignment_expression "local_70[1] = (uint *)(local_54 + 2)" (subscript_expression "local_70[1]" identifier [ number_literal ]) = (cast_expression "(uint *)(local_54 + 2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_54 + 2)" ( (binary_expression "local_54 + 2" identifier + number_literal) )))) ;) (expression_statement "local_70[0] = (uint *)0x21e13;" (assignment_expression "local_70[0] = (uint *)0x21e13" (subscript_expression "local_70[0]" identifier [ number_literal ]) = (cast_expression "(uint *)0x21e13" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "FUN_0001e38b();" (call_expression "FUN_0001e38b()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar10 = *(uint **)(param_1 + 4);" (assignment_expression "puVar10 = *(uint **)(param_1 + 4)" identifier = (pointer_expression "*(uint **)(param_1 + 4)" * (cast_expression "(uint **)(param_1 + 4)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (expression_statement "ppuVar8 = local_70 + 1;" (assignment_expression "ppuVar8 = local_70 + 1" identifier = (binary_expression "local_70 + 1" identifier + number_literal)) ;) (if_statement "if (cStack_61 == '\0') {\n    if (puVar10 < param_4) {\n      ppuVar8 = local_70 + 1;\n      if ((uint *)((int)puVar10 * (int)local_54[1]) < param_4) goto LAB_00021e32;\n    }\n    else {\n      ppuVar8 = local_70 + 1;\n      param_4 = puVar10;\n      if ((uint *)((int)puVar10 * (int)local_54[1]) < puVar10) {\nLAB_00021e32:\n        param_4 = (uint *)((int)puVar10 * (int)local_54[1]);\n        ppuVar8 = local_70 + 1;\n      }\n    }\n  }" if (parenthesized_expression "(cStack_61 == '\0')" ( (binary_expression "cStack_61 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    if (puVar10 < param_4) {\n      ppuVar8 = local_70 + 1;\n      if ((uint *)((int)puVar10 * (int)local_54[1]) < param_4) goto LAB_00021e32;\n    }\n    else {\n      ppuVar8 = local_70 + 1;\n      param_4 = puVar10;\n      if ((uint *)((int)puVar10 * (int)local_54[1]) < puVar10) {\nLAB_00021e32:\n        param_4 = (uint *)((int)puVar10 * (int)local_54[1]);\n        ppuVar8 = local_70 + 1;\n      }\n    }\n  }" { (if_statement "if (puVar10 < param_4) {\n      ppuVar8 = local_70 + 1;\n      if ((uint *)((int)puVar10 * (int)local_54[1]) < param_4) goto LAB_00021e32;\n    }\n    else {\n      ppuVar8 = local_70 + 1;\n      param_4 = puVar10;\n      if ((uint *)((int)puVar10 * (int)local_54[1]) < puVar10) {\nLAB_00021e32:\n        param_4 = (uint *)((int)puVar10 * (int)local_54[1]);\n        ppuVar8 = local_70 + 1;\n      }\n    }" if (parenthesized_expression "(puVar10 < param_4)" ( (binary_expression "puVar10 < param_4" identifier < identifier) )) (compound_statement "{\n      ppuVar8 = local_70 + 1;\n      if ((uint *)((int)puVar10 * (int)local_54[1]) < param_4) goto LAB_00021e32;\n    }" { (expression_statement "ppuVar8 = local_70 + 1;" (assignment_expression "ppuVar8 = local_70 + 1" identifier = (binary_expression "local_70 + 1" identifier + number_literal)) ;) (if_statement "if ((uint *)((int)puVar10 * (int)local_54[1]) < param_4) goto LAB_00021e32;" if (parenthesized_expression "((uint *)((int)puVar10 * (int)local_54[1]) < param_4)" ( (binary_expression "(uint *)((int)puVar10 * (int)local_54[1]) < param_4" (cast_expression "(uint *)((int)puVar10 * (int)local_54[1])" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 * (int)local_54[1])" ( (binary_expression "(int)puVar10 * (int)local_54[1]" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) * (cast_expression "(int)local_54[1]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "local_54[1]" identifier [ number_literal ]))) ))) < identifier) )) (goto_statement "goto LAB_00021e32;" goto statement_identifier ;)) }) (else_clause "else {\n      ppuVar8 = local_70 + 1;\n      param_4 = puVar10;\n      if ((uint *)((int)puVar10 * (int)local_54[1]) < puVar10) {\nLAB_00021e32:\n        param_4 = (uint *)((int)puVar10 * (int)local_54[1]);\n        ppuVar8 = local_70 + 1;\n      }\n    }" else (compound_statement "{\n      ppuVar8 = local_70 + 1;\n      param_4 = puVar10;\n      if ((uint *)((int)puVar10 * (int)local_54[1]) < puVar10) {\nLAB_00021e32:\n        param_4 = (uint *)((int)puVar10 * (int)local_54[1]);\n        ppuVar8 = local_70 + 1;\n      }\n    }" { (expression_statement "ppuVar8 = local_70 + 1;" (assignment_expression "ppuVar8 = local_70 + 1" identifier = (binary_expression "local_70 + 1" identifier + number_literal)) ;) (expression_statement "param_4 = puVar10;" (assignment_expression "param_4 = puVar10" identifier = identifier) ;) (if_statement "if ((uint *)((int)puVar10 * (int)local_54[1]) < puVar10) {\nLAB_00021e32:\n        param_4 = (uint *)((int)puVar10 * (int)local_54[1]);\n        ppuVar8 = local_70 + 1;\n      }" if (parenthesized_expression "((uint *)((int)puVar10 * (int)local_54[1]) < puVar10)" ( (binary_expression "(uint *)((int)puVar10 * (int)local_54[1]) < puVar10" (cast_expression "(uint *)((int)puVar10 * (int)local_54[1])" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 * (int)local_54[1])" ( (binary_expression "(int)puVar10 * (int)local_54[1]" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) * (cast_expression "(int)local_54[1]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "local_54[1]" identifier [ number_literal ]))) ))) < identifier) )) (compound_statement "{\nLAB_00021e32:\n        param_4 = (uint *)((int)puVar10 * (int)local_54[1]);\n        ppuVar8 = local_70 + 1;\n      }" { (labeled_statement "LAB_00021e32:\n        param_4 = (uint *)((int)puVar10 * (int)local_54[1]);" statement_identifier : (expression_statement "param_4 = (uint *)((int)puVar10 * (int)local_54[1]);" (assignment_expression "param_4 = (uint *)((int)puVar10 * (int)local_54[1])" identifier = (cast_expression "(uint *)((int)puVar10 * (int)local_54[1])" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 * (int)local_54[1])" ( (binary_expression "(int)puVar10 * (int)local_54[1]" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) * (cast_expression "(int)local_54[1]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "local_54[1]" identifier [ number_literal ]))) )))) ;)) (expression_statement "ppuVar8 = local_70 + 1;" (assignment_expression "ppuVar8 = local_70 + 1" identifier = (binary_expression "local_70 + 1" identifier + number_literal)) ;) })) }))) })) (while_statement "while (((uint)local_54[1] & 1) == 0) {\n    puVar10 = (uint *)((int)puVar10 * 2);\n    ppuVar8[0xfffffffc] = puVar10;\n    ppuVar8[0xfffffffb] = (uint *)0x21e4b;\n    iVar3 = FUN_00021bb2();\n    ppuVar9 = ppuVar8 + 0xffffffff;\n    if (iVar3 != 0) goto LAB_00021f50;\n    local_54[1] = (uint *)((uint)ppuVar8[6] >> 1);\n    ppuVar8[6] = local_54[1];\n    ppuVar8 = ppuVar8 + 0xffffffff;\n  }" while (parenthesized_expression "(((uint)local_54[1] & 1) == 0)" ( (binary_expression "((uint)local_54[1] & 1) == 0" (parenthesized_expression "((uint)local_54[1] & 1)" ( (binary_expression "(uint)local_54[1] & 1" (cast_expression "(uint)local_54[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "local_54[1]" identifier [ number_literal ])) & number_literal) )) == number_literal) )) (compound_statement "{\n    puVar10 = (uint *)((int)puVar10 * 2);\n    ppuVar8[0xfffffffc] = puVar10;\n    ppuVar8[0xfffffffb] = (uint *)0x21e4b;\n    iVar3 = FUN_00021bb2();\n    ppuVar9 = ppuVar8 + 0xffffffff;\n    if (iVar3 != 0) goto LAB_00021f50;\n    local_54[1] = (uint *)((uint)ppuVar8[6] >> 1);\n    ppuVar8[6] = local_54[1];\n    ppuVar8 = ppuVar8 + 0xffffffff;\n  }" { (expression_statement "puVar10 = (uint *)((int)puVar10 * 2);" (assignment_expression "puVar10 = (uint *)((int)puVar10 * 2)" identifier = (cast_expression "(uint *)((int)puVar10 * 2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 * 2)" ( (binary_expression "(int)puVar10 * 2" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) ;) (expression_statement "ppuVar8[0xfffffffc] = puVar10;" (assignment_expression "ppuVar8[0xfffffffc] = puVar10" (subscript_expression "ppuVar8[0xfffffffc]" identifier [ number_literal ]) = identifier) ;) (expression_statement "ppuVar8[0xfffffffb] = (uint *)0x21e4b;" (assignment_expression "ppuVar8[0xfffffffb] = (uint *)0x21e4b" (subscript_expression "ppuVar8[0xfffffffb]" identifier [ number_literal ]) = (cast_expression "(uint *)0x21e4b" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar3 = FUN_00021bb2();" (assignment_expression "iVar3 = FUN_00021bb2()" identifier = (call_expression "FUN_00021bb2()" identifier (argument_list "()" ( )))) ;) (expression_statement "ppuVar9 = ppuVar8 + 0xffffffff;" (assignment_expression "ppuVar9 = ppuVar8 + 0xffffffff" identifier = (binary_expression "ppuVar8 + 0xffffffff" identifier + number_literal)) ;) (if_statement "if (iVar3 != 0) goto LAB_00021f50;" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00021f50;" goto statement_identifier ;)) (expression_statement "local_54[1] = (uint *)((uint)ppuVar8[6] >> 1);" (assignment_expression "local_54[1] = (uint *)((uint)ppuVar8[6] >> 1)" (subscript_expression "local_54[1]" identifier [ number_literal ]) = (cast_expression "(uint *)((uint)ppuVar8[6] >> 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)ppuVar8[6] >> 1)" ( (binary_expression "(uint)ppuVar8[6] >> 1" (cast_expression "(uint)ppuVar8[6]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "ppuVar8[6]" identifier [ number_literal ])) >> number_literal) )))) ;) (expression_statement "ppuVar8[6] = local_54[1];" (assignment_expression "ppuVar8[6] = local_54[1]" (subscript_expression "ppuVar8[6]" identifier [ number_literal ]) = (subscript_expression "local_54[1]" identifier [ number_literal ])) ;) (expression_statement "ppuVar8 = ppuVar8 + 0xffffffff;" (assignment_expression "ppuVar8 = ppuVar8 + 0xffffffff" identifier = (binary_expression "ppuVar8 + 0xffffffff" identifier + number_literal)) ;) })) (expression_statement "ppuVar8[0xffffffff] = (uint *)0x21e80;" (assignment_expression "ppuVar8[0xffffffff] = (uint *)0x21e80" (subscript_expression "ppuVar8[0xffffffff]" identifier [ number_literal ]) = (cast_expression "(uint *)0x21e80" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "FUN_0001e38b();" (call_expression "FUN_0001e38b()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar1 = ppuVar8[7];" (assignment_expression "puVar1 = ppuVar8[7]" identifier = (subscript_expression "ppuVar8[7]" identifier [ number_literal ])) ;) (expression_statement "ppuVar8[7] = (uint *)((uint)puVar1 >> 1);" (assignment_expression "ppuVar8[7] = (uint *)((uint)puVar1 >> 1)" (subscript_expression "ppuVar8[7]" identifier [ number_literal ]) = (cast_expression "(uint *)((uint)puVar1 >> 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)puVar1 >> 1)" ( (binary_expression "(uint)puVar1 >> 1" (cast_expression "(uint)puVar1" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if ((uint *)((uint)puVar1 >> 1) != (uint *)0x0) {\n    ppuVar8[1] = puVar10;\n    ppuVar7 = ppuVar8;\n    do {\n      puVar10 = (uint *)((int)puVar10 * 2);\n      ((int *)ppuVar7)[-4] = (int)puVar10;\n      ((int *)ppuVar7)[-5] = 0x21ea3;\n      iVar3 = FUN_00021bb2();\n      ppuVar9 = (uint **)((int *)ppuVar7 + -1);\n      ppuVar8 = (uint **)((int *)ppuVar7 + -1);\n      if (iVar3 != 0) goto LAB_00021f50;\n      uVar5 = ((int *)ppuVar7)[6];\n      if ((uVar5 & 1) != 0) {\n        *ppuVar7 = (uint *)((int)*ppuVar7 + (int)puVar10);\n        ((int *)ppuVar7)[-5] = (int)*ppuVar7;\n        ((int *)ppuVar7)[-6] = 0x21ecb;\n        iVar3 = FUN_00021bb2();\n        ppuVar9 = (uint **)((int *)ppuVar7 + -2);\n        ppuVar8 = (uint **)((int *)ppuVar7 + -2);\n        if (iVar3 != 0) goto LAB_00021f50;\n        uVar5 = ((int *)ppuVar7)[5];\n      }\n      *(uint *)((int)ppuVar8 + 0x1c) = uVar5 >> 1;\n      ppuVar7 = ppuVar8;\n    } while (uVar5 >> 1 != 0);\n  }" if (parenthesized_expression "((uint *)((uint)puVar1 >> 1) != (uint *)0x0)" ( (binary_expression "(uint *)((uint)puVar1 >> 1) != (uint *)0x0" (cast_expression "(uint *)((uint)puVar1 >> 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)puVar1 >> 1)" ( (binary_expression "(uint)puVar1 >> 1" (cast_expression "(uint)puVar1" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) ))) != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    ppuVar8[1] = puVar10;\n    ppuVar7 = ppuVar8;\n    do {\n      puVar10 = (uint *)((int)puVar10 * 2);\n      ((int *)ppuVar7)[-4] = (int)puVar10;\n      ((int *)ppuVar7)[-5] = 0x21ea3;\n      iVar3 = FUN_00021bb2();\n      ppuVar9 = (uint **)((int *)ppuVar7 + -1);\n      ppuVar8 = (uint **)((int *)ppuVar7 + -1);\n      if (iVar3 != 0) goto LAB_00021f50;\n      uVar5 = ((int *)ppuVar7)[6];\n      if ((uVar5 & 1) != 0) {\n        *ppuVar7 = (uint *)((int)*ppuVar7 + (int)puVar10);\n        ((int *)ppuVar7)[-5] = (int)*ppuVar7;\n        ((int *)ppuVar7)[-6] = 0x21ecb;\n        iVar3 = FUN_00021bb2();\n        ppuVar9 = (uint **)((int *)ppuVar7 + -2);\n        ppuVar8 = (uint **)((int *)ppuVar7 + -2);\n        if (iVar3 != 0) goto LAB_00021f50;\n        uVar5 = ((int *)ppuVar7)[5];\n      }\n      *(uint *)((int)ppuVar8 + 0x1c) = uVar5 >> 1;\n      ppuVar7 = ppuVar8;\n    } while (uVar5 >> 1 != 0);\n  }" { (expression_statement "ppuVar8[1] = puVar10;" (assignment_expression "ppuVar8[1] = puVar10" (subscript_expression "ppuVar8[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "ppuVar7 = ppuVar8;" (assignment_expression "ppuVar7 = ppuVar8" identifier = identifier) ;) (do_statement "do {\n      puVar10 = (uint *)((int)puVar10 * 2);\n      ((int *)ppuVar7)[-4] = (int)puVar10;\n      ((int *)ppuVar7)[-5] = 0x21ea3;\n      iVar3 = FUN_00021bb2();\n      ppuVar9 = (uint **)((int *)ppuVar7 + -1);\n      ppuVar8 = (uint **)((int *)ppuVar7 + -1);\n      if (iVar3 != 0) goto LAB_00021f50;\n      uVar5 = ((int *)ppuVar7)[6];\n      if ((uVar5 & 1) != 0) {\n        *ppuVar7 = (uint *)((int)*ppuVar7 + (int)puVar10);\n        ((int *)ppuVar7)[-5] = (int)*ppuVar7;\n        ((int *)ppuVar7)[-6] = 0x21ecb;\n        iVar3 = FUN_00021bb2();\n        ppuVar9 = (uint **)((int *)ppuVar7 + -2);\n        ppuVar8 = (uint **)((int *)ppuVar7 + -2);\n        if (iVar3 != 0) goto LAB_00021f50;\n        uVar5 = ((int *)ppuVar7)[5];\n      }\n      *(uint *)((int)ppuVar8 + 0x1c) = uVar5 >> 1;\n      ppuVar7 = ppuVar8;\n    } while (uVar5 >> 1 != 0);" do (compound_statement "{\n      puVar10 = (uint *)((int)puVar10 * 2);\n      ((int *)ppuVar7)[-4] = (int)puVar10;\n      ((int *)ppuVar7)[-5] = 0x21ea3;\n      iVar3 = FUN_00021bb2();\n      ppuVar9 = (uint **)((int *)ppuVar7 + -1);\n      ppuVar8 = (uint **)((int *)ppuVar7 + -1);\n      if (iVar3 != 0) goto LAB_00021f50;\n      uVar5 = ((int *)ppuVar7)[6];\n      if ((uVar5 & 1) != 0) {\n        *ppuVar7 = (uint *)((int)*ppuVar7 + (int)puVar10);\n        ((int *)ppuVar7)[-5] = (int)*ppuVar7;\n        ((int *)ppuVar7)[-6] = 0x21ecb;\n        iVar3 = FUN_00021bb2();\n        ppuVar9 = (uint **)((int *)ppuVar7 + -2);\n        ppuVar8 = (uint **)((int *)ppuVar7 + -2);\n        if (iVar3 != 0) goto LAB_00021f50;\n        uVar5 = ((int *)ppuVar7)[5];\n      }\n      *(uint *)((int)ppuVar8 + 0x1c) = uVar5 >> 1;\n      ppuVar7 = ppuVar8;\n    }" { (expression_statement "puVar10 = (uint *)((int)puVar10 * 2);" (assignment_expression "puVar10 = (uint *)((int)puVar10 * 2)" identifier = (cast_expression "(uint *)((int)puVar10 * 2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 * 2)" ( (binary_expression "(int)puVar10 * 2" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) ;) (expression_statement "((int *)ppuVar7)[-4] = (int)puVar10;" (assignment_expression "((int *)ppuVar7)[-4] = (int)puVar10" (subscript_expression "((int *)ppuVar7)[-4]" (parenthesized_expression "((int *)ppuVar7)" ( (cast_expression "(int *)ppuVar7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )) [ number_literal ]) = (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "((int *)ppuVar7)[-5] = 0x21ea3;" (assignment_expression "((int *)ppuVar7)[-5] = 0x21ea3" (subscript_expression "((int *)ppuVar7)[-5]" (parenthesized_expression "((int *)ppuVar7)" ( (cast_expression "(int *)ppuVar7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )) [ number_literal ]) = number_literal) ;) (expression_statement "iVar3 = FUN_00021bb2();" (assignment_expression "iVar3 = FUN_00021bb2()" identifier = (call_expression "FUN_00021bb2()" identifier (argument_list "()" ( )))) ;) (expression_statement "ppuVar9 = (uint **)((int *)ppuVar7 + -1);" (assignment_expression "ppuVar9 = (uint **)((int *)ppuVar7 + -1)" identifier = (cast_expression "(uint **)((int *)ppuVar7 + -1)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int *)ppuVar7 + -1)" ( (binary_expression "(int *)ppuVar7 + -1" (cast_expression "(int *)ppuVar7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) + number_literal) )))) ;) (expression_statement "ppuVar8 = (uint **)((int *)ppuVar7 + -1);" (assignment_expression "ppuVar8 = (uint **)((int *)ppuVar7 + -1)" identifier = (cast_expression "(uint **)((int *)ppuVar7 + -1)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int *)ppuVar7 + -1)" ( (binary_expression "(int *)ppuVar7 + -1" (cast_expression "(int *)ppuVar7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) + number_literal) )))) ;) (if_statement "if (iVar3 != 0) goto LAB_00021f50;" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00021f50;" goto statement_identifier ;)) (expression_statement "uVar5 = ((int *)ppuVar7)[6];" (assignment_expression "uVar5 = ((int *)ppuVar7)[6]" identifier = (subscript_expression "((int *)ppuVar7)[6]" (parenthesized_expression "((int *)ppuVar7)" ( (cast_expression "(int *)ppuVar7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )) [ number_literal ])) ;) (if_statement "if ((uVar5 & 1) != 0) {\n        *ppuVar7 = (uint *)((int)*ppuVar7 + (int)puVar10);\n        ((int *)ppuVar7)[-5] = (int)*ppuVar7;\n        ((int *)ppuVar7)[-6] = 0x21ecb;\n        iVar3 = FUN_00021bb2();\n        ppuVar9 = (uint **)((int *)ppuVar7 + -2);\n        ppuVar8 = (uint **)((int *)ppuVar7 + -2);\n        if (iVar3 != 0) goto LAB_00021f50;\n        uVar5 = ((int *)ppuVar7)[5];\n      }" if (parenthesized_expression "((uVar5 & 1) != 0)" ( (binary_expression "(uVar5 & 1) != 0" (parenthesized_expression "(uVar5 & 1)" ( (binary_expression "uVar5 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        *ppuVar7 = (uint *)((int)*ppuVar7 + (int)puVar10);\n        ((int *)ppuVar7)[-5] = (int)*ppuVar7;\n        ((int *)ppuVar7)[-6] = 0x21ecb;\n        iVar3 = FUN_00021bb2();\n        ppuVar9 = (uint **)((int *)ppuVar7 + -2);\n        ppuVar8 = (uint **)((int *)ppuVar7 + -2);\n        if (iVar3 != 0) goto LAB_00021f50;\n        uVar5 = ((int *)ppuVar7)[5];\n      }" { (expression_statement "*ppuVar7 = (uint *)((int)*ppuVar7 + (int)puVar10);" (assignment_expression "*ppuVar7 = (uint *)((int)*ppuVar7 + (int)puVar10)" (pointer_expression "*ppuVar7" * identifier) = (cast_expression "(uint *)((int)*ppuVar7 + (int)puVar10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)*ppuVar7 + (int)puVar10)" ( (binary_expression "(int)*ppuVar7 + (int)puVar10" (cast_expression "(int)*ppuVar7" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*ppuVar7" * identifier)) + (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "((int *)ppuVar7)[-5] = (int)*ppuVar7;" (assignment_expression "((int *)ppuVar7)[-5] = (int)*ppuVar7" (subscript_expression "((int *)ppuVar7)[-5]" (parenthesized_expression "((int *)ppuVar7)" ( (cast_expression "(int *)ppuVar7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )) [ number_literal ]) = (cast_expression "(int)*ppuVar7" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*ppuVar7" * identifier))) ;) (expression_statement "((int *)ppuVar7)[-6] = 0x21ecb;" (assignment_expression "((int *)ppuVar7)[-6] = 0x21ecb" (subscript_expression "((int *)ppuVar7)[-6]" (parenthesized_expression "((int *)ppuVar7)" ( (cast_expression "(int *)ppuVar7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )) [ number_literal ]) = number_literal) ;) (expression_statement "iVar3 = FUN_00021bb2();" (assignment_expression "iVar3 = FUN_00021bb2()" identifier = (call_expression "FUN_00021bb2()" identifier (argument_list "()" ( )))) ;) (expression_statement "ppuVar9 = (uint **)((int *)ppuVar7 + -2);" (assignment_expression "ppuVar9 = (uint **)((int *)ppuVar7 + -2)" identifier = (cast_expression "(uint **)((int *)ppuVar7 + -2)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int *)ppuVar7 + -2)" ( (binary_expression "(int *)ppuVar7 + -2" (cast_expression "(int *)ppuVar7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) + number_literal) )))) ;) (expression_statement "ppuVar8 = (uint **)((int *)ppuVar7 + -2);" (assignment_expression "ppuVar8 = (uint **)((int *)ppuVar7 + -2)" identifier = (cast_expression "(uint **)((int *)ppuVar7 + -2)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int *)ppuVar7 + -2)" ( (binary_expression "(int *)ppuVar7 + -2" (cast_expression "(int *)ppuVar7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) + number_literal) )))) ;) (if_statement "if (iVar3 != 0) goto LAB_00021f50;" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00021f50;" goto statement_identifier ;)) (expression_statement "uVar5 = ((int *)ppuVar7)[5];" (assignment_expression "uVar5 = ((int *)ppuVar7)[5]" identifier = (subscript_expression "((int *)ppuVar7)[5]" (parenthesized_expression "((int *)ppuVar7)" ( (cast_expression "(int *)ppuVar7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )) [ number_literal ])) ;) })) (expression_statement "*(uint *)((int)ppuVar8 + 0x1c) = uVar5 >> 1;" (assignment_expression "*(uint *)((int)ppuVar8 + 0x1c) = uVar5 >> 1" (pointer_expression "*(uint *)((int)ppuVar8 + 0x1c)" * (cast_expression "(uint *)((int)ppuVar8 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar8 + 0x1c)" ( (binary_expression "(int)ppuVar8 + 0x1c" (cast_expression "(int)ppuVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "uVar5 >> 1" identifier >> number_literal)) ;) (expression_statement "ppuVar7 = ppuVar8;" (assignment_expression "ppuVar7 = ppuVar8" identifier = identifier) ;) }) while (parenthesized_expression "(uVar5 >> 1 != 0)" ( (binary_expression "uVar5 >> 1 != 0" (binary_expression "uVar5 >> 1" identifier >> number_literal) != number_literal) )) ;) })) (expression_statement "puVar2 = (undefined1 *)ppuVar8;" (assignment_expression "puVar2 = (undefined1 *)ppuVar8" identifier = (cast_expression "(undefined1 *)ppuVar8" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (*(char *)((int)ppuVar8 + 0xb) == '\0') {\nLAB_00021f2b:\n    ppuVar9 = (uint **)puVar2;\n    if (param_4 < (uint *)param_3[1]) {\n      *(undefined4 *)((int)ppuVar9 + -4) = 0x21f3b;\n      FUN_0001d62a();\n    }\n    if (param_3[2] == 0) {\nLAB_00021f42:\n      param_3[2] = 0;\n      *(undefined1 *)(param_3 + 4) = 0;\n      param_3[1] = param_4;\n      iVar3 = iVar4;\n    }\n    else {\n      pcVar11 = (char *)*param_3;\n      iVar3 = iVar4;\n      if (*pcVar11 == '\0') {\n        pcVar6 = pcVar11 + param_3[2];\n        do {\n          pcVar11 = pcVar11 + 1;\n          if (pcVar6 == pcVar11) goto LAB_00021f42;\n        } while (*pcVar11 == '\0');\n      }\n    }\n  }\n  else {\n    *(undefined4 *)((int)ppuVar8 + 0x40) = 2;\n    *(undefined1 **)((int)ppuVar8 + 0x34) = (undefined1 *)((int)ppuVar8 + 0x4a);\n    *(undefined1 *)((int)ppuVar8 + 0x44) = 0;\n    *(undefined4 *)((int)ppuVar8 + 0x38) = 0;\n    *(undefined4 *)((int)ppuVar8 + 0x3c) = 1;\n    *(undefined1 *)((int)ppuVar8 + 0x4a) = 1;\n    *(uint **)((int)ppuVar8 + -0x10) = param_4;\n    *(undefined4 *)((int)ppuVar8 + -0x14) = 0x21f20;\n    iVar3 = FUN_00021c86();\n    ppuVar9 = (uint **)((int)ppuVar8 + -4);\n    puVar2 = (undefined1 *)((int)ppuVar8 + -4);\n    if (iVar3 == 0) goto LAB_00021f2b;\n  }" if (parenthesized_expression "(*(char *)((int)ppuVar8 + 0xb) == '\0')" ( (binary_expression "*(char *)((int)ppuVar8 + 0xb) == '\0'" (pointer_expression "*(char *)((int)ppuVar8 + 0xb)" * (cast_expression "(char *)((int)ppuVar8 + 0xb)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar8 + 0xb)" ( (binary_expression "(int)ppuVar8 + 0xb" (cast_expression "(int)ppuVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_00021f2b:\n    ppuVar9 = (uint **)puVar2;\n    if (param_4 < (uint *)param_3[1]) {\n      *(undefined4 *)((int)ppuVar9 + -4) = 0x21f3b;\n      FUN_0001d62a();\n    }\n    if (param_3[2] == 0) {\nLAB_00021f42:\n      param_3[2] = 0;\n      *(undefined1 *)(param_3 + 4) = 0;\n      param_3[1] = param_4;\n      iVar3 = iVar4;\n    }\n    else {\n      pcVar11 = (char *)*param_3;\n      iVar3 = iVar4;\n      if (*pcVar11 == '\0') {\n        pcVar6 = pcVar11 + param_3[2];\n        do {\n          pcVar11 = pcVar11 + 1;\n          if (pcVar6 == pcVar11) goto LAB_00021f42;\n        } while (*pcVar11 == '\0');\n      }\n    }\n  }" { (labeled_statement "LAB_00021f2b:\n    ppuVar9 = (uint **)puVar2;" statement_identifier : (expression_statement "ppuVar9 = (uint **)puVar2;" (assignment_expression "ppuVar9 = (uint **)puVar2" identifier = (cast_expression "(uint **)puVar2" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ;)) (if_statement "if (param_4 < (uint *)param_3[1]) {\n      *(undefined4 *)((int)ppuVar9 + -4) = 0x21f3b;\n      FUN_0001d62a();\n    }" if (parenthesized_expression "(param_4 < (uint *)param_3[1])" ( (binary_expression "param_4 < (uint *)param_3[1]" identifier < (cast_expression "(uint *)param_3[1]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[1]" identifier [ number_literal ]))) )) (compound_statement "{\n      *(undefined4 *)((int)ppuVar9 + -4) = 0x21f3b;\n      FUN_0001d62a();\n    }" { (expression_statement "*(undefined4 *)((int)ppuVar9 + -4) = 0x21f3b;" (assignment_expression "*(undefined4 *)((int)ppuVar9 + -4) = 0x21f3b" (pointer_expression "*(undefined4 *)((int)ppuVar9 + -4)" * (cast_expression "(undefined4 *)((int)ppuVar9 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar9 + -4)" ( (binary_expression "(int)ppuVar9 + -4" (cast_expression "(int)ppuVar9" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0001d62a();" (call_expression "FUN_0001d62a()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (param_3[2] == 0) {\nLAB_00021f42:\n      param_3[2] = 0;\n      *(undefined1 *)(param_3 + 4) = 0;\n      param_3[1] = param_4;\n      iVar3 = iVar4;\n    }\n    else {\n      pcVar11 = (char *)*param_3;\n      iVar3 = iVar4;\n      if (*pcVar11 == '\0') {\n        pcVar6 = pcVar11 + param_3[2];\n        do {\n          pcVar11 = pcVar11 + 1;\n          if (pcVar6 == pcVar11) goto LAB_00021f42;\n        } while (*pcVar11 == '\0');\n      }\n    }" if (parenthesized_expression "(param_3[2] == 0)" ( (binary_expression "param_3[2] == 0" (subscript_expression "param_3[2]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\nLAB_00021f42:\n      param_3[2] = 0;\n      *(undefined1 *)(param_3 + 4) = 0;\n      param_3[1] = param_4;\n      iVar3 = iVar4;\n    }" { (labeled_statement "LAB_00021f42:\n      param_3[2] = 0;" statement_identifier : (expression_statement "param_3[2] = 0;" (assignment_expression "param_3[2] = 0" (subscript_expression "param_3[2]" identifier [ number_literal ]) = number_literal) ;)) (expression_statement "*(undefined1 *)(param_3 + 4) = 0;" (assignment_expression "*(undefined1 *)(param_3 + 4) = 0" (pointer_expression "*(undefined1 *)(param_3 + 4)" * (cast_expression "(undefined1 *)(param_3 + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "param_3[1] = param_4;" (assignment_expression "param_3[1] = param_4" (subscript_expression "param_3[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar3 = iVar4;" (assignment_expression "iVar3 = iVar4" identifier = identifier) ;) }) (else_clause "else {\n      pcVar11 = (char *)*param_3;\n      iVar3 = iVar4;\n      if (*pcVar11 == '\0') {\n        pcVar6 = pcVar11 + param_3[2];\n        do {\n          pcVar11 = pcVar11 + 1;\n          if (pcVar6 == pcVar11) goto LAB_00021f42;\n        } while (*pcVar11 == '\0');\n      }\n    }" else (compound_statement "{\n      pcVar11 = (char *)*param_3;\n      iVar3 = iVar4;\n      if (*pcVar11 == '\0') {\n        pcVar6 = pcVar11 + param_3[2];\n        do {\n          pcVar11 = pcVar11 + 1;\n          if (pcVar6 == pcVar11) goto LAB_00021f42;\n        } while (*pcVar11 == '\0');\n      }\n    }" { (expression_statement "pcVar11 = (char *)*param_3;" (assignment_expression "pcVar11 = (char *)*param_3" identifier = (cast_expression "(char *)*param_3" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_3" * identifier))) ;) (expression_statement "iVar3 = iVar4;" (assignment_expression "iVar3 = iVar4" identifier = identifier) ;) (if_statement "if (*pcVar11 == '\0') {\n        pcVar6 = pcVar11 + param_3[2];\n        do {\n          pcVar11 = pcVar11 + 1;\n          if (pcVar6 == pcVar11) goto LAB_00021f42;\n        } while (*pcVar11 == '\0');\n      }" if (parenthesized_expression "(*pcVar11 == '\0')" ( (binary_expression "*pcVar11 == '\0'" (pointer_expression "*pcVar11" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        pcVar6 = pcVar11 + param_3[2];\n        do {\n          pcVar11 = pcVar11 + 1;\n          if (pcVar6 == pcVar11) goto LAB_00021f42;\n        } while (*pcVar11 == '\0');\n      }" { (expression_statement "pcVar6 = pcVar11 + param_3[2];" (assignment_expression "pcVar6 = pcVar11 + param_3[2]" identifier = (binary_expression "pcVar11 + param_3[2]" identifier + (subscript_expression "param_3[2]" identifier [ number_literal ]))) ;) (do_statement "do {\n          pcVar11 = pcVar11 + 1;\n          if (pcVar6 == pcVar11) goto LAB_00021f42;\n        } while (*pcVar11 == '\0');" do (compound_statement "{\n          pcVar11 = pcVar11 + 1;\n          if (pcVar6 == pcVar11) goto LAB_00021f42;\n        }" { (expression_statement "pcVar11 = pcVar11 + 1;" (assignment_expression "pcVar11 = pcVar11 + 1" identifier = (binary_expression "pcVar11 + 1" identifier + number_literal)) ;) (if_statement "if (pcVar6 == pcVar11) goto LAB_00021f42;" if (parenthesized_expression "(pcVar6 == pcVar11)" ( (binary_expression "pcVar6 == pcVar11" identifier == identifier) )) (goto_statement "goto LAB_00021f42;" goto statement_identifier ;)) }) while (parenthesized_expression "(*pcVar11 == '\0')" ( (binary_expression "*pcVar11 == '\0'" (pointer_expression "*pcVar11" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) ;) })) }))) }) (else_clause "else {\n    *(undefined4 *)((int)ppuVar8 + 0x40) = 2;\n    *(undefined1 **)((int)ppuVar8 + 0x34) = (undefined1 *)((int)ppuVar8 + 0x4a);\n    *(undefined1 *)((int)ppuVar8 + 0x44) = 0;\n    *(undefined4 *)((int)ppuVar8 + 0x38) = 0;\n    *(undefined4 *)((int)ppuVar8 + 0x3c) = 1;\n    *(undefined1 *)((int)ppuVar8 + 0x4a) = 1;\n    *(uint **)((int)ppuVar8 + -0x10) = param_4;\n    *(undefined4 *)((int)ppuVar8 + -0x14) = 0x21f20;\n    iVar3 = FUN_00021c86();\n    ppuVar9 = (uint **)((int)ppuVar8 + -4);\n    puVar2 = (undefined1 *)((int)ppuVar8 + -4);\n    if (iVar3 == 0) goto LAB_00021f2b;\n  }" else (compound_statement "{\n    *(undefined4 *)((int)ppuVar8 + 0x40) = 2;\n    *(undefined1 **)((int)ppuVar8 + 0x34) = (undefined1 *)((int)ppuVar8 + 0x4a);\n    *(undefined1 *)((int)ppuVar8 + 0x44) = 0;\n    *(undefined4 *)((int)ppuVar8 + 0x38) = 0;\n    *(undefined4 *)((int)ppuVar8 + 0x3c) = 1;\n    *(undefined1 *)((int)ppuVar8 + 0x4a) = 1;\n    *(uint **)((int)ppuVar8 + -0x10) = param_4;\n    *(undefined4 *)((int)ppuVar8 + -0x14) = 0x21f20;\n    iVar3 = FUN_00021c86();\n    ppuVar9 = (uint **)((int)ppuVar8 + -4);\n    puVar2 = (undefined1 *)((int)ppuVar8 + -4);\n    if (iVar3 == 0) goto LAB_00021f2b;\n  }" { (expression_statement "*(undefined4 *)((int)ppuVar8 + 0x40) = 2;" (assignment_expression "*(undefined4 *)((int)ppuVar8 + 0x40) = 2" (pointer_expression "*(undefined4 *)((int)ppuVar8 + 0x40)" * (cast_expression "(undefined4 *)((int)ppuVar8 + 0x40)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar8 + 0x40)" ( (binary_expression "(int)ppuVar8 + 0x40" (cast_expression "(int)ppuVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 **)((int)ppuVar8 + 0x34) = (undefined1 *)((int)ppuVar8 + 0x4a);" (assignment_expression "*(undefined1 **)((int)ppuVar8 + 0x34) = (undefined1 *)((int)ppuVar8 + 0x4a)" (pointer_expression "*(undefined1 **)((int)ppuVar8 + 0x34)" * (cast_expression "(undefined1 **)((int)ppuVar8 + 0x34)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppuVar8 + 0x34)" ( (binary_expression "(int)ppuVar8 + 0x34" (cast_expression "(int)ppuVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (cast_expression "(undefined1 *)((int)ppuVar8 + 0x4a)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar8 + 0x4a)" ( (binary_expression "(int)ppuVar8 + 0x4a" (cast_expression "(int)ppuVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*(undefined1 *)((int)ppuVar8 + 0x44) = 0;" (assignment_expression "*(undefined1 *)((int)ppuVar8 + 0x44) = 0" (pointer_expression "*(undefined1 *)((int)ppuVar8 + 0x44)" * (cast_expression "(undefined1 *)((int)ppuVar8 + 0x44)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar8 + 0x44)" ( (binary_expression "(int)ppuVar8 + 0x44" (cast_expression "(int)ppuVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)ppuVar8 + 0x38) = 0;" (assignment_expression "*(undefined4 *)((int)ppuVar8 + 0x38) = 0" (pointer_expression "*(undefined4 *)((int)ppuVar8 + 0x38)" * (cast_expression "(undefined4 *)((int)ppuVar8 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar8 + 0x38)" ( (binary_expression "(int)ppuVar8 + 0x38" (cast_expression "(int)ppuVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)ppuVar8 + 0x3c) = 1;" (assignment_expression "*(undefined4 *)((int)ppuVar8 + 0x3c) = 1" (pointer_expression "*(undefined4 *)((int)ppuVar8 + 0x3c)" * (cast_expression "(undefined4 *)((int)ppuVar8 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar8 + 0x3c)" ( (binary_expression "(int)ppuVar8 + 0x3c" (cast_expression "(int)ppuVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)((int)ppuVar8 + 0x4a) = 1;" (assignment_expression "*(undefined1 *)((int)ppuVar8 + 0x4a) = 1" (pointer_expression "*(undefined1 *)((int)ppuVar8 + 0x4a)" * (cast_expression "(undefined1 *)((int)ppuVar8 + 0x4a)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar8 + 0x4a)" ( (binary_expression "(int)ppuVar8 + 0x4a" (cast_expression "(int)ppuVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(uint **)((int)ppuVar8 + -0x10) = param_4;" (assignment_expression "*(uint **)((int)ppuVar8 + -0x10) = param_4" (pointer_expression "*(uint **)((int)ppuVar8 + -0x10)" * (cast_expression "(uint **)((int)ppuVar8 + -0x10)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppuVar8 + -0x10)" ( (binary_expression "(int)ppuVar8 + -0x10" (cast_expression "(int)ppuVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)ppuVar8 + -0x14) = 0x21f20;" (assignment_expression "*(undefined4 *)((int)ppuVar8 + -0x14) = 0x21f20" (pointer_expression "*(undefined4 *)((int)ppuVar8 + -0x14)" * (cast_expression "(undefined4 *)((int)ppuVar8 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar8 + -0x14)" ( (binary_expression "(int)ppuVar8 + -0x14" (cast_expression "(int)ppuVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "iVar3 = FUN_00021c86();" (assignment_expression "iVar3 = FUN_00021c86()" identifier = (call_expression "FUN_00021c86()" identifier (argument_list "()" ( )))) ;) (expression_statement "ppuVar9 = (uint **)((int)ppuVar8 + -4);" (assignment_expression "ppuVar9 = (uint **)((int)ppuVar8 + -4)" identifier = (cast_expression "(uint **)((int)ppuVar8 + -4)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppuVar8 + -4)" ( (binary_expression "(int)ppuVar8 + -4" (cast_expression "(int)ppuVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "puVar2 = (undefined1 *)((int)ppuVar8 + -4);" (assignment_expression "puVar2 = (undefined1 *)((int)ppuVar8 + -4)" identifier = (cast_expression "(undefined1 *)((int)ppuVar8 + -4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar8 + -4)" ( (binary_expression "(int)ppuVar8 + -4" (cast_expression "(int)ppuVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (iVar3 == 0) goto LAB_00021f2b;" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00021f2b;" goto statement_identifier ;)) }))) (labeled_statement "LAB_00021f50:\n  *(undefined4 *)((int)ppuVar9 + -0x10) = *(undefined4 *)((int)ppuVar9 + 0x20);" statement_identifier : (expression_statement "*(undefined4 *)((int)ppuVar9 + -0x10) = *(undefined4 *)((int)ppuVar9 + 0x20);" (assignment_expression "*(undefined4 *)((int)ppuVar9 + -0x10) = *(undefined4 *)((int)ppuVar9 + 0x20)" (pointer_expression "*(undefined4 *)((int)ppuVar9 + -0x10)" * (cast_expression "(undefined4 *)((int)ppuVar9 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar9 + -0x10)" ( (binary_expression "(int)ppuVar9 + -0x10" (cast_expression "(int)ppuVar9" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*(undefined4 *)((int)ppuVar9 + 0x20)" * (cast_expression "(undefined4 *)((int)ppuVar9 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar9 + 0x20)" ( (binary_expression "(int)ppuVar9 + 0x20" (cast_expression "(int)ppuVar9" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;)) (expression_statement "*(undefined4 *)((int)ppuVar9 + -0x14) = 0x21f60;" (assignment_expression "*(undefined4 *)((int)ppuVar9 + -0x14) = 0x21f60" (pointer_expression "*(undefined4 *)((int)ppuVar9 + -0x14)" * (cast_expression "(undefined4 *)((int)ppuVar9 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppuVar9 + -0x14)" ( (binary_expression "(int)ppuVar9 + -0x14" (cast_expression "(int)ppuVar9" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "free(*(void **)((int)ppuVar9 + -0x10));" (call_expression "free(*(void **)((int)ppuVar9 + -0x10))" identifier (argument_list "(*(void **)((int)ppuVar9 + -0x10))" ( (pointer_expression "*(void **)((int)ppuVar9 + -0x10)" * (cast_expression "(void **)((int)ppuVar9 + -0x10)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppuVar9 + -0x10)" ( (binary_expression "(int)ppuVar9 + -0x10" (cast_expression "(int)ppuVar9" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ;) (labeled_statement "LAB_00021f63:\n  if (ppuVar9[0x13] != *(uint **)(in_GS_OFFSET + 0x14)) {\n                    \n    ppuVar9[0xffffffff] = (uint *)0x21f81;\n    FUN_00017e10();\n  }" statement_identifier : (if_statement "if (ppuVar9[0x13] != *(uint **)(in_GS_OFFSET + 0x14)) {\n                    \n    ppuVar9[0xffffffff] = (uint *)0x21f81;\n    FUN_00017e10();\n  }" if (parenthesized_expression "(ppuVar9[0x13] != *(uint **)(in_GS_OFFSET + 0x14))" ( (binary_expression "ppuVar9[0x13] != *(uint **)(in_GS_OFFSET + 0x14)" (subscript_expression "ppuVar9[0x13]" identifier [ number_literal ]) != (pointer_expression "*(uint **)(in_GS_OFFSET + 0x14)" * (cast_expression "(uint **)(in_GS_OFFSET + 0x14)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    \n    ppuVar9[0xffffffff] = (uint *)0x21f81;\n    FUN_00017e10();\n  }" { (expression_statement "ppuVar9[0xffffffff] = (uint *)0x21f81;" (assignment_expression "ppuVar9[0xffffffff] = (uint *)0x21f81" (subscript_expression "ppuVar9[0xffffffff]" identifier [ number_literal ]) = (cast_expression "(uint *)0x21f81" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "FUN_00017e10();" (call_expression "FUN_00017e10()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return iVar3;" return identifier ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * (array_declarator IDENT [ LIT ])) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE (pointer_declarator * (array_declarator IDENT [ LIT ])) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (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))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) }) while (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' escape_sequence ')) )) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (string_literal " string_content ") )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) && (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) == (char_literal ' escape_sequence ')) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) < LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ))) < IDENT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ))) < IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )))) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) }))) })) (while_statement while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) >> LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression (parenthesized_expression ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) )) [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression (parenthesized_expression ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) )) [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression (parenthesized_expression ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) )) [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT)) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (expression_statement (assignment_expression (subscript_expression (parenthesized_expression ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) )) [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression (subscript_expression (parenthesized_expression ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) )) [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression (parenthesized_expression ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) )) [ LIT ])) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) != LIT) )) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (subscript_expression IDENT [ LIT ]))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) }) while (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' escape_sequence ')) )) ;) })) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (return_statement return IDENT ;) })))
(function_definition "int __regparm3 FUN_00021cde(int param_1,undefined4 *param_2,undefined4 *param_3,uint *param_4)\n\n{\n  uint *puVar1;\n  undefined1 *puVar2;\n  int iVar3;\n  int iVar4;\n  uint uVar5;\n  char *pcVar6;\n  uint **ppuVar7;\n  uint **ppuVar8;\n  uint **ppuVar9;\n  uint *puVar10;\n  char *pcVar11;\n  int in_GS_OFFSET;\n  char cStackY_81;\n  uint *puStackY_80;\n  uint *local_70 [3];\n  char cStack_61;\n  undefined **local_60;\n  uint *local_54 [2];\n  uint local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  uint local_40;\n  undefined1 local_3c;\n  undefined1 *local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined1 local_28;\n  undefined1 local_22 [2];\n  undefined4 local_20;\n  \n  ppuVar9 = local_70 + 1;\n  local_70[0] = (uint *)0x21cea;\n  local_60 = &__DT_PLTGOT;\n  local_20 = *(undefined4 *)(in_GS_OFFSET + 0x14);\n  iVar3 = param_2[1];\n  if (iVar3 != 0) {\n    pcVar11 = (char *)*param_2;\n    if (*pcVar11 == '\0') {\n      pcVar6 = pcVar11 + iVar3;\n      do {\n        pcVar11 = pcVar11 + 1;\n        if (pcVar6 == pcVar11) goto LAB_00021d4d;\n      } while (*pcVar11 == '\0');\n    }\n    iVar3 = FUN_0001e002(&DAT_000ccedf,"not an integer");\n    ppuVar9 = local_70 + 1;\n    goto LAB_00021f63;\n  }\nLAB_00021d4d:\n  if (param_2[2] == 0) {\n    *(undefined1 *)(param_3 + 4) = 0;\n    param_3[1] = 0;\n    param_3[2] = 1;\n    *(undefined1 *)*param_3 = 1;\n    ppuVar9 = local_70 + 1;\n    iVar3 = 0;\n    goto LAB_00021f63;\n  }\n  if (*(int *)(param_1 + 8) == 0) {\n    param_3[2] = 0;\n    *(undefined1 *)(param_3 + 4) = 0;\n    param_3[1] = param_4;\n    ppuVar9 = local_70 + 1;\n    iVar3 = 0;\n    goto LAB_00021f63;\n  }\n  cStack_61 = *(char *)(param_2 + 4);\n  if (((param_2[2] == 1) && (iVar3 == 0)) && (*(char *)*param_2 == '\x01')) {\n    if (cStack_61 == '\0') {\n      local_70[0] = (uint *)0x21db5;\n      FUN_0001e38b();\n      ppuVar9 = local_70 + 1;\n      iVar3 = 0;\n    }\n    else {\n      local_2c = 2;\n      local_38 = local_22;\n      local_28 = 0;\n      local_34 = 0;\n      local_30 = 1;\n      local_22[0] = 1;\n      iVar3 = FUN_00021c86(param_4);\n      ppuVar9 = local_70;\n    }\n    goto LAB_00021f63;\n  }\n  local_70[0] = (uint *)0x21dc5;\n  iVar4 = FUN_0001e0f3();\n  iVar3 = iVar4;\n  if (iVar4 != 0) goto LAB_00021f63;\n  local_70[1] = *(uint **)(param_1 + 8);\n  if (local_70[1] < 0x10) {\n    local_70[1] = (uint *)0x10;\n  }\n  local_70[0] = (uint *)0x21de5;\n  local_4c = FUN_00019b1c();\n  local_40 = (uint)local_70[1];\n  local_48 = 0;\n  local_44 = 0;\n  local_3c = 0;\n  local_70[1] = (uint *)(local_54 + 2);\n  local_70[0] = (uint *)0x21e13;\n  FUN_0001e38b();\n  puVar10 = *(uint **)(param_1 + 4);\n  ppuVar8 = local_70 + 1;\n  if (cStack_61 == '\0') {\n    if (puVar10 < param_4) {\n      ppuVar8 = local_70 + 1;\n      if ((uint *)((int)puVar10 * (int)local_54[1]) < param_4) goto LAB_00021e32;\n    }\n    else {\n      ppuVar8 = local_70 + 1;\n      param_4 = puVar10;\n      if ((uint *)((int)puVar10 * (int)local_54[1]) < puVar10) {\nLAB_00021e32:\n        param_4 = (uint *)((int)puVar10 * (int)local_54[1]);\n        ppuVar8 = local_70 + 1;\n      }\n    }\n  }\n  while (((uint)local_54[1] & 1) == 0) {\n    puVar10 = (uint *)((int)puVar10 * 2);\n    ppuVar8[0xfffffffc] = puVar10;\n    ppuVar8[0xfffffffb] = (uint *)0x21e4b;\n    iVar3 = FUN_00021bb2();\n    ppuVar9 = ppuVar8 + 0xffffffff;\n    if (iVar3 != 0) goto LAB_00021f50;\n    local_54[1] = (uint *)((uint)ppuVar8[6] >> 1);\n    ppuVar8[6] = local_54[1];\n    ppuVar8 = ppuVar8 + 0xffffffff;\n  }\n  ppuVar8[0xffffffff] = (uint *)0x21e80;\n  FUN_0001e38b();\n  puVar1 = ppuVar8[7];\n  ppuVar8[7] = (uint *)((uint)puVar1 >> 1);\n  if ((uint *)((uint)puVar1 >> 1) != (uint *)0x0) {\n    ppuVar8[1] = puVar10;\n    ppuVar7 = ppuVar8;\n    do {\n      puVar10 = (uint *)((int)puVar10 * 2);\n      ((int *)ppuVar7)[-4] = (int)puVar10;\n      ((int *)ppuVar7)[-5] = 0x21ea3;\n      iVar3 = FUN_00021bb2();\n      ppuVar9 = (uint **)((int *)ppuVar7 + -1);\n      ppuVar8 = (uint **)((int *)ppuVar7 + -1);\n      if (iVar3 != 0) goto LAB_00021f50;\n      uVar5 = ((int *)ppuVar7)[6];\n      if ((uVar5 & 1) != 0) {\n        *ppuVar7 = (uint *)((int)*ppuVar7 + (int)puVar10);\n        ((int *)ppuVar7)[-5] = (int)*ppuVar7;\n        ((int *)ppuVar7)[-6] = 0x21ecb;\n        iVar3 = FUN_00021bb2();\n        ppuVar9 = (uint **)((int *)ppuVar7 + -2);\n        ppuVar8 = (uint **)((int *)ppuVar7 + -2);\n        if (iVar3 != 0) goto LAB_00021f50;\n        uVar5 = ((int *)ppuVar7)[5];\n      }\n      *(uint *)((int)ppuVar8 + 0x1c) = uVar5 >> 1;\n      ppuVar7 = ppuVar8;\n    } while (uVar5 >> 1 != 0);\n  }\n  puVar2 = (undefined1 *)ppuVar8;\n  if (*(char *)((int)ppuVar8 + 0xb) == '\0') {\nLAB_00021f2b:\n    ppuVar9 = (uint **)puVar2;\n    if (param_4 < (uint *)param_3[1]) {\n      *(undefined4 *)((int)ppuVar9 + -4) = 0x21f3b;\n      FUN_0001d62a();\n    }\n    if (param_3[2] == 0) {\nLAB_00021f42:\n      param_3[2] = 0;\n      *(undefined1 *)(param_3 + 4) = 0;\n      param_3[1] = param_4;\n      iVar3 = iVar4;\n    }\n    else {\n      pcVar11 = (char *)*param_3;\n      iVar3 = iVar4;\n      if (*pcVar11 == '\0') {\n        pcVar6 = pcVar11 + param_3[2];\n        do {\n          pcVar11 = pcVar11 + 1;\n          if (pcVar6 == pcVar11) goto LAB_00021f42;\n        } while (*pcVar11 == '\0');\n      }\n    }\n  }\n  else {\n    *(undefined4 *)((int)ppuVar8 + 0x40) = 2;\n    *(undefined1 **)((int)ppuVar8 + 0x34) = (undefined1 *)((int)ppuVar8 + 0x4a);\n    *(undefined1 *)((int)ppuVar8 + 0x44) = 0;\n    *(undefined4 *)((int)ppuVar8 + 0x38) = 0;\n    *(undefined4 *)((int)ppuVar8 + 0x3c) = 1;\n    *(undefined1 *)((int)ppuVar8 + 0x4a) = 1;\n    *(uint **)((int)ppuVar8 + -0x10) = param_4;\n    *(undefined4 *)((int)ppuVar8 + -0x14) = 0x21f20;\n    iVar3 = FUN_00021c86();\n    ppuVar9 = (uint **)((int)ppuVar8 + -4);\n    puVar2 = (undefined1 *)((int)ppuVar8 + -4);\n    if (iVar3 == 0) goto LAB_00021f2b;\n  }\nLAB_00021f50:\n  *(undefined4 *)((int)ppuVar9 + -0x10) = *(undefined4 *)((int)ppuVar9 + 0x20);\n  *(undefined4 *)((int)ppuVar9 + -0x14) = 0x21f60;\n  free(*(void **)((int)ppuVar9 + -0x10));\nLAB_00021f63:\n  if (ppuVar9[0x13] != *(uint **)(in_GS_OFFSET + 0x14)) {\n                    \n    ppuVar9[0xffffffff] = (uint *)0x21f81;\n    FUN_00017e10();\n  }\n  return iVar3;\n}" (primitive_type "int") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_00021cde(int param_1,undefined4 *param_2,undefined4 *param_3,uint *param_4)" (identifier "FUN_00021cde") (parameter_list "(int param_1,undefined4 *param_2,undefined4 *param_3,uint *param_4)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 *param_2" (type_identifier "undefined4") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "undefined4 *param_3" (type_identifier "undefined4") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "uint *param_4" (type_identifier "uint") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) () ")"))) (compound_statement "{\n  uint *puVar1;\n  undefined1 *puVar2;\n  int iVar3;\n  int iVar4;\n  uint uVar5;\n  char *pcVar6;\n  uint **ppuVar7;\n  uint **ppuVar8;\n  uint **ppuVar9;\n  uint *puVar10;\n  char *pcVar11;\n  int in_GS_OFFSET;\n  char cStackY_81;\n  uint *puStackY_80;\n  uint *local_70 [3];\n  char cStack_61;\n  undefined **local_60;\n  uint *local_54 [2];\n  uint local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  uint local_40;\n  undefined1 local_3c;\n  undefined1 *local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined1 local_28;\n  undefined1 local_22 [2];\n  undefined4 local_20;\n  \n  ppuVar9 = local_70 + 1;\n  local_70[0] = (uint *)0x21cea;\n  local_60 = &__DT_PLTGOT;\n  local_20 = *(undefined4 *)(in_GS_OFFSET + 0x14);\n  iVar3 = param_2[1];\n  if (iVar3 != 0) {\n    pcVar11 = (char *)*param_2;\n    if (*pcVar11 == '\0') {\n      pcVar6 = pcVar11 + iVar3;\n      do {\n        pcVar11 = pcVar11 + 1;\n        if (pcVar6 == pcVar11) goto LAB_00021d4d;\n      } while (*pcVar11 == '\0');\n    }\n    iVar3 = FUN_0001e002(&DAT_000ccedf,"not an integer");\n    ppuVar9 = local_70 + 1;\n    goto LAB_00021f63;\n  }\nLAB_00021d4d:\n  if (param_2[2] == 0) {\n    *(undefined1 *)(param_3 + 4) = 0;\n    param_3[1] = 0;\n    param_3[2] = 1;\n    *(undefined1 *)*param_3 = 1;\n    ppuVar9 = local_70 + 1;\n    iVar3 = 0;\n    goto LAB_00021f63;\n  }\n  if (*(int *)(param_1 + 8) == 0) {\n    param_3[2] = 0;\n    *(undefined1 *)(param_3 + 4) = 0;\n    param_3[1] = param_4;\n    ppuVar9 = local_70 + 1;\n    iVar3 = 0;\n    goto LAB_00021f63;\n  }\n  cStack_61 = *(char *)(param_2 + 4);\n  if (((param_2[2] == 1) && (iVar3 == 0)) && (*(char *)*param_2 == '\x01')) {\n    if (cStack_61 == '\0') {\n      local_70[0] = (uint *)0x21db5;\n      FUN_0001e38b();\n      ppuVar9 = local_70 + 1;\n      iVar3 = 0;\n    }\n    else {\n      local_2c = 2;\n      local_38 = local_22;\n      local_28 = 0;\n      local_34 = 0;\n      local_30 = 1;\n      local_22[0] = 1;\n      iVar3 = FUN_00021c86(param_4);\n      ppuVar9 = local_70;\n    }\n    goto LAB_00021f63;\n  }\n  local_70[0] = (uint *)0x21dc5;\n  iVar4 = FUN_0001e0f3();\n  iVar3 = iVar4;\n  if (iVar4 != 0) goto LAB_00021f63;\n  local_70[1] = *(uint **)(param_1 + 8);\n  if (local_70[1] < 0x10) {\n    local_70[1] = (uint *)0x10;\n  }\n  local_70[0] = (uint *)0x21de5;\n  local_4c = FUN_00019b1c();\n  local_40 = (uint)local_70[1];\n  local_48 = 0;\n  local_44 = 0;\n  local_3c = 0;\n  local_70[1] = (uint *)(local_54 + 2);\n  local_70[0] = (uint *)0x21e13;\n  FUN_0001e38b();\n  puVar10 = *(uint **)(param_1 + 4);\n  ppuVar8 = local_70 + 1;\n  if (cStack_61 == '\0') {\n    if (puVar10 < param_4) {\n      ppuVar8 = local_70 + 1;\n      if ((uint *)((int)puVar10 * (int)local_54[1]) < param_4) goto LAB_00021e32;\n    }\n    else {\n      ppuVar8 = local_70 + 1;\n      param_4 = puVar10;\n      if ((uint *)((int)puVar10 * (int)local_54[1]) < puVar10) {\nLAB_00021e32:\n        param_4 = (uint *)((int)puVar10 * (int)local_54[1]);\n        ppuVar8 = local_70 + 1;\n      }\n    }\n  }\n  while (((uint)local_54[1] & 1) == 0) {\n    puVar10 = (uint *)((int)puVar10 * 2);\n    ppuVar8[0xfffffffc] = puVar10;\n    ppuVar8[0xfffffffb] = (uint *)0x21e4b;\n    iVar3 = FUN_00021bb2();\n    ppuVar9 = ppuVar8 + 0xffffffff;\n    if (iVar3 != 0) goto LAB_00021f50;\n    local_54[1] = (uint *)((uint)ppuVar8[6] >> 1);\n    ppuVar8[6] = local_54[1];\n    ppuVar8 = ppuVar8 + 0xffffffff;\n  }\n  ppuVar8[0xffffffff] = (uint *)0x21e80;\n  FUN_0001e38b();\n  puVar1 = ppuVar8[7];\n  ppuVar8[7] = (uint *)((uint)puVar1 >> 1);\n  if ((uint *)((uint)puVar1 >> 1) != (uint *)0x0) {\n    ppuVar8[1] = puVar10;\n    ppuVar7 = ppuVar8;\n    do {\n      puVar10 = (uint *)((int)puVar10 * 2);\n      ((int *)ppuVar7)[-4] = (int)puVar10;\n      ((int *)ppuVar7)[-5] = 0x21ea3;\n      iVar3 = FUN_00021bb2();\n      ppuVar9 = (uint **)((int *)ppuVar7 + -1);\n      ppuVar8 = (uint **)((int *)ppuVar7 + -1);\n      if (iVar3 != 0) goto LAB_00021f50;\n      uVar5 = ((int *)ppuVar7)[6];\n      if ((uVar5 & 1) != 0) {\n        *ppuVar7 = (uint *)((int)*ppuVar7 + (int)puVar10);\n        ((int *)ppuVar7)[-5] = (int)*ppuVar7;\n        ((int *)ppuVar7)[-6] = 0x21ecb;\n        iVar3 = FUN_00021bb2();\n        ppuVar9 = (uint **)((int *)ppuVar7 + -2);\n        ppuVar8 = (uint **)((int *)ppuVar7 + -2);\n        if (iVar3 != 0) goto LAB_00021f50;\n        uVar5 = ((int *)ppuVar7)[5];\n      }\n      *(uint *)((int)ppuVar8 + 0x1c) = uVar5 >> 1;\n      ppuVar7 = ppuVar8;\n    } while (uVar5 >> 1 != 0);\n  }\n  puVar2 = (undefined1 *)ppuVar8;\n  if (*(char *)((int)ppuVar8 + 0xb) == '\0') {\nLAB_00021f2b:\n    ppuVar9 = (uint **)puVar2;\n    if (param_4 < (uint *)param_3[1]) {\n      *(undefined4 *)((int)ppuVar9 + -4) = 0x21f3b;\n      FUN_0001d62a();\n    }\n    if (param_3[2] == 0) {\nLAB_00021f42:\n      param_3[2] = 0;\n      *(undefined1 *)(param_3 + 4) = 0;\n      param_3[1] = param_4;\n      iVar3 = iVar4;\n    }\n    else {\n      pcVar11 = (char *)*param_3;\n      iVar3 = iVar4;\n      if (*pcVar11 == '\0') {\n        pcVar6 = pcVar11 + param_3[2];\n        do {\n          pcVar11 = pcVar11 + 1;\n          if (pcVar6 == pcVar11) goto LAB_00021f42;\n        } while (*pcVar11 == '\0');\n      }\n    }\n  }\n  else {\n    *(undefined4 *)((int)ppuVar8 + 0x40) = 2;\n    *(undefined1 **)((int)ppuVar8 + 0x34) = (undefined1 *)((int)ppuVar8 + 0x4a);\n    *(undefined1 *)((int)ppuVar8 + 0x44) = 0;\n    *(undefined4 *)((int)ppuVar8 + 0x38) = 0;\n    *(undefined4 *)((int)ppuVar8 + 0x3c) = 1;\n    *(undefined1 *)((int)ppuVar8 + 0x4a) = 1;\n    *(uint **)((int)ppuVar8 + -0x10) = param_4;\n    *(undefined4 *)((int)ppuVar8 + -0x14) = 0x21f20;\n    iVar3 = FUN_00021c86();\n    ppuVar9 = (uint **)((int)ppuVar8 + -4);\n    puVar2 = (undefined1 *)((int)ppuVar8 + -4);\n    if (iVar3 == 0) goto LAB_00021f2b;\n  }\nLAB_00021f50:\n  *(undefined4 *)((int)ppuVar9 + -0x10) = *(undefined4 *)((int)ppuVar9 + 0x20);\n  *(undefined4 *)((int)ppuVar9 + -0x14) = 0x21f60;\n  free(*(void **)((int)ppuVar9 + -0x10));\nLAB_00021f63:\n  if (ppuVar9[0x13] != *(uint **)(in_GS_OFFSET + 0x14)) {\n                    \n    ppuVar9[0xffffffff] = (uint *)0x21f81;\n    FUN_00017e10();\n  }\n  return iVar3;\n}" ({ "{") (declaration "uint *puVar1;" (type_identifier "uint") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "undefined1 *puVar2;" (type_identifier "undefined1") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "char *pcVar6;" (primitive_type "char") (pointer_declarator "*pcVar6" (* "*") (identifier "pcVar6")) (; ";")) (declaration "uint **ppuVar7;" (type_identifier "uint") (pointer_declarator "**ppuVar7" (* "*") (pointer_declarator "*ppuVar7" (* "*") (identifier "ppuVar7"))) (; ";")) (declaration "uint **ppuVar8;" (type_identifier "uint") (pointer_declarator "**ppuVar8" (* "*") (pointer_declarator "*ppuVar8" (* "*") (identifier "ppuVar8"))) (; ";")) (declaration "uint **ppuVar9;" (type_identifier "uint") (pointer_declarator "**ppuVar9" (* "*") (pointer_declarator "*ppuVar9" (* "*") (identifier "ppuVar9"))) (; ";")) (declaration "uint *puVar10;" (type_identifier "uint") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "char *pcVar11;" (primitive_type "char") (pointer_declarator "*pcVar11" (* "*") (identifier "pcVar11")) (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "char cStackY_81;" (primitive_type "char") (identifier "cStackY_81") (; ";")) (declaration "uint *puStackY_80;" (type_identifier "uint") (pointer_declarator "*puStackY_80" (* "*") (identifier "puStackY_80")) (; ";")) (declaration "uint *local_70 [3];" (type_identifier "uint") (pointer_declarator "*local_70 [3]" (* "*") (array_declarator "local_70 [3]" (identifier "local_70") ([ "[") (number_literal "3") (] "]"))) (; ";")) (declaration "char cStack_61;" (primitive_type "char") (identifier "cStack_61") (; ";")) (declaration "undefined **local_60;" (type_identifier "undefined") (pointer_declarator "**local_60" (* "*") (pointer_declarator "*local_60" (* "*") (identifier "local_60"))) (; ";")) (declaration "uint *local_54 [2];" (type_identifier "uint") (pointer_declarator "*local_54 [2]" (* "*") (array_declarator "local_54 [2]" (identifier "local_54") ([ "[") (number_literal "2") (] "]"))) (; ";")) (declaration "uint local_4c;" (type_identifier "uint") (identifier "local_4c") (; ";")) (declaration "undefined4 local_48;" (type_identifier "undefined4") (identifier "local_48") (; ";")) (declaration "undefined4 local_44;" (type_identifier "undefined4") (identifier "local_44") (; ";")) (declaration "uint local_40;" (type_identifier "uint") (identifier "local_40") (; ";")) (declaration "undefined1 local_3c;" (type_identifier "undefined1") (identifier "local_3c") (; ";")) (declaration "undefined1 *local_38;" (type_identifier "undefined1") (pointer_declarator "*local_38" (* "*") (identifier "local_38")) (; ";")) (declaration "undefined4 local_34;" (type_identifier "undefined4") (identifier "local_34") (; ";")) (declaration "undefined4 local_30;" (type_identifier "undefined4") (identifier "local_30") (; ";")) (declaration "undefined4 local_2c;" (type_identifier "undefined4") (identifier "local_2c") (; ";")) (declaration "undefined1 local_28;" (type_identifier "undefined1") (identifier "local_28") (; ";")) (declaration "undefined1 local_22 [2];" (type_identifier "undefined1") (array_declarator "local_22 [2]" (identifier "local_22") ([ "[") (number_literal "2") (] "]")) (; ";")) (declaration "undefined4 local_20;" (type_identifier "undefined4") (identifier "local_20") (; ";")) (expression_statement "ppuVar9 = local_70 + 1;" (assignment_expression "ppuVar9 = local_70 + 1" (identifier "ppuVar9") (= "=") (binary_expression "local_70 + 1" (identifier "local_70") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_70[0] = (uint *)0x21cea;" (assignment_expression "local_70[0] = (uint *)0x21cea" (subscript_expression "local_70[0]" (identifier "local_70") ([ "[") (number_literal "0") (] "]")) (= "=") (cast_expression "(uint *)0x21cea" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x21cea"))) (; ";")) (expression_statement "local_60 = &__DT_PLTGOT;" (assignment_expression "local_60 = &__DT_PLTGOT" (identifier "local_60") (= "=") (pointer_expression "&__DT_PLTGOT" (& "&") (identifier "__DT_PLTGOT"))) (; ";")) (expression_statement "local_20 = *(undefined4 *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(undefined4 *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (= "=") (pointer_expression "*(undefined4 *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(undefined4 *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "iVar3 = param_2[1];" (assignment_expression "iVar3 = param_2[1]" (identifier "iVar3") (= "=") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if (iVar3 != 0) {\n    pcVar11 = (char *)*param_2;\n    if (*pcVar11 == '\0') {\n      pcVar6 = pcVar11 + iVar3;\n      do {\n        pcVar11 = pcVar11 + 1;\n        if (pcVar6 == pcVar11) goto LAB_00021d4d;\n      } while (*pcVar11 == '\0');\n    }\n    iVar3 = FUN_0001e002(&DAT_000ccedf,"not an integer");\n    ppuVar9 = local_70 + 1;\n    goto LAB_00021f63;\n  }" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    pcVar11 = (char *)*param_2;\n    if (*pcVar11 == '\0') {\n      pcVar6 = pcVar11 + iVar3;\n      do {\n        pcVar11 = pcVar11 + 1;\n        if (pcVar6 == pcVar11) goto LAB_00021d4d;\n      } while (*pcVar11 == '\0');\n    }\n    iVar3 = FUN_0001e002(&DAT_000ccedf,"not an integer");\n    ppuVar9 = local_70 + 1;\n    goto LAB_00021f63;\n  }" ({ "{") (expression_statement "pcVar11 = (char *)*param_2;" (assignment_expression "pcVar11 = (char *)*param_2" (identifier "pcVar11") (= "=") (cast_expression "(char *)*param_2" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (if_statement "if (*pcVar11 == '\0') {\n      pcVar6 = pcVar11 + iVar3;\n      do {\n        pcVar11 = pcVar11 + 1;\n        if (pcVar6 == pcVar11) goto LAB_00021d4d;\n      } while (*pcVar11 == '\0');\n    }" (if "if") (parenthesized_expression "(*pcVar11 == '\0')" (( "(") (binary_expression "*pcVar11 == '\0'" (pointer_expression "*pcVar11" (* "*") (identifier "pcVar11")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      pcVar6 = pcVar11 + iVar3;\n      do {\n        pcVar11 = pcVar11 + 1;\n        if (pcVar6 == pcVar11) goto LAB_00021d4d;\n      } while (*pcVar11 == '\0');\n    }" ({ "{") (expression_statement "pcVar6 = pcVar11 + iVar3;" (assignment_expression "pcVar6 = pcVar11 + iVar3" (identifier "pcVar6") (= "=") (binary_expression "pcVar11 + iVar3" (identifier "pcVar11") (+ "+") (identifier "iVar3"))) (; ";")) (do_statement "do {\n        pcVar11 = pcVar11 + 1;\n        if (pcVar6 == pcVar11) goto LAB_00021d4d;\n      } while (*pcVar11 == '\0');" (do "do") (compound_statement "{\n        pcVar11 = pcVar11 + 1;\n        if (pcVar6 == pcVar11) goto LAB_00021d4d;\n      }" ({ "{") (expression_statement "pcVar11 = pcVar11 + 1;" (assignment_expression "pcVar11 = pcVar11 + 1" (identifier "pcVar11") (= "=") (binary_expression "pcVar11 + 1" (identifier "pcVar11") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (pcVar6 == pcVar11) goto LAB_00021d4d;" (if "if") (parenthesized_expression "(pcVar6 == pcVar11)" (( "(") (binary_expression "pcVar6 == pcVar11" (identifier "pcVar6") (== "==") (identifier "pcVar11")) () ")")) (goto_statement "goto LAB_00021d4d;" (goto "goto") (statement_identifier "LAB_00021d4d") (; ";"))) (} "}")) (while "while") (parenthesized_expression "(*pcVar11 == '\0')" (( "(") (binary_expression "*pcVar11 == '\0'" (pointer_expression "*pcVar11" (* "*") (identifier "pcVar11")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (} "}"))) (expression_statement "iVar3 = FUN_0001e002(&DAT_000ccedf,"not an integer");" (assignment_expression "iVar3 = FUN_0001e002(&DAT_000ccedf,"not an integer")" (identifier "iVar3") (= "=") (call_expression "FUN_0001e002(&DAT_000ccedf,"not an integer")" (identifier "FUN_0001e002") (argument_list "(&DAT_000ccedf,"not an integer")" (( "(") (pointer_expression "&DAT_000ccedf" (& "&") (identifier "DAT_000ccedf")) (, ",") (string_literal ""not an integer"" (" """) (string_content "not an integer") (" """)) () ")")))) (; ";")) (expression_statement "ppuVar9 = local_70 + 1;" (assignment_expression "ppuVar9 = local_70 + 1" (identifier "ppuVar9") (= "=") (binary_expression "local_70 + 1" (identifier "local_70") (+ "+") (number_literal "1"))) (; ";")) (goto_statement "goto LAB_00021f63;" (goto "goto") (statement_identifier "LAB_00021f63") (; ";")) (} "}"))) (labeled_statement "LAB_00021d4d:\n  if (param_2[2] == 0) {\n    *(undefined1 *)(param_3 + 4) = 0;\n    param_3[1] = 0;\n    param_3[2] = 1;\n    *(undefined1 *)*param_3 = 1;\n    ppuVar9 = local_70 + 1;\n    iVar3 = 0;\n    goto LAB_00021f63;\n  }" (statement_identifier "LAB_00021d4d") (: ":") (if_statement "if (param_2[2] == 0) {\n    *(undefined1 *)(param_3 + 4) = 0;\n    param_3[1] = 0;\n    param_3[2] = 1;\n    *(undefined1 *)*param_3 = 1;\n    ppuVar9 = local_70 + 1;\n    iVar3 = 0;\n    goto LAB_00021f63;\n  }" (if "if") (parenthesized_expression "(param_2[2] == 0)" (( "(") (binary_expression "param_2[2] == 0" (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    *(undefined1 *)(param_3 + 4) = 0;\n    param_3[1] = 0;\n    param_3[2] = 1;\n    *(undefined1 *)*param_3 = 1;\n    ppuVar9 = local_70 + 1;\n    iVar3 = 0;\n    goto LAB_00021f63;\n  }" ({ "{") (expression_statement "*(undefined1 *)(param_3 + 4) = 0;" (assignment_expression "*(undefined1 *)(param_3 + 4) = 0" (pointer_expression "*(undefined1 *)(param_3 + 4)" (* "*") (cast_expression "(undefined1 *)(param_3 + 4)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 4)" (( "(") (binary_expression "param_3 + 4" (identifier "param_3") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_3[1] = 0;" (assignment_expression "param_3[1] = 0" (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_3[2] = 1;" (assignment_expression "param_3[2] = 1" (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(undefined1 *)*param_3 = 1;" (assignment_expression "*(undefined1 *)*param_3 = 1" (pointer_expression "*(undefined1 *)*param_3" (* "*") (cast_expression "(undefined1 *)*param_3" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_3" (* "*") (identifier "param_3")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "ppuVar9 = local_70 + 1;" (assignment_expression "ppuVar9 = local_70 + 1" (identifier "ppuVar9") (= "=") (binary_expression "local_70 + 1" (identifier "local_70") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" (identifier "iVar3") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_00021f63;" (goto "goto") (statement_identifier "LAB_00021f63") (; ";")) (} "}")))) (if_statement "if (*(int *)(param_1 + 8) == 0) {\n    param_3[2] = 0;\n    *(undefined1 *)(param_3 + 4) = 0;\n    param_3[1] = param_4;\n    ppuVar9 = local_70 + 1;\n    iVar3 = 0;\n    goto LAB_00021f63;\n  }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 8) == 0)" (( "(") (binary_expression "*(int *)(param_1 + 8) == 0" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    param_3[2] = 0;\n    *(undefined1 *)(param_3 + 4) = 0;\n    param_3[1] = param_4;\n    ppuVar9 = local_70 + 1;\n    iVar3 = 0;\n    goto LAB_00021f63;\n  }" ({ "{") (expression_statement "param_3[2] = 0;" (assignment_expression "param_3[2] = 0" (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)(param_3 + 4) = 0;" (assignment_expression "*(undefined1 *)(param_3 + 4) = 0" (pointer_expression "*(undefined1 *)(param_3 + 4)" (* "*") (cast_expression "(undefined1 *)(param_3 + 4)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 4)" (( "(") (binary_expression "param_3 + 4" (identifier "param_3") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_3[1] = param_4;" (assignment_expression "param_3[1] = param_4" (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "param_4")) (; ";")) (expression_statement "ppuVar9 = local_70 + 1;" (assignment_expression "ppuVar9 = local_70 + 1" (identifier "ppuVar9") (= "=") (binary_expression "local_70 + 1" (identifier "local_70") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" (identifier "iVar3") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_00021f63;" (goto "goto") (statement_identifier "LAB_00021f63") (; ";")) (} "}"))) (expression_statement "cStack_61 = *(char *)(param_2 + 4);" (assignment_expression "cStack_61 = *(char *)(param_2 + 4)" (identifier "cStack_61") (= "=") (pointer_expression "*(char *)(param_2 + 4)" (* "*") (cast_expression "(char *)(param_2 + 4)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if (((param_2[2] == 1) && (iVar3 == 0)) && (*(char *)*param_2 == '\x01')) {\n    if (cStack_61 == '\0') {\n      local_70[0] = (uint *)0x21db5;\n      FUN_0001e38b();\n      ppuVar9 = local_70 + 1;\n      iVar3 = 0;\n    }\n    else {\n      local_2c = 2;\n      local_38 = local_22;\n      local_28 = 0;\n      local_34 = 0;\n      local_30 = 1;\n      local_22[0] = 1;\n      iVar3 = FUN_00021c86(param_4);\n      ppuVar9 = local_70;\n    }\n    goto LAB_00021f63;\n  }" (if "if") (parenthesized_expression "(((param_2[2] == 1) && (iVar3 == 0)) && (*(char *)*param_2 == '\x01'))" (( "(") (binary_expression "((param_2[2] == 1) && (iVar3 == 0)) && (*(char *)*param_2 == '\x01')" (parenthesized_expression "((param_2[2] == 1) && (iVar3 == 0))" (( "(") (binary_expression "(param_2[2] == 1) && (iVar3 == 0)" (parenthesized_expression "(param_2[2] == 1)" (( "(") (binary_expression "param_2[2] == 1" (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (== "==") (number_literal "1")) () ")")) (&& "&&") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(*(char *)*param_2 == '\x01')" (( "(") (binary_expression "*(char *)*param_2 == '\x01'" (pointer_expression "*(char *)*param_2" (* "*") (cast_expression "(char *)*param_2" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (== "==") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) () ")"))) () ")")) (compound_statement "{\n    if (cStack_61 == '\0') {\n      local_70[0] = (uint *)0x21db5;\n      FUN_0001e38b();\n      ppuVar9 = local_70 + 1;\n      iVar3 = 0;\n    }\n    else {\n      local_2c = 2;\n      local_38 = local_22;\n      local_28 = 0;\n      local_34 = 0;\n      local_30 = 1;\n      local_22[0] = 1;\n      iVar3 = FUN_00021c86(param_4);\n      ppuVar9 = local_70;\n    }\n    goto LAB_00021f63;\n  }" ({ "{") (if_statement "if (cStack_61 == '\0') {\n      local_70[0] = (uint *)0x21db5;\n      FUN_0001e38b();\n      ppuVar9 = local_70 + 1;\n      iVar3 = 0;\n    }\n    else {\n      local_2c = 2;\n      local_38 = local_22;\n      local_28 = 0;\n      local_34 = 0;\n      local_30 = 1;\n      local_22[0] = 1;\n      iVar3 = FUN_00021c86(param_4);\n      ppuVar9 = local_70;\n    }" (if "if") (parenthesized_expression "(cStack_61 == '\0')" (( "(") (binary_expression "cStack_61 == '\0'" (identifier "cStack_61") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      local_70[0] = (uint *)0x21db5;\n      FUN_0001e38b();\n      ppuVar9 = local_70 + 1;\n      iVar3 = 0;\n    }" ({ "{") (expression_statement "local_70[0] = (uint *)0x21db5;" (assignment_expression "local_70[0] = (uint *)0x21db5" (subscript_expression "local_70[0]" (identifier "local_70") ([ "[") (number_literal "0") (] "]")) (= "=") (cast_expression "(uint *)0x21db5" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x21db5"))) (; ";")) (expression_statement "FUN_0001e38b();" (call_expression "FUN_0001e38b()" (identifier "FUN_0001e38b") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "ppuVar9 = local_70 + 1;" (assignment_expression "ppuVar9 = local_70 + 1" (identifier "ppuVar9") (= "=") (binary_expression "local_70 + 1" (identifier "local_70") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" (identifier "iVar3") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n      local_2c = 2;\n      local_38 = local_22;\n      local_28 = 0;\n      local_34 = 0;\n      local_30 = 1;\n      local_22[0] = 1;\n      iVar3 = FUN_00021c86(param_4);\n      ppuVar9 = local_70;\n    }" (else "else") (compound_statement "{\n      local_2c = 2;\n      local_38 = local_22;\n      local_28 = 0;\n      local_34 = 0;\n      local_30 = 1;\n      local_22[0] = 1;\n      iVar3 = FUN_00021c86(param_4);\n      ppuVar9 = local_70;\n    }" ({ "{") (expression_statement "local_2c = 2;" (assignment_expression "local_2c = 2" (identifier "local_2c") (= "=") (number_literal "2")) (; ";")) (expression_statement "local_38 = local_22;" (assignment_expression "local_38 = local_22" (identifier "local_38") (= "=") (identifier "local_22")) (; ";")) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" (identifier "local_28") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" (identifier "local_34") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_30 = 1;" (assignment_expression "local_30 = 1" (identifier "local_30") (= "=") (number_literal "1")) (; ";")) (expression_statement "local_22[0] = 1;" (assignment_expression "local_22[0] = 1" (subscript_expression "local_22[0]" (identifier "local_22") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar3 = FUN_00021c86(param_4);" (assignment_expression "iVar3 = FUN_00021c86(param_4)" (identifier "iVar3") (= "=") (call_expression "FUN_00021c86(param_4)" (identifier "FUN_00021c86") (argument_list "(param_4)" (( "(") (identifier "param_4") () ")")))) (; ";")) (expression_statement "ppuVar9 = local_70;" (assignment_expression "ppuVar9 = local_70" (identifier "ppuVar9") (= "=") (identifier "local_70")) (; ";")) (} "}")))) (goto_statement "goto LAB_00021f63;" (goto "goto") (statement_identifier "LAB_00021f63") (; ";")) (} "}"))) (expression_statement "local_70[0] = (uint *)0x21dc5;" (assignment_expression "local_70[0] = (uint *)0x21dc5" (subscript_expression "local_70[0]" (identifier "local_70") ([ "[") (number_literal "0") (] "]")) (= "=") (cast_expression "(uint *)0x21dc5" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x21dc5"))) (; ";")) (expression_statement "iVar4 = FUN_0001e0f3();" (assignment_expression "iVar4 = FUN_0001e0f3()" (identifier "iVar4") (= "=") (call_expression "FUN_0001e0f3()" (identifier "FUN_0001e0f3") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "iVar3 = iVar4;" (assignment_expression "iVar3 = iVar4" (identifier "iVar3") (= "=") (identifier "iVar4")) (; ";")) (if_statement "if (iVar4 != 0) goto LAB_00021f63;" (if "if") (parenthesized_expression "(iVar4 != 0)" (( "(") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00021f63;" (goto "goto") (statement_identifier "LAB_00021f63") (; ";"))) (expression_statement "local_70[1] = *(uint **)(param_1 + 8);" (assignment_expression "local_70[1] = *(uint **)(param_1 + 8)" (subscript_expression "local_70[1]" (identifier "local_70") ([ "[") (number_literal "1") (] "]")) (= "=") (pointer_expression "*(uint **)(param_1 + 8)" (* "*") (cast_expression "(uint **)(param_1 + 8)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (local_70[1] < 0x10) {\n    local_70[1] = (uint *)0x10;\n  }" (if "if") (parenthesized_expression "(local_70[1] < 0x10)" (( "(") (binary_expression "local_70[1] < 0x10" (subscript_expression "local_70[1]" (identifier "local_70") ([ "[") (number_literal "1") (] "]")) (< "<") (number_literal "0x10")) () ")")) (compound_statement "{\n    local_70[1] = (uint *)0x10;\n  }" ({ "{") (expression_statement "local_70[1] = (uint *)0x10;" (assignment_expression "local_70[1] = (uint *)0x10" (subscript_expression "local_70[1]" (identifier "local_70") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(uint *)0x10" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x10"))) (; ";")) (} "}"))) (expression_statement "local_70[0] = (uint *)0x21de5;" (assignment_expression "local_70[0] = (uint *)0x21de5" (subscript_expression "local_70[0]" (identifier "local_70") ([ "[") (number_literal "0") (] "]")) (= "=") (cast_expression "(uint *)0x21de5" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x21de5"))) (; ";")) (expression_statement "local_4c = FUN_00019b1c();" (assignment_expression "local_4c = FUN_00019b1c()" (identifier "local_4c") (= "=") (call_expression "FUN_00019b1c()" (identifier "FUN_00019b1c") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "local_40 = (uint)local_70[1];" (assignment_expression "local_40 = (uint)local_70[1]" (identifier "local_40") (= "=") (cast_expression "(uint)local_70[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "local_70[1]" (identifier "local_70") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" (identifier "local_48") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" (identifier "local_44") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" (identifier "local_3c") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_70[1] = (uint *)(local_54 + 2);" (assignment_expression "local_70[1] = (uint *)(local_54 + 2)" (subscript_expression "local_70[1]" (identifier "local_70") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(uint *)(local_54 + 2)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_54 + 2)" (( "(") (binary_expression "local_54 + 2" (identifier "local_54") (+ "+") (number_literal "2")) () ")")))) (; ";")) (expression_statement "local_70[0] = (uint *)0x21e13;" (assignment_expression "local_70[0] = (uint *)0x21e13" (subscript_expression "local_70[0]" (identifier "local_70") ([ "[") (number_literal "0") (] "]")) (= "=") (cast_expression "(uint *)0x21e13" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x21e13"))) (; ";")) (expression_statement "FUN_0001e38b();" (call_expression "FUN_0001e38b()" (identifier "FUN_0001e38b") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar10 = *(uint **)(param_1 + 4);" (assignment_expression "puVar10 = *(uint **)(param_1 + 4)" (identifier "puVar10") (= "=") (pointer_expression "*(uint **)(param_1 + 4)" (* "*") (cast_expression "(uint **)(param_1 + 4)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "ppuVar8 = local_70 + 1;" (assignment_expression "ppuVar8 = local_70 + 1" (identifier "ppuVar8") (= "=") (binary_expression "local_70 + 1" (identifier "local_70") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (cStack_61 == '\0') {\n    if (puVar10 < param_4) {\n      ppuVar8 = local_70 + 1;\n      if ((uint *)((int)puVar10 * (int)local_54[1]) < param_4) goto LAB_00021e32;\n    }\n    else {\n      ppuVar8 = local_70 + 1;\n      param_4 = puVar10;\n      if ((uint *)((int)puVar10 * (int)local_54[1]) < puVar10) {\nLAB_00021e32:\n        param_4 = (uint *)((int)puVar10 * (int)local_54[1]);\n        ppuVar8 = local_70 + 1;\n      }\n    }\n  }" (if "if") (parenthesized_expression "(cStack_61 == '\0')" (( "(") (binary_expression "cStack_61 == '\0'" (identifier "cStack_61") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    if (puVar10 < param_4) {\n      ppuVar8 = local_70 + 1;\n      if ((uint *)((int)puVar10 * (int)local_54[1]) < param_4) goto LAB_00021e32;\n    }\n    else {\n      ppuVar8 = local_70 + 1;\n      param_4 = puVar10;\n      if ((uint *)((int)puVar10 * (int)local_54[1]) < puVar10) {\nLAB_00021e32:\n        param_4 = (uint *)((int)puVar10 * (int)local_54[1]);\n        ppuVar8 = local_70 + 1;\n      }\n    }\n  }" ({ "{") (if_statement "if (puVar10 < param_4) {\n      ppuVar8 = local_70 + 1;\n      if ((uint *)((int)puVar10 * (int)local_54[1]) < param_4) goto LAB_00021e32;\n    }\n    else {\n      ppuVar8 = local_70 + 1;\n      param_4 = puVar10;\n      if ((uint *)((int)puVar10 * (int)local_54[1]) < puVar10) {\nLAB_00021e32:\n        param_4 = (uint *)((int)puVar10 * (int)local_54[1]);\n        ppuVar8 = local_70 + 1;\n      }\n    }" (if "if") (parenthesized_expression "(puVar10 < param_4)" (( "(") (binary_expression "puVar10 < param_4" (identifier "puVar10") (< "<") (identifier "param_4")) () ")")) (compound_statement "{\n      ppuVar8 = local_70 + 1;\n      if ((uint *)((int)puVar10 * (int)local_54[1]) < param_4) goto LAB_00021e32;\n    }" ({ "{") (expression_statement "ppuVar8 = local_70 + 1;" (assignment_expression "ppuVar8 = local_70 + 1" (identifier "ppuVar8") (= "=") (binary_expression "local_70 + 1" (identifier "local_70") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if ((uint *)((int)puVar10 * (int)local_54[1]) < param_4) goto LAB_00021e32;" (if "if") (parenthesized_expression "((uint *)((int)puVar10 * (int)local_54[1]) < param_4)" (( "(") (binary_expression "(uint *)((int)puVar10 * (int)local_54[1]) < param_4" (cast_expression "(uint *)((int)puVar10 * (int)local_54[1])" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar10 * (int)local_54[1])" (( "(") (binary_expression "(int)puVar10 * (int)local_54[1]" (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10")) (* "*") (cast_expression "(int)local_54[1]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "local_54[1]" (identifier "local_54") ([ "[") (number_literal "1") (] "]")))) () ")"))) (< "<") (identifier "param_4")) () ")")) (goto_statement "goto LAB_00021e32;" (goto "goto") (statement_identifier "LAB_00021e32") (; ";"))) (} "}")) (else_clause "else {\n      ppuVar8 = local_70 + 1;\n      param_4 = puVar10;\n      if ((uint *)((int)puVar10 * (int)local_54[1]) < puVar10) {\nLAB_00021e32:\n        param_4 = (uint *)((int)puVar10 * (int)local_54[1]);\n        ppuVar8 = local_70 + 1;\n      }\n    }" (else "else") (compound_statement "{\n      ppuVar8 = local_70 + 1;\n      param_4 = puVar10;\n      if ((uint *)((int)puVar10 * (int)local_54[1]) < puVar10) {\nLAB_00021e32:\n        param_4 = (uint *)((int)puVar10 * (int)local_54[1]);\n        ppuVar8 = local_70 + 1;\n      }\n    }" ({ "{") (expression_statement "ppuVar8 = local_70 + 1;" (assignment_expression "ppuVar8 = local_70 + 1" (identifier "ppuVar8") (= "=") (binary_expression "local_70 + 1" (identifier "local_70") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_4 = puVar10;" (assignment_expression "param_4 = puVar10" (identifier "param_4") (= "=") (identifier "puVar10")) (; ";")) (if_statement "if ((uint *)((int)puVar10 * (int)local_54[1]) < puVar10) {\nLAB_00021e32:\n        param_4 = (uint *)((int)puVar10 * (int)local_54[1]);\n        ppuVar8 = local_70 + 1;\n      }" (if "if") (parenthesized_expression "((uint *)((int)puVar10 * (int)local_54[1]) < puVar10)" (( "(") (binary_expression "(uint *)((int)puVar10 * (int)local_54[1]) < puVar10" (cast_expression "(uint *)((int)puVar10 * (int)local_54[1])" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar10 * (int)local_54[1])" (( "(") (binary_expression "(int)puVar10 * (int)local_54[1]" (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10")) (* "*") (cast_expression "(int)local_54[1]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "local_54[1]" (identifier "local_54") ([ "[") (number_literal "1") (] "]")))) () ")"))) (< "<") (identifier "puVar10")) () ")")) (compound_statement "{\nLAB_00021e32:\n        param_4 = (uint *)((int)puVar10 * (int)local_54[1]);\n        ppuVar8 = local_70 + 1;\n      }" ({ "{") (labeled_statement "LAB_00021e32:\n        param_4 = (uint *)((int)puVar10 * (int)local_54[1]);" (statement_identifier "LAB_00021e32") (: ":") (expression_statement "param_4 = (uint *)((int)puVar10 * (int)local_54[1]);" (assignment_expression "param_4 = (uint *)((int)puVar10 * (int)local_54[1])" (identifier "param_4") (= "=") (cast_expression "(uint *)((int)puVar10 * (int)local_54[1])" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar10 * (int)local_54[1])" (( "(") (binary_expression "(int)puVar10 * (int)local_54[1]" (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10")) (* "*") (cast_expression "(int)local_54[1]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "local_54[1]" (identifier "local_54") ([ "[") (number_literal "1") (] "]")))) () ")")))) (; ";"))) (expression_statement "ppuVar8 = local_70 + 1;" (assignment_expression "ppuVar8 = local_70 + 1" (identifier "ppuVar8") (= "=") (binary_expression "local_70 + 1" (identifier "local_70") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (} "}")))) (} "}"))) (while_statement "while (((uint)local_54[1] & 1) == 0) {\n    puVar10 = (uint *)((int)puVar10 * 2);\n    ppuVar8[0xfffffffc] = puVar10;\n    ppuVar8[0xfffffffb] = (uint *)0x21e4b;\n    iVar3 = FUN_00021bb2();\n    ppuVar9 = ppuVar8 + 0xffffffff;\n    if (iVar3 != 0) goto LAB_00021f50;\n    local_54[1] = (uint *)((uint)ppuVar8[6] >> 1);\n    ppuVar8[6] = local_54[1];\n    ppuVar8 = ppuVar8 + 0xffffffff;\n  }" (while "while") (parenthesized_expression "(((uint)local_54[1] & 1) == 0)" (( "(") (binary_expression "((uint)local_54[1] & 1) == 0" (parenthesized_expression "((uint)local_54[1] & 1)" (( "(") (binary_expression "(uint)local_54[1] & 1" (cast_expression "(uint)local_54[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "local_54[1]" (identifier "local_54") ([ "[") (number_literal "1") (] "]"))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    puVar10 = (uint *)((int)puVar10 * 2);\n    ppuVar8[0xfffffffc] = puVar10;\n    ppuVar8[0xfffffffb] = (uint *)0x21e4b;\n    iVar3 = FUN_00021bb2();\n    ppuVar9 = ppuVar8 + 0xffffffff;\n    if (iVar3 != 0) goto LAB_00021f50;\n    local_54[1] = (uint *)((uint)ppuVar8[6] >> 1);\n    ppuVar8[6] = local_54[1];\n    ppuVar8 = ppuVar8 + 0xffffffff;\n  }" ({ "{") (expression_statement "puVar10 = (uint *)((int)puVar10 * 2);" (assignment_expression "puVar10 = (uint *)((int)puVar10 * 2)" (identifier "puVar10") (= "=") (cast_expression "(uint *)((int)puVar10 * 2)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar10 * 2)" (( "(") (binary_expression "(int)puVar10 * 2" (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10")) (* "*") (number_literal "2")) () ")")))) (; ";")) (expression_statement "ppuVar8[0xfffffffc] = puVar10;" (assignment_expression "ppuVar8[0xfffffffc] = puVar10" (subscript_expression "ppuVar8[0xfffffffc]" (identifier "ppuVar8") ([ "[") (number_literal "0xfffffffc") (] "]")) (= "=") (identifier "puVar10")) (; ";")) (expression_statement "ppuVar8[0xfffffffb] = (uint *)0x21e4b;" (assignment_expression "ppuVar8[0xfffffffb] = (uint *)0x21e4b" (subscript_expression "ppuVar8[0xfffffffb]" (identifier "ppuVar8") ([ "[") (number_literal "0xfffffffb") (] "]")) (= "=") (cast_expression "(uint *)0x21e4b" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x21e4b"))) (; ";")) (expression_statement "iVar3 = FUN_00021bb2();" (assignment_expression "iVar3 = FUN_00021bb2()" (identifier "iVar3") (= "=") (call_expression "FUN_00021bb2()" (identifier "FUN_00021bb2") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "ppuVar9 = ppuVar8 + 0xffffffff;" (assignment_expression "ppuVar9 = ppuVar8 + 0xffffffff" (identifier "ppuVar9") (= "=") (binary_expression "ppuVar8 + 0xffffffff" (identifier "ppuVar8") (+ "+") (number_literal "0xffffffff"))) (; ";")) (if_statement "if (iVar3 != 0) goto LAB_00021f50;" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00021f50;" (goto "goto") (statement_identifier "LAB_00021f50") (; ";"))) (expression_statement "local_54[1] = (uint *)((uint)ppuVar8[6] >> 1);" (assignment_expression "local_54[1] = (uint *)((uint)ppuVar8[6] >> 1)" (subscript_expression "local_54[1]" (identifier "local_54") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(uint *)((uint)ppuVar8[6] >> 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uint)ppuVar8[6] >> 1)" (( "(") (binary_expression "(uint)ppuVar8[6] >> 1" (cast_expression "(uint)ppuVar8[6]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "ppuVar8[6]" (identifier "ppuVar8") ([ "[") (number_literal "6") (] "]"))) (>> ">>") (number_literal "1")) () ")")))) (; ";")) (expression_statement "ppuVar8[6] = local_54[1];" (assignment_expression "ppuVar8[6] = local_54[1]" (subscript_expression "ppuVar8[6]" (identifier "ppuVar8") ([ "[") (number_literal "6") (] "]")) (= "=") (subscript_expression "local_54[1]" (identifier "local_54") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "ppuVar8 = ppuVar8 + 0xffffffff;" (assignment_expression "ppuVar8 = ppuVar8 + 0xffffffff" (identifier "ppuVar8") (= "=") (binary_expression "ppuVar8 + 0xffffffff" (identifier "ppuVar8") (+ "+") (number_literal "0xffffffff"))) (; ";")) (} "}"))) (expression_statement "ppuVar8[0xffffffff] = (uint *)0x21e80;" (assignment_expression "ppuVar8[0xffffffff] = (uint *)0x21e80" (subscript_expression "ppuVar8[0xffffffff]" (identifier "ppuVar8") ([ "[") (number_literal "0xffffffff") (] "]")) (= "=") (cast_expression "(uint *)0x21e80" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x21e80"))) (; ";")) (expression_statement "FUN_0001e38b();" (call_expression "FUN_0001e38b()" (identifier "FUN_0001e38b") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar1 = ppuVar8[7];" (assignment_expression "puVar1 = ppuVar8[7]" (identifier "puVar1") (= "=") (subscript_expression "ppuVar8[7]" (identifier "ppuVar8") ([ "[") (number_literal "7") (] "]"))) (; ";")) (expression_statement "ppuVar8[7] = (uint *)((uint)puVar1 >> 1);" (assignment_expression "ppuVar8[7] = (uint *)((uint)puVar1 >> 1)" (subscript_expression "ppuVar8[7]" (identifier "ppuVar8") ([ "[") (number_literal "7") (] "]")) (= "=") (cast_expression "(uint *)((uint)puVar1 >> 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uint)puVar1 >> 1)" (( "(") (binary_expression "(uint)puVar1 >> 1" (cast_expression "(uint)puVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar1")) (>> ">>") (number_literal "1")) () ")")))) (; ";")) (if_statement "if ((uint *)((uint)puVar1 >> 1) != (uint *)0x0) {\n    ppuVar8[1] = puVar10;\n    ppuVar7 = ppuVar8;\n    do {\n      puVar10 = (uint *)((int)puVar10 * 2);\n      ((int *)ppuVar7)[-4] = (int)puVar10;\n      ((int *)ppuVar7)[-5] = 0x21ea3;\n      iVar3 = FUN_00021bb2();\n      ppuVar9 = (uint **)((int *)ppuVar7 + -1);\n      ppuVar8 = (uint **)((int *)ppuVar7 + -1);\n      if (iVar3 != 0) goto LAB_00021f50;\n      uVar5 = ((int *)ppuVar7)[6];\n      if ((uVar5 & 1) != 0) {\n        *ppuVar7 = (uint *)((int)*ppuVar7 + (int)puVar10);\n        ((int *)ppuVar7)[-5] = (int)*ppuVar7;\n        ((int *)ppuVar7)[-6] = 0x21ecb;\n        iVar3 = FUN_00021bb2();\n        ppuVar9 = (uint **)((int *)ppuVar7 + -2);\n        ppuVar8 = (uint **)((int *)ppuVar7 + -2);\n        if (iVar3 != 0) goto LAB_00021f50;\n        uVar5 = ((int *)ppuVar7)[5];\n      }\n      *(uint *)((int)ppuVar8 + 0x1c) = uVar5 >> 1;\n      ppuVar7 = ppuVar8;\n    } while (uVar5 >> 1 != 0);\n  }" (if "if") (parenthesized_expression "((uint *)((uint)puVar1 >> 1) != (uint *)0x0)" (( "(") (binary_expression "(uint *)((uint)puVar1 >> 1) != (uint *)0x0" (cast_expression "(uint *)((uint)puVar1 >> 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uint)puVar1 >> 1)" (( "(") (binary_expression "(uint)puVar1 >> 1" (cast_expression "(uint)puVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar1")) (>> ">>") (number_literal "1")) () ")"))) (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    ppuVar8[1] = puVar10;\n    ppuVar7 = ppuVar8;\n    do {\n      puVar10 = (uint *)((int)puVar10 * 2);\n      ((int *)ppuVar7)[-4] = (int)puVar10;\n      ((int *)ppuVar7)[-5] = 0x21ea3;\n      iVar3 = FUN_00021bb2();\n      ppuVar9 = (uint **)((int *)ppuVar7 + -1);\n      ppuVar8 = (uint **)((int *)ppuVar7 + -1);\n      if (iVar3 != 0) goto LAB_00021f50;\n      uVar5 = ((int *)ppuVar7)[6];\n      if ((uVar5 & 1) != 0) {\n        *ppuVar7 = (uint *)((int)*ppuVar7 + (int)puVar10);\n        ((int *)ppuVar7)[-5] = (int)*ppuVar7;\n        ((int *)ppuVar7)[-6] = 0x21ecb;\n        iVar3 = FUN_00021bb2();\n        ppuVar9 = (uint **)((int *)ppuVar7 + -2);\n        ppuVar8 = (uint **)((int *)ppuVar7 + -2);\n        if (iVar3 != 0) goto LAB_00021f50;\n        uVar5 = ((int *)ppuVar7)[5];\n      }\n      *(uint *)((int)ppuVar8 + 0x1c) = uVar5 >> 1;\n      ppuVar7 = ppuVar8;\n    } while (uVar5 >> 1 != 0);\n  }" ({ "{") (expression_statement "ppuVar8[1] = puVar10;" (assignment_expression "ppuVar8[1] = puVar10" (subscript_expression "ppuVar8[1]" (identifier "ppuVar8") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "puVar10")) (; ";")) (expression_statement "ppuVar7 = ppuVar8;" (assignment_expression "ppuVar7 = ppuVar8" (identifier "ppuVar7") (= "=") (identifier "ppuVar8")) (; ";")) (do_statement "do {\n      puVar10 = (uint *)((int)puVar10 * 2);\n      ((int *)ppuVar7)[-4] = (int)puVar10;\n      ((int *)ppuVar7)[-5] = 0x21ea3;\n      iVar3 = FUN_00021bb2();\n      ppuVar9 = (uint **)((int *)ppuVar7 + -1);\n      ppuVar8 = (uint **)((int *)ppuVar7 + -1);\n      if (iVar3 != 0) goto LAB_00021f50;\n      uVar5 = ((int *)ppuVar7)[6];\n      if ((uVar5 & 1) != 0) {\n        *ppuVar7 = (uint *)((int)*ppuVar7 + (int)puVar10);\n        ((int *)ppuVar7)[-5] = (int)*ppuVar7;\n        ((int *)ppuVar7)[-6] = 0x21ecb;\n        iVar3 = FUN_00021bb2();\n        ppuVar9 = (uint **)((int *)ppuVar7 + -2);\n        ppuVar8 = (uint **)((int *)ppuVar7 + -2);\n        if (iVar3 != 0) goto LAB_00021f50;\n        uVar5 = ((int *)ppuVar7)[5];\n      }\n      *(uint *)((int)ppuVar8 + 0x1c) = uVar5 >> 1;\n      ppuVar7 = ppuVar8;\n    } while (uVar5 >> 1 != 0);" (do "do") (compound_statement "{\n      puVar10 = (uint *)((int)puVar10 * 2);\n      ((int *)ppuVar7)[-4] = (int)puVar10;\n      ((int *)ppuVar7)[-5] = 0x21ea3;\n      iVar3 = FUN_00021bb2();\n      ppuVar9 = (uint **)((int *)ppuVar7 + -1);\n      ppuVar8 = (uint **)((int *)ppuVar7 + -1);\n      if (iVar3 != 0) goto LAB_00021f50;\n      uVar5 = ((int *)ppuVar7)[6];\n      if ((uVar5 & 1) != 0) {\n        *ppuVar7 = (uint *)((int)*ppuVar7 + (int)puVar10);\n        ((int *)ppuVar7)[-5] = (int)*ppuVar7;\n        ((int *)ppuVar7)[-6] = 0x21ecb;\n        iVar3 = FUN_00021bb2();\n        ppuVar9 = (uint **)((int *)ppuVar7 + -2);\n        ppuVar8 = (uint **)((int *)ppuVar7 + -2);\n        if (iVar3 != 0) goto LAB_00021f50;\n        uVar5 = ((int *)ppuVar7)[5];\n      }\n      *(uint *)((int)ppuVar8 + 0x1c) = uVar5 >> 1;\n      ppuVar7 = ppuVar8;\n    }" ({ "{") (expression_statement "puVar10 = (uint *)((int)puVar10 * 2);" (assignment_expression "puVar10 = (uint *)((int)puVar10 * 2)" (identifier "puVar10") (= "=") (cast_expression "(uint *)((int)puVar10 * 2)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar10 * 2)" (( "(") (binary_expression "(int)puVar10 * 2" (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10")) (* "*") (number_literal "2")) () ")")))) (; ";")) (expression_statement "((int *)ppuVar7)[-4] = (int)puVar10;" (assignment_expression "((int *)ppuVar7)[-4] = (int)puVar10" (subscript_expression "((int *)ppuVar7)[-4]" (parenthesized_expression "((int *)ppuVar7)" (( "(") (cast_expression "(int *)ppuVar7" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "ppuVar7")) () ")")) ([ "[") (number_literal "-4") (] "]")) (= "=") (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10"))) (; ";")) (expression_statement "((int *)ppuVar7)[-5] = 0x21ea3;" (assignment_expression "((int *)ppuVar7)[-5] = 0x21ea3" (subscript_expression "((int *)ppuVar7)[-5]" (parenthesized_expression "((int *)ppuVar7)" (( "(") (cast_expression "(int *)ppuVar7" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "ppuVar7")) () ")")) ([ "[") (number_literal "-5") (] "]")) (= "=") (number_literal "0x21ea3")) (; ";")) (expression_statement "iVar3 = FUN_00021bb2();" (assignment_expression "iVar3 = FUN_00021bb2()" (identifier "iVar3") (= "=") (call_expression "FUN_00021bb2()" (identifier "FUN_00021bb2") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "ppuVar9 = (uint **)((int *)ppuVar7 + -1);" (assignment_expression "ppuVar9 = (uint **)((int *)ppuVar7 + -1)" (identifier "ppuVar9") (= "=") (cast_expression "(uint **)((int *)ppuVar7 + -1)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int *)ppuVar7 + -1)" (( "(") (binary_expression "(int *)ppuVar7 + -1" (cast_expression "(int *)ppuVar7" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "ppuVar7")) (+ "+") (number_literal "-1")) () ")")))) (; ";")) (expression_statement "ppuVar8 = (uint **)((int *)ppuVar7 + -1);" (assignment_expression "ppuVar8 = (uint **)((int *)ppuVar7 + -1)" (identifier "ppuVar8") (= "=") (cast_expression "(uint **)((int *)ppuVar7 + -1)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int *)ppuVar7 + -1)" (( "(") (binary_expression "(int *)ppuVar7 + -1" (cast_expression "(int *)ppuVar7" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "ppuVar7")) (+ "+") (number_literal "-1")) () ")")))) (; ";")) (if_statement "if (iVar3 != 0) goto LAB_00021f50;" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00021f50;" (goto "goto") (statement_identifier "LAB_00021f50") (; ";"))) (expression_statement "uVar5 = ((int *)ppuVar7)[6];" (assignment_expression "uVar5 = ((int *)ppuVar7)[6]" (identifier "uVar5") (= "=") (subscript_expression "((int *)ppuVar7)[6]" (parenthesized_expression "((int *)ppuVar7)" (( "(") (cast_expression "(int *)ppuVar7" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "ppuVar7")) () ")")) ([ "[") (number_literal "6") (] "]"))) (; ";")) (if_statement "if ((uVar5 & 1) != 0) {\n        *ppuVar7 = (uint *)((int)*ppuVar7 + (int)puVar10);\n        ((int *)ppuVar7)[-5] = (int)*ppuVar7;\n        ((int *)ppuVar7)[-6] = 0x21ecb;\n        iVar3 = FUN_00021bb2();\n        ppuVar9 = (uint **)((int *)ppuVar7 + -2);\n        ppuVar8 = (uint **)((int *)ppuVar7 + -2);\n        if (iVar3 != 0) goto LAB_00021f50;\n        uVar5 = ((int *)ppuVar7)[5];\n      }" (if "if") (parenthesized_expression "((uVar5 & 1) != 0)" (( "(") (binary_expression "(uVar5 & 1) != 0" (parenthesized_expression "(uVar5 & 1)" (( "(") (binary_expression "uVar5 & 1" (identifier "uVar5") (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        *ppuVar7 = (uint *)((int)*ppuVar7 + (int)puVar10);\n        ((int *)ppuVar7)[-5] = (int)*ppuVar7;\n        ((int *)ppuVar7)[-6] = 0x21ecb;\n        iVar3 = FUN_00021bb2();\n        ppuVar9 = (uint **)((int *)ppuVar7 + -2);\n        ppuVar8 = (uint **)((int *)ppuVar7 + -2);\n        if (iVar3 != 0) goto LAB_00021f50;\n        uVar5 = ((int *)ppuVar7)[5];\n      }" ({ "{") (expression_statement "*ppuVar7 = (uint *)((int)*ppuVar7 + (int)puVar10);" (assignment_expression "*ppuVar7 = (uint *)((int)*ppuVar7 + (int)puVar10)" (pointer_expression "*ppuVar7" (* "*") (identifier "ppuVar7")) (= "=") (cast_expression "(uint *)((int)*ppuVar7 + (int)puVar10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)*ppuVar7 + (int)puVar10)" (( "(") (binary_expression "(int)*ppuVar7 + (int)puVar10" (cast_expression "(int)*ppuVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*ppuVar7" (* "*") (identifier "ppuVar7"))) (+ "+") (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10"))) () ")")))) (; ";")) (expression_statement "((int *)ppuVar7)[-5] = (int)*ppuVar7;" (assignment_expression "((int *)ppuVar7)[-5] = (int)*ppuVar7" (subscript_expression "((int *)ppuVar7)[-5]" (parenthesized_expression "((int *)ppuVar7)" (( "(") (cast_expression "(int *)ppuVar7" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "ppuVar7")) () ")")) ([ "[") (number_literal "-5") (] "]")) (= "=") (cast_expression "(int)*ppuVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*ppuVar7" (* "*") (identifier "ppuVar7")))) (; ";")) (expression_statement "((int *)ppuVar7)[-6] = 0x21ecb;" (assignment_expression "((int *)ppuVar7)[-6] = 0x21ecb" (subscript_expression "((int *)ppuVar7)[-6]" (parenthesized_expression "((int *)ppuVar7)" (( "(") (cast_expression "(int *)ppuVar7" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "ppuVar7")) () ")")) ([ "[") (number_literal "-6") (] "]")) (= "=") (number_literal "0x21ecb")) (; ";")) (expression_statement "iVar3 = FUN_00021bb2();" (assignment_expression "iVar3 = FUN_00021bb2()" (identifier "iVar3") (= "=") (call_expression "FUN_00021bb2()" (identifier "FUN_00021bb2") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "ppuVar9 = (uint **)((int *)ppuVar7 + -2);" (assignment_expression "ppuVar9 = (uint **)((int *)ppuVar7 + -2)" (identifier "ppuVar9") (= "=") (cast_expression "(uint **)((int *)ppuVar7 + -2)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int *)ppuVar7 + -2)" (( "(") (binary_expression "(int *)ppuVar7 + -2" (cast_expression "(int *)ppuVar7" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "ppuVar7")) (+ "+") (number_literal "-2")) () ")")))) (; ";")) (expression_statement "ppuVar8 = (uint **)((int *)ppuVar7 + -2);" (assignment_expression "ppuVar8 = (uint **)((int *)ppuVar7 + -2)" (identifier "ppuVar8") (= "=") (cast_expression "(uint **)((int *)ppuVar7 + -2)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int *)ppuVar7 + -2)" (( "(") (binary_expression "(int *)ppuVar7 + -2" (cast_expression "(int *)ppuVar7" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "ppuVar7")) (+ "+") (number_literal "-2")) () ")")))) (; ";")) (if_statement "if (iVar3 != 0) goto LAB_00021f50;" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00021f50;" (goto "goto") (statement_identifier "LAB_00021f50") (; ";"))) (expression_statement "uVar5 = ((int *)ppuVar7)[5];" (assignment_expression "uVar5 = ((int *)ppuVar7)[5]" (identifier "uVar5") (= "=") (subscript_expression "((int *)ppuVar7)[5]" (parenthesized_expression "((int *)ppuVar7)" (( "(") (cast_expression "(int *)ppuVar7" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "ppuVar7")) () ")")) ([ "[") (number_literal "5") (] "]"))) (; ";")) (} "}"))) (expression_statement "*(uint *)((int)ppuVar8 + 0x1c) = uVar5 >> 1;" (assignment_expression "*(uint *)((int)ppuVar8 + 0x1c) = uVar5 >> 1" (pointer_expression "*(uint *)((int)ppuVar8 + 0x1c)" (* "*") (cast_expression "(uint *)((int)ppuVar8 + 0x1c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar8 + 0x1c)" (( "(") (binary_expression "(int)ppuVar8 + 0x1c" (cast_expression "(int)ppuVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar8")) (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (binary_expression "uVar5 >> 1" (identifier "uVar5") (>> ">>") (number_literal "1"))) (; ";")) (expression_statement "ppuVar7 = ppuVar8;" (assignment_expression "ppuVar7 = ppuVar8" (identifier "ppuVar7") (= "=") (identifier "ppuVar8")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar5 >> 1 != 0)" (( "(") (binary_expression "uVar5 >> 1 != 0" (binary_expression "uVar5 >> 1" (identifier "uVar5") (>> ">>") (number_literal "1")) (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}"))) (expression_statement "puVar2 = (undefined1 *)ppuVar8;" (assignment_expression "puVar2 = (undefined1 *)ppuVar8" (identifier "puVar2") (= "=") (cast_expression "(undefined1 *)ppuVar8" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "ppuVar8"))) (; ";")) (if_statement "if (*(char *)((int)ppuVar8 + 0xb) == '\0') {\nLAB_00021f2b:\n    ppuVar9 = (uint **)puVar2;\n    if (param_4 < (uint *)param_3[1]) {\n      *(undefined4 *)((int)ppuVar9 + -4) = 0x21f3b;\n      FUN_0001d62a();\n    }\n    if (param_3[2] == 0) {\nLAB_00021f42:\n      param_3[2] = 0;\n      *(undefined1 *)(param_3 + 4) = 0;\n      param_3[1] = param_4;\n      iVar3 = iVar4;\n    }\n    else {\n      pcVar11 = (char *)*param_3;\n      iVar3 = iVar4;\n      if (*pcVar11 == '\0') {\n        pcVar6 = pcVar11 + param_3[2];\n        do {\n          pcVar11 = pcVar11 + 1;\n          if (pcVar6 == pcVar11) goto LAB_00021f42;\n        } while (*pcVar11 == '\0');\n      }\n    }\n  }\n  else {\n    *(undefined4 *)((int)ppuVar8 + 0x40) = 2;\n    *(undefined1 **)((int)ppuVar8 + 0x34) = (undefined1 *)((int)ppuVar8 + 0x4a);\n    *(undefined1 *)((int)ppuVar8 + 0x44) = 0;\n    *(undefined4 *)((int)ppuVar8 + 0x38) = 0;\n    *(undefined4 *)((int)ppuVar8 + 0x3c) = 1;\n    *(undefined1 *)((int)ppuVar8 + 0x4a) = 1;\n    *(uint **)((int)ppuVar8 + -0x10) = param_4;\n    *(undefined4 *)((int)ppuVar8 + -0x14) = 0x21f20;\n    iVar3 = FUN_00021c86();\n    ppuVar9 = (uint **)((int)ppuVar8 + -4);\n    puVar2 = (undefined1 *)((int)ppuVar8 + -4);\n    if (iVar3 == 0) goto LAB_00021f2b;\n  }" (if "if") (parenthesized_expression "(*(char *)((int)ppuVar8 + 0xb) == '\0')" (( "(") (binary_expression "*(char *)((int)ppuVar8 + 0xb) == '\0'" (pointer_expression "*(char *)((int)ppuVar8 + 0xb)" (* "*") (cast_expression "(char *)((int)ppuVar8 + 0xb)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar8 + 0xb)" (( "(") (binary_expression "(int)ppuVar8 + 0xb" (cast_expression "(int)ppuVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar8")) (+ "+") (number_literal "0xb")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\nLAB_00021f2b:\n    ppuVar9 = (uint **)puVar2;\n    if (param_4 < (uint *)param_3[1]) {\n      *(undefined4 *)((int)ppuVar9 + -4) = 0x21f3b;\n      FUN_0001d62a();\n    }\n    if (param_3[2] == 0) {\nLAB_00021f42:\n      param_3[2] = 0;\n      *(undefined1 *)(param_3 + 4) = 0;\n      param_3[1] = param_4;\n      iVar3 = iVar4;\n    }\n    else {\n      pcVar11 = (char *)*param_3;\n      iVar3 = iVar4;\n      if (*pcVar11 == '\0') {\n        pcVar6 = pcVar11 + param_3[2];\n        do {\n          pcVar11 = pcVar11 + 1;\n          if (pcVar6 == pcVar11) goto LAB_00021f42;\n        } while (*pcVar11 == '\0');\n      }\n    }\n  }" ({ "{") (labeled_statement "LAB_00021f2b:\n    ppuVar9 = (uint **)puVar2;" (statement_identifier "LAB_00021f2b") (: ":") (expression_statement "ppuVar9 = (uint **)puVar2;" (assignment_expression "ppuVar9 = (uint **)puVar2" (identifier "ppuVar9") (= "=") (cast_expression "(uint **)puVar2" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar2"))) (; ";"))) (if_statement "if (param_4 < (uint *)param_3[1]) {\n      *(undefined4 *)((int)ppuVar9 + -4) = 0x21f3b;\n      FUN_0001d62a();\n    }" (if "if") (parenthesized_expression "(param_4 < (uint *)param_3[1])" (( "(") (binary_expression "param_4 < (uint *)param_3[1]" (identifier "param_4") (< "<") (cast_expression "(uint *)param_3[1]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]")))) () ")")) (compound_statement "{\n      *(undefined4 *)((int)ppuVar9 + -4) = 0x21f3b;\n      FUN_0001d62a();\n    }" ({ "{") (expression_statement "*(undefined4 *)((int)ppuVar9 + -4) = 0x21f3b;" (assignment_expression "*(undefined4 *)((int)ppuVar9 + -4) = 0x21f3b" (pointer_expression "*(undefined4 *)((int)ppuVar9 + -4)" (* "*") (cast_expression "(undefined4 *)((int)ppuVar9 + -4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar9 + -4)" (( "(") (binary_expression "(int)ppuVar9 + -4" (cast_expression "(int)ppuVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar9")) (+ "+") (number_literal "-4")) () ")")))) (= "=") (number_literal "0x21f3b")) (; ";")) (expression_statement "FUN_0001d62a();" (call_expression "FUN_0001d62a()" (identifier "FUN_0001d62a") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if (param_3[2] == 0) {\nLAB_00021f42:\n      param_3[2] = 0;\n      *(undefined1 *)(param_3 + 4) = 0;\n      param_3[1] = param_4;\n      iVar3 = iVar4;\n    }\n    else {\n      pcVar11 = (char *)*param_3;\n      iVar3 = iVar4;\n      if (*pcVar11 == '\0') {\n        pcVar6 = pcVar11 + param_3[2];\n        do {\n          pcVar11 = pcVar11 + 1;\n          if (pcVar6 == pcVar11) goto LAB_00021f42;\n        } while (*pcVar11 == '\0');\n      }\n    }" (if "if") (parenthesized_expression "(param_3[2] == 0)" (( "(") (binary_expression "param_3[2] == 0" (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00021f42:\n      param_3[2] = 0;\n      *(undefined1 *)(param_3 + 4) = 0;\n      param_3[1] = param_4;\n      iVar3 = iVar4;\n    }" ({ "{") (labeled_statement "LAB_00021f42:\n      param_3[2] = 0;" (statement_identifier "LAB_00021f42") (: ":") (expression_statement "param_3[2] = 0;" (assignment_expression "param_3[2] = 0" (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";"))) (expression_statement "*(undefined1 *)(param_3 + 4) = 0;" (assignment_expression "*(undefined1 *)(param_3 + 4) = 0" (pointer_expression "*(undefined1 *)(param_3 + 4)" (* "*") (cast_expression "(undefined1 *)(param_3 + 4)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 4)" (( "(") (binary_expression "param_3 + 4" (identifier "param_3") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_3[1] = param_4;" (assignment_expression "param_3[1] = param_4" (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "param_4")) (; ";")) (expression_statement "iVar3 = iVar4;" (assignment_expression "iVar3 = iVar4" (identifier "iVar3") (= "=") (identifier "iVar4")) (; ";")) (} "}")) (else_clause "else {\n      pcVar11 = (char *)*param_3;\n      iVar3 = iVar4;\n      if (*pcVar11 == '\0') {\n        pcVar6 = pcVar11 + param_3[2];\n        do {\n          pcVar11 = pcVar11 + 1;\n          if (pcVar6 == pcVar11) goto LAB_00021f42;\n        } while (*pcVar11 == '\0');\n      }\n    }" (else "else") (compound_statement "{\n      pcVar11 = (char *)*param_3;\n      iVar3 = iVar4;\n      if (*pcVar11 == '\0') {\n        pcVar6 = pcVar11 + param_3[2];\n        do {\n          pcVar11 = pcVar11 + 1;\n          if (pcVar6 == pcVar11) goto LAB_00021f42;\n        } while (*pcVar11 == '\0');\n      }\n    }" ({ "{") (expression_statement "pcVar11 = (char *)*param_3;" (assignment_expression "pcVar11 = (char *)*param_3" (identifier "pcVar11") (= "=") (cast_expression "(char *)*param_3" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_3" (* "*") (identifier "param_3")))) (; ";")) (expression_statement "iVar3 = iVar4;" (assignment_expression "iVar3 = iVar4" (identifier "iVar3") (= "=") (identifier "iVar4")) (; ";")) (if_statement "if (*pcVar11 == '\0') {\n        pcVar6 = pcVar11 + param_3[2];\n        do {\n          pcVar11 = pcVar11 + 1;\n          if (pcVar6 == pcVar11) goto LAB_00021f42;\n        } while (*pcVar11 == '\0');\n      }" (if "if") (parenthesized_expression "(*pcVar11 == '\0')" (( "(") (binary_expression "*pcVar11 == '\0'" (pointer_expression "*pcVar11" (* "*") (identifier "pcVar11")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        pcVar6 = pcVar11 + param_3[2];\n        do {\n          pcVar11 = pcVar11 + 1;\n          if (pcVar6 == pcVar11) goto LAB_00021f42;\n        } while (*pcVar11 == '\0');\n      }" ({ "{") (expression_statement "pcVar6 = pcVar11 + param_3[2];" (assignment_expression "pcVar6 = pcVar11 + param_3[2]" (identifier "pcVar6") (= "=") (binary_expression "pcVar11 + param_3[2]" (identifier "pcVar11") (+ "+") (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]")))) (; ";")) (do_statement "do {\n          pcVar11 = pcVar11 + 1;\n          if (pcVar6 == pcVar11) goto LAB_00021f42;\n        } while (*pcVar11 == '\0');" (do "do") (compound_statement "{\n          pcVar11 = pcVar11 + 1;\n          if (pcVar6 == pcVar11) goto LAB_00021f42;\n        }" ({ "{") (expression_statement "pcVar11 = pcVar11 + 1;" (assignment_expression "pcVar11 = pcVar11 + 1" (identifier "pcVar11") (= "=") (binary_expression "pcVar11 + 1" (identifier "pcVar11") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (pcVar6 == pcVar11) goto LAB_00021f42;" (if "if") (parenthesized_expression "(pcVar6 == pcVar11)" (( "(") (binary_expression "pcVar6 == pcVar11" (identifier "pcVar6") (== "==") (identifier "pcVar11")) () ")")) (goto_statement "goto LAB_00021f42;" (goto "goto") (statement_identifier "LAB_00021f42") (; ";"))) (} "}")) (while "while") (parenthesized_expression "(*pcVar11 == '\0')" (( "(") (binary_expression "*pcVar11 == '\0'" (pointer_expression "*pcVar11" (* "*") (identifier "pcVar11")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (} "}"))) (} "}")))) (} "}")) (else_clause "else {\n    *(undefined4 *)((int)ppuVar8 + 0x40) = 2;\n    *(undefined1 **)((int)ppuVar8 + 0x34) = (undefined1 *)((int)ppuVar8 + 0x4a);\n    *(undefined1 *)((int)ppuVar8 + 0x44) = 0;\n    *(undefined4 *)((int)ppuVar8 + 0x38) = 0;\n    *(undefined4 *)((int)ppuVar8 + 0x3c) = 1;\n    *(undefined1 *)((int)ppuVar8 + 0x4a) = 1;\n    *(uint **)((int)ppuVar8 + -0x10) = param_4;\n    *(undefined4 *)((int)ppuVar8 + -0x14) = 0x21f20;\n    iVar3 = FUN_00021c86();\n    ppuVar9 = (uint **)((int)ppuVar8 + -4);\n    puVar2 = (undefined1 *)((int)ppuVar8 + -4);\n    if (iVar3 == 0) goto LAB_00021f2b;\n  }" (else "else") (compound_statement "{\n    *(undefined4 *)((int)ppuVar8 + 0x40) = 2;\n    *(undefined1 **)((int)ppuVar8 + 0x34) = (undefined1 *)((int)ppuVar8 + 0x4a);\n    *(undefined1 *)((int)ppuVar8 + 0x44) = 0;\n    *(undefined4 *)((int)ppuVar8 + 0x38) = 0;\n    *(undefined4 *)((int)ppuVar8 + 0x3c) = 1;\n    *(undefined1 *)((int)ppuVar8 + 0x4a) = 1;\n    *(uint **)((int)ppuVar8 + -0x10) = param_4;\n    *(undefined4 *)((int)ppuVar8 + -0x14) = 0x21f20;\n    iVar3 = FUN_00021c86();\n    ppuVar9 = (uint **)((int)ppuVar8 + -4);\n    puVar2 = (undefined1 *)((int)ppuVar8 + -4);\n    if (iVar3 == 0) goto LAB_00021f2b;\n  }" ({ "{") (expression_statement "*(undefined4 *)((int)ppuVar8 + 0x40) = 2;" (assignment_expression "*(undefined4 *)((int)ppuVar8 + 0x40) = 2" (pointer_expression "*(undefined4 *)((int)ppuVar8 + 0x40)" (* "*") (cast_expression "(undefined4 *)((int)ppuVar8 + 0x40)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar8 + 0x40)" (( "(") (binary_expression "(int)ppuVar8 + 0x40" (cast_expression "(int)ppuVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar8")) (+ "+") (number_literal "0x40")) () ")")))) (= "=") (number_literal "2")) (; ";")) (expression_statement "*(undefined1 **)((int)ppuVar8 + 0x34) = (undefined1 *)((int)ppuVar8 + 0x4a);" (assignment_expression "*(undefined1 **)((int)ppuVar8 + 0x34) = (undefined1 *)((int)ppuVar8 + 0x4a)" (pointer_expression "*(undefined1 **)((int)ppuVar8 + 0x34)" (* "*") (cast_expression "(undefined1 **)((int)ppuVar8 + 0x34)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)ppuVar8 + 0x34)" (( "(") (binary_expression "(int)ppuVar8 + 0x34" (cast_expression "(int)ppuVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar8")) (+ "+") (number_literal "0x34")) () ")")))) (= "=") (cast_expression "(undefined1 *)((int)ppuVar8 + 0x4a)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar8 + 0x4a)" (( "(") (binary_expression "(int)ppuVar8 + 0x4a" (cast_expression "(int)ppuVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar8")) (+ "+") (number_literal "0x4a")) () ")")))) (; ";")) (expression_statement "*(undefined1 *)((int)ppuVar8 + 0x44) = 0;" (assignment_expression "*(undefined1 *)((int)ppuVar8 + 0x44) = 0" (pointer_expression "*(undefined1 *)((int)ppuVar8 + 0x44)" (* "*") (cast_expression "(undefined1 *)((int)ppuVar8 + 0x44)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar8 + 0x44)" (( "(") (binary_expression "(int)ppuVar8 + 0x44" (cast_expression "(int)ppuVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar8")) (+ "+") (number_literal "0x44")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)((int)ppuVar8 + 0x38) = 0;" (assignment_expression "*(undefined4 *)((int)ppuVar8 + 0x38) = 0" (pointer_expression "*(undefined4 *)((int)ppuVar8 + 0x38)" (* "*") (cast_expression "(undefined4 *)((int)ppuVar8 + 0x38)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar8 + 0x38)" (( "(") (binary_expression "(int)ppuVar8 + 0x38" (cast_expression "(int)ppuVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar8")) (+ "+") (number_literal "0x38")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)((int)ppuVar8 + 0x3c) = 1;" (assignment_expression "*(undefined4 *)((int)ppuVar8 + 0x3c) = 1" (pointer_expression "*(undefined4 *)((int)ppuVar8 + 0x3c)" (* "*") (cast_expression "(undefined4 *)((int)ppuVar8 + 0x3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar8 + 0x3c)" (( "(") (binary_expression "(int)ppuVar8 + 0x3c" (cast_expression "(int)ppuVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar8")) (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(undefined1 *)((int)ppuVar8 + 0x4a) = 1;" (assignment_expression "*(undefined1 *)((int)ppuVar8 + 0x4a) = 1" (pointer_expression "*(undefined1 *)((int)ppuVar8 + 0x4a)" (* "*") (cast_expression "(undefined1 *)((int)ppuVar8 + 0x4a)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar8 + 0x4a)" (( "(") (binary_expression "(int)ppuVar8 + 0x4a" (cast_expression "(int)ppuVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar8")) (+ "+") (number_literal "0x4a")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(uint **)((int)ppuVar8 + -0x10) = param_4;" (assignment_expression "*(uint **)((int)ppuVar8 + -0x10) = param_4" (pointer_expression "*(uint **)((int)ppuVar8 + -0x10)" (* "*") (cast_expression "(uint **)((int)ppuVar8 + -0x10)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)ppuVar8 + -0x10)" (( "(") (binary_expression "(int)ppuVar8 + -0x10" (cast_expression "(int)ppuVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar8")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "param_4")) (; ";")) (expression_statement "*(undefined4 *)((int)ppuVar8 + -0x14) = 0x21f20;" (assignment_expression "*(undefined4 *)((int)ppuVar8 + -0x14) = 0x21f20" (pointer_expression "*(undefined4 *)((int)ppuVar8 + -0x14)" (* "*") (cast_expression "(undefined4 *)((int)ppuVar8 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar8 + -0x14)" (( "(") (binary_expression "(int)ppuVar8 + -0x14" (cast_expression "(int)ppuVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar8")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x21f20")) (; ";")) (expression_statement "iVar3 = FUN_00021c86();" (assignment_expression "iVar3 = FUN_00021c86()" (identifier "iVar3") (= "=") (call_expression "FUN_00021c86()" (identifier "FUN_00021c86") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "ppuVar9 = (uint **)((int)ppuVar8 + -4);" (assignment_expression "ppuVar9 = (uint **)((int)ppuVar8 + -4)" (identifier "ppuVar9") (= "=") (cast_expression "(uint **)((int)ppuVar8 + -4)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)ppuVar8 + -4)" (( "(") (binary_expression "(int)ppuVar8 + -4" (cast_expression "(int)ppuVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar8")) (+ "+") (number_literal "-4")) () ")")))) (; ";")) (expression_statement "puVar2 = (undefined1 *)((int)ppuVar8 + -4);" (assignment_expression "puVar2 = (undefined1 *)((int)ppuVar8 + -4)" (identifier "puVar2") (= "=") (cast_expression "(undefined1 *)((int)ppuVar8 + -4)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar8 + -4)" (( "(") (binary_expression "(int)ppuVar8 + -4" (cast_expression "(int)ppuVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar8")) (+ "+") (number_literal "-4")) () ")")))) (; ";")) (if_statement "if (iVar3 == 0) goto LAB_00021f2b;" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00021f2b;" (goto "goto") (statement_identifier "LAB_00021f2b") (; ";"))) (} "}")))) (labeled_statement "LAB_00021f50:\n  *(undefined4 *)((int)ppuVar9 + -0x10) = *(undefined4 *)((int)ppuVar9 + 0x20);" (statement_identifier "LAB_00021f50") (: ":") (expression_statement "*(undefined4 *)((int)ppuVar9 + -0x10) = *(undefined4 *)((int)ppuVar9 + 0x20);" (assignment_expression "*(undefined4 *)((int)ppuVar9 + -0x10) = *(undefined4 *)((int)ppuVar9 + 0x20)" (pointer_expression "*(undefined4 *)((int)ppuVar9 + -0x10)" (* "*") (cast_expression "(undefined4 *)((int)ppuVar9 + -0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar9 + -0x10)" (( "(") (binary_expression "(int)ppuVar9 + -0x10" (cast_expression "(int)ppuVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar9")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)((int)ppuVar9 + 0x20)" (* "*") (cast_expression "(undefined4 *)((int)ppuVar9 + 0x20)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar9 + 0x20)" (( "(") (binary_expression "(int)ppuVar9 + 0x20" (cast_expression "(int)ppuVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar9")) (+ "+") (number_literal "0x20")) () ")"))))) (; ";"))) (expression_statement "*(undefined4 *)((int)ppuVar9 + -0x14) = 0x21f60;" (assignment_expression "*(undefined4 *)((int)ppuVar9 + -0x14) = 0x21f60" (pointer_expression "*(undefined4 *)((int)ppuVar9 + -0x14)" (* "*") (cast_expression "(undefined4 *)((int)ppuVar9 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)ppuVar9 + -0x14)" (( "(") (binary_expression "(int)ppuVar9 + -0x14" (cast_expression "(int)ppuVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar9")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x21f60")) (; ";")) (expression_statement "free(*(void **)((int)ppuVar9 + -0x10));" (call_expression "free(*(void **)((int)ppuVar9 + -0x10))" (identifier "free") (argument_list "(*(void **)((int)ppuVar9 + -0x10))" (( "(") (pointer_expression "*(void **)((int)ppuVar9 + -0x10)" (* "*") (cast_expression "(void **)((int)ppuVar9 + -0x10)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)ppuVar9 + -0x10)" (( "(") (binary_expression "(int)ppuVar9 + -0x10" (cast_expression "(int)ppuVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppuVar9")) (+ "+") (number_literal "-0x10")) () ")")))) () ")"))) (; ";")) (labeled_statement "LAB_00021f63:\n  if (ppuVar9[0x13] != *(uint **)(in_GS_OFFSET + 0x14)) {\n                    \n    ppuVar9[0xffffffff] = (uint *)0x21f81;\n    FUN_00017e10();\n  }" (statement_identifier "LAB_00021f63") (: ":") (if_statement "if (ppuVar9[0x13] != *(uint **)(in_GS_OFFSET + 0x14)) {\n                    \n    ppuVar9[0xffffffff] = (uint *)0x21f81;\n    FUN_00017e10();\n  }" (if "if") (parenthesized_expression "(ppuVar9[0x13] != *(uint **)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "ppuVar9[0x13] != *(uint **)(in_GS_OFFSET + 0x14)" (subscript_expression "ppuVar9[0x13]" (identifier "ppuVar9") ([ "[") (number_literal "0x13") (] "]")) (!= "!=") (pointer_expression "*(uint **)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(uint **)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n                    \n    ppuVar9[0xffffffff] = (uint *)0x21f81;\n    FUN_00017e10();\n  }" ({ "{") (expression_statement "ppuVar9[0xffffffff] = (uint *)0x21f81;" (assignment_expression "ppuVar9[0xffffffff] = (uint *)0x21f81" (subscript_expression "ppuVar9[0xffffffff]" (identifier "ppuVar9") ([ "[") (number_literal "0xffffffff") (] "]")) (= "=") (cast_expression "(uint *)0x21f81" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x21f81"))) (; ";")) (expression_statement "FUN_00017e10();" (call_expression "FUN_00017e10()" (identifier "FUN_00017e10") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (return_statement "return iVar3;" (return "return") (identifier "iVar3") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */

type_1 function_1(type_2 *a,type_2 *b,type_2 *c,size_t scale)

{
  type_3 pow;
  type_2 copy;
  type_2 one;
  type_4 num [2];
  
}


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

/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */
/* WARNING: Type propagation algorithm not settling */

int __regparm3 MASKED(int param_1,undefined4 *param_2,undefined4 *param_3,uint *param_4)

{
  uint *puVar1;
  undefined1 *puVar2;
  int iVar3;
  int iVar4;
  uint uVar5;
  char *pcVar6;
  uint **ppuVar7;
  uint **ppuVar8;
  uint **ppuVar9;
  uint *puVar10;
  char *pcVar11;
  int in_GS_OFFSET;
  char cStackY_81;
  uint *puStackY_80;
  uint *local_70 [3];
  char cStack_61;
  undefined **local_60;
  uint *local_54 [2];
  uint local_4c;
  undefined4 local_48;
  undefined4 local_44;
  uint local_40;
  undefined1 local_3c;
  undefined1 *local_38;
  undefined4 local_34;
  undefined4 local_30;
  undefined4 local_2c;
  undefined1 local_28;
  undefined1 local_22 [2];
  undefined4 local_20;
  
  ppuVar9 = local_70 + 1;
  local_70[0] = (uint *)0x21cea;
  local_60 = &__DT_PLTGOT;
  local_20 = *(undefined4 *)(in_GS_OFFSET + 0x14);
  iVar3 = param_2[1];
  if (iVar3 != 0) {
    pcVar11 = (char *)*param_2;
    if (*pcVar11 == '\0') {
      pcVar6 = pcVar11 + iVar3;
      do {
        pcVar11 = pcVar11 + 1;
        if (pcVar6 == pcVar11) goto LAB_00021d4d;
      } while (*pcVar11 == '\0');
    }
    iVar3 = FUN_0001e002(&DAT_000ccedf,"not an integer");
    ppuVar9 = local_70 + 1;
    goto LAB_00021f63;
  }
LAB_00021d4d:
  if (param_2[2] == 0) {
    *(undefined1 *)(param_3 + 4) = 0;
    param_3[1] = 0;
    param_3[2] = 1;
    *(undefined1 *)*param_3 = 1;
    ppuVar9 = local_70 + 1;
    iVar3 = 0;
    goto LAB_00021f63;
  }
  if (*(int *)(param_1 + 8) == 0) {
    param_3[2] = 0;
    *(undefined1 *)(param_3 + 4) = 0;
    param_3[1] = param_4;
    ppuVar9 = local_70 + 1;
    iVar3 = 0;
    goto LAB_00021f63;
  }
  cStack_61 = *(char *)(param_2 + 4);
  if (((param_2[2] == 1) && (iVar3 == 0)) && (*(char *)*param_2 == '\x01')) {
    if (cStack_61 == '\0') {
      local_70[0] = (uint *)0x21db5;
      FUN_0001e38b();
      ppuVar9 = local_70 + 1;
      iVar3 = 0;
    }
    else {
      local_2c = 2;
      local_38 = local_22;
      local_28 = 0;
      local_34 = 0;
      local_30 = 1;
      local_22[0] = 1;
      iVar3 = FUN_00021c86(param_4);
      ppuVar9 = local_70;
    }
    goto LAB_00021f63;
  }
  local_70[0] = (uint *)0x21dc5;
  iVar4 = FUN_0001e0f3();
  iVar3 = iVar4;
  if (iVar4 != 0) goto LAB_00021f63;
  local_70[1] = *(uint **)(param_1 + 8);
  if (local_70[1] < 0x10) {
    local_70[1] = (uint *)0x10;
  }
  local_70[0] = (uint *)0x21de5;
  local_4c = FUN_00019b1c();
  local_40 = (uint)local_70[1];
  local_48 = 0;
  local_44 = 0;
  local_3c = 0;
  local_70[1] = (uint *)(local_54 + 2);
  local_70[0] = (uint *)0x21e13;
  FUN_0001e38b();
  puVar10 = *(uint **)(param_1 + 4);
  ppuVar8 = local_70 + 1;
  if (cStack_61 == '\0') {
    if (puVar10 < param_4) {
      ppuVar8 = local_70 + 1;
      if ((uint *)((int)puVar10 * (int)local_54[1]) < param_4) goto LAB_00021e32;
    }
    else {
      ppuVar8 = local_70 + 1;
      param_4 = puVar10;
      if ((uint *)((int)puVar10 * (int)local_54[1]) < puVar10) {
LAB_00021e32:
        param_4 = (uint *)((int)puVar10 * (int)local_54[1]);
        ppuVar8 = local_70 + 1;
      }
    }
  }
  while (((uint)local_54[1] & 1) == 0) {
    puVar10 = (uint *)((int)puVar10 * 2);
    ppuVar8[0xfffffffc] = puVar10;
    ppuVar8[0xfffffffb] = (uint *)0x21e4b;
    iVar3 = FUN_00021bb2();
    ppuVar9 = ppuVar8 + 0xffffffff;
    if (iVar3 != 0) goto LAB_00021f50;
    local_54[1] = (uint *)((uint)ppuVar8[6] >> 1);
    ppuVar8[6] = local_54[1];
    ppuVar8 = ppuVar8 + 0xffffffff;
  }
  ppuVar8[0xffffffff] = (uint *)0x21e80;
  FUN_0001e38b();
  puVar1 = ppuVar8[7];
  ppuVar8[7] = (uint *)((uint)puVar1 >> 1);
  if ((uint *)((uint)puVar1 >> 1) != (uint *)0x0) {
    ppuVar8[1] = puVar10;
    ppuVar7 = ppuVar8;
    do {
      puVar10 = (uint *)((int)puVar10 * 2);
      ((int *)ppuVar7)[-4] = (int)puVar10;
      ((int *)ppuVar7)[-5] = 0x21ea3;
      iVar3 = FUN_00021bb2();
      ppuVar9 = (uint **)((int *)ppuVar7 + -1);
      ppuVar8 = (uint **)((int *)ppuVar7 + -1);
      if (iVar3 != 0) goto LAB_00021f50;
      uVar5 = ((int *)ppuVar7)[6];
      if ((uVar5 & 1) != 0) {
        *ppuVar7 = (uint *)((int)*ppuVar7 + (int)puVar10);
        ((int *)ppuVar7)[-5] = (int)*ppuVar7;
        ((int *)ppuVar7)[-6] = 0x21ecb;
        iVar3 = FUN_00021bb2();
        ppuVar9 = (uint **)((int *)ppuVar7 + -2);
        ppuVar8 = (uint **)((int *)ppuVar7 + -2);
        if (iVar3 != 0) goto LAB_00021f50;
        uVar5 = ((int *)ppuVar7)[5];
      }
      *(uint *)((int)ppuVar8 + 0x1c) = uVar5 >> 1;
      ppuVar7 = ppuVar8;
    } while (uVar5 >> 1 != 0);
  }
  puVar2 = (undefined1 *)ppuVar8;
  if (*(char *)((int)ppuVar8 + 0xb) == '\0') {
LAB_00021f2b:
    ppuVar9 = (uint **)puVar2;
    if (param_4 < (uint *)param_3[1]) {
      *(undefined4 *)((int)ppuVar9 + -4) = 0x21f3b;
      FUN_0001d62a();
    }
    if (param_3[2] == 0) {
LAB_00021f42:
      param_3[2] = 0;
      *(undefined1 *)(param_3 + 4) = 0;
      param_3[1] = param_4;
      iVar3 = iVar4;
    }
    else {
      pcVar11 = (char *)*param_3;
      iVar3 = iVar4;
      if (*pcVar11 == '\0') {
        pcVar6 = pcVar11 + param_3[2];
        do {
          pcVar11 = pcVar11 + 1;
          if (pcVar6 == pcVar11) goto LAB_00021f42;
        } while (*pcVar11 == '\0');
      }
    }
  }
  else {
    *(undefined4 *)((int)ppuVar8 + 0x40) = 2;
    *(undefined1 **)((int)ppuVar8 + 0x34) = (undefined1 *)((int)ppuVar8 + 0x4a);
    *(undefined1 *)((int)ppuVar8 + 0x44) = 0;
    *(undefined4 *)((int)ppuVar8 + 0x38) = 0;
    *(undefined4 *)((int)ppuVar8 + 0x3c) = 1;
    *(undefined1 *)((int)ppuVar8 + 0x4a) = 1;
    *(uint **)((int)ppuVar8 + -0x10) = param_4;
    *(undefined4 *)((int)ppuVar8 + -0x14) = 0x21f20;
    iVar3 = FUN_00021c86();
    ppuVar9 = (uint **)((int)ppuVar8 + -4);
    puVar2 = (undefined1 *)((int)ppuVar8 + -4);
    if (iVar3 == 0) goto LAB_00021f2b;
  }
LAB_00021f50:
  *(undefined4 *)((int)ppuVar9 + -0x10) = *(undefined4 *)((int)ppuVar9 + 0x20);
  *(undefined4 *)((int)ppuVar9 + -0x14) = 0x21f60;
  free(*(void **)((int)ppuVar9 + -0x10));
LAB_00021f63:
  if (ppuVar9[0x13] != *(uint **)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    ppuVar9[0xffffffff] = (uint *)0x21f81;
    FUN_00017e10();
  }
  return iVar3;
}

